Ignore:
Timestamp:
Mar 8, 2007, 2:49:34 AM (17 years ago)
Author:
dai_9181
Message:

すべてのオブジェクトを参照型に切り替えた。

File:
1 edited

Legend:

Unmodified
Added
Removed
  • BasicCompiler_Common/Subroutine.cpp

    r54 r64  
    460460    _int64 i64data;
    461461    type = StaticCalculation( true, temporary, 0, &i64data, &lpIndex );
    462     if( type != DEF_PTR_BYTE ){
     462    if( type != DEF_PTR_CHAR ){
    463463        SetError(1,NULL,NowLine);
    464464        return;
     
    483483    if( temporary[0] ){
    484484        type = StaticCalculation( true, temporary, 0, &i64data, &lpIndex );
    485         if( type != DEF_PTR_BYTE ){
     485        if( type != DEF_PTR_CHAR ){
    486486            SetError(1,NULL,NowLine);
    487487            return;
     
    604604        i+=2;
    605605        pdi->ReturnType=GetTypeFixed(buffer+i,&pdi->u.ReturnIndex);
    606         if(pdi->ReturnType==-1) SetError(3,buffer+i,NowLine);
     606        if(pdi->ReturnType==DEF_NON) SetError(3,buffer+i,NowLine);
    607607        if(pdi->ReturnType==DEF_OBJECT) SetError(40,NULL,NowLine);
    608608    }
    609609    else if(buffer[i]) SetError(1,NULL,NowLine);
    610     else pdi->ReturnType=-1;
     610    else pdi->ReturnType=DEF_NON;
    611611
    612612    pdi->pos=NowLine;
     
    635635        }
    636636        else{
    637             if(NATURAL_TYPE(ppi1[i].type)==DEF_OBJECT){
     637            if(NATURAL_TYPE(ppi1[i].type)==DEF_OBJECT
     638                || NATURAL_TYPE(ppi1[i].type)==DEF_STRUCT ){
    638639                if(ppi1[i].u.index!=ppi2[i].u.index) return 1;
    639640            }
     
    827828                }
    828829                psi->ReturnType=GetTypeFixed(temporary,&psi->u.ReturnIndex);
    829                 if(psi->ReturnType==-1) SetError(3,temporary,NowLine);
     830                if(psi->ReturnType==DEF_NON) SetError(3,temporary,NowLine);
    830831
    831832                sw_as=1;
     
    842843    else{
    843844        //戻り値なしのSub定義
    844         psi->ReturnType=-1;
     845        psi->ReturnType=DEF_NON;
    845846        psi->u.ReturnIndex=-1;
    846847    }
     
    11291130    }
    11301131
    1131     //リアルパラメータ領域を取得(_System_LocalThis、_System_ReturnValueを考慮して2つだけ多く確保する)
     1132    //リアルパラメータ領域を取得(_System_LocalThisを考慮して2つだけ多く確保する)
    11321133    psi->pRealParmInfo=(PARAMETER_INFO *)HeapAlloc(hHeap,0,(psi->ParmNum+2)*sizeof(PARAMETER_INFO));
    11331134    psi->RealParmNum=0;
     
    11471148    }
    11481149
    1149     if(psi->ReturnType==DEF_OBJECT && psi->isReturnRef == false){
     1150    if(psi->ReturnType==DEF_STRUCT){
    11501151        i = psi->RealParmNum;
    11511152
    1152         //実体オブジェクトを戻り値として持つ場合
     1153        //構造体を戻り値として持つ場合
    11531154        //※第一パラメータ(Thisポインタありの場合は第二パラメータ)を戻り値用の参照宣言にする
    11541155
     
    11561157            psi->pRealParmInfo[i].name="_System_ReturnValue";
    11571158        else psi->pRealParmInfo[i].name=psi->name;
    1158         psi->pRealParmInfo[i].type=DEF_OBJECT;
     1159        psi->pRealParmInfo[i].type=DEF_STRUCT;
    11591160        psi->pRealParmInfo[i].u.index=psi->u.ReturnIndex;
    11601161        psi->pRealParmInfo[i].bByVal=0;
     
    15211522            }
    15221523            pi->ReturnType=GetTypeFixed(temporary,&pi->u.ReturnIndex);
    1523             if(pi->ReturnType==-1) SetError(3,temporary,cp);
    1524             if(pi->ReturnType==DEF_OBJECT) SetError(40,NULL,cp);
     1524            if(pi->ReturnType==DEF_NON) SetError(3,temporary,cp);
    15251525        }
    15261526        else pi->ReturnType=DEF_DOUBLE;
    15271527    }
    1528     else pi->ReturnType=-1;
     1528    else pi->ReturnType=DEF_NON;
    15291529
    15301530    return ProcPtrInfoNum-1;
Note: See TracChangeset for help on using the changeset viewer.