μHAL (v2.6.5)
Part of the IPbus software repository
GccOutputCleaner.hpp
Go to the documentation of this file.
1 /*
2 ---------------------------------------------------------------------------
3 
4  This file is part of uHAL.
5 
6  uHAL is a hardware access library and programming framework
7  originally developed for upgrades of the Level-1 trigger of the CMS
8  experiment at CERN.
9 
10  uHAL is free software: you can redistribute it and/or modify
11  it under the terms of the GNU General Public License as published by
12  the Free Software Foundation, either version 3 of the License, or
13  (at your option) any later version.
14 
15  uHAL is distributed in the hope that it will be useful,
16  but WITHOUT ANY WARRANTY; without even the implied warranty of
17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  GNU General Public License for more details.
19 
20  You should have received a copy of the GNU General Public License
21  along with uHAL. If not, see <http://www.gnu.org/licenses/>.
22 
23 
24  Andrew Rose, Imperial College, London
25  email: awr01 <AT> imperial.ac.uk
26 
27  Marc Magrans de Abril, CERN
28  email: marc.magrans.de.abril <AT> cern.ch
29 
30 ---------------------------------------------------------------------------
31 */
32 
39 #ifndef _uhal_log_GccOutputCleaner_hpp_
40 #define _uhal_log_GccOutputCleaner_hpp_
41 
42 #include <string>
43 #include <vector>
44 #include <stdint.h>
45 
51 {
52 
53  public:
59  GccOutputCleaner ( const uint32_t& aIndent = 2 , std::string ( *aStyling ) ( const uint32_t& ) = &GccOutputCleaner::SquareBracketStyle );
60 
64  virtual ~GccOutputCleaner();
65 
71  std::string operator() ( const std::string& aStr );
72 
78  static std::string SquareBracketStyle ( const uint32_t& aIndex );
84  static std::string HashStyle ( const uint32_t& aIndex );
90  static std::string TStyle ( const uint32_t& aIndex );
91 
92  private:
94  std::vector< std::string > mTypes;
96  std::string mIndent;
98  std::string ( *mStyling ) ( const uint32_t& );
99 
106  uint32_t RecursiveClean ( std::string::const_iterator aIt , std::string::const_iterator aEnd );
107 
108 };
109 
110 
111 #endif
GccOutputCleaner(const uint32_t &aIndent=2, std::string(*aStyling)(const uint32_t &)=&GccOutputCleaner::SquareBracketStyle)
Constructor.
static std::string TStyle(const uint32_t &aIndex)
Prefix the type-substitution index with a T
std::vector< std::string > mTypes
A vector of known types, the position of which into this list becomes the substitution index...
std::string(* mStyling)(const uint32_t &)
The functor for styling the type-substitution index.
virtual ~GccOutputCleaner()
Destructor.
Parameterized Functor which parses and formats GCC call stack so that they are human readable...
uint32_t RecursiveClean(std::string::const_iterator aIt, std::string::const_iterator aEnd)
Recursively perform sub-term extraction from the string.
static std::string HashStyle(const uint32_t &aIndex)
Prefix the type-substitution index with a #
std::string mIndent
The number of spaces by which to indent the lines.
std::string operator()(const std::string &aStr)
Functor implementation.
static std::string SquareBracketStyle(const uint32_t &aIndex)
Wrap the type-substitution index in square braces.