Changeset 71 in dev
- Timestamp:
- Mar 15, 2007, 5:00:34 AM (18 years ago)
- Files:
-
- 3 added
- 12 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
BasicCompiler32/BasicCompiler.vcproj
r67 r71 1048 1048 </Filter> 1049 1049 <Filter 1050 Name=" Class"1050 Name="Type" 1051 1051 > 1052 1052 <File … … 1112 1112 <File 1113 1113 RelativePath="..\BasicCompiler_Common\Enum.h" 1114 > 1115 </File> 1116 <File 1117 RelativePath="..\BasicCompiler_Common\Type.h" 1114 1118 > 1115 1119 </File> … … 1275 1279 > 1276 1280 <File 1277 RelativePath="..\BasicCompiler_Common\Parameter.cpp" 1281 RelativePath="..\BasicCompiler_Common\Parameter.h" 1282 > 1283 </File> 1284 <File 1285 RelativePath="..\BasicCompiler_Common\ParamImpl.cpp" 1278 1286 > 1279 1287 </File> -
BasicCompiler32/CParameter.cpp
r67 r71 2 2 #include "opcode.h" 3 3 4 int CParameter::NewTempParameters( const char *FuncName,PARAMETER_INFO *ppi,int pi_num,int SecondParmNum ){4 int ParamImpl::NewTempParameters( const char *FuncName,PARAMETER_INFO *ppi,int pi_num,int SecondParmNum ){ 5 5 /////////////////////////////////////////////////////// 6 6 // 一時オブジェクトをあらかじめスタックに積んでおく … … 97 97 } 98 98 99 void CParameter::DeleteTempParameters(){99 void ParamImpl::DeleteTempParameters(){ 100 100 /////////////////////////////////////////////////////// 101 101 // 一時オブジェクトを破棄 … … 131 131 } 132 132 133 void CParameter::SetStructParameter(CClass *pobj_Class,LPSTR Parameter){133 void ParamImpl::SetStructParameter(CClass *pobj_Class,LPSTR Parameter){ 134 134 int object_size = pobj_Class->GetSize(); 135 135 … … 219 219 } 220 220 221 int CParameter::SetParameter(const char *FuncName,PARAMETER_INFO *ppi,int pi_num,int SecondParmNum){221 int ParamImpl::SetParameter(const char *FuncName,PARAMETER_INFO *ppi,int pi_num,int SecondParmNum){ 222 222 /////////////////////////////////////////////////////////// 223 223 // パラメータをレジスタ及びスタックフレームにセット -
BasicCompiler32/Compile_CallProc.cpp
r67 r71 48 48 49 49 //パラメータオブジェクトを生成 50 CParameter*pobj_parameter=0;51 pobj_parameter=new CParameter(Parameter);50 ParamImpl *pobj_parameter=0; 51 pobj_parameter=new ParamImpl(Parameter); 52 52 53 53 //エラーチェック … … 226 226 227 227 //パラメータオブジェクトを生成 228 CParameter*pobj_parameter=0;229 pobj_parameter=new CParameter(temporary);228 ParamImpl *pobj_parameter=0; 229 pobj_parameter=new ParamImpl(temporary); 230 230 231 231 //エラーチェック … … 372 372 373 373 //パラメータオブジェクトを生成 374 CParameter*pobj_parameter=0;375 pobj_parameter=new CParameter(Parameter);374 ParamImpl *pobj_parameter=0; 375 pobj_parameter=new ParamImpl(Parameter); 376 376 377 377 //エラーチェック -
BasicCompiler32/Opcode.h
r67 r71 192 192 void SetVarPtrToEax(RELATIVE_VAR *pRelativeVar); 193 193 194 // CParameter.cpp194 //ParamImpl.cpp 195 195 #define OVERLOAD_MIN_LEVEL 0 196 196 #define OVERLOAD_MAX_LEVEL 3 … … 199 199 #define OVERLOAD_LEVEL2 2 200 200 #define OVERLOAD_LEVEL3 3 201 class CParameter{201 class ParamImpl{ 202 202 char *Parms[255]; 203 203 TYPEINFO types[255]; … … 212 212 213 213 public: 214 CParameter(const char *buffer);215 CParameter(const PARAMETER_INFO *pParamInfo, const int ParmNum);216 ~ CParameter();214 ParamImpl(const char *buffer); 215 ParamImpl(const PARAMETER_INFO *pParamInfo, const int ParmNum); 216 ~ParamImpl(); 217 217 void SetReturnType(TYPEINFO *pTypeInfo); 218 218 -
BasicCompiler64/BasicCompiler.vcproj
r56 r71 469 469 </File> 470 470 </Filter> 471 <Filter 472 Name="Common Classes" 473 > 474 <File 475 RelativePath="..\BasicCompiler_Common\Type.h" 476 > 477 </File> 478 </Filter> 471 479 </Filter> 472 480 <Filter … … 1455 1463 </Filter> 1456 1464 <Filter 1457 Name=" Class"1465 Name="Type" 1458 1466 > 1459 1467 <File … … 1535 1543 </Filter> 1536 1544 <Filter 1537 Name="NativeCode" 1538 > 1539 <File 1540 RelativePath="..\BasicCompiler_Common\NativeCode.cpp" 1541 > 1542 </File> 1543 <File 1544 RelativePath="..\BasicCompiler_Common\NativeCode.h" 1545 Name="Procedure" 1546 > 1547 <File 1548 RelativePath="..\BasicCompiler_Common\Parameter.h" 1549 > 1550 </File> 1551 <File 1552 RelativePath="..\BasicCompiler_Common\ParamImpl.cpp" 1553 > 1554 </File> 1555 <File 1556 RelativePath="..\BasicCompiler_Common\Subroutine.cpp" 1545 1557 > 1546 1558 </File> 1547 1559 </Filter> 1548 <Filter 1549 Name="Procedure" 1550 > 1551 <File 1552 RelativePath="..\BasicCompiler_Common\Parameter.cpp" 1553 > 1554 </File> 1555 <File 1556 RelativePath="..\BasicCompiler_Common\Subroutine.cpp" 1557 > 1558 </File> 1559 </Filter> 1560 </Filter> 1561 <Filter 1562 Name="CommonClasses" 1563 > 1564 <File 1565 RelativePath="..\BasicCompiler_Common\Type.cpp" 1566 > 1567 </File> 1560 1568 </Filter> 1561 1569 </Filter> -
BasicCompiler64/CParameter.cpp
r66 r71 2 2 #include "opcode.h" 3 3 4 int CParameter::NewTempParameters( const char *FuncName,PARAMETER_INFO *ppi,int pi_num,int SecondParmNum ){4 int ParamImpl::NewTempParameters( const char *FuncName,PARAMETER_INFO *ppi,int pi_num,int SecondParmNum ){ 5 5 /////////////////////////////////////////////////////// 6 6 // 一時オブジェクトをあらかじめスタックに積んでおく … … 96 96 return stackItemNum * PTR_SIZE; 97 97 } 98 void CParameter::DeleteTempParameters(){98 void ParamImpl::DeleteTempParameters(){ 99 99 /////////////////////////////////////////////////////// 100 100 // 一時オブジェクトを破棄 … … 123 123 } 124 124 125 void CParameter::SetStructParameter(int reg,CClass *pobj_Class,LPSTR Parameter){125 void ParamImpl::SetStructParameter(int reg,CClass *pobj_Class,LPSTR Parameter){ 126 126 ////////////////////////////////////////////////////// 127 127 ///// レジスタ資源のバックアップ … … 225 225 226 226 227 void CParameter::SetParameter(const char *FuncName,PARAMETER_INFO *ppi,int pi_num,int SecondParmNum){227 void ParamImpl::SetParameter(const char *FuncName,PARAMETER_INFO *ppi,int pi_num,int SecondParmNum){ 228 228 /////////////////////////////////////////////////////////// 229 229 // パラメータをレジスタ及びスタックフレームにセット … … 496 496 pobj_sf->parameter_allocate(pi_num*sizeof(_int64)+ sizeof(_int64)/*ret用*/ ); 497 497 } 498 void CParameter::BackupParameter(int pi_num){498 void ParamImpl::BackupParameter(int pi_num){ 499 499 /////////////////////////////////////////////////////////// 500 500 // スタックフレームに存在する既存のパラメータをバックアップ … … 523 523 } 524 524 } 525 void CParameter::RestoreParameter(int pi_num){525 void ParamImpl::RestoreParameter(int pi_num){ 526 526 /////////////////////////////////////////////////////////// 527 527 // スタックフレームに存在する既存のパラメータを復元 -
BasicCompiler64/Compile_CallProc.cpp
r64 r71 48 48 49 49 //パラメータオブジェクトを生成 50 CParameter*pobj_parameter=0;51 pobj_parameter=new CParameter(Parameter);50 ParamImpl *pobj_parameter=0; 51 pobj_parameter=new ParamImpl(Parameter); 52 52 53 53 //エラーチェック … … 230 230 231 231 //パラメータオブジェクトを生成 232 CParameter*pobj_parameter=0;233 pobj_parameter=new CParameter(temporary);232 ParamImpl *pobj_parameter=0; 233 pobj_parameter=new ParamImpl(temporary); 234 234 235 235 //エラーチェック … … 403 403 404 404 //パラメータオブジェクトを生成 405 CParameter*pobj_parameter=0;406 pobj_parameter=new CParameter(Parameter);405 ParamImpl *pobj_parameter=0; 406 pobj_parameter=new ParamImpl(Parameter); 407 407 408 408 //エラーチェック -
BasicCompiler64/Opcode.h
r66 r71 324 324 void SetVarPtrToReg(int reg,RELATIVE_VAR *pRelativeVar); 325 325 326 // CParameter.cpp326 //ParamImpl.cpp 327 327 #define OVERLOAD_MIN_LEVEL 0 328 328 #define OVERLOAD_MAX_LEVEL 3 … … 331 331 #define OVERLOAD_LEVEL2 2 332 332 #define OVERLOAD_LEVEL3 3 333 class CParameter{333 class ParamImpl{ 334 334 char *Parms[255]; 335 335 TYPEINFO types[255]; … … 344 344 345 345 public: 346 CParameter(const char *buffer);347 CParameter(const PARAMETER_INFO *pParamInfo, const int ParmNum);348 ~ CParameter();346 ParamImpl(const char *buffer); 347 ParamImpl(const PARAMETER_INFO *pParamInfo, const int ParmNum); 348 ~ParamImpl(); 349 349 void SetReturnType(TYPEINFO *pTypeInfo); 350 350 -
BasicCompiler_Common/Class.cpp
r68 r71 389 389 } 390 390 391 //デフォルト コピーコンストラクタ メソッドを取得392 CMethod *CClass::GetCopyConstructorMethod() const393 {394 if( CopyConstructorMemberSubIndex == -1 ) return NULL;395 return methods[CopyConstructorMemberSubIndex];396 }397 398 391 //デストラクタ メソッドを取得 399 392 CMethod *CClass::GetDestructorMethod() const … … 858 851 if(psi->ParmNum==0) fConstructor=1; 859 852 860 // TODO: 消す861 //コピーコンストラクタ862 if(psi->ParmNum==1){863 if(psi->pParmInfo[0].type==DEF_OBJECT&&864 psi->pParmInfo[0].u.pobj_c==pobj_c) fConstructor=2;865 }866 867 853 //強制的にConst修飾子をつける 868 854 isConst = true; … … 888 874 if( fConstructor == 1 ) 889 875 pobj_c->ConstructorMemberSubIndex = (int)pobj_c->methods.size(); 890 else if( fConstructor == 2 )891 pobj_c->CopyConstructorMemberSubIndex = (int)pobj_c->methods.size();892 876 else if( bDestructor ) 893 877 pobj_c->DestructorMemberSubIndex = (int)pobj_c->methods.size(); … … 1032 1016 1033 1017 pobj_c->ConstructorMemberSubIndex=-1; 1034 pobj_c->CopyConstructorMemberSubIndex=-1;1035 1018 pobj_c->DestructorMemberSubIndex=-1; 1036 1019 … … 1188 1171 1189 1172 pobj_c->ConstructorMemberSubIndex=-1; 1190 pobj_c->CopyConstructorMemberSubIndex=-1;1191 1173 pobj_c->DestructorMemberSubIndex=-1; 1192 1174 -
BasicCompiler_Common/Class.h
r67 r71 73 73 std::vector<CMethod *> methods; 74 74 int ConstructorMemberSubIndex; 75 int CopyConstructorMemberSubIndex;76 75 int DestructorMemberSubIndex; 77 76 … … 139 138 //デフォルト コンストラクタ メソッドを取得 140 139 CMethod *GetConstructorMethod() const; 141 142 //デフォルト コピーコンストラクタ メソッドを取得143 CMethod *GetCopyConstructorMethod() const;144 140 145 141 //デストラクタ メソッドを取得 -
BasicCompiler_Common/Overload.cpp
r64 r71 24 24 //////////////////////// 25 25 26 CParameter*pobj_parameter=0;26 ParamImpl *pobj_parameter=0; 27 27 28 28 char MethodName[VN_SIZE]; … … 37 37 */ 38 38 //パラメータオブジェクトを生成 39 pobj_parameter=new CParameter(Parameter);39 pobj_parameter=new ParamImpl(Parameter); 40 40 if(pReturnTypeInfo) pobj_parameter->SetReturnType(pReturnTypeInfo); 41 41 … … 65 65 66 66 67 CParameter *pobj_Parameter=new CParameter(ppi,ParmNum);67 ParamImpl *pobj_Parameter=new ParamImpl(ppi,ParmNum); 68 68 if(pReturnTypeInfo) pobj_Parameter->SetReturnType(pReturnTypeInfo); 69 69 -
BasicCompiler_Common/ParamImpl.cpp
r70 r71 7 7 #endif 8 8 9 CParameter::CParameter(const char *buffer){9 ParamImpl::ParamImpl(const char *buffer){ 10 10 /////////////////////////// 11 11 // パラメータ文字列を整理 … … 61 61 ReturnTypeInfo.u.lpIndex=-1; 62 62 } 63 CParameter::CParameter(const PARAMETER_INFO *pParamInfo,const int ParmNum){63 ParamImpl::ParamImpl(const PARAMETER_INFO *pParamInfo,const int ParmNum){ 64 64 int i; 65 65 for(i=0;i<ParmNum;i++){ … … 73 73 ReturnTypeInfo.u.lpIndex=-1; 74 74 } 75 CParameter::~CParameter(){75 ParamImpl::~ParamImpl(){ 76 76 int i2; 77 77 … … 84 84 } 85 85 86 void CParameter::SetReturnType(TYPEINFO *pTypeInfo){86 void ParamImpl::SetReturnType(TYPEINFO *pTypeInfo){ 87 87 ReturnTypeInfo=*pTypeInfo; 88 88 } 89 89 90 BOOL CParameter::_overload_check(PARAMETER_INFO *ppi,int pi_num,TYPEINFO *pReturnTypeInfo,int overload_level){90 BOOL ParamImpl::_overload_check(PARAMETER_INFO *ppi,int pi_num,TYPEINFO *pReturnTypeInfo,int overload_level){ 91 91 //パラメータを識別してオーバーロードを解決 92 92 … … 143 143 } 144 144 145 SUBINFO * CParameter::OverloadSolutionWithReturnType( const char *name, std::vector<SUBINFO *> &subs ){145 SUBINFO *ParamImpl::OverloadSolutionWithReturnType( const char *name, std::vector<SUBINFO *> &subs ){ 146 146 int sw=0; 147 147 SUBINFO *psi; … … 178 178 return psi; 179 179 } 180 SUBINFO * CParameter::OverloadSolution( const char *name, std::vector<SUBINFO *> &subs ){180 SUBINFO *ParamImpl::OverloadSolution( const char *name, std::vector<SUBINFO *> &subs ){ 181 181 int sw=0; 182 182 SUBINFO *psi; … … 226 226 } 227 227 228 BOOL CParameter::ErrorCheck(const char *FuncName,PARAMETER_INFO *ppi,int pi_num,int SecondParmNum){228 BOOL ParamImpl::ErrorCheck(const char *FuncName,PARAMETER_INFO *ppi,int pi_num,int SecondParmNum){ 229 229 if(ParmsNum>pi_num){ 230 230 if(ppi[pi_num-1].type!=DEF_ELLIPSE){ … … 259 259 } 260 260 261 void CParameter::MacroParameterSupport(PARAMETER_INFO *ppi){261 void ParamImpl::MacroParameterSupport(PARAMETER_INFO *ppi){ 262 262 int i; 263 263 for(i=0;i<ParmsNum;i++){ -
BasicCompiler_Common/common.h
r70 r71 11 11 #include <shlobj.h> 12 12 #include <vector> 13 #include <string> 13 14 14 15 //boost libraries … … 16 17 17 18 #define foreach BOOST_FOREACH 19 20 using namespace std; 18 21 19 22 #ifdef _AMD64_ … … 140 143 141 144 142 // クラス管理用のクラス145 // クラス管理用のクラス 143 146 #include "Class.h" 144 147 145 // 列挙体管理用のクラス148 // 列挙体管理用のクラス 146 149 #include "Enum.h" 147 150 148 // 定数管理用のクラス151 // 定数管理用のクラス 149 152 #include "Const.h" 153 154 // パラメータ管理用のクラス 155 #include "Parameter.h" 156 150 157 151 158 … … 209 216 }; 210 217 211 //パラメータ212 218 struct PARAMETER_INFO{ 213 219 char *name; … … 244 250 int RealParmNum; 245 251 int RealSecondParmNum; 252 253 /* 254 //パラメータ 255 Parameters params; 256 int SecondParmNum; 257 Parameters realParams; 258 int RealSecondParmNum;*/ 246 259 247 260 //戻り値
Note:
See TracChangeset
for help on using the changeset viewer.