#include "stdafx.h" #include #include TypeDef::TypeDef( const NamespaceScopes &namespaceScopes, const std::string &name, const std::string &baseName, int nowLine ) : Symbol( namespaceScopes, name ) , baseName( baseName ) { if( !compiler.StringToType( baseName, baseType ) ){ compiler.errorMessenger.Output(3, baseName, nowLine ); return; } } /* bool TypeDef::IsEqualSymbol( const NamespaceScopes &namespaceScopes, const std::string &name ) const { if( GetName() != name ){ return false; } return compiler.GetNamespaceSupporter().IsSameAreaNamespace( this->namespaceScopes, namespaceScopes ); } bool TypeDef::IsEqualSymbol( const std::string &fullName ) const { char AreaName[VN_SIZE] = ""; //オブジェクト変数 char NestName[VN_SIZE] = ""; //入れ子メンバ bool isNest = SplitMemberName( fullName.c_str(), AreaName, NestName ); if( IsEqualSymbol( NamespaceScopes( AreaName ), NestName ) ){ return true; } if( isNest ){ // 静的メンバを考慮 char AreaName2[VN_SIZE] = ""; //オブジェクト変数 char NestName2[VN_SIZE] = ""; //入れ子メンバ bool isNest = SplitMemberName( AreaName, AreaName2, NestName2 ); lstrcat( NestName2, "." ); lstrcat( NestName2, NestName ); return IsEqualSymbol( NamespaceScopes( AreaName2 ), NestName2 ); } return false; }*/ TypeDefCollection::TypeDefCollection(){ } TypeDefCollection::~TypeDefCollection(){ } void TypeDefCollection::Add( const NamespaceScopes &namespaceScopes, const std::string &name, const std::string &baseName, int nowLine ){ TypeDef typeDef( namespaceScopes, name, baseName, nowLine ); this->push_back( typeDef ); } int TypeDefCollection::GetIndex( const NamespaceScopes &namespaceScopes, const std::string &name ) const{ int max = (int)(*this).size(); for( int i=0; i