CMS 3D CMS Logo

/data/doxygen/doxygen-1.7.3/gen/CMSSW_4_2_8/src/CondCore/ORA/src/ClassUtils.h

Go to the documentation of this file.
00001 #ifndef INCLUDE_ORA_CLASSUTILS_H
00002 #define INCLUDE_ORA_CLASSUTILS_H
00003 
00004 // externals
00005 #include "Reflex/Type.h"
00006 
00007 namespace ora {
00008 
00009   class RflxDeleter{
00010 
00011     public:
00012     RflxDeleter( const Reflex::Type& type );
00013 
00014     RflxDeleter( const RflxDeleter& rhs );
00015 
00016     ~RflxDeleter();
00017 
00018     void operator()( void* ptr );
00019     
00020   private:
00021     Reflex::Type m_type;
00022     
00023   };
00024     
00025   namespace ClassUtils {
00026 
00027     void loadDictionary(  const std::string& className );
00028 
00029     void* upCast( const Reflex::Type& type, void* ptr, const Reflex::Type& asType );
00030 
00031     bool isType( const Reflex::Type& type, const Reflex::Type& baseType );
00032 
00033     bool findBaseType( Reflex::Type& type, Reflex::Type& baseType, Reflex::OffsetFunction& func );
00034 
00035     std::string demangledName( const std::type_info& typeInfo );
00036 
00037     Reflex::Type lookupDictionary( const std::type_info& typeInfo, bool throwFlag = true );
00038 
00039     Reflex::Type lookupDictionary( const std::string& className, bool throwFlag = true );
00040 
00041     void* constructObject( const Reflex::Type& typ );
00042 
00043     bool isTypeString(const Reflex::Type& typ);
00044     
00045     bool isTypePrimitive(const Reflex::Type& typ);
00046     
00047     bool isTypeContainer(const Reflex::Type& typ);
00048 
00049     bool isTypeKeyedContainer(const Reflex::Type& typ);
00050 
00051     bool isTypeNonKeyedContainer(const Reflex::Type& typ);
00052 
00053     bool isTypeAssociativeContainer(const Reflex::Type& typ);
00054 
00055     bool isTypeNonAssociativeContainer(const Reflex::Type& typ);
00056 
00057     Reflex::Type containerValueType(const Reflex::Type& typ);
00058     
00059     Reflex::Type containerKeyType(const Reflex::Type& typ);
00060     
00061     Reflex::Type containerDataType(const Reflex::Type& typ);
00062     
00063     Reflex::Type containerSubType(const Reflex::Type& typ, const std::string& subTypeName);
00064     
00065     Reflex::Type resolvedType(const Reflex::Type& typ);
00066 
00067     bool isTypeOraReference( const Reflex::Type& typ);
00068 
00069     bool isTypeNamedReference( const Reflex::Type& typ);
00070 
00071     bool isTypeOraPointer( const Reflex::Type& typ);
00072     
00073     bool isTypeUniqueReference( const Reflex::Type& typ);
00074     
00075     bool isTypePVector( const Reflex::Type& typ);
00076 
00077     bool isTypeQueryableVector( const Reflex::Type& typ);
00078 
00079     bool isTypeObject( const Reflex::Type& typ);
00080 
00081   }
00082 
00083 }
00084 
00085 #endif