[4] | 1 | #include "../BasicCompiler_Common/common.h"
|
---|
| 2 |
|
---|
| 3 | #ifdef _AMD64_
|
---|
| 4 | #include "../BasicCompiler64/opcode.h"
|
---|
| 5 | #else
|
---|
[5] | 6 | #include "../BasicCompiler32/opcode.h"
|
---|
[4] | 7 | #endif
|
---|
| 8 |
|
---|
[73] | 9 | SubInfo *OverloadSolutionWithStrParam(
|
---|
[50] | 10 | const char *name,
|
---|
[73] | 11 | std::vector<SubInfo *> &subs,
|
---|
[50] | 12 | const char *Parameter,
|
---|
| 13 | const char *ObjectName,
|
---|
| 14 | TYPEINFO *pReturnTypeInfo){
|
---|
[4] | 15 |
|
---|
[50] | 16 | // オーバーロードの解決
|
---|
[4] | 17 |
|
---|
[50] | 18 | //オーバーロードされていないとき
|
---|
| 19 | if( subs.size() == 1 ) return subs[0];
|
---|
[4] | 20 |
|
---|
| 21 |
|
---|
[50] | 22 | ////////////////////////
|
---|
| 23 | // パラメータをセット
|
---|
| 24 | ////////////////////////
|
---|
[4] | 25 |
|
---|
[71] | 26 | ParamImpl *pobj_parameter=0;
|
---|
[28] | 27 |
|
---|
[50] | 28 | char MethodName[VN_SIZE];
|
---|
| 29 | if( !SplitMemberName( name, NULL, MethodName ) ) lstrcpy( MethodName, name );
|
---|
[64] | 30 | /*
|
---|
[50] | 31 | //メソッドの場合は静的かどうかを調べる
|
---|
| 32 | bool isStatic = false;
|
---|
| 33 | CClass *pClass = subs[0]->pobj_ParentClass;
|
---|
| 34 | if( pClass ){
|
---|
| 35 | isStatic = pClass->IsExistStaticMethod( MethodName );
|
---|
| 36 | }
|
---|
[64] | 37 | */
|
---|
[50] | 38 | //パラメータオブジェクトを生成
|
---|
[73] | 39 | if(lstrcmp(Parameter,"\"test\"")==0){
|
---|
| 40 | int i=0;
|
---|
| 41 | }
|
---|
[71] | 42 | pobj_parameter=new ParamImpl(Parameter);
|
---|
[50] | 43 | if(pReturnTypeInfo) pobj_parameter->SetReturnType(pReturnTypeInfo);
|
---|
[4] | 44 |
|
---|
| 45 |
|
---|
[73] | 46 | SubInfo *psi;
|
---|
[50] | 47 | psi=pobj_parameter->OverloadSolution(name,subs);
|
---|
[4] | 48 |
|
---|
| 49 |
|
---|
[50] | 50 | //パラメータオブジェクトを破棄
|
---|
| 51 | delete pobj_parameter;
|
---|
| 52 | pobj_parameter=0;
|
---|
| 53 |
|
---|
| 54 | return psi;
|
---|
[4] | 55 | }
|
---|
| 56 |
|
---|
[73] | 57 | SubInfo *OverloadSolution(
|
---|
[50] | 58 | const char *name,
|
---|
[73] | 59 | std::vector<SubInfo *> &subs,
|
---|
[50] | 60 | const PARAMETER_INFO *ppi,
|
---|
| 61 | const int ParmNum,
|
---|
| 62 | TYPEINFO *pReturnTypeInfo){
|
---|
[4] | 63 |
|
---|
[50] | 64 | // オーバーロードの解決
|
---|
[4] | 65 |
|
---|
[50] | 66 | //オーバーロードされていないとき
|
---|
| 67 | if( subs.size() == 1 ) return subs[0];
|
---|
[4] | 68 |
|
---|
| 69 |
|
---|
[71] | 70 | ParamImpl *pobj_Parameter=new ParamImpl(ppi,ParmNum);
|
---|
[50] | 71 | if(pReturnTypeInfo) pobj_Parameter->SetReturnType(pReturnTypeInfo);
|
---|
[4] | 72 |
|
---|
[73] | 73 | SubInfo *psi;
|
---|
[50] | 74 | psi=pobj_Parameter->OverloadSolution(name,subs);
|
---|
[4] | 75 |
|
---|
[50] | 76 | delete pobj_Parameter;
|
---|
| 77 |
|
---|
| 78 | return psi;
|
---|
[4] | 79 | }
|
---|