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

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • BasicCompiler64/Compile_Set_Var.cpp

    r63 r64  
    77}
    88
    9 void SetObjectVariableFromRax(LONG_PTR lpVarIndex,int CalcType,LONG_PTR lpCalcIndex,RELATIVE_VAR *pRelativeVar,BOOL bUseHeap){
     9void SetStructVariableFromRax(LONG_PTR lpVarIndex,int CalcType,LONG_PTR lpCalcIndex,RELATIVE_VAR *pRelativeVar,BOOL bUseHeap){
    1010    int RightTermReg;
    1111    pobj_reg=new CRegister(REG_RCX);
     
    3636    }
    3737
    38 
     38/*
     39    TODO: 消す
    3940    ///////////////////////////////////////////////////////////////////
    4041    // オペレータ '=' のオーバーロード関数を呼ぶ
     
    5960    int iRet;
    6061    iRet=CallOperatorProc(CALC_SUBSITUATION,NULL,type,index_stack,array_bUseHeap,sp);
    61 
     62*/
    6263    //右辺用レジスタを解除
    6364    if(IsRealNumberType(CalcType)) pobj_reg->UnlockXmmReg();
     
    7172    pobj_reg=0;
    7273
    73     if(iRet==-1||iRet==1){
    74         //成功したとき、またはエラーが発行されたとき
    75         return;
    76     }
    77 
    78 
    79     if( CalcType == DEF_OBJECT ){
     74
     75    if( CalcType == DEF_STRUCT ){
    8076        CClass *pVarClass = (CClass *)lpVarIndex;
    8177        CClass *pCalcClass = (CClass *)lpCalcIndex;
    8278
    83         if( pVarClass->IsEquals( pCalcClass )           //等しい
    84             || pVarClass->IsSubClass( pCalcClass ) ){   //派生・継承関係
     79        if( pVarClass->IsEquals( pCalcClass ) ){            //等しい
    8580
    8681                //双方のオブジェクト型が一致、または派生・継承関係にあるとき
     
    122117    SetError(1,NULL,cp);
    123118}
     119
    124120
    125121void SetDoubleVariable(int type,RELATIVE_VAR *pRelative){
     
    305301    }
    306302}
     303void SetRealVariable(int VarType, int CalcType, RELATIVE_VAR *pRelativeVar){
     304    if(VarType==DEF_DOUBLE){
     305        //Double型変数へスタックの内容を格納する
     306        SetDoubleVariable(CalcType,pRelativeVar);
     307    }
     308    else if(VarType==DEF_SINGLE){
     309        //Single型変数へスタックの内容を格納する
     310        SetSingleVariable(CalcType,pRelativeVar);
     311    }
     312}
    307313void SetBooleanVariable(int type,RELATIVE_VAR *pRelative){
    308314    if(type==DEF_DOUBLE){
Note: See TracChangeset for help on using the changeset viewer.