Changeset 424 in dev for trunk/abdev/BasicCompiler_Common/NumOpe_GetType.cpp
- Timestamp:
- Mar 10, 2008, 5:39:36 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abdev/BasicCompiler_Common/NumOpe_GetType.cpp
r415 r424 194 194 } 195 195 196 int GetReturnType_OperatorProc(int idCalc,const Type &baseType,int *type,LONG_PTR *index_stack,int &sp){ 197 //オーバーロードされたオペレータ関数の戻り値を取得 198 CClass *pobj_c; 199 pobj_c=(CClass *)index_stack[sp-2]; 196 int GetReturnType_OperatorProc(int idCalc,const Type &baseType,int *type_stack,LONG_PTR *index_stack,int &sp){ 197 Type leftType( type_stack[sp-2], index_stack[sp-2] ); 198 Type rightType( type_stack[sp-1] & (~FLAG_CAST), index_stack[sp-1] ); 199 200 //オーバーロードされたオペレータ関数を呼び出す 201 const CClass *pobj_c = &leftType.GetClass(); 200 202 201 203 std::vector<const UserProc *> subs; … … 221 223 222 224 if(bTwoTerm){ 223 params.push_back( new Parameter( "", Type( type[sp-1], index_stack[sp-1] )) );225 params.push_back( new Parameter( "", rightType ) ); 224 226 } 225 227 … … 229 231 if(idCalc==CALC_EQUAL) lstrcpy(temporary,"=="); 230 232 else GetCalcName(idCalc,temporary); 231 const UserProc *pUserProc = OverloadSolution( temporary, subs, params, baseType );233 const UserProc *pUserProc = OverloadSolution( temporary, subs, params, baseType, leftType ); 232 234 233 235 if(bTwoTerm){ … … 246 248 247 249 sp--; 248 type [sp-1]=pUserProc->ReturnType().GetBasicType();250 type_stack[sp-1]=pUserProc->ReturnType().GetBasicType(); 249 251 index_stack[sp-1]=pUserProc->ReturnType().GetIndex(); 250 252
Note:
See TracChangeset
for help on using the changeset viewer.