Changeset 50 in dev for BasicCompiler_Common/Overload.cpp
- Timestamp:
- Feb 10, 2007, 5:44:58 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
BasicCompiler_Common/Overload.cpp
r46 r50 7 7 #endif 8 8 9 SUBINFO *OverloadSolutionWithStrParam(char *name,SUBINFO **ppsi,int num,char *Parameter,char *ObjectName,TYPEINFO *pReturnTypeInfo){ 10 // オーバーロードの解決 9 SUBINFO *OverloadSolutionWithStrParam( 10 const char *name, 11 std::vector<SUBINFO *> &subs, 12 const char *Parameter, 13 const char *ObjectName, 14 TYPEINFO *pReturnTypeInfo){ 11 15 12 //オーバーロードされていないとき 13 if(num==1) return ppsi[0]; 16 // オーバーロードの解決 17 18 //オーバーロードされていないとき 19 if( subs.size() == 1 ) return subs[0]; 14 20 15 21 16 ////////////////////////17 // パラメータをセット18 ////////////////////////22 //////////////////////// 23 // パラメータをセット 24 //////////////////////// 19 25 20 CParameter *pobj_parameter=0;26 CParameter *pobj_parameter=0; 21 27 22 char MethodName[VN_SIZE];23 if( !SplitMemberName( name, NULL, MethodName ) ) lstrcpy( MethodName, name );28 char MethodName[VN_SIZE]; 29 if( !SplitMemberName( name, NULL, MethodName ) ) lstrcpy( MethodName, name ); 24 30 25 //メソッドの場合は静的かどうかを調べる26 bool isStatic = false;27 CClass *pClass = ppsi[0]->pobj_ParentClass;28 if( pClass ){29 isStatic = pClass->IsExistStaticMethod( MethodName );30 }31 //メソッドの場合は静的かどうかを調べる 32 bool isStatic = false; 33 CClass *pClass = subs[0]->pobj_ParentClass; 34 if( pClass ){ 35 isStatic = pClass->IsExistStaticMethod( MethodName ); 36 } 31 37 32 //パラメータオブジェクトを生成33 pobj_parameter=new CParameter(Parameter);34 if(pReturnTypeInfo) pobj_parameter->SetReturnType(pReturnTypeInfo);38 //パラメータオブジェクトを生成 39 pobj_parameter=new CParameter(Parameter); 40 if(pReturnTypeInfo) pobj_parameter->SetReturnType(pReturnTypeInfo); 35 41 36 42 37 SUBINFO *psi;38 psi=pobj_parameter->OverloadSolution(name,ppsi,num);43 SUBINFO *psi; 44 psi=pobj_parameter->OverloadSolution(name,subs); 39 45 40 46 41 //パラメータオブジェクトを破棄42 delete pobj_parameter;43 pobj_parameter=0;47 //パラメータオブジェクトを破棄 48 delete pobj_parameter; 49 pobj_parameter=0; 44 50 45 return psi;51 return psi; 46 52 } 47 53 48 SUBINFO *OverloadSolution(const char *name,SUBINFO **ppsi,int num,PARAMETER_INFO *ppi,int ParmNum,TYPEINFO *pReturnTypeInfo){ 49 // オーバーロードの解決 54 SUBINFO *OverloadSolution( 55 const char *name, 56 std::vector<SUBINFO *> &subs, 57 const PARAMETER_INFO *ppi, 58 const int ParmNum, 59 TYPEINFO *pReturnTypeInfo){ 50 60 51 //オーバーロードされていないとき 52 if(num==1) return ppsi[0]; 61 // オーバーロードの解決 62 63 //オーバーロードされていないとき 64 if( subs.size() == 1 ) return subs[0]; 53 65 54 66 55 CParameter *pobj_Parameter=new CParameter(ppi,ParmNum);56 if(pReturnTypeInfo) pobj_Parameter->SetReturnType(pReturnTypeInfo);67 CParameter *pobj_Parameter=new CParameter(ppi,ParmNum); 68 if(pReturnTypeInfo) pobj_Parameter->SetReturnType(pReturnTypeInfo); 57 69 58 SUBINFO *psi;59 psi=pobj_Parameter->OverloadSolution(name,ppsi,num);70 SUBINFO *psi; 71 psi=pobj_Parameter->OverloadSolution(name,subs); 60 72 61 delete pobj_Parameter;73 delete pobj_Parameter; 62 74 63 return psi;75 return psi; 64 76 }
Note:
See TracChangeset
for help on using the changeset viewer.