Changeset 46 in dev for BasicCompiler32
- Timestamp:
- Feb 6, 2007, 1:19:17 AM (18 years ago)
- Location:
- BasicCompiler32
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
BasicCompiler32/CParameter.cpp
r45 r46 141 141 return 1; 142 142 } 143 SUBINFO *CParameter::OverloadSolutionWithReturnType(c har *name,SUBINFO **ppsi,int num){143 SUBINFO *CParameter::OverloadSolutionWithReturnType(const char *name,SUBINFO **ppsi,int num){ 144 144 int i,sw=0; 145 145 SUBINFO *psi; … … 211 211 } 212 212 213 SUBINFO *CParameter::OverloadSolution(c har *name,SUBINFO **ppsi,int num){213 SUBINFO *CParameter::OverloadSolution(const char *name,SUBINFO **ppsi,int num){ 214 214 int i,sw=0; 215 215 SUBINFO *psi; … … 285 285 } 286 286 287 BOOL CParameter::ErrorCheck(c har *FuncName,PARAMETER_INFO *ppi,int pi_num,int SecondParmNum){287 BOOL CParameter::ErrorCheck(const char *FuncName,PARAMETER_INFO *ppi,int pi_num,int SecondParmNum){ 288 288 if(ParmsNum>pi_num){ 289 289 if(ppi[pi_num-1].type!=DEF_ELLIPSE){ … … 332 332 } 333 333 334 void CParameter::NewTempParameters( c har *FuncName,PARAMETER_INFO *ppi,int pi_num,int SecondParmNum ){334 void CParameter::NewTempParameters( const char *FuncName,PARAMETER_INFO *ppi,int pi_num,int SecondParmNum ){ 335 335 /////////////////////////////////////////////////////// 336 336 // 一時オブジェクトをあらかじめスタックに積んでおく … … 544 544 } 545 545 546 int CParameter::SetParameter(c har *FuncName,PARAMETER_INFO *ppi,int pi_num,int SecondParmNum){546 int CParameter::SetParameter(const char *FuncName,PARAMETER_INFO *ppi,int pi_num,int SecondParmNum){ 547 547 /////////////////////////////////////////////////////////// 548 548 // パラメータをレジスタ及びスタックフレームにセット … … 564 564 565 565 //戻り値用の変数名を取得 566 char *lpszVarNameToReturn; 567 if(FuncName[0]==1&&FuncName[1]==ESC_OPERATOR) lpszVarNameToReturn="_System_ReturnValue"; 568 else lpszVarNameToReturn=FuncName; 566 const char *lpszVarNameToReturn = (FuncName[0]==1&&FuncName[1]==ESC_OPERATOR)?"_System_ReturnValue":FuncName; 569 567 570 568 //パラメータをレジスタとスタックに格納 -
BasicCompiler32/Compile_Calc.cpp
r40 r46 658 658 if( VarType == DEF_OBJECT && VarRelativeVar.dwKind == VAR_REFLOCAL ){ 659 659 // 参照型オブジェクトへの代入(初期化)はポインタ変数と同様の処理に値する 660 VarType =PTR_LEVEL_UP( VarType );660 PTR_LEVEL_UP( VarType ); 661 661 662 662 VarRelativeVar.dwKind = VAR_LOCAL; … … 664 664 if( CalcType == DEF_OBJECT ){ 665 665 //右辺値が実体オブジェクトのときは、参照をコピー 666 CalcType = PTR_LEVEL_UP( DEF_OBJECT);666 PTR_LEVEL_UP( CalcType ); 667 667 } 668 668 } -
BasicCompiler32/Compile_CallProc.cpp
r45 r46 89 89 FuncId=(int)(_int64)pInfo; 90 90 91 ret_type=Opcode_CallFunc(Parameter,FuncId); 91 TYPEINFO ReturnTypeInfo = { DEF_LONG, NULL }; 92 Opcode_CallFunc( Parameter, FuncId, ReturnTypeInfo ); 93 if( plpRetIndex ){ 94 *plpRetIndex = ReturnTypeInfo.u.lpIndex; 95 } 96 return ReturnTypeInfo.type; 92 97 } 93 98 else if(idProc==PROC_PTR){ -
BasicCompiler32/Compile_Func.cpp
r28 r46 44 44 } 45 45 46 void Opcode_Func_Fix(c har *Parameter){46 void Opcode_Func_Fix(const char *Parameter){ 47 47 int i; 48 48 … … 161 161 } 162 162 163 void Opcode_Func_CUDbl(c har *Parameter){163 void Opcode_Func_CUDbl(const char *Parameter){ 164 164 int i; 165 165 … … 185 185 op_add_esp(8); 186 186 } 187 void Opcode_Func_Len(c har *Parameter){187 void Opcode_Func_Len(const char *Parameter){ 188 188 int type,TypeSize; 189 189 LONG_PTR lpIndex; … … 192 192 type=GetVarType(Parameter,&lpIndex,0); 193 193 194 c har *tempParm=Parameter;194 const char *tempParm=Parameter; 195 195 char temporary[VN_SIZE]; 196 196 char temp2[32]; … … 241 241 obp+=sizeof(long); 242 242 } 243 void Opcode_Func_AddressOf(c har *name){243 void Opcode_Func_AddressOf(const char *name){ 244 244 extern int cp; 245 245 SUBINFO *psi; … … 353 353 psi->bUse=1; 354 354 } 355 void Opcode_Func_SizeOf(c har *Parameter){355 void Opcode_Func_SizeOf(const char *Parameter){ 356 356 int type,size; 357 357 LONG_PTR lpIndex; … … 370 370 obp+=sizeof(long); 371 371 } 372 void Opcode_Func_VarPtr(char *Parameter){ 373 int type; 372 void Opcode_Func_VarPtr( const char *Parameter, TYPEINFO &ReturnTypeInfo ){ 374 373 RELATIVE_VAR RelativeVar; 375 374 376 375 //変数のアドレスを取得 377 if(!GetVarOffsetReadOnly(Parameter,&type,&RelativeVar,0)) return; 376 if(!GetVarOffsetReadOnly( Parameter, &ReturnTypeInfo.type, &RelativeVar, &ReturnTypeInfo.u.lpIndex )) return; 377 378 PTR_LEVEL_UP( ReturnTypeInfo.type ); 378 379 379 380 SetVarPtrToEax(&RelativeVar); 380 381 } 381 void Opcode_Func_GetPtrData(c har *Parameter,int type){382 void Opcode_Func_GetPtrData(const char *Parameter,const int type){ 382 383 int i2; 383 384 … … 438 439 } 439 440 440 int Opcode_CallFunc(char *Parameter,int FuncNum){441 void Opcode_CallFunc( const char *Parameter, const int FuncNum, TYPEINFO &ReturnTypeInfo ){ 441 442 switch(FuncNum){ 442 443 case FUNC_FIX: 443 444 Opcode_Func_Fix(Parameter); 444 return DEF_LONG; 445 ReturnTypeInfo.type = DEF_LONG; 446 break; 445 447 case FUNC_CUDBL: 446 448 Opcode_Func_CUDbl(Parameter); 447 return DEF_DOUBLE; 449 ReturnTypeInfo.type = DEF_DOUBLE; 450 break; 448 451 case FUNC_LEN: 449 452 Opcode_Func_Len(Parameter); 450 return DEF_LONG; 453 ReturnTypeInfo.type = DEF_LONG; 454 break; 451 455 case FUNC_ADDRESSOF: 452 456 Opcode_Func_AddressOf(Parameter); 453 return DEF_PTR_VOID; 457 ReturnTypeInfo.type = DEF_PTR_VOID; 458 break; 454 459 case FUNC_SIZEOF: 455 460 Opcode_Func_SizeOf(Parameter); 456 return DEF_LONG; 461 ReturnTypeInfo.type = DEF_LONG; 462 break; 457 463 case FUNC_VARPTR: 458 Opcode_Func_VarPtr( Parameter);459 return DEF_PTR_VOID;464 Opcode_Func_VarPtr( Parameter, ReturnTypeInfo ); 465 break; 460 466 461 467 case FUNC_GETDOUBLE: 462 468 Opcode_Func_GetPtrData(Parameter,DEF_DOUBLE); 463 return DEF_DOUBLE; 469 ReturnTypeInfo.type = DEF_DOUBLE; 470 break; 464 471 case FUNC_GETSINGLE: 465 472 Opcode_Func_GetPtrData(Parameter,DEF_SINGLE); 466 return DEF_SINGLE; 473 ReturnTypeInfo.type = DEF_SINGLE; 474 break; 467 475 case FUNC_GETQWORD: 468 476 Opcode_Func_GetPtrData(Parameter,DEF_QWORD); 469 return DEF_QWORD; 477 ReturnTypeInfo.type = DEF_QWORD; 478 break; 470 479 case FUNC_GETDWORD: 471 480 Opcode_Func_GetPtrData(Parameter,DEF_DWORD); 472 return DEF_DWORD; 481 ReturnTypeInfo.type = DEF_DWORD; 482 break; 473 483 case FUNC_GETWORD: 474 484 Opcode_Func_GetPtrData(Parameter,DEF_WORD); 475 return DEF_WORD; 485 ReturnTypeInfo.type = DEF_WORD; 486 break; 476 487 case FUNC_GETBYTE: 477 488 Opcode_Func_GetPtrData(Parameter,DEF_BYTE); 478 returnDEF_BYTE;479 }480 return 0;481 } 489 ReturnTypeInfo.type = DEF_BYTE; 490 break; 491 } 492 } -
BasicCompiler32/Opcode.h
r40 r46 207 207 private: 208 208 BOOL _overload_check(PARAMETER_INFO *ppi,int pi_num,TYPEINFO *pReturnTypeInfo,int overload_level); 209 SUBINFO *OverloadSolutionWithReturnType(c har *name,SUBINFO **ppsi,int num);209 SUBINFO *OverloadSolutionWithReturnType(const char *name,SUBINFO **ppsi,int num); 210 210 public: 211 SUBINFO *OverloadSolution(c har *name,SUBINFO **ppsi,int num);212 213 BOOL ErrorCheck(c har *FuncName,PARAMETER_INFO *ppi,int pi_num,int SecondParmNum);211 SUBINFO *OverloadSolution(const char *name,SUBINFO **ppsi,int num); 212 213 BOOL ErrorCheck(const char *FuncName,PARAMETER_INFO *ppi,int pi_num,int SecondParmNum); 214 214 void MacroParameterSupport(PARAMETER_INFO *ppi); 215 215 void SetObjectParameter(CClass *pobj_Class,LPSTR Parameter); 216 int SetParameter(c har *FuncName,PARAMETER_INFO *ppi,int pi_num,int SecondParmNum);216 int SetParameter(const char *FuncName,PARAMETER_INFO *ppi,int pi_num,int SecondParmNum); 217 217 218 218 //一時オブジェクトパラメータの生成と破棄 219 void NewTempParameters( c har *FuncName,PARAMETER_INFO *ppi,int pi_num,int SecondParmNum );219 void NewTempParameters( const char *FuncName,PARAMETER_INFO *ppi,int pi_num,int SecondParmNum ); 220 220 void DeleteTempParameters(); 221 221 }; … … 236 236 int GetFunctionType(int FuncNum); 237 237 int GetFunctionFromName(char *FuncName); 238 int Opcode_CallFunc(char *Parameter,int FuncNum);238 void Opcode_CallFunc( const char *Parameter, const int FuncNum, TYPEINFO &ReturnTypeInfo ); 239 239 240 240 //OperatorProc.cpp
Note:
See TracChangeset
for help on using the changeset viewer.