Logo ROOT  
Reference Guide
No Matches
TClassEdit.h File Reference
#include <ROOT/RConfig.hxx>
#include "RConfigure.h"
#include <stdlib.h>
#include <cxxabi.h>
#include <string>
#include <vector>
#include <array>
#include <typeinfo>
#include "ESTLType.h"
#include <string_view>
Include dependency graph for TClassEdit.h:
This graph shows which files directly or indirectly include this file:


struct  TClassEdit::FunctionSplitInfo
 Result of splitting a function declaration into fReturnType fScopeName::fFunctionName<fFunctionTemplateArguments>(fFunctionParameters) More...
class  TClassEdit::TInterpreterLookupHelper
struct  TClassEdit::TSplitType


namespace  ROOT
 tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tbb::task_arena without forward declaring tbb::interface7
namespace  ROOT::TMetaUtils
namespace  TClassEdit


enum class  TClassEdit::EComplexType : short {
  TClassEdit::kNone , TClassEdit::kDouble , TClassEdit::kFloat , TClassEdit::kInt ,
enum  TClassEdit::EModType {
  TClassEdit::kNone = 0 , TClassEdit::kDropTrailStar = 1<<0 , TClassEdit::kDropDefaultAlloc = 1<<1 , TClassEdit::kDropAlloc = 1<<2 ,
  TClassEdit::kInnerClass = 1<<3 , TClassEdit::kInnedMostClass = 1<<4 , TClassEdit::kDropStlDefault = 1<<5 , TClassEdit::kDropComparator = 1<<6 ,
  TClassEdit::kDropAllDefault = 1<<7 , TClassEdit::kLong64 = 1<<8 , TClassEdit::kDropStd = 1<<9 , TClassEdit::kKeepOuterConst = 1<<10 ,
  TClassEdit::kResolveTypedef = 1<<11 , TClassEdit::kDropPredicate = 1<<12 , TClassEdit::kDropHash = 1<<13
enum  TClassEdit::ESTLType {
  TClassEdit::kNotSTL = ROOT::kNotSTL , TClassEdit::kVector = ROOT::kSTLvector , TClassEdit::kList = ROOT::kSTLlist , TClassEdit::kForwardlist = ROOT::kSTLforwardlist ,
  TClassEdit::kDeque = ROOT::kSTLdeque , TClassEdit::kMap = ROOT::kSTLmap , TClassEdit::kMultiMap = ROOT::kSTLmultimap , TClassEdit::kSet = ROOT::kSTLset ,
  TClassEdit::kMultiSet = ROOT::kSTLmultiset , TClassEdit::kUnorderedSet = ROOT::kSTLunorderedset , TClassEdit::kUnorderedMultiSet = ROOT::kSTLunorderedmultiset , TClassEdit::kUnorderedMap = ROOT::kSTLunorderedmap ,
  TClassEdit::kUnorderedMultiMap = ROOT::kSTLunorderedmultimap , TClassEdit::kBitSet = ROOT::kSTLbitset , TClassEdit::kEnd = ROOT::kSTLend


std::string TClassEdit::CleanType (const char *typeDesc, int mode=0, const char **tail=nullptr)
 Cleanup type description, redundant blanks removed and redundant tail ignored return *tail = pointer to last used character if (mode==0) keep keywords if (mode==1) remove keywords outside the template params if (mode>=2) remove the keywords everywhere.
char * TClassEdit::DemangleName (const char *mangled_name, int &errorCode)
char * TClassEdit::DemangleTypeIdName (const std::type_info &ti, int &errorCode)
 Demangle in a portable way the type id name.
EComplexType TClassEdit::GetComplexType (const char *)
std::string TClassEdit::GetLong64_Name (const char *original)
 Replace 'long long' and 'unsigned long long' by 'Long64_t' and 'ULong64_t'.
std::string TClassEdit::GetLong64_Name (const std::string &original)
 Replace 'long long' and 'unsigned long long' by 'Long64_t' and 'ULong64_t'.
std::string TClassEdit::GetNameForIO (const std::string &templateInstanceName, TClassEdit::EModType mode=TClassEdit::kNone, bool *hasChanged=nullptr)
void TClassEdit::GetNormalizedName (std::string &norm_name, std::string_view name)
 Return the normalized name.
int TClassEdit::GetSplit (const char *type, std::vector< std::string > &output, int &nestedLoc, EModType mode=TClassEdit::kNone)
 Stores in output (after emptying it) the split type.
bool TClassEdit::GetStdArrayProperties (const char *typeName, std::string &typeNameBuf, std::array< int, 5 > &maxIndices, int &ndim)
std::string TClassEdit::GetUniquePtrType (std::string_view name)
const char * TClassEdit::GetUnqualifiedName (const char *name)
 Return the start of the unqualified name include in 'original'.
void TClassEdit::Init (TClassEdit::TInterpreterLookupHelper *helper)
std::string TClassEdit::InsertStd (const char *tname)
bool TClassEdit::IsArtificial (std::string_view name)
bool TClassEdit::IsDefAlloc (const char *alloc, const char *classname)
 return whether or not 'allocname' is the STL default allocator for type 'classname'
bool TClassEdit::IsDefAlloc (const char *alloc, const char *keyclassname, const char *valueclassname)
 return whether or not 'allocname' is the STL default allocator for a key of type 'keyclassname' and a value of type 'valueclassname'
bool TClassEdit::IsDefComp (const char *comp, const char *classname)
 return whether or not 'compare' is the STL default comparator for type 'classname'
bool TClassEdit::IsDefHash (const char *hashname, const char *classname)
 return whether or not 'hashname' is the STL default hash for type 'classname'
bool TClassEdit::IsDefPred (const char *predname, const char *classname)
 return whether or not 'predname' is the STL default predicate for type 'classname'
bool TClassEdit::IsInterpreterDetail (const char *type)
 Return true if the type is one the interpreter details which are only forward declared (ClassInfo_t etc..)
bool TClassEdit::IsStdArray (std::string_view name)
bool TClassEdit::IsStdClass (const char *type)
 return true if the class belongs to the std namespace
bool TClassEdit::IsStdPair (std::string_view name)
bool TClassEdit::IsStdPairBase (std::string_view name)
bool TClassEdit::IsSTLBitset (const char *type)
 Return true is the name is std::bitset<number> or bitset<number>
int TClassEdit::IsSTLCont (const char *type, int testAlloc)
 type : type name: vector<list<classA,allocator>,allocator> testAlloc: if true, we test allocator, if it is not default result is negative result: 0 : not stl container abs(result): code of container 1=vector,2=list,3=deque,4=map 5=multimap,6=set,7=multiset positive val: we have a vector or list with default allocator to any depth like vector<list<vector<int>>> negative val: STL container other than vector or list, or non default allocator For example: vector<deque<int>> has answer -1
ROOT::ESTLType TClassEdit::IsSTLCont (std::string_view type)
 type : type name: vector<list<classA,allocator>,allocator> result: 0 : not stl container code of container 1=vector,2=list,3=deque,4=map 5=multimap,6=set,7=multiset
bool TClassEdit::IsUniquePtr (std::string_view name)
bool TClassEdit::IsVectorBool (const char *name)
std::string TClassEdit::ResolveTypedef (const char *tname, bool resolveAll=false)
std::string TClassEdit::ShortType (const char *typeDesc, int mode)
 Return the absolute type of typeDesc.
bool TClassEdit::SplitFunction (std::string_view decl, FunctionSplitInfo &result)
 Split a function declaration into its different parts.
int TClassEdit::STLArgs (int kind)
 Return number of arguments for STL container before allocator.
ROOT::ESTLType TClassEdit::STLKind (std::string_view type)
 Converts STL container name to number.
ROOT::ESTLType TClassEdit::UnderlyingIsSTLCont (std::string_view type)
 Return the type of STL collection, if any, that is the underlying type of the given type.