Changeset 206 in dev for trunk/abdev/BasicCompiler64/NumOpe.cpp
- Timestamp:
- Jul 12, 2007, 2:58:26 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abdev/BasicCompiler64/NumOpe.cpp
r198 r206 1 #include "stdafx.h" 2 1 3 #include <jenga/include/smoothie/Smoothie.h> 2 4 #include <jenga/include/smoothie/LexicalAnalysis.h> … … 164 166 // 動的メソッドを検索 165 167 /////////////////////////////////////////////////////////////////// 166 vector< UserProc *> userProcs;168 vector<const UserProc *> userProcs; 167 169 168 170 char methodName[VN_SIZE], lpPtrOffset[VN_SIZE], parameter[VN_SIZE], dummy[1]; 169 CClass::RefTyperefType;171 ReferenceKind refType; 170 172 lstrcpy( methodName, member ); 171 173 GetVarFormatString(methodName,parameter,lpPtrOffset,dummy,refType); 172 174 173 175 objClass.GetMethods().Enum( methodName, userProcs ); 174 UserProc *pUserProc;175 176 if(userProcs.size()){ 176 177 //オーバーロードを解決 177 pUserProc=OverloadSolutionWithStrParam(termFull,userProcs,parameter,termLeft);178 const UserProc *pUserProc = OverloadSolutionWithStrParam(termFull,userProcs,parameter,termLeft); 178 179 179 180 if( pUserProc ){ … … 245 246 // パース 246 247 char member[VN_SIZE]; 247 CClass::RefTyperefType;248 if( CClass::SplitName( termFull, termLeft, member, refType ) ){248 ReferenceKind refType; 249 if( SplitMemberName( termFull, termLeft, member, refType ) ){ 249 250 /////////////////////////////////////////////////////////////////// 250 251 // オブジェクトとメンバに分解できるとき … … 309 310 if(lstrcmpi(termFull,"This")==0 && isProcedureCallOnly == false ){ 310 311 //Thisオブジェクト 311 resultType.SetType( DEF_OBJECT, Smoothie::Temp::pCompilingClass );312 resultType.SetType( DEF_OBJECT, compiler.pCompilingClass ); 312 313 313 314 SetThisPtrToReg( UseReg ); … … 385 386 return true; 386 387 } 387 else if(GetConstCalcBuffer(procName,parameter,temporary)){ 388 ///////////////////////// 389 // マクロ関数 390 ///////////////////////// 391 392 //閉じカッコ")"に続く文字がNULLでないときはエラーにする 393 if(termFull[i2+1+i4+1]!='\0') SetError(42,NULL,cp); 394 395 //マクロ関数の場合 396 NumOpe(&UseReg,temporary,Type(),resultType); 397 398 if(!IS_LITERAL(resultType.GetIndex())){ 399 //リテラル値ではなかったとき 400 isLiteral = false; 401 } 402 403 return true; 388 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; 410 } 404 411 } 405 412 } … … 905 912 ////////////// 906 913 907 i3 = CDBConst::obj.GetBasicType(term);914 i3 = compiler.GetMeta().GetGlobalConsts().GetBasicType(term); 908 915 if(i3){ 909 if( CDBConst::obj.IsStringPtr( term ) ){916 if( compiler.GetMeta().GetGlobalConsts().IsStringPtr( term ) ){ 910 917 //リテラル文字列 911 918 912 double dbl = CDBConst::obj.GetDoubleData(term);919 double dbl = compiler.GetMeta().GetGlobalConsts().GetDoubleData(term); 913 920 memcpy(&i64data,&dbl,sizeof(double)); 914 921 … … 924 931 if(IsRealNumberType(i3)){ 925 932 //実数 926 double dbl = CDBConst::obj.GetDoubleData(term);933 double dbl = compiler.GetMeta().GetGlobalConsts().GetDoubleData(term); 927 934 memcpy(&i64data,&dbl,sizeof(double)); 928 935 goto Literal; … … 930 937 else if(IsWholeNumberType(i3)){ 931 938 //整数 932 i64data = CDBConst::obj.GetWholeData(term);939 i64data = compiler.GetMeta().GetGlobalConsts().GetWholeData(term); 933 940 goto Literal; 934 941 }
Note:
See TracChangeset
for help on using the changeset viewer.