#include #include string UserProc::GetFullName() const { if( HasParentClass() ){ return GetParentClass().GetName() + "." + GetName(); } return GetName(); } bool UserProc::IsVirtual() const { if( pMethod == NULL ){ return false; } return ( pMethod->IsVirtual() != 0 ); } const NamespaceScopes &UserProc::GetNamespaceScopes() const { if( !pParentClass ){ throw SmoothieException(); } return pParentClass->GetNamespaceScopes(); } const NamespaceScopesCollection &UserProc::GetImportedNamespaces() const { if( !pParentClass ){ throw SmoothieException(); } return pParentClass->GetImportedNamespaces(); } bool UserProc::IsEqualSymbol( const NamespaceScopes &namespaceScopes, const string &name ) const { throw SmoothieException(); return false; } bool DllProc::IsEqualSymbol( const NamespaceScopes &namespaceScopes, const string &name ) const { if( GetName() != name ){ return false; } return NamespaceScopes::IsSameArea( this->namespaceScopes, namespaceScopes ); } bool DllProc::IsEqualSymbol( const string &fullName ) const { char AreaName[VN_SIZE] = ""; //オブジェクト変数 char NestName[VN_SIZE] = ""; //入れ子メンバ bool isNest = CClass::SplitName( fullName.c_str(), AreaName, NestName ); if( IsEqualSymbol( NamespaceScopes( AreaName ), NestName ) ){ return true; } if( isNest ){ // 静的メンバを考慮 char AreaName2[VN_SIZE] = ""; //オブジェクト変数 char NestName2[VN_SIZE] = ""; //入れ子メンバ bool isNest = CClass::SplitName( AreaName, AreaName2, NestName2 ); lstrcat( NestName2, "." ); lstrcat( NestName2, NestName ); return IsEqualSymbol( NamespaceScopes( AreaName2 ), NestName2 ); } return false; } UserProc *UserProc::pCompilingUserProc = NULL;