#include "../common.h" NamespaceScopes::NamespaceScopes( const char *namespaceStr ){ int i = 0; while( namespaceStr[i] ){ char temporary[VN_SIZE]; for( int i2=0; ; i2++, i++ ){ if( namespaceStr[i] == '.' || namespaceStr[i] == '\0' ){ temporary[i2] = 0; break; } temporary[i2] = namespaceStr[i]; } push_back( temporary ); if( namespaceStr[i] == '.' ){ i++; } } } bool NamespaceScopes::IsLiving() const { if( IsBelong( *this, Smoothie::Lexical::liveingNamespaceScopes ) ){ return true; } return false; } // 包括しているかをチェック // 例: // this = "Discoversoft.ActiveBasic" // living = "Discoversoft.ActiveBasic" // name = "ActiveBasic" // この場合、living は name を包括している。 bool NamespaceScopes::IsCoverd( const string &name ) const { if( IsEqual( name ) ){ return true; } string thisStr = ToString(); NamespaceScopes tempLivingNamespaceScopes = Smoothie::Lexical::liveingNamespaceScopes; while( tempLivingNamespaceScopes.size() ){ NamespaceScopes tempNamespaceScopes = tempLivingNamespaceScopes; string tempStr = tempNamespaceScopes.ToString() + "." + name; if( thisStr == tempStr ){ return true; } tempLivingNamespaceScopes.pop_back(); } return false; } bool NamespaceScopes::IsCoverd( const NamespaceScopes &namespaceScopes ) const { return IsCoverd( namespaceScopes.ToString() ); }