Index: trunk/jenga/src/smoothie/Class.cpp
===================================================================
--- trunk/jenga/src/smoothie/Class.cpp	(revision 203)
+++ 	(revision )
@@ -1,521 +1,0 @@
-#include <stdlib.h>
-
-#include <jenga/include/smoothie/Smoothie.h>
-#include <jenga/include/smoothie/Class.h>
-#include <jenga/include/smoothie/SmoothieException.h>
-
-
-CClass::~CClass(){
-	// 動的メンバ
-	BOOST_FOREACH( CMember *member, dynamicMembers ){
-		delete member;
-	}
-
-	// 静的メンバ
-	BOOST_FOREACH( CMember *member, staticMembers ){
-		delete member;
-	}
-}
-
-bool CClass::IsInheritsInterface( const CClass *pInterfaceClass ) const
-{
-	BOOST_FOREACH( const InheritedInterface &objInterface, interfaces ){
-		if( pInterfaceClass == &objInterface.GetInterfaceClass() ){
-			return true;
-		}
-	}
-	return false;
-}
-
-bool CClass::IsClass() const
-{
-	return classType == CClass::Class;
-}
-bool CClass::IsInterface() const
-{
-	return classType == CClass::Interface;
-}
-bool CClass::IsEnum() const
-{
-	return classType == CClass::Enum;
-}
-bool CClass::IsDelegate() const
-{
-	return classType == CClass::Delegate;
-}
-bool CClass::IsStructure() const
-{
-	return classType == CClass::Structure;
-}
-
-BOOL CClass::DupliCheckAll(const char *name){
-	//重複チェック
-
-	//メンバ
-	if(DupliCheckMember(name)) return 1;
-
-	//メソッド
-	BOOST_FOREACH( const CMethod *pMethod, methods ){
-		if( lstrcmp( name, pMethod->pUserProc->GetName().c_str() ) == 0 ){
-			return 1;
-		}
-	}
-
-	return 0;
-}
-BOOL CClass::DupliCheckMember(const char *name){
-	//重複チェック
-
-	// 動的メンバ
-	BOOST_FOREACH( CMember *pMember, dynamicMembers ){
-		if( GetName() == pMember->GetName() ){
-			return 1;
-		}
-	}
-
-	// 静的メンバ
-	BOOST_FOREACH( CMember *pMember, staticMembers ){
-		if( GetName() == pMember->GetName() ){
-			return 1;
-		}
-	}
-
-	return 0;
-}
-
-//デフォルト コンストラクタ メソッドを取得
-const CMethod *CClass::GetConstructorMethod() const
-{
-	if( ConstructorMemberSubIndex == -1 ) return NULL;
-	return methods[ConstructorMemberSubIndex];
-}
-
-//デストラクタ メソッドを取得
-const CMethod *CClass::GetDestructorMethod() const
-{
-	if( DestructorMemberSubIndex == -1 ) return NULL;
-	return methods[DestructorMemberSubIndex];
-}
-
-//サイズを取得
-int CClass::GetSize() const
-{
-	return GetMemberOffset( NULL, NULL );
-}
-
-//メンバのオフセットを取得
-int CClass::GetMemberOffset( const char *memberName, int *pMemberNum ) const
-{
-	int i2;
-
-	//仮想関数が存在する場合は関数リストへのポインタのサイズを追加
-	int offset = IsExistVirtualFunctions() ? PTR_SIZE : 0;
-
-	int alignment;
-	if(iAlign) alignment=iAlign;
-	else alignment=1;
-
-	int iMaxAlign=0;
-	int i = -1;
-	BOOST_FOREACH( CMember *pMember, dynamicMembers ){
-		i++;
-
-		i2 = pMember->GetType().GetSize();
-
-		//アラインメントを算出
-		int member_size;
-		if( pMember->GetType().IsStruct() ){
-			//メンバクラスのアラインメントを取得
-			member_size=pMember->GetType().GetClass().GetAlignment();
-		}
-		else{
-			//メンバサイズを取得
-			member_size=i2;
-		}
-		if(iMaxAlign<member_size) iMaxAlign=member_size;
-
-		//アラインメントを考慮
-		if(iAlign&&iAlign<member_size){
-			if(offset%alignment) offset+=alignment-(offset%alignment);
-		}
-		else{
-			if(alignment<member_size) alignment=member_size;
-
-			if(member_size==0){
-				//メンバを持たないクラス
-				//※何もしない（オフセットの計算をしない）
-			}
-			else{
-				if(offset%member_size) offset+=member_size-(offset%member_size);
-			}
-		}
-
-		if(memberName){
-			//メンバ指定がある場合は、オフセットを返す
-			if( pMember->GetName() == memberName ){
-				if(pMemberNum) *pMemberNum=i;
-				return offset;
-			}
-		}
-
-		//配列を考慮したメンバサイズを取得
-		member_size=i2 * Variable::GetSubScriptCounts(pMember->SubScripts);
-
-		//メンバサイズを加算
-		offset+= member_size;
-	}
-
-	if(iMaxAlign<alignment) alignment=iMaxAlign;
-
-	//アラインメントを考慮
-	if(alignment){
-		if(offset%alignment) offset+=alignment-(offset%alignment);
-	}
-
-	if(pMemberNum) *pMemberNum=i;
-	return offset;
-}
-
-int CClass::GetAlignment() const
-{
-	//仮想関数が存在する場合は関数リストへのポインタのサイズを追加
-	int alignment = IsExistVirtualFunctions() ? PTR_SIZE : 0;
-
-	BOOST_FOREACH( CMember *pMember, dynamicMembers ){
-		int member_size;
-		if(pMember->GetType().IsStruct()){
-			//メンバクラスのアラインメントを取得
-			member_size=pMember->GetType().GetClass().GetAlignment();
-		}
-		else{
-			//メンバサイズを取得
-			member_size = pMember->GetType().GetSize();
-		}
-
-		//アラインメントをセット
-		if(alignment<member_size) alignment=member_size;
-	}
-
-	if(alignment==0) return 0;
-
-	if(iAlign) alignment=iAlign;
-
-	return alignment;
-}
-
-
-
-int CClass::GetFuncNumInVtbl( const UserProc *pUserProc ) const
-{
-	int n = 0;
-	BOOST_FOREACH( const CMethod *pMethod, methods ){
-		if( pMethod->pUserProc == pUserProc ) break;
-		if( pMethod->IsVirtual() ) n++;
-	}
-	return n;
-}
-
-bool CClass::IsAbstract() const
-{
-	// 未実装(abstract)の仮想関数を持つ場合はtrueを返す
-
-	BOOST_FOREACH( const CMethod *pMethod, methods ){
-		if(pMethod->IsVirtual()){
-			if(pMethod->IsAbstract()){
-				return true;
-			}
-		}
-	}
-
-	return false;
-}
-
-// コンストラクタのコンパイルを開始
-void CClass::NotifyStartConstructorCompile() const
-{
-	isCompilingConstructor = true;
-}
-
-//コンストラクタのコンパイルを終了
-void CClass::NotifyFinishConstructorCompile() const
-{
-	isCompilingConstructor = false;
-}
-
-//コンストラクタをコンパイル中かどうかを判別
-bool CClass::IsCompilingConstructor() const
-{
-	return isCompilingConstructor;
-}
-
-//デストラクタのコンパイルを開始
-void CClass::NotifyStartDestructorCompile() const{
-	isCompilingDestructor = true;
-}
-
-//デストラクタのコンパイルを終了
-void CClass::NotifyFinishDestructorCompile() const{
-	isCompilingDestructor = false;
-}
-
-//デストラクタをコンパイル中かどうかを判別
-bool CClass::IsCompilingDestructor() const
-{
-	return isCompilingDestructor;
-}
-
-//自身の派生クラスかどうかを確認
-bool CClass::IsSubClass( const CClass *pClass ) const
-{
-	if( !pClass->HasSuperClass() )
-	{
-		return false;
-	}
-
-	const CClass *pTempClass = &pClass->GetSuperClass();
-	while( pTempClass ){
-		if( this == pTempClass ) return true;
-		pTempClass = &pTempClass->GetSuperClass();
-	}
-	return false;
-}
-
-//自身と等しいまたは派生クラスかどうかを確認
-bool CClass::IsEqualsOrSubClass( const CClass *pClass ) const
-{
-	if( IsEquals( pClass ) ) return true;
-	return IsSubClass( pClass );
-}
-
-// 自身と等しいまたは派生クラス、基底クラスかどうかを確認
-bool CClass::IsEqualsOrSubClassOrSuperClass( const CClass &objClass ) const
-{
-	if( IsEquals( &objClass ) ) return true;
-	if( IsSubClass( &objClass ) ) return true;
-	if( objClass.IsSubClass( this ) ) return true;
-	return false;
-}
-
-
-
-int Classes::GetHashCode(const char *name) const{
-	int key;
-
-	for(key=0;*name!='\0';name++){
-		key=((key<<8)+ *name )%MAX_CLASS_HASH;
-	}
-
-	return key;
-}
-
-void Classes::DestroyClass(CClass *pobj_c){
-	if(pobj_c->pobj_NextClass){
-		DestroyClass(pobj_c->pobj_NextClass);
-	}
-
-	delete pobj_c;
-}
-
-Classes::Classes():
-	pStringClass( NULL ),
-	pObjectClass( NULL ),
-	pCompilingClass( NULL ),
-	pCompilingMethod( NULL ),
-	ppobj_IteClass( NULL ),
-	iIteMaxNum( 0 ),
-	iIteNextNum( 0 )
-{
-	memset( pobj_ClassHash, 0, MAX_CLASS_HASH * sizeof(CClass *) );
-	Clear();
-}
-Classes::~Classes(){
-	Clear();
-}
-void Classes::Clear()
-{
-	int i;
-	for(i=0;i<MAX_CLASS_HASH;i++){
-		if(pobj_ClassHash[i]) DestroyClass(pobj_ClassHash[i]);
-	}
-
-	if(ppobj_IteClass)
-	{
-		free(ppobj_IteClass);
-		ppobj_IteClass = NULL;
-	}
-	memset( pobj_ClassHash, 0, MAX_CLASS_HASH * sizeof(CClass *) );
-}
-
-void Classes::ActionVtblSchedule(LONG_PTR ImageBase, LONG_PTR MemPos_CodeSection){
-	int i;
-	for(i=0;i<MAX_CLASS_HASH;i++){
-		if(pobj_ClassHash[i]){
-			CClass *pobj_c;
-			pobj_c=pobj_ClassHash[i];
-			while(1){
-				pobj_c->ActionVtblSchedule(ImageBase,MemPos_CodeSection);
-
-				if(pobj_c->pobj_NextClass==0) break;
-				pobj_c=pobj_c->pobj_NextClass;
-			}
-		}
-	}
-}
-
-const CClass *Classes::Find( const string &fullName ) const
-{
-	char AreaName[VN_SIZE] = "";		//オブジェクト変数
-	char NestName[VN_SIZE] = "";		//入れ子メンバ
-	bool isNest = CClass::SplitName( fullName.c_str(), AreaName, NestName );
-
-	return Find( NamespaceScopes( AreaName ), NestName );
-}
-
-bool Classes::Insert( CClass *pClass )
-{
-	/////////////////////////////////
-	// ハッシュデータに追加
-	/////////////////////////////////
-
-	int key;
-	key=GetHashCode( pClass->GetName().c_str() );
-
-	if(pobj_ClassHash[key]){
-		CClass *pobj_c2;
-		pobj_c2=pobj_ClassHash[key];
-		while(1){
-			if( pobj_c2->IsEqualSymbol( *pClass ) ){
-				//名前空間及びクラス名が重複した場合
-				SmoothieException::Throw(15,pClass->GetName());
-				return false;
-			}
-
-			if(pobj_c2->pobj_NextClass==0) break;
-			pobj_c2=pobj_c2->pobj_NextClass;
-		}
-		pobj_c2->pobj_NextClass=pClass;
-	}
-	else{
-		pobj_ClassHash[key]=pClass;
-	}
-	return true;
-}
-CClass *Classes::Add( const NamespaceScopes &namespaceScopes, const NamespaceScopesCollection &importedNamespaces, const char *name,int nowLine){
-	//////////////////////////////////////////////////////////////////////////
-	// クラスを追加
-	// ※名前のみを登録。その他の情報はSetClassメソッドで！
-	//////////////////////////////////////////////////////////////////////////
-
-	CClass *pClass = Create(namespaceScopes, importedNamespaces, name);
-
-	if(lstrcmp(name,"String")==0){
-		//Stringクラス
-		pStringClass=pClass;
-	}
-	if( lstrcmp( name, "Object" ) == 0 ){
-		pObjectClass = pClass;
-	}
-
-	if( !Insert( pClass ) )
-	{
-		return NULL;
-	}
-
-	return pClass;	
-}
-
-
-
-CClass *Classes::GetStringClassPtr() const
-{
-	if( !pStringClass ){
-		SmoothieException::Throw();
-		return NULL;
-	}
-	return pStringClass;
-}
-CClass *Classes::GetObjectClassPtr() const
-{
-	if( !pObjectClass ){
-		SmoothieException::Throw();
-		return NULL;
-	}
-	return pObjectClass;
-}
-
-void Classes::StartCompile( UserProc *pUserProc ){
-	pCompilingClass = pUserProc->GetParentClassPtr();
-	if( pCompilingClass ){
-		pCompilingClass->Using();
-
-		pCompilingMethod = pCompilingClass->GetMethods().GetMethodPtr( pUserProc );
-		if( !pCompilingMethod ){
-			pCompilingMethod = pCompilingClass->GetStaticMethods().GetMethodPtr( pUserProc );
-			if( !pCompilingMethod ){
-				SmoothieException::Throw(300);
-			}
-		}
-	}
-	else{
-		pCompilingMethod = NULL;
-	}
-}
-const CClass *Classes::GetNowCompilingClass() const
-{
-	return pCompilingClass;
-}
-const CMethod *Classes::GetNowCompilingMethodInfo(){
-	return pCompilingMethod;
-}
-
-
-
-
-//////////////////////
-// イテレータ
-//////////////////////
-
-void Classes::Iterator_Init() const
-{
-	if(ppobj_IteClass) free(ppobj_IteClass);
-
-	iIteMaxNum=0;
-	iIteNextNum=0;
-	ppobj_IteClass=(CClass **)malloc(1);
-
-	int i;
-	for(i=0;i<MAX_CLASS_HASH;i++){
-		if(pobj_ClassHash[i]){
-			CClass *pobj_c;
-			pobj_c=pobj_ClassHash[i];
-			while(1){
-				ppobj_IteClass=(CClass **)realloc(ppobj_IteClass,(iIteMaxNum+1)*sizeof(CClass *));
-				ppobj_IteClass[iIteMaxNum]=pobj_c;
-				iIteMaxNum++;
-
-				if(pobj_c->pobj_NextClass==0) break;
-				pobj_c=pobj_c->pobj_NextClass;
-			}
-		}
-	}
-}
-void Classes::Iterator_Reset() const
-{
-	iIteNextNum = 0;
-}
-BOOL Classes::Iterator_HasNext() const
-{
-	if(iIteNextNum<iIteMaxNum) return 1;
-	return 0;
-}
-CClass *Classes::Iterator_GetNext() const
-{
-	CClass *pobj_c;
-	pobj_c=ppobj_IteClass[iIteNextNum];
-	iIteNextNum++;
-	return pobj_c;
-}
-int Classes::Iterator_GetMaxCount() const
-{
-	return iIteMaxNum;
-}
Index: trunk/jenga/src/smoothie/LexicalAnalysis.cpp
===================================================================
--- trunk/jenga/src/smoothie/LexicalAnalysis.cpp	(revision 203)
+++ trunk/jenga/src/smoothie/LexicalAnalysis.cpp	(revision 205)
@@ -1,3 +1,5 @@
+#include <jenga/include/smoothie/SmoothieException.h>
 #include <jenga/include/smoothie/LexicalAnalysis.h>
+#include <jenga/include/smoothie/BasicFixed.h>
 
 #include <windows.h>
@@ -212,2 +214,137 @@
 	return i;
 }
+
+bool SplitMemberName( const char *desc, char *object, char *member, ReferenceKind &refType ){
+	int lastIndex = -1;
+	for( int i=0; desc[i]; i++ ){
+		if( desc[i] == '(' ){
+			i=JumpStringInPare(desc,i+1);
+			continue;
+		}
+		else if( desc[i] == '[' ){
+			i=JumpStringInBracket(desc,i+1);
+			continue;
+		}
+		else if(desc[i]=='.'||(desc[i]==1&&desc[i+1]==ESC_PSMEM)){
+			lastIndex = i;
+		}
+	}
+	if( lastIndex == -1 ){
+		lstrcpy( member, desc );
+		return false;
+	}
+
+	if(desc[lastIndex]=='.'){
+		lstrcpy(member,desc+lastIndex+1);
+		refType = RefDot;
+	}
+	else{
+		lstrcpy(member,desc+lastIndex+2);
+		refType = RefPointer;
+	}
+
+	if( object ){
+		lstrcpy( object, desc );
+		object[lastIndex]=0;
+	}
+
+	return true;
+}
+bool SplitMemberName( const char *desc, char *object, char *member ){
+	ReferenceKind dummyRefType;
+	return SplitMemberName( desc, object, member, dummyRefType );
+}
+
+char *calcNames[255] = {
+	"xor",
+};
+void InitCalcNames()
+{
+	if( calcNames[CALC_XOR] )
+	{
+		return;
+	}
+
+	memset( calcNames, 0, 255 * sizeof(char *) );
+	calcNames[CALC_XOR] = "xor";
+	calcNames[CALC_OR] = "or";
+	calcNames[CALC_AND] = "and";
+	calcNames[CALC_NOT] = "Not";
+	calcNames[CALC_PE] = "<=";
+	calcNames[CALC_QE] = ">=";
+	calcNames[CALC_NOTEQUAL] = "<>";
+	calcNames[CALC_EQUAL] = "=(compare)";
+	calcNames[CALC_P] = "<";
+	calcNames[CALC_Q] = ">";
+	calcNames[CALC_SHL] = "<<";
+	calcNames[CALC_SHR] = ">>";
+	calcNames[CALC_ADDITION] = "+";
+	calcNames[CALC_SUBTRACTION] = "-";
+	calcNames[CALC_STRPLUS] = "-";
+	calcNames[CALC_MOD] = "mod";
+	calcNames[CALC_PRODUCT] = "*";
+	calcNames[CALC_QUOTIENT] = "/";
+	calcNames[CALC_INTQUOTIENT] = "\\";
+	calcNames[CALC_AS] = "As";
+	calcNames[CALC_BYVAL] = "ByVal";
+	calcNames[CALC_MINUSMARK] = "-(mark)";
+	calcNames[CALC_POWER] = "^";
+	calcNames[CALC_SUBSITUATION] = "=";
+	calcNames[CALC_ARRAY_GET] = "[]";
+	calcNames[CALC_ARRAY_SET] = "[]=";
+}
+void GetCalcName(int idCalc,char *name){
+	InitCalcNames();
+
+	if( calcNames[idCalc] == NULL )
+	{
+		SmoothieException::Throw();
+	}
+	lstrcpy( name, calcNames[idCalc] );
+}
+BYTE ToCalcId( const char *name )
+{
+	InitCalcNames();
+
+	for( int i=0; i<255; i++ )
+	{
+		if( calcNames[i] )
+		{
+			if( lstrcmp( name, calcNames[i] ) == 0 )
+			{
+				return i;
+			}
+		}
+	}
+	SmoothieException::Throw();
+	return 0;
+}
+
+std::string Operator_NaturalStringToCalcMarkString( const std::string &name )
+{
+	if( name[0] == 1 && name[1] == ESC_OPERATOR )
+	{
+		BYTE calcId = ToCalcId( name.c_str()+2 );
+		char temporary[255];
+		temporary[0] = name[0];
+		temporary[1] = name[1];
+		temporary[2] = calcId;
+		temporary[3] = 0;
+		return temporary;
+	}
+	return name;
+}
+std::string Operator_CalcMarkStringToNaturalString( const std::string &name )
+{
+	if( name[0] == 1 && name[1] == ESC_OPERATOR )
+	{
+		BYTE calcId = name[2];
+		char temporary[255], calcName[255];
+		GetCalcName( calcId, calcName );
+		temporary[0] = name[0];
+		temporary[1] = name[1];
+		lstrcpy( temporary+2, calcName );
+		return temporary;
+	}
+	return name;
+}
Index: trunk/jenga/src/smoothie/LexicalScoping.cpp
===================================================================
--- trunk/jenga/src/smoothie/LexicalScoping.cpp	(revision 203)
+++ trunk/jenga/src/smoothie/LexicalScoping.cpp	(revision 205)
@@ -1,6 +1,4 @@
 #include <jenga/include/smoothie/LexicalScoping.h>
 #include <jenga/include/smoothie/SmoothieException.h>
-#include <jenga/include/smoothie/Variable.h>
-#include <jenga/include/smoothie/Procedure.h>
 
 
@@ -54,35 +52,4 @@
 	ppScopes[level] = CreateScope( level, addr, TypeOfStatement );
 }
-void CLexicalScopes::End(){
-	if( level <= 0 ){
-		SmoothieException::Throw();
-		return;
-	}
-
-	//デストラクタを呼ぶ
-	CallDestructorsOfScopeEnd();
-
-	Variables &vars = UserProc::IsGlobalAreaCompiling()?
-		globalVars :
-		UserProc::CompilingUserProc().localVars;
-
-	//使用済みローカル変数の生存チェックを外す
-	BOOST_FOREACH( Variable *pVar, vars ){
-		if(pVar->bLiving&&pVar->ScopeLevel==level){
-			pVar->bLiving=0;
-			extern int obp;
-			pVar->ScopeEndAddress=obp;
-		}
-	}
-
-
-	//スコープ抜け出しスケジュール
-	ppScopes[level]->RunScheduleOfBreak();
-
-
-	//スコープレベルを下げる
-	delete ppScopes[level];
-	level--;
-}
 
 int CLexicalScopes::GetNowLevel(){
Index: trunk/jenga/src/smoothie/Method.cpp
===================================================================
--- trunk/jenga/src/smoothie/Method.cpp	(revision 203)
+++ 	(revision )
@@ -1,69 +1,0 @@
-#include <jenga/include/smoothie/Class.h>
-
-
-Methods::Methods()
-{
-}
-Methods::~Methods()
-{
-	Methods &methods = *this;
-	BOOST_FOREACH( CMethod *pMethod, methods ){
-		delete pMethod;
-	}
-}
-
-void Methods::Add( UserProc *pUserProc,Prototype::Accessibility accessibility, bool isConst, bool isAbstract, bool isVirtual ){
-	CMethod *pMethod = new DynamicMethod( pUserProc, accessibility, isAbstract, isVirtual, isConst );
-	this->push_back( pMethod );
-	pUserProc->SetMethod( pMethod );
-}
-void Methods::AddStatic(UserProc *pUserProc, Prototype::Accessibility accessibility ){
-	CMethod *pMethod = new StaticMethod( pUserProc, accessibility );
-	this->push_back( pMethod );
-	pUserProc->SetMethod( pMethod );
-}
-
-const CMethod *Methods::GetMethodPtr( UserProc *pUserProc ) const
-{
-	const Methods &methods = *this;
-	for( int i=(int)methods.size()-1; i>=0; i-- ){
-		if( pUserProc == methods[i]->pUserProc ){
-			return methods[i];
-		}
-	}
-	return NULL;
-}
-bool Methods::IsExist( const char *name ) const
-{
-	const Methods &methods = *this;
-	BOOST_FOREACH( const CMethod *pMethod, methods ){
-		if( pMethod->pUserProc->GetName() == name ) return true;
-	}
-	return false;
-}
-void Methods::Enum( const char *methodName, vector<UserProc *> &subs ) const
-{
-	//オブジェクトのメンバ関数の場合
-	//※オーバーライドされた関数を先にサーチする必要があるため、バックサーチを行う
-	const Methods &methods = *this;
-	for( int i=(int)methods.size()-1; i>=0; i-- ){
-		if( methods[i]->pUserProc->GetName() == methodName ){
-			subs.push_back( methods[i]->pUserProc );
-		}
-	}
-}
-void Methods::Enum( const BYTE idOperatorCalc, vector<UserProc *> &subs ) const
-{
-	//オブジェクトのメンバ関数の場合
-	//※オーバーライドされた関数を先にサーチする必要があるため、バックサーチを行う
-	const Methods &methods = *this;
-	for( int i=(int)methods.size()-1; i>=0; i-- ){
-		UserProc *pUserProc = methods[i]->pUserProc;
-		const char *temp = pUserProc->GetName().c_str();
-		if(temp[0]==1&&temp[1]==ESC_OPERATOR){
-			if((BYTE)temp[2]==idOperatorCalc){
-				subs.push_back( pUserProc );
-			}
-		}
-	}
-}
Index: trunk/jenga/src/smoothie/Procedure.cpp
===================================================================
--- trunk/jenga/src/smoothie/Procedure.cpp	(revision 203)
+++ 	(revision )
@@ -1,64 +1,0 @@
-#include <jenga/include/smoothie/Class.h>
-#include <jenga/include/smoothie/SmoothieException.h>
-
-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 ){
-		SmoothieException::Throw();
-	}
-	return pParentClass->GetNamespaceScopes();
-}
-const NamespaceScopesCollection &UserProc::GetImportedNamespaces() const
-{
-	if( !pParentClass ){
-		SmoothieException::Throw();
-	}
-	return pParentClass->GetImportedNamespaces();
-}
-bool UserProc::IsEqualSymbol( const NamespaceScopes &namespaceScopes, const string &name ) const
-{
-	SmoothieException::Throw();
-	return false;
-}
-
-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;
Index: trunk/jenga/src/smoothie/Prototype.cpp
===================================================================
--- trunk/jenga/src/smoothie/Prototype.cpp	(revision 203)
+++ 	(revision )
@@ -1,15 +1,0 @@
-#include <jenga/include/smoothie/BasicFixed.h>
-#include <jenga/include/smoothie/Class.h>
-
-bool Prototype::IsEqualSymbol( const Prototype &prototype ) const
-{
-	return IsEqualSymbol( prototype.GetNamespaceScopes(), prototype.GetName() );
-}
-bool Prototype::IsEqualSymbol( const string &fullName ) const
-{
-	char AreaName[VN_SIZE] = "";		//オブジェクト変数
-	char NestName[VN_SIZE] = "";		//入れ子メンバ
-	bool isNest = CClass::SplitName( fullName.c_str(), AreaName, NestName );
-
-	return IsEqualSymbol( NamespaceScopes( AreaName ), NestName );
-}
Index: trunk/jenga/src/smoothie/Smoothie.cpp
===================================================================
--- trunk/jenga/src/smoothie/Smoothie.cpp	(revision 203)
+++ trunk/jenga/src/smoothie/Smoothie.cpp	(revision 205)
@@ -4,5 +4,3 @@
 BasicSource Smoothie::Lexical::source;
 
-const CClass *Smoothie::Temp::pCompilingClass = NULL;
-
 bool Smoothie::isFullCompile = false;
Index: trunk/jenga/src/smoothie/Symbol.cpp
===================================================================
--- trunk/jenga/src/smoothie/Symbol.cpp	(revision 203)
+++ 	(revision )
@@ -1,22 +1,0 @@
-#include <jenga/include/smoothie/BasicFixed.h>
-#include <jenga/include/smoothie/Symbol.h>
-#include <jenga/include/smoothie/Class.h>
-
-Symbol::Symbol( const char *fullName )
-{
-	char areaName[VN_SIZE] = "";		//オブジェクト変数
-	char nestName[VN_SIZE] = "";		//入れ子メンバ
-	bool isNest = CClass::SplitName( fullName, areaName, nestName );
-
-	namespaceScopes = NamespaceScopes( areaName );
-	name = nestName;
-}
-Symbol::Symbol( const string &fullName )
-{
-	char areaName[VN_SIZE] = "";		//オブジェクト変数
-	char nestName[VN_SIZE] = "";		//入れ子メンバ
-	bool isNest = CClass::SplitName( fullName.c_str(), areaName, nestName );
-
-	namespaceScopes = NamespaceScopes( areaName );
-	name = nestName;
-}
Index: trunk/jenga/src/smoothie/Type.cpp
===================================================================
--- trunk/jenga/src/smoothie/Type.cpp	(revision 203)
+++ 	(revision )
@@ -1,465 +1,0 @@
-#include <jenga/include/smoothie/Smoothie.h>
-#include <jenga/include/smoothie/Class.h>
-#include <jenga/include/smoothie/SmoothieException.h>
-
-using namespace std;
-
-const int Type::basicTypeList[] = {
-	DEF_BYTE,
-	DEF_SBYTE,
-	DEF_WORD,
-	DEF_INTEGER,
-	DEF_DWORD,
-	DEF_LONG,
-	DEF_QWORD,
-	DEF_INT64,
-
-	DEF_SINGLE,
-	DEF_DOUBLE,
-
-	DEF_BOOLEAN,
-
-	DEF_PTR_VOID,
-
-	DEF_ANY,
-
-	DEF_NON
-};
-
-const string Type::basicTypeNameList[] = {
-	"Byte",
-	"SByte",
-	"Word",
-	"Integer",
-	"DWord",
-	"Long",
-	"QWord",
-	"Int64",
-
-	"Single",
-	"Double",
-
-	"Boolean",
-
-	"VoidPtr",
-
-	"Any",
-
-	""
-};
-
-bool Type::StringToBasicType( const string &typeName, int &basicType ){
-	for( int i=0; ; i++ ){
-		if( basicTypeList[i] == DEF_NON ){
-			break;
-		}
-		if( basicTypeNameList[i] == typeName ){
-			basicType = basicTypeList[i];
-			return true;
-		}
-	}
-	return false;
-}
-const char *Type::BasicTypeToCharPtr( const Type &type )
-{
-	for( int i=0; ; i++ ){
-		if( basicTypeList[i] == DEF_NON ){
-			break;
-		}
-		if( basicTypeList[i] == type.GetBasicType() ){
-			return basicTypeNameList[i].c_str();
-		}
-	}
-	return NULL;
-}
-
-int Type::GetBasicSize( int basicType )
-{
-
-	// 基本型
-	switch( basicType ){
-		case DEF_SBYTE:
-		case DEF_BYTE:
-		case DEF_BOOLEAN:
-			return sizeof(BYTE);
-
-		case DEF_INTEGER:
-		case DEF_WORD:
-			return sizeof(WORD);
-
-		case DEF_LONG:
-		case DEF_DWORD:
-			return sizeof(DWORD);
-
-		case DEF_INT64:
-		case DEF_QWORD:
-			return sizeof(_int64);
-
-		case DEF_DOUBLE:
-			return sizeof(double);
-		case DEF_SINGLE:
-			return sizeof(float);
-	}
-
-	// ポインタ
-	if(IsPointer( basicType )){
-		return PTR_SIZE;
-	}
-
-	// オブジェクト
-	if(basicType==DEF_OBJECT){
-		return PTR_SIZE;
-	}
-
-	SmoothieException::Throw();
-
-	return 0;
-}
-
-
-bool Type::Equals( const Type &type ) const
-{
-	if( basicType == type.basicType ){
-		if( NATURAL_TYPE( basicType ) == DEF_OBJECT
-			|| NATURAL_TYPE( basicType ) == DEF_STRUCT ){
-
-				if( index == type.index ){
-					return true;
-				}
-
-		}
-		else{
-			return true;
-		}
-	}
-	return false;
-}
-
-int Type::GetBasicSize() const
-{
-	return GetBasicSize( basicType );
-}
-int Type::GetSize() const
-{
-
-	// 基本型
-	switch( basicType ){
-		case DEF_LONG:
-			if(index==LITERAL_NULL||index==LITERAL_M128_0||index==LITERAL_0_255){
-				return sizeof(BYTE);
-			}
-			else if(index==LITERAL_M32768_0||index==LITERAL_0_65535){
-				return sizeof(WORD);
-			}
-			return sizeof(DWORD);
-
-		case DEF_SBYTE:
-		case DEF_BYTE:
-		case DEF_BOOLEAN:
-			return sizeof(BYTE);
-
-		case DEF_INTEGER:
-		case DEF_WORD:
-			return sizeof(WORD);
-
-		case DEF_DWORD:
-			return sizeof(DWORD);
-
-		case DEF_INT64:
-		case DEF_QWORD:
-			return sizeof(_int64);
-
-		case DEF_DOUBLE:
-			return sizeof(double);
-		case DEF_SINGLE:
-			return sizeof(float);
-	}
-
-	// ポインタ
-	if(IsPointer()){
-		return PTR_SIZE;
-	}
-
-	// 構造体
-	if( basicType == DEF_STRUCT ){
-		if( !pClass ){
-			SmoothieException::Throw();
-			return 0;
-		}
-
-		return pClass->GetSize();
-	}
-
-	// オブジェクト
-	if(basicType==DEF_OBJECT){
-		if( GetClass().IsInterface() ){
-			// vtblOffsetのサイズを含める
-			return PTR_SIZE*2;
-		}
-		return PTR_SIZE;
-	}
-
-	SmoothieException::Throw();
-	return 0;
-}
-
-bool Type::IsNull() const{
-  if( basicType == DEF_NON ){
-	  return true;
-  }
-  return false;
-}
-
-bool Type::IsByte() const{
-  if( basicType == DEF_BYTE ){
-	  return true;
-  }
-  return false;
-}
-bool Type::IsSByte() const{
-  if( basicType == DEF_SBYTE ){
-	  return true;
-  }
-  return false;
-}
-bool Type::IsWord() const{
-  if( basicType == DEF_WORD ){
-	  return true;
-  }
-  return false;
-}
-bool Type::IsInteger() const{
-  if( basicType == DEF_INTEGER ){
-	  return true;
-  }
-  return false;
-}
-bool Type::IsDWord() const{
-  if( basicType == DEF_DWORD ){
-	  return true;
-  }
-  return false;
-}
-bool Type::IsLong() const{
-  if( basicType == DEF_LONG ){
-	  return true;
-  }
-  return false;
-}
-bool Type::IsQWord() const{
-  if( basicType == DEF_QWORD ){
-	  return true;
-  }
-  return false;
-}
-bool Type::IsInt64() const{
-  if( basicType == DEF_INT64 ){
-	  return true;
-  }
-  return false;
-}
-bool Type::IsSingle() const{
-  if( basicType == DEF_SINGLE ){
-	  return true;
-  }
-  return false;
-}
-bool Type::IsDouble() const{
-  if( basicType == DEF_DOUBLE ){
-	  return true;
-  }
-  return false;
-}
-bool Type::IsBoolean() const{
-  if( basicType == DEF_BOOLEAN ){
-	  return true;
-  }
-  return false;
-}
-
-bool Type::IsPointer( int basicType )
-{
-	if(PTR_LEVEL( basicType )|| basicType == DEF_PTR_VOID || basicType == DEF_PTR_PROC
-		|| ( basicType & FLAG_PTR ) ){
-			return true;
-	}
-
-	return false;
-}
-bool Type::IsPointer() const
-{
-	return IsPointer( basicType );
-}
-bool Type::IsSigned() const
-{
-	switch( basicType ){
-		case DEF_SBYTE:
-		case DEF_INTEGER:
-		case DEF_LONG:
-		case DEF_INT64:
-		case DEF_SINGLE:
-		case DEF_DOUBLE:
-			return true;
-		default:
-			break;
-	}
-	return false;
-}
-bool Type::IsNaturalWhole() const
-{
-	switch( basicType ){
-		case DEF_SBYTE:
-		case DEF_BYTE:
-		case DEF_INTEGER:
-		case DEF_WORD:
-		case DEF_LONG:
-		case DEF_DWORD:
-		case DEF_INT64:
-		case DEF_QWORD:
-			return true;
-		default:
-			break;
-	}
-	return false;
-}
-bool Type::IsWhole() const
-{
-	return (
-		IsNaturalWhole()
-		|| IsPointer( basicType )
-		|| basicType == DEF_BOOLEAN
-		);
-}
-bool Type::IsReal() const
-{
-	switch( basicType ){
-		case DEF_SINGLE:
-		case DEF_DOUBLE:
-			return true;
-		default:
-			break;
-	}
-	return false;
-}
-bool Type::Is64() const
-{
-	switch( basicType ){
-		case DEF_QWORD:
-		case DEF_INT64:
-			return true;
-		default:
-			break;
-	}
-	return false;
-}
-bool Type::IsProcPtr() const
-{
-	if( basicType == DEF_PTR_PROC ){
-		return true;
-	}
-	return false;
-}
-bool Type::IsStruct() const
-{
-	if( basicType == DEF_STRUCT ){
-		return true;
-	}
-	return false;
-}
-bool Type::IsStructPtr() const
-{
-	if( basicType == DEF_PTR_STRUCT ){
-		return true;
-	}
-	return false;
-}
-bool Type::IsObject() const
-{
-	if( basicType == DEF_OBJECT ){
-		return true;
-	}
-	return false;
-}
-bool Type::IsObjectPtr() const
-{
-	if( basicType == DEF_PTR_OBJECT ){
-		return true;
-	}
-	return false;
-}
-bool Type::IsObjectClass() const
-{
-	if( basicType == DEF_OBJECT ){
-		if( pClass->GetName() == "Object" ){
-			return true;
-		}
-	}
-	return false;
-}
-bool Type::IsStringClass() const
-{
-	if( basicType == DEF_OBJECT ){
-		if( pClass->GetName() == "String" ){
-			return true;
-		}
-	}
-	return false;
-}
-bool Type::IsVoidPtr() const
-{
-	if( basicType == DEF_PTR_VOID ){
-		return true;
-	}
-	return false;
-}
-
-bool Type::IsAny() const
-{
-	if( basicType == DEF_ANY ){
-		return true;
-	}
-	return false;
-}
-
-bool Type::HasMember() const
-{
-	if( NATURAL_TYPE( basicType ) == DEF_OBJECT
-		|| NATURAL_TYPE( basicType ) == DEF_STRUCT ){
-			return true;
-	}
-	return false;
-}
-
-int Type::GetBasicTypeFromSimpleName( const char *variable ){
-	extern char DefIntVari[26],DefSngVari[26],DefStrVari[26],divNum,dsvNum,dStrvNum;
-	int i;
-	char name[VN_SIZE];
-
-	//構造体メンバの場合を考慮
-	for(i=lstrlen(variable);i>0;i--){
-		if(variable[i]=='.'){
-			i++;
-			break;
-		}
-	}
-
-	for(;;i++){
-		if(variable[i]=='('||variable[i]=='\0'){
-			name[i]=0;
-			break;
-		}
-		name[i]=variable[i];
-	}
-	//変数名から選択
-	i--;
-	if(name[i]=='#') return DEF_DOUBLE;
-	if(name[i]=='!') return DEF_SINGLE;
-	if(name[i]=='%') return DEF_INTEGER;
-	return DEF_DOUBLE;
-}
-
-
-const string BlittableType::GetCreateStaticMethodFullName() const
-{
-	return pClass->GetNamespaceScopes().ToString() + "." + pClass->GetName() + "._Create";
-}
Index: trunk/jenga/src/smoothie/Variable.cpp
===================================================================
--- trunk/jenga/src/smoothie/Variable.cpp	(revision 203)
+++ 	(revision )
@@ -1,47 +1,0 @@
-#include <jenga/include/smoothie/Smoothie.h>
-#include <jenga/include/smoothie/Class.h>
-
-
-bool Variables::DuplicateCheck( const Symbol &symbol ) const
-{
-	//レキシカルスコープを考慮して重複判定
-	for( int i=(int)this->size()-1; i>=0 ; i-- ){
-		Variable &var = *(*this)[i];
-		if( var.bLiving											//現在のスコープで有効なもの
-			&& var.ScopeLevel == Smoothie::Temp::pLexicalScopes->GetNowLevel()	//現在のスコープと同一レベル
-			){
-				if( var.IsEqualSymbol( symbol ) ){
-					return true;
-				}
-		}
-	}
-	return false;
-}
-
-const Variable *Variables::BackSearch( const Symbol &symbol ) const
-{
-	//レキシカルスコープを考慮してバックサーチ
-	for( int i=(int)this->size()-1; i>=0 ; i-- ){
-		Variable &var = *(*this)[i];
-		if( var.bLiving											//現在のスコープで有効なもの
-			&& var.ScopeLevel <= Smoothie::Temp::pLexicalScopes->GetNowLevel()	//現在のスコープレベルを超さないもの（Returnによる解放処理中を考慮）
-			){
-				if( var.IsEqualSymbol( symbol ) ){
-					return &var;
-				}
-		}
-	}
-	return NULL;
-}
-
-const Variable *Variables::Find( const Symbol &symbol )const
-{
-	int max = (int)this->size();
-	for( int i=0; i<max; i++ ){
-		Variable *pVar = (*this)[i];
-		if( pVar->IsEqualSymbol( symbol ) ){
-			return pVar;
-		}
-	}
-	return NULL;
-}
