Changeset 206 in dev for trunk/abdev/BasicCompiler32/NumOpe.cpp
- Timestamp:
- Jul 12, 2007, 2:58:26 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abdev/BasicCompiler32/NumOpe.cpp
r193 r206 1 #include "stdafx.h" 2 1 3 #include <jenga/include/smoothie/Smoothie.h> 2 4 #include <jenga/include/smoothie/LexicalAnalysis.h> … … 179 181 // 動的メソッドを検索 180 182 /////////////////////////////////////////////////////////////////// 181 vector< UserProc *> userProcs;183 vector<const UserProc *> userProcs; 182 184 183 185 char methodName[VN_SIZE], lpPtrOffset[VN_SIZE], parameter[VN_SIZE], dummy[1]; 184 CClass::RefTyperefType;186 ReferenceKind refType; 185 187 lstrcpy( methodName, member ); 186 188 GetVarFormatString(methodName,parameter,lpPtrOffset,dummy,refType); 187 189 188 190 objClass.GetMethods().Enum( methodName, userProcs ); 189 UserProc *pUserProc;190 191 if(userProcs.size()){ 191 192 //オーバーロードを解決 192 pUserProc=OverloadSolutionWithStrParam(termFull,userProcs,parameter,termLeft);193 const UserProc *pUserProc = OverloadSolutionWithStrParam(termFull,userProcs,parameter,termLeft); 193 194 194 195 if( pUserProc ){ … … 248 249 // パース 249 250 char member[VN_SIZE]; 250 CClass::RefTyperefType;251 if( CClass::SplitName( termFull, termLeft, member, refType ) ){251 ReferenceKind refType; 252 if( SplitMemberName( termFull, termLeft, member, refType ) ){ 252 253 /////////////////////////////////////////////////////////////////// 253 254 // オブジェクトとメンバに分解できるとき … … 312 313 if(lstrcmpi(termFull,"This")==0 && isProcedureCallOnly == false ){ 313 314 //Thisオブジェクト 314 resultType.SetType( DEF_OBJECT, Smoothie::Temp::pCompilingClass );315 resultType.SetType( DEF_OBJECT, compiler.pCompilingClass ); 315 316 316 317 SetThisPtrToReg( useReg ); … … 386 387 return true; 387 388 } 388 else if(GetConstCalcBuffer(procName,parameter,temporary)){ 389 ///////////////////////// 390 // マクロ関数 391 ///////////////////////// 392 393 //閉じカッコ")"に続く文字がNULLでないときはエラーにする 394 if(termFull[i2+1+i4+1]!='\0') SetError(42,NULL,cp); 395 396 //マクロ関数の場合 397 NumOpe(useReg, temporary,Type(),resultType); 398 399 if(!IS_LITERAL(resultType.GetIndex())){ 400 //リテラル値ではなかったとき 401 isLiteral = false; 389 ConstMacro *pConstMacro = compiler.GetMeta().GetGlobalConstMacros().Find( procName ); 390 if( pConstMacro ) 391 { 392 if( pConstMacro->GetCalcBuffer( parameter, temporary ) ) 393 { 394 ///////////////////////// 395 // マクロ関数 396 ///////////////////////// 397 398 //閉じカッコ")"に続く文字がNULLでないときはエラーにする 399 if(termFull[i2+1+i4+1]!='\0') SetError(42,NULL,cp); 400 401 //マクロ関数の場合 402 NumOpe(useReg, temporary,Type(),resultType); 403 404 if(!IS_LITERAL(resultType.GetIndex())){ 405 //リテラル値ではなかったとき 406 isLiteral = false; 407 } 408 409 return true; 402 410 } 403 404 return true;405 411 } 406 412 } … … 855 861 ////////////// 856 862 857 i3 = CDBConst::obj.GetBasicType(term);863 i3 = compiler.GetMeta().GetGlobalConsts().GetBasicType(term); 858 864 if(i3){ 859 if( CDBConst::obj.IsStringPtr( term ) ){865 if( compiler.GetMeta().GetGlobalConsts().IsStringPtr( term ) ){ 860 866 //リテラル文字列 861 867 862 double dbl = CDBConst::obj.GetDoubleData(term);868 double dbl = compiler.GetMeta().GetGlobalConsts().GetDoubleData(term); 863 869 memcpy(&i64data,&dbl,sizeof(double)); 864 870 … … 874 880 if(IsRealNumberType(i3)){ 875 881 //実数 876 double dbl = CDBConst::obj.GetDoubleData(term);882 double dbl = compiler.GetMeta().GetGlobalConsts().GetDoubleData(term); 877 883 memcpy(&i64data,&dbl,sizeof(double)); 878 884 goto Literal; … … 880 886 else if(IsWholeNumberType(i3)){ 881 887 //整数 882 i64data = CDBConst::obj.GetWholeData(term);888 i64data = compiler.GetMeta().GetGlobalConsts().GetWholeData(term); 883 889 goto Literal; 884 890 }
Note:
See TracChangeset
for help on using the changeset viewer.