Index: BasicCompiler32/BasicCompiler.vcproj
===================================================================
--- BasicCompiler32/BasicCompiler.vcproj	(revision 134)
+++ BasicCompiler32/BasicCompiler.vcproj	(revision 135)
@@ -1822,4 +1822,12 @@
 					Name="Meta Parts"
 					>
+					<File
+						RelativePath="..\BasicCompiler_Common\src\Member.cpp"
+						>
+					</File>
+					<File
+						RelativePath="..\BasicCompiler_Common\src\Method.cpp"
+						>
+					</File>
 					<File
 						RelativePath="..\BasicCompiler_Common\src\Namespace.cpp"
@@ -1956,8 +1964,4 @@
 					</File>
 					<File
-						RelativePath="..\BasicCompiler_Common\include\Prototype.h"
-						>
-					</File>
-					<File
 						RelativePath="..\BasicCompiler_Common\Type.h"
 						>
@@ -1971,4 +1975,20 @@
 						>
 					</File>
+					<Filter
+						Name="Prototype"
+						>
+						<File
+							RelativePath="..\BasicCompiler_Common\include\Member.h"
+							>
+						</File>
+						<File
+							RelativePath="..\BasicCompiler_Common\include\Method.h"
+							>
+						</File>
+						<File
+							RelativePath="..\BasicCompiler_Common\include\Prototype.h"
+							>
+						</File>
+					</Filter>
 				</Filter>
 				<Filter
Index: BasicCompiler32/Compile_Calc.cpp
===================================================================
--- BasicCompiler32/Compile_Calc.cpp	(revision 134)
+++ BasicCompiler32/Compile_Calc.cpp	(revision 135)
@@ -622,5 +622,5 @@
 		// Blittable型をオブジェクトとして扱う
 		vector<UserProc *> userProcs;
-		Smoothie::Meta::blittableTypes.GetClass( calcType ).EnumStaticMethod( "_Create", userProcs );
+		Smoothie::Meta::blittableTypes.GetClass( calcType ).GetStaticMethods().EnumStatic( "_Create", userProcs );
 		if( userProcs.size() != 1 ){
 			SetError();
Index: BasicCompiler32/Compile_CallProc.cpp
===================================================================
--- BasicCompiler32/Compile_CallProc.cpp	(revision 134)
+++ BasicCompiler32/Compile_CallProc.cpp	(revision 135)
@@ -113,5 +113,5 @@
 	bool isStatic = false;
 	const CClass *pobj_c = NULL;
-	CMethod *pMethod = NULL;
+	const CMethod *pMethod = NULL;
 	if( pUserProc->GetParentClassPtr() ){
 		//クラスのメンバ関数を呼び出す場合はアクセスチェックを行う
@@ -153,8 +153,8 @@
 		/////////////////////////////////
 		pMethod = NULL;
-		if( ! isStatic ) pMethod = pobj_c->GetMethodInfo( pUserProc );
+		if( ! isStatic ) pMethod = pobj_c->GetMethods().GetMethodPtr( pUserProc );
 		if( ! pMethod ){
 			//動的メソッドが取得できなかったときは静的メソッドを当たる
-			pMethod = pobj_c->GetStaticMethodInfo( pUserProc );
+			pMethod = pobj_c->GetStaticMethods().GetMethodPtr( pUserProc );
 			if( !pMethod ){
 				SetError(300,NULL,cp);
@@ -276,5 +276,5 @@
 			else{
 				RELATIVE_VAR RelativeVar;
-				if( pMethod->isConst ){
+				if( pMethod->IsConst() ){
 					//Constアクセスが可能なメソッドの場合
 					if( !GetVarOffsetReadOnly( ObjectName, &RelativeVar, Type() ) ){
Index: BasicCompiler32/Compile_Object.cpp
===================================================================
--- BasicCompiler32/Compile_Object.cpp	(revision 134)
+++ BasicCompiler32/Compile_Object.cpp	(revision 135)
@@ -36,5 +36,5 @@
 
 	std::vector<UserProc *> subs;
-	pobj_c->EnumMethod( pobj_c->GetName().c_str(), subs );
+	pobj_c->GetMethods().Enum( pobj_c->GetName().c_str(), subs );
 
 	UserProc *pUserProc;
@@ -56,5 +56,5 @@
 		// obj._System_SetType( _System_TypeBase.Search( strNamespace, name ) )
 		subs.clear();
-		pobj_c->EnumMethod( "_System_SetType", subs );
+		pobj_c->GetMethods().Enum( "_System_SetType", subs );
 		if( subs.size() == 1 ){
 			char temporary[VN_SIZE];
@@ -208,5 +208,5 @@
 
 
-	CMethod *method = classObj.GetDestructorMethod();
+	const CMethod *method = classObj.GetDestructorMethod();
 	if( method == NULL ) return;
 
Index: BasicCompiler32/Compile_ProcOp.cpp
===================================================================
--- BasicCompiler32/Compile_ProcOp.cpp	(revision 134)
+++ BasicCompiler32/Compile_ProcOp.cpp	(revision 135)
@@ -599,5 +599,5 @@
 					基底クラスのデストラクタを呼び出す */
 
-				CMethod *method = pobj_CompilingClass->pobj_InheritsClass->GetDestructorMethod();
+				const CMethod *method = pobj_CompilingClass->pobj_InheritsClass->GetDestructorMethod();
 				if( method ){
 					Opcode_CallProc("",
Index: BasicCompiler32/Compile_Statement.cpp
===================================================================
--- BasicCompiler32/Compile_Statement.cpp	(revision 134)
+++ BasicCompiler32/Compile_Statement.cpp	(revision 135)
@@ -1075,5 +1075,5 @@
 				if(type1.IsObject()){
 					std::vector<UserProc *> subs;
-					type1.GetClass().EnumMethod( CALC_EQUAL, subs );
+					type1.GetClass().GetMethods().Enum( CALC_EQUAL, subs );
 					if( subs.size() == 0 ){
 						return;
Index: BasicCompiler32/Compile_Var.cpp
===================================================================
--- BasicCompiler32/Compile_Var.cpp	(revision 134)
+++ BasicCompiler32/Compile_Var.cpp	(revision 135)
@@ -445,5 +445,7 @@
 
 			for(i=0;i<pobj_CompilingClass->iMemberNum;i++){
-				if(lstrcmp(VarName,pobj_CompilingClass->ppobj_Member[i]->name)==0) break;
+				if( pobj_CompilingClass->ppobj_Member[i]->GetName() == VarName ){
+					break;
+				}
 			}
 			if(i==pobj_CompilingClass->iMemberNum) goto NonClassMember;
@@ -452,7 +454,7 @@
 		//Const修飾子のメソッド内でメンバ書き込みアクセスが発生したとき
 		//（コンストラクタ、デストラクタ内を除く）
-		CMethod *pMethod = pobj_DBClass->GetNowCompilingMethodInfo();
+		const CMethod *pMethod = pobj_DBClass->GetNowCompilingMethodInfo();
 		if( isWriteAccess &&
-			pMethod->isConst &&
+			pMethod->IsConst() &&
 			pobj_CompilingClass->IsCompilingConstructor() == false &&
 			pobj_CompilingClass->IsCompilingDestructor() == false
@@ -750,5 +752,5 @@
 				i=GetOneParameter(InitBuf,i,temporary);
 
-				i3=objClass.GetMemberOffset( objClass.ppobj_Member[i2]->name, NULL );
+				i3=objClass.GetMemberOffset( objClass.ppobj_Member[i2]->GetName().c_str(), NULL );
 
 				if(!SetInitGlobalData(offset+i3,
@@ -886,5 +888,5 @@
 				i=GetOneParameter(InitBuf,i,temporary);
 
-				i3=objClass.GetMemberOffset( objClass.ppobj_Member[i2]->name, NULL );
+				i3=objClass.GetMemberOffset( objClass.ppobj_Member[i2]->GetName().c_str(), NULL );
 
 				if(!InitLocalVar(offset+i3,
Index: BasicCompiler32/NumOpe.cpp
===================================================================
--- BasicCompiler32/NumOpe.cpp	(revision 134)
+++ BasicCompiler32/NumOpe.cpp	(revision 135)
@@ -181,5 +181,5 @@
 	GetVarFormatString(methodName,parameter,lpPtrOffset,dummy,refType);
 
-	objClass.EnumMethod( methodName, userProcs );
+	objClass.GetMethods().Enum( methodName, userProcs );
 	UserProc *pUserProc;
 	if(userProcs.size()){
Index: BasicCompiler32/OperatorProc.cpp
===================================================================
--- BasicCompiler32/OperatorProc.cpp	(revision 134)
+++ BasicCompiler32/OperatorProc.cpp	(revision 135)
@@ -5,5 +5,5 @@
 	if(!IsSafeReg(reg)) SetError(300,NULL,cp);
 
-	CMethod *method = pobj_c->GetDestructorMethod();
+	const CMethod *method = pobj_c->GetDestructorMethod();
 	if( method ){
 		//push reg
@@ -28,5 +28,5 @@
 
 	std::vector<UserProc *> subs;
-	pobj_c->EnumMethod( idCalc, subs );
+	pobj_c->GetMethods().Enum( idCalc, subs );
 	if( subs.size() == 0 ){
 		return 0;
@@ -250,5 +250,5 @@
 void CallIndexerGetterProc(const CClass *pobj_Class,char *ObjectName,char *Parameter,Type &resultType){
 	std::vector<UserProc *> subs;
-	pobj_Class->EnumMethod( CALC_ARRAY_GET, subs );
+	pobj_Class->GetMethods().Enum( CALC_ARRAY_GET, subs );
 	if( subs.size() == 0 ){
 		return;
