Inferno  0.2
type_info.hpp
Go to the documentation of this file.
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