Changeset 193 in dev for trunk/abdev/BasicCompiler32
- Timestamp:
- Jun 26, 2007, 5:04:50 AM (17 years ago)
- Location:
- trunk/abdev/BasicCompiler32
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abdev/BasicCompiler32/BasicCompiler.vcproj
r191 r193 1287 1287 > 1288 1288 </File> 1289 <File 1290 RelativePath="..\BasicCompiler_Common\src\TypeDef.cpp" 1291 > 1292 </File> 1293 <File 1294 RelativePath="..\BasicCompiler_Common\src\VariableImpl.cpp" 1295 > 1296 </File> 1289 1297 </Filter> 1290 1298 </Filter> … … 1380 1388 > 1381 1389 </File> 1390 <File 1391 RelativePath="..\BasicCompiler_Common\include\TypeDef.h" 1392 > 1393 </File> 1394 <File 1395 RelativePath="..\BasicCompiler_Common\include\VariableImpl.h" 1396 > 1397 </File> 1382 1398 </Filter> 1383 1399 </Filter> -
trunk/abdev/BasicCompiler32/Compile_Calc.cpp
r183 r193 1 1 #include <jenga/include/smoothie/Smoothie.h> 2 2 #include <jenga/include/smoothie/LexicalAnalysis.h> 3 4 #include <Compiler.h> 3 5 4 6 #include "../BasicCompiler_Common/common.h" … … 622 624 623 625 624 if( varType.IsObject() && Smoothie::GetMeta().blittableTypes.IsExist( calcType ) ){626 if( varType.IsObject() && compiler.GetMeta().GetBlittableTypes().IsExist( calcType ) ){ 625 627 // Blittable型をオブジェクトとして扱う 626 628 vector<UserProc *> userProcs; 627 Smoothie::GetMeta().blittableTypes.GetClass( calcType ).GetStaticMethods().Enum( "_Create", userProcs );629 compiler.GetMeta().GetBlittableTypes().GetClass( calcType ).GetStaticMethods().Enum( "_Create", userProcs ); 628 630 if( userProcs.size() != 1 ){ 629 631 SetError(); -
trunk/abdev/BasicCompiler32/Compile_CallProc.cpp
r183 r193 1 1 #include <jenga/include/smoothie/Smoothie.h> 2 3 #include <Compiler.h> 2 4 3 5 #include "../BasicCompiler_Common/common.h" … … 129 131 pobj_c = &varType.GetClass(); 130 132 if( NATURAL_TYPE( varType.GetBasicType() ) != DEF_OBJECT ){ 131 pobj_c= Smoothie::GetMeta().GetClasses().Find(ObjectName);133 pobj_c=compiler.GetMeta().GetClasses().Find(ObjectName); 132 134 if( pobj_c ){ 133 135 isStatic = true; -
trunk/abdev/BasicCompiler32/Compile_Func.cpp
r183 r193 1 1 #include <jenga/include/smoothie/Smoothie.h> 2 3 #include <Compiler.h> 2 4 3 5 #include "../BasicCompiler_Common/common.h" … … 178 180 tempParm=temp2; 179 181 180 type.SetType( DEF_OBJECT, Smoothie::GetMeta().GetClasses().GetStringClassPtr() );182 type.SetType( DEF_OBJECT, compiler.GetMeta().GetClasses().GetStringClassPtr() ); 181 183 } 182 184 … … 230 232 231 233 //オーバーロードを解決 232 pUserProc=OverloadSolution(name,subs, Smoothie::GetMeta().GetProcPointers()[ProcPtr_BaseIndex]->Params(), Type() );234 pUserProc=OverloadSolution(name,subs,compiler.GetMeta().GetProcPointers()[ProcPtr_BaseIndex]->Params(), Type() ); 233 235 234 236 if(!pUserProc){ … … 318 320 void Opcode_Func_SizeOf( const string &typeName ){ 319 321 Type tempType; 320 if( ! Type::StringToType( typeName, tempType ) ){322 if( !Compiler::StringToType( typeName, tempType ) ){ 321 323 SetError(3,typeName,cp); 322 324 return; -
trunk/abdev/BasicCompiler32/Compile_ProcOp.cpp
r183 r193 3 3 4 4 #include <Program.h> 5 #include <Compiler.h> 5 6 #include <LexicalScopingImpl.h> 6 7 #include <ClassImpl.h> 8 #include <VariableImpl.h> 7 9 8 10 #include "../BasicCompiler_Common/common.h" … … 55 57 56 58 //クラスに属する静的メンバを定義 57 Smoothie::GetMeta().GetClasses().InitStaticMember();59 compiler.GetMeta().GetClasses().InitStaticMember(); 58 60 59 61 GetGlobalDataForDll(); … … 224 226 && userProc.GetParentClass().GetName() == "_System_TypeBase" ){ 225 227 226 Smoothie::GetMeta().GetClasses().Compile_System_InitializeUserTypes();228 compiler.GetMeta().GetClasses().Compile_System_InitializeUserTypes(); 227 229 } 228 230 else if( userProc.GetName() == "RegisterGlobalRoots" … … 273 275 274 276 //コンパイルスタートをクラス管理クラスに追加 275 Smoothie::GetMeta().GetClasses().StartCompile( pUserProc );277 compiler.GetMeta().GetClasses().StartCompile( pUserProc ); 276 278 277 279 //コンパイル中の関数 … … 282 284 283 285 // コンパイル中の関数でImportsされている名前空間 284 Smoothie::Temp::importedNamespaces = pUserProc->GetImportedNamespaces();286 compiler.SetImportedNamespaces( pUserProc->GetImportedNamespaces() ); 285 287 286 288 if(pUserProc->IsSystem()){ … … 318 320 Parameter ¶m = *pUserProc->RealParams()[i3]; 319 321 320 Variable *pVar = new Variable ( param.GetVarName(), param, false, param.IsRef() );322 Variable *pVar = new VariableImpl( param.GetVarName(), param, false, param.IsRef() ); 321 323 322 324 if( param.IsArray() ){ … … 395 397 else{ 396 398 if( pUserProc->ReturnType().IsObject() ){ 397 sprintf(temporary,"%s=Nothing%c%c%s",temp,1,ESC_AS, pUserProc->ReturnType().ToString().c_str() );399 sprintf(temporary,"%s=Nothing%c%c%s",temp,1,ESC_AS, Compiler::TypeToString( pUserProc->ReturnType() ).c_str() ); 398 400 } 399 401 else{ 400 402 //戻り値用の変数の定義 401 sprintf(temporary,"%s%c%c%s",temp,1,ESC_AS, pUserProc->ReturnType().ToString().c_str() );403 sprintf(temporary,"%s%c%c%s",temp,1,ESC_AS, Compiler::TypeToString( pUserProc->ReturnType() ).c_str() ); 402 404 } 403 405 -
trunk/abdev/BasicCompiler32/Compile_Var.cpp
r183 r193 5 5 #include <CodeGenerator.h> 6 6 #include <Compiler.h> 7 #include <VariableImpl.h> 7 8 8 9 #include "../BasicCompiler_Common/common.h" … … 367 368 // 名前空間を分離 368 369 char namespaceStr[VN_SIZE]="", simpleName[VN_SIZE]; 369 Smoothie::GetMeta().namespaceScopesCollection.SplitNamespace( variable, namespaceStr, simpleName );370 compiler.GetMeta().GetNamespaces().SplitNamespace( variable, namespaceStr, simpleName ); 370 371 371 372 // 先頭オブジェクトまたはクラス名と入れ子メンバに分割 … … 461 462 //Const修飾子のメソッド内でメンバ書き込みアクセスが発生したとき 462 463 //(コンストラクタ、デストラクタ内を除く) 463 const CMethod *pMethod = Smoothie::GetMeta().GetClasses().GetNowCompilingMethodInfo();464 const CMethod *pMethod = compiler.GetMeta().GetClasses().GetNowCompilingMethodInfo(); 464 465 if( isWriteAccess && 465 466 pMethod->IsConst() && … … 524 525 } 525 526 526 int typeDefIndex = Smoothie::GetMeta().typeDefs.GetIndex( VarName );527 int typeDefIndex = compiler.GetMeta().GetTypeDefs().GetIndex( VarName ); 527 528 if( typeDefIndex != -1 ){ 528 529 // TypeDef後の型名だったとき 529 lstrcpy( VarName, Smoothie::GetMeta().typeDefs[typeDefIndex].GetBaseName().c_str() );530 lstrcpy( VarName, compiler.GetMeta().GetTypeDefs()[typeDefIndex].GetBaseName().c_str() ); 530 531 } 531 532 … … 832 833 char *temp; 833 834 temp=(char *)i64data; 834 i2= Compiler::GetNativeCode().GetDataTable().AddString(temp,lstrlen(temp));835 i2=compiler.GetNativeCode().GetDataTable().AddString(temp,lstrlen(temp)); 835 836 HeapDefaultFree(temp); 836 837 … … 1022 1023 char *temp; 1023 1024 temp=(char *)i64data; 1024 i2= Compiler::GetNativeCode().GetDataTable().AddString(temp,lstrlen(temp));1025 i2=compiler.GetNativeCode().GetDataTable().AddString(temp,lstrlen(temp)); 1025 1026 HeapDefaultFree(temp); 1026 1027 … … 1095 1096 bool isConst = ( dwFlags & DIMFLAG_CONST ) ? true:false; 1096 1097 1097 Variable *pVar = new Variable ( VarName, type, isConst );1098 Variable *pVar = new VariableImpl( VarName, type, isConst ); 1098 1099 1099 1100 if( SubScripts[0] != -1 ){ -
trunk/abdev/BasicCompiler32/MakePeHdr.cpp
r191 r193 140 140 ////////////////// 141 141 // データテーブル 142 Compiler::GetNativeCode().GetDataTable().Init();142 compiler.GetNativeCode().GetDataTable().Init(); 143 143 if(bDebugCompile){ 144 Compiler::GetNativeCode().GetDataTable().Add( (long)0x00000002 );144 compiler.GetNativeCode().GetDataTable().Add( (long)0x00000002 ); 145 145 } 146 146 … … 166 166 167 167 //関数ポインタ情報を初期化 168 Smoothie::GetMeta().GetProcPointers().clear();168 compiler.GetMeta().GetProcPointers().clear(); 169 169 170 170 // 名前空間情報を取得 171 171 NamespaceScopesCollection::CollectNamespaces( 172 172 Smoothie::Lexical::source.GetBuffer(), 173 Smoothie::GetMeta().namespaceScopesCollection173 compiler.GetMeta().GetNamespaces() 174 174 ); 175 175 … … 177 177 // GetSubInfo関数の中で参照されるオブジェクト名を事前に取得する。 178 178 // ※オブジェクトの内容までは取得しない 179 Smoothie::GetMeta().GetClasses().CollectClassesForNameOnly( Smoothie::Lexical::source );179 compiler.GetMeta().GetClasses().CollectClassesForNameOnly( Smoothie::Lexical::source ); 180 180 181 181 //TypeDef情報を初期化 182 Smoothie::GetMeta().typeDefs.Init();182 compiler.GetMeta().GetTypeDefs().Init(); 183 183 184 184 //定数情報を取得 … … 190 190 191 191 //クラス情報を取得(※注 - GetSubInfoの後に呼び出す) 192 Smoothie::GetMeta().GetClasses().GetAllClassInfo();193 194 if( ! Smoothie::GetMeta().AutoWrite( Jenga::Common::Environment::GetAppDir() + "\\meta_test.xml" ) )192 compiler.GetMeta().GetClasses().GetAllClassInfo(); 193 194 if( !compiler.GetMeta().AutoWrite( Jenga::Common::Environment::GetAppDir() + "\\meta_test.xml" ) ) 195 195 { 196 196 ts(0); … … 415 415 416 416 //クラスに属する静的メンバを定義 417 Smoothie::GetMeta().GetClasses().InitStaticMember();417 compiler.GetMeta().GetClasses().InitStaticMember(); 418 418 419 419 //グローバル実行領域をコンパイル開始 … … 884 884 885 885 //データセクションのファイル上のサイズ 886 if( Compiler::GetNativeCode().GetDataTable().GetSize()%FILE_ALIGNMENT) FileSize_DataSection=Compiler::GetNativeCode().GetDataTable().GetSize()+(FILE_ALIGNMENT-Compiler::GetNativeCode().GetDataTable().GetSize()%FILE_ALIGNMENT);887 else FileSize_DataSection= Compiler::GetNativeCode().GetDataTable().GetSize();886 if(compiler.GetNativeCode().GetDataTable().GetSize()%FILE_ALIGNMENT) FileSize_DataSection=compiler.GetNativeCode().GetDataTable().GetSize()+(FILE_ALIGNMENT-compiler.GetNativeCode().GetDataTable().GetSize()%FILE_ALIGNMENT); 887 else FileSize_DataSection=compiler.GetNativeCode().GetDataTable().GetSize(); 888 888 if(FileSize_DataSection) bUse_DataSection=1; 889 889 else bUse_DataSection=0; … … 1076 1076 //////////////////////////////////////// 1077 1077 //仮想関数データテーブルスケジュール 1078 Smoothie::GetMeta().GetClasses().ActionVtblSchedule(ImageBase,MemPos_CodeSection);1078 compiler.GetMeta().GetClasses().ActionVtblSchedule(ImageBase,MemPos_CodeSection); 1079 1079 1080 1080 … … 1611 1611 if(bUse_DataSection){ 1612 1612 //データ テーブル 1613 WriteFile(hFile, Compiler::GetNativeCode().GetDataTable().GetPtr(),Compiler::GetNativeCode().GetDataTable().GetSize(),(DWORD *)&i2,NULL);1613 WriteFile(hFile,compiler.GetNativeCode().GetDataTable().GetPtr(),compiler.GetNativeCode().GetDataTable().GetSize(),(DWORD *)&i2,NULL); 1614 1614 i+=i2; 1615 1615 } … … 1723 1723 1724 1724 //クラスに関するメモリを解放 1725 Smoothie::GetMeta().GetClasses().Clear();1725 compiler.GetMeta().GetClasses().Clear(); 1726 1726 } -
trunk/abdev/BasicCompiler32/NumOpe.cpp
r183 r193 82 82 SetStringQuotes( parameter ); 83 83 84 Operator_New( * Smoothie::GetMeta().GetClasses().GetStringClassPtr(), "", parameter, Type( DEF_OBJECT, *Smoothie::GetMeta().GetClasses().GetStringClassPtr() ) );84 Operator_New( *compiler.GetMeta().GetClasses().GetStringClassPtr(), "", parameter, Type( DEF_OBJECT, *compiler.GetMeta().GetClasses().GetStringClassPtr() ) ); 85 85 86 86 free( parameter ); … … 261 261 Type leftType; 262 262 if( GetTermType( termLeft, leftType, isLiteral, &isClassName ) ){ 263 if( isClassName == false && Smoothie::GetMeta().blittableTypes.IsExist( leftType ) ){263 if( isClassName == false && compiler.GetMeta().GetBlittableTypes().IsExist( leftType ) ){ 264 264 // 左側のオブジェクト部分がBlittable型のとき 265 265 … … 267 267 lstrcpy( temporary, termLeft ); 268 268 sprintf( termLeft, "%s(%s)", 269 Smoothie::GetMeta().blittableTypes.Find( leftType ).GetCreateStaticMethodFullName().c_str(),269 compiler.GetMeta().GetBlittableTypes().Find( leftType ).GetCreateStaticMethodFullName().c_str(), 270 270 temporary ); 271 271 } … … 296 296 297 297 if( pIsClassName ){ 298 if( Smoothie::GetMeta().GetClasses().Find( termFull ) ){298 if( compiler.GetMeta().GetClasses().Find( termFull ) ){ 299 299 *pIsClassName = true; 300 300 return true; … … 593 593 } 594 594 595 i2 = Compiler::GetNativeCode().GetDataTable().AddBinary( binary, num * tempBaseType.GetSize() );595 i2 = compiler.GetNativeCode().GetDataTable().AddBinary( binary, num * tempBaseType.GetSize() ); 596 596 597 597 //mov eax,i2 … … 709 709 // As演算子の右辺値 710 710 //型名 711 if( Type::StringToType( term, resultType ) ){711 if( Compiler::StringToType( term, resultType ) ){ 712 712 resultType.SetBasicType( resultType.GetBasicType() | FLAG_CAST ); 713 713 } … … 740 740 741 741 type_stack[sp]=DEF_OBJECT; 742 index_stack[sp]=(LONG_PTR) Smoothie::GetMeta().GetClasses().GetStringClassPtr();742 index_stack[sp]=(LONG_PTR)compiler.GetMeta().GetClasses().GetStringClassPtr(); 743 743 bLiteralCalculation=0; 744 744 … … 751 751 bLiteralCalculation=0; 752 752 753 i2= Compiler::GetNativeCode().GetDataTable().AddString(term,i3);753 i2=compiler.GetNativeCode().GetDataTable().AddString(term,i3); 754 754 755 755 //push DataSize … … 838 838 } 839 839 else{ 840 index_stack[sp] = (LONG_PTR) Smoothie::GetMeta().GetClasses().GetObjectClassPtr();840 index_stack[sp] = (LONG_PTR)compiler.GetMeta().GetClasses().GetObjectClassPtr(); 841 841 } 842 842
Note:
See TracChangeset
for help on using the changeset viewer.