#pragma once #include #include #include #include using namespace std; class Symbol { NamespaceScopes namespaceScopes; string name; // XMLシリアライズ用 private: friend class boost::serialization::access; template void serialize(Archive& ar, const unsigned int version) { ar & BOOST_SERIALIZATION_NVP( namespaceScopes ); ar & BOOST_SERIALIZATION_NVP( name ); } public: Symbol( const NamespaceScopes &namespaceScopes, const string &name ) : namespaceScopes( namespaceScopes ) , name( name ) { } Symbol( const char *fullName ); Symbol( const string &fullName ); Symbol( const Symbol &symbol ) : namespaceScopes( symbol.namespaceScopes ) , name( symbol.name ) { } Symbol() { } const NamespaceScopes &GetNamespaceScopes() const { return namespaceScopes; } const string &GetName() const { return name; } // シンボル比較 bool IsEqualSymbol( const NamespaceScopes &namespaceScopes, const string &name ) const; bool IsEqualSymbol( const Symbol &symbol ) const; bool IsEqualSymbol( const string &name ) const; };