Changeset 272 in dev for trunk/abdev/BasicCompiler_Common
- Timestamp:
- Aug 10, 2007, 9:20:45 PM (17 years ago)
- Location:
- trunk/abdev/BasicCompiler_Common
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abdev/BasicCompiler_Common/Intermediate_Step2.cpp
r265 r272 93 93 NamespaceScopes &namespaceScopes = compiler.GetNamespaceSupporter().GetLivingNamespaceScopes(); 94 94 namespaceScopes.clear(); 95 96 //定数に関する情報を初期化97 compiler.GetObjectModule().meta.GetGlobalConsts().Clear();98 compiler.GetObjectModule().meta.GetGlobalConstMacros().Clear();99 95 100 96 extern char *basbuf; -
trunk/abdev/BasicCompiler_Common/MakeExe.cpp
r268 r272 137 137 138 138 //グローバル変数に関する情報 139 // TODO: AllGlobalVarSize、AllInitGlobalVarSizeをVariablesクラスに入れる 139 140 extern int AllGlobalVarSize; 140 141 extern int AllInitGlobalVarSize; -
trunk/abdev/BasicCompiler_Common/Subroutine.cpp
r265 r272 282 282 int i,i2,i3; 283 283 char temporary[8192]; 284 285 //サブルーチン(ユーザー定義)情報を初期化286 userProcs.Clear();287 288 //Declare(DLL関数)情報を初期化289 dllProcs.Clear();290 284 291 285 // 名前空間管理 … … 408 402 if(source[i]=='\0') break; 409 403 } 410 411 ////////////412 // 特殊関数413 ////////////414 namespaceScopes.clear();415 importedNamespaces.clear();416 417 #ifndef _AMD64_418 sprintf(temporary,"%c%c_allrem()",1,ESC_SUB);419 userProcs.Add( namespaceScopes, importedNamespaces, temporary,0,false,NULL,false);420 421 sprintf(temporary,"%c%c_aullrem()",1,ESC_SUB);422 userProcs.Add( namespaceScopes, importedNamespaces, temporary,0,false,NULL,false);423 424 sprintf(temporary,"%c%c_allmul()",1,ESC_SUB);425 userProcs.Add( namespaceScopes, importedNamespaces, temporary,0,false,NULL,false);426 427 sprintf(temporary,"%c%c_alldiv()",1,ESC_SUB);428 userProcs.Add( namespaceScopes, importedNamespaces, temporary,0,false,NULL,false);429 430 sprintf(temporary,"%c%c_aulldiv()",1,ESC_SUB);431 userProcs.Add( namespaceScopes, importedNamespaces, temporary,0,false,NULL,false);432 433 sprintf(temporary,"%c%c_allshl()",1,ESC_SUB);434 userProcs.Add( namespaceScopes, importedNamespaces, temporary,0,false,NULL,false);435 436 sprintf(temporary,"%c%c_allshr()",1,ESC_SUB);437 userProcs.Add( namespaceScopes, importedNamespaces, temporary,0,false,NULL,false);438 439 sprintf(temporary,"%c%c_aullshr()",1,ESC_SUB);440 userProcs.Add( namespaceScopes, importedNamespaces, temporary,0,false,NULL,false);441 #endif442 443 sprintf(temporary,"%c%c_System_InitStaticLocalVariables()",1,ESC_SUB);444 userProcs.Add( namespaceScopes, importedNamespaces, temporary,0,false,NULL,false);445 404 } 446 405 void Delete_di(DllProc *pDllProc){ -
trunk/abdev/BasicCompiler_Common/gc.cpp
r229 r272 19 19 /////////////////////////////// 20 20 21 sprintf(temporary,"_System_gc_StackRoot_StartPtr%c%c*LONG_PTR",1,ESC_AS); 22 OpcodeDim(temporary,0); 21 if( compiler.GetObjectModule().meta.GetGlobalVars().Find( Symbol( "_System_gc_StackRoot_StartPtr" ) ) == NULL ) 22 { 23 // 未定義の場合は定義する 24 sprintf(temporary,"_System_gc_StackRoot_StartPtr%c%c*LONG_PTR",1,ESC_AS); 25 OpcodeDim(temporary,0); 26 } 23 27 24 28 GetVarOffsetReadWrite("_System_gc_StackRoot_StartPtr",&RelativeVar,type); -
trunk/abdev/BasicCompiler_Common/include/Class.h
r270 r272 419 419 // 特殊クラス 420 420 ///////////////////////////// 421 CClass *pStringClass;422 CClass *pObjectClass;423 CClass *GetStringClassPtr() const;424 CClass *GetObjectClassPtr() const;421 mutable const CClass *pStringClass; 422 mutable const CClass *pObjectClass; 423 const CClass *GetStringClassPtr() const; 424 const CClass *GetObjectClassPtr() const; 425 425 }; -
trunk/abdev/BasicCompiler_Common/include/Meta.h
r270 r272 70 70 { 71 71 } 72 73 // 初期化 74 void Clear(); 72 75 73 76 // 静的リンク -
trunk/abdev/BasicCompiler_Common/include/NativeCode.h
r265 r272 44 44 ar & BOOST_SERIALIZATION_NVP( type ); 45 45 ar & BOOST_SERIALIZATION_NVP( offset ); 46 47 switch( type ) 48 { 49 case UserProc: 50 case AddressOf: 51 ar & BOOST_SERIALIZATION_NVP( const_cast<::UserProc *&>(pUserProc) ); 52 break; 53 case DllProc: 54 ar & BOOST_SERIALIZATION_NVP( const_cast<::DllProc *&>(pDllProc) ); 55 break; 56 default: 57 ar & BOOST_SERIALIZATION_NVP( lpValue ); 58 break; 59 } 46 60 } 47 61 -
trunk/abdev/BasicCompiler_Common/include/TypeDef.h
r215 r272 74 74 void Add( const NamespaceScopes &namespaceScopes, const string &expression, int nowLine ); 75 75 public: 76 void Init();76 void CollectTypeDefs(); 77 77 }; -
trunk/abdev/BasicCompiler_Common/src/Class.cpp
r270 r272 219 219 if( !isInheritsClass ){ 220 220 // クラスを一つも継承していないとき 221 const CClass *pObjectClass = compiler.GetObjectModule().meta.GetClasses().Find("Object"); 222 if( !pObjectClass ){ 223 SmoothieException::Throw(106,"Object",i); 224 return false; 225 } 226 227 if( !InheritsClass( *pObjectClass, nowLine ) ){ 221 if( !InheritsClass( *compiler.GetObjectModule().meta.GetClasses().GetObjectClassPtr(), nowLine ) ){ 228 222 return false; 229 223 } … … 763 757 bool Classes::Insert( CClass *pClass ) 764 758 { 765 // キャッシュしておくクラス766 if( pClass->GetName() == "String" )767 {768 pStringClass=pClass;769 }770 else if( pClass->GetName() == "Object" )771 {772 pObjectClass = pClass;773 }774 775 759 ///////////////////////////////// 776 760 // ハッシュデータに追加 … … 804 788 int i, i2; 805 789 char temporary[VN_SIZE]; 806 807 // Blittable型管理オブジェクトを初期化808 compiler.GetObjectModule().meta.GetBlittableTypes().clear();809 790 810 791 // 名前空間管理 … … 953 934 while(this->Iterator_HasNext()){ 954 935 CClass &objClass = *this->Iterator_GetNext(); 936 if( objClass.isTargetObjectModule == false ) 937 { 938 // 静的リンクライブラリの場合は飛ばす(既にインスタンスが定義済みであるため) 939 continue; 940 } 955 941 956 942 // 名前空間をセット … … 1653 1639 } 1654 1640 1655 CClass *Classes::GetStringClassPtr() const1641 const CClass *Classes::GetStringClassPtr() const 1656 1642 { 1657 1643 if( !pStringClass ){ 1658 SmoothieException::Throw(); 1659 return NULL; 1644 // キャッシュしておく 1645 pStringClass = this->Find( NamespaceScopes( "System" ), "String" ); 1646 1647 if( !pStringClass ) 1648 { 1649 SmoothieException::Throw(); 1650 } 1651 return pStringClass; 1660 1652 } 1661 1653 return pStringClass; 1662 1654 } 1663 CClass *Classes::GetObjectClassPtr() const1655 const CClass *Classes::GetObjectClassPtr() const 1664 1656 { 1665 1657 if( !pObjectClass ){ 1666 SmoothieException::Throw(); 1667 return NULL; 1658 // キャッシュしておく 1659 pObjectClass = this->Find( NamespaceScopes( "System" ), "Object" ); 1660 1661 if( !pObjectClass ) 1662 { 1663 SmoothieException::Throw(); 1664 } 1665 return pObjectClass; 1668 1666 } 1669 1667 return pObjectClass; -
trunk/abdev/BasicCompiler_Common/src/Meta.cpp
r271 r272 2 2 3 3 #include <Compiler.h> 4 5 void Meta::Clear() 6 { 7 // 名前空間 8 namespaceScopesCollection.clear(); 9 10 // 関数・メソッド 11 userProcs.Clear(); 12 13 // DLL関数 14 dllProcs.Clear(); 15 16 // クラス 17 classesImpl.Clear(); 18 19 // グローバル変数 20 globalVars.Clear(); 21 22 // グローバル定数 23 globalConsts.Clear(); 24 25 // グローバル定数マクロ 26 globalConstMacros.Clear(); 27 28 // blittable型 29 blittableTypes.clear(); 30 31 // TypeDef 32 typeDefs.clear(); 33 34 // 関数ポインタ 35 procPointers.Clear(); 36 } 4 37 5 38 void Meta::StaticLink( Meta &meta ) -
trunk/abdev/BasicCompiler_Common/src/TypeDef.cpp
r206 r272 142 142 } 143 143 144 void TypeDefCollection::Init(){ 145 // 初期化 146 clear(); 144 void TypeDefCollection::CollectTypeDefs(){ 147 145 148 146 // 名前空間管理
Note:
See TracChangeset
for help on using the changeset viewer.