Index: trunk/ab5.0/abdev/BasicCompiler_Common/src/Class.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler_Common/src/Class.cpp	(revision 597)
+++ trunk/ab5.0/abdev/BasicCompiler_Common/src/Class.cpp	(revision 598)
@@ -635,11 +635,11 @@
 }
 
-const CClass *Classes::FindEx( const NamespaceScopes &namespaceScopes, const std::string &name ) const
-{
-	if( namespaceScopes.size() == 0 && name == "Object" )
+const CClass *Classes::FindEx( const Symbol &symbol ) const
+{
+	if( symbol.GetNamespaceScopes().size() == 0 && symbol.GetName() == "Object" )
 	{
 		return GetObjectClassPtr();
 	}
-	else if( namespaceScopes.size() == 0 && name == "String" )
+	else if( symbol.GetNamespaceScopes().size() == 0 && symbol.GetName() == "String" )
 	{
 		return GetStringClassPtr();
@@ -647,8 +647,8 @@
 
 	std::vector<const CClass *> classes;
-	const CClass *pClass = GetHashArrayElement( name.c_str() );
+	const CClass *pClass = GetHashArrayElement( symbol.GetName().c_str() );
 	while( pClass )
 	{
-		if( pClass->IsEqualSymbol( namespaceScopes, name ) ){
+		if( pClass->IsEqualSymbol( symbol.GetNamespaceScopes(), symbol.GetName() ) ){
 			//名前空間とクラス名が一致した
 			classes.push_back( pClass );
@@ -674,12 +674,4 @@
 	return NULL;
 }
-const CClass *Classes::FindEx( const std::string &fullName ) const
-{
-	char AreaName[VN_SIZE] = "";		//オブジェクト変数
-	char NestName[VN_SIZE] = "";		//入れ子メンバ
-	bool isNest = SplitMemberName( fullName.c_str(), AreaName, NestName );
-
-	return FindEx( NamespaceScopes( AreaName ), NestName );
-}
 
 const CClass *Classes::GetStringClassPtr() const
@@ -688,5 +680,5 @@
 	{
 		// キャッシュしておく
-		pStringClass = this->FindEx( NamespaceScopes( "System" ), "String" );
+		pStringClass = this->FindEx( Symbol( NamespaceScopes( "System" ), "String" ) );
 	}
 	return pStringClass;
@@ -697,5 +689,5 @@
 	{
 		// キャッシュしておく
-		pObjectClass = this->FindEx( NamespaceScopes( "System" ), "Object" );
+		pObjectClass = this->FindEx( Symbol( NamespaceScopes( "System" ), "Object" ) );
 	}
 	return pObjectClass;
@@ -706,5 +698,5 @@
 	{
 		// キャッシュしておく
-		pInterfaceInfo = this->FindEx( "ActiveBasic.Core.InterfaceInfo" );
+		pInterfaceInfo = this->FindEx( Symbol( NamespaceScopes( "ActiveBasic.Core" ), "InterfaceInfo" ) );
 	}
 	return pInterfaceInfo;
Index: trunk/ab5.0/abdev/BasicCompiler_Common/src/Compiler.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler_Common/src/Compiler.cpp	(revision 597)
+++ trunk/ab5.0/abdev/BasicCompiler_Common/src/Compiler.cpp	(revision 598)
@@ -3,4 +3,6 @@
 #include <Compiler.h>
 #include <Type.h>
+
+using namespace ActiveBasic::Compiler;
 
 Compiler compiler;
@@ -30,5 +32,7 @@
 
 		// ジェネリクスクラスを取得
-		const CClass *pGenericClass = this->GetObjectModule().meta.FindClassSupportedTypeDef( className );
+		const CClass *pGenericClass = this->GetObjectModule().meta.FindClassSupportedTypeDef( 
+			LexicalAnalyzer::FullNameToSymbol( className )
+		);
 
 		if( !pGenericClass )
@@ -140,5 +144,5 @@
 	// TypeDefされた型
 	////////////////////
-	int i=this->GetObjectModule().meta.GetTypeDefs().GetIndex( typeName );
+	int i=this->GetObjectModule().meta.GetTypeDefs().GetIndex( LexicalAnalyzer::FullNameToSymbol( typeName ) );
 	if(i!=-1){
 		type = this->GetObjectModule().meta.GetTypeDefs()[i].GetBaseType();
@@ -147,5 +151,5 @@
 
 	//クラス
-	const CClass *pobj_c = this->GetObjectModule().meta.GetClasses().FindEx( typeName );
+	const CClass *pobj_c = this->GetObjectModule().meta.GetClasses().FindEx( LexicalAnalyzer::FullNameToSymbol( typeName ) );
 	if(pobj_c){
 		if( pobj_c->IsStructure() ){
Index: trunk/ab5.0/abdev/BasicCompiler_Common/src/LexicalAnalyzer_Class.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler_Common/src/LexicalAnalyzer_Class.cpp	(revision 597)
+++ trunk/ab5.0/abdev/BasicCompiler_Common/src/LexicalAnalyzer_Class.cpp	(revision 598)
@@ -472,5 +472,7 @@
 
 		//継承元クラスを取得
-		const CClass *pInheritsClass = compiler.GetObjectModule().meta.FindClassSupportedTypeDef(className);
+		const CClass *pInheritsClass = compiler.GetObjectModule().meta.FindClassSupportedTypeDef(
+			LexicalAnalyzer::FullNameToSymbol( className )
+		);
 		if( !pInheritsClass ){
 			compiler.errorMessenger.Output(106,className,nowLine);
@@ -640,5 +642,7 @@
 
 		//継承元クラスを取得
-		const CClass *pInterfaceClass = compiler.GetObjectModule().meta.FindClassSupportedTypeDef( className );
+		const CClass *pInterfaceClass = compiler.GetObjectModule().meta.FindClassSupportedTypeDef(
+			LexicalAnalyzer::FullNameToSymbol( className )
+		);
 		if( !pInterfaceClass ){
 			compiler.errorMessenger.Output(106,paramStr.c_str(),nowLine);
@@ -768,5 +772,5 @@
 			SplitGenericClassInstance( temporary, className, typeParameters, true, &typeParameterBaseClassNames );
 
-			CClass *pobj_c = const_cast<CClass *>( classes.FindEx(namespaceScopes, className) );
+			CClass *pobj_c = const_cast<CClass *>( classes.FindEx( Symbol( namespaceScopes, className ) ) );
 			if(!pobj_c) continue;
 
@@ -835,5 +839,7 @@
 
 				//継承元クラスを取得
-				const CClass *pInheritsClass = compiler.GetObjectModule().meta.FindClassSupportedTypeDef( temporary );
+				const CClass *pInheritsClass = compiler.GetObjectModule().meta.FindClassSupportedTypeDef(
+					LexicalAnalyzer::FullNameToSymbol( temporary )
+				);
 				if( !pInheritsClass ){
 					compiler.errorMessenger.Output(106,temporary,i);
@@ -1003,5 +1009,5 @@
 			SplitGenericClassInstance( temporary, className, typeParameters, true, &typeParameterBaseClassNames );
 
-			CClass *pobj_c =  const_cast<CClass *>( classes.FindEx(namespaceScopes, className) );
+			CClass *pobj_c =  const_cast<CClass *>( classes.FindEx( Symbol( namespaceScopes, className ) ) );
 			if(!pobj_c) continue;
 
Index: trunk/ab5.0/abdev/BasicCompiler_Common/src/Meta.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler_Common/src/Meta.cpp	(revision 597)
+++ trunk/ab5.0/abdev/BasicCompiler_Common/src/Meta.cpp	(revision 598)
@@ -177,7 +177,7 @@
 }
 
-const CClass *Meta::FindClassSupportedTypeDef( const NamespaceScopes &namespaceScopes, const std::string &name )
+const CClass *Meta::FindClassSupportedTypeDef( const Symbol &symbol )
 {
-	const CClass *pClass = this->GetClasses().FindEx( namespaceScopes, name );
+	const CClass *pClass = this->GetClasses().FindEx( symbol );
 	if( pClass )
 	{
@@ -186,5 +186,5 @@
 
 	// TypeDefも見る
-	int index = this->GetTypeDefs().GetIndex( namespaceScopes, name );
+	int index = this->GetTypeDefs().GetIndex( symbol );
 	if( index != -1 ){
 		Type type = this->GetTypeDefs()[index].GetBaseType();
@@ -196,10 +196,2 @@
 	return NULL;
 }
-const CClass *Meta::FindClassSupportedTypeDef( const std::string &fullName )
-{
-	char AreaName[VN_SIZE] = "";		//オブジェクト変数
-	char NestName[VN_SIZE] = "";		//入れ子メンバ
-	bool isNest = SplitMemberName( fullName.c_str(), AreaName, NestName );
-
-	return FindClassSupportedTypeDef( NamespaceScopes( AreaName ), NestName );
-}
Index: trunk/ab5.0/abdev/BasicCompiler_Common/src/TypeDef.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler_Common/src/TypeDef.cpp	(revision 597)
+++ trunk/ab5.0/abdev/BasicCompiler_Common/src/TypeDef.cpp	(revision 598)
@@ -17,8 +17,8 @@
 }
 
-int TypeDefCollection::GetIndex( const NamespaceScopes &namespaceScopes, const std::string &name ) const{
+int TypeDefCollection::GetIndex( const Symbol &symbol ) const{
 	int max = (int)(*this).size();
 	for( int i=0; i<max; i++ ){
-		if( (*this)[i].IsEqualSymbol( namespaceScopes, name ) ){
+		if( (*this)[i].IsEqualSymbol( symbol ) ){
 			return i;
 		}
@@ -26,9 +26,2 @@
 	return -1;
 }
-int TypeDefCollection::GetIndex( const std::string &fullName ) const{
-	char AreaName[VN_SIZE] = "";		//オブジェクト変数
-	char NestName[VN_SIZE] = "";		//入れ子メンバ
-	bool isNest = SplitMemberName( fullName.c_str(), AreaName, NestName );
-
-	return GetIndex( NamespaceScopes( AreaName ), NestName );
-}
