Inferno
0.2
|
00001 #ifndef TYPE_INFO_HPP 00002 #define TYPE_INFO_HPP 00003 00004 #include <typeinfo> 00005 #include <string> 00006 #include "common/trace.hpp" 00007 #include "match.hpp" 00008 00009 class TypeInfo 00010 { 00011 private: 00012 const Matcher * const architype; 00013 00014 public: 00015 TypeInfo( const Matcher *p ) : 00016 architype( p ) 00017 { 00018 } 00019 00020 TypeInfo( shared_ptr<Matcher> p ) : 00021 architype( p.get() ) 00022 { 00023 } 00024 00025 TypeInfo( const Matcher &p ) : 00026 architype( &p ) 00027 { 00028 } 00029 00030 inline string name() const 00031 { 00032 if( architype ) 00033 { 00034 const char *s = typeid( *architype ).name(); 00035 while( s[0]>='0' && s[0]<='9' ) 00036 s++; 00037 return s; 00038 } 00039 else 00040 { 00041 return string("NULL"); 00042 } 00043 } 00044 }; 00045 00046 00047 #endif 00048