Changeset 73 in dev for BasicCompiler32/OperatorProc.cpp


Ignore:
Timestamp:
Mar 16, 2007, 11:07:14 PM (17 years ago)
Author:
dai_9181
Message:

Parameterクラスを適用。32bit側は動くようになったので、64bitのほうを調整する。

File:
1 edited

Legend:

Unmodified
Added
Removed
  • BasicCompiler32/OperatorProc.cpp

    r67 r73  
    1818
    1919    //call free
    20     extern SUBINFO *pSub_free;
     20    extern SubInfo *pSub_free;
    2121    op_call(pSub_free);
    2222}
     
    2727    pobj_c=(CClass *)index_stack[sp-2];
    2828
    29     std::vector<SUBINFO *> subs;
     29    std::vector<SubInfo *> subs;
    3030    pobj_c->EnumMethod( idCalc, subs );
    3131    if( subs.size() == 0 ){
     
    4242    BOOL bReturnTypeIsObject=1;
    4343    TYPEINFO ReturnType={DEF_OBJECT,subs[0]->u.ReturnIndex};
    44     foreach( SUBINFO *psi, subs ){
     44    foreach( SubInfo *psi, subs ){
    4545        if(psi->ReturnType!=DEF_OBJECT)
    4646            bReturnTypeIsObject=0;
     
    7979    if(idCalc==CALC_EQUAL) lstrcpy(temporary,"==");
    8080    else GetCalcName(idCalc,temporary);
    81     SUBINFO *psi;
     81    SubInfo *psi;
    8282    psi=OverloadSolution(temporary,subs,ppi,iParmNum,pBaseTypeInfo);
    8383
     
    8888    else{
    8989        //オーバーロードされていないが、パラメータ個数が一致しないとき
    90         if(iParmNum!=psi->ParmNum){
     90        if(iParmNum!=psi->params.size()){
    9191            HeapDefaultFree(ppi);
    9292            return -1;
     
    9696    for(i=0;i<iParmNum;i++){
    9797        CheckDifferentType(
    98             psi->pParmInfo[i].type,
    99             psi->pParmInfo[i].u.index,
     98            psi->params[i]->GetBasicType(),
     99            psi->params[i]->GetIndex(),
    100100            ppi[i].type,
    101101            ppi[i].u.index,
     
    109109
    110110    if(bTwoTerm){
    111         if(psi->pRealParmInfo[1].type==DEF_STRUCT&&psi->pRealParmInfo[1].bByVal){
     111        if( psi->realParams[1]->IsStruct() &&psi->realParams[1]->IsRef() == false ){
    112112            //一時オブジェクトはメソッド内で破棄される
    113113            bUseHeap[sp-1]=0;
     
    128128
    129129        //call calloc
    130         extern SUBINFO *pSub_calloc;
     130        extern SubInfo *pSub_calloc;
    131131        op_call(pSub_calloc);
    132132
     
    180180        }
    181181
    182         if( !psi->pRealParmInfo[1].bByVal ){
     182        if( psi->realParams[1]->IsRef() ){
    183183            //一時参照を作成
    184184
     
    203203
    204204    if(bTwoTerm){
    205         if( !psi->pRealParmInfo[1].bByVal ){
     205        if( psi->realParams[1]->IsRef() ){
    206206            //一時参照を破棄
    207207            op_pop( REG_NON );
     
    273273}
    274274void CallIndexerGetterProc(CClass *pobj_Class,char *ObjectName,char *Parameter,TYPEINFO &RetTypeInfo){
    275     std::vector<SUBINFO *> subs;
     275    std::vector<SubInfo *> subs;
    276276    pobj_Class->EnumMethod( CALC_ARRAY_GET, subs );
    277277    if( subs.size() == 0 ){
Note: See TracChangeset for help on using the changeset viewer.