Changeset 106 in dev for BasicCompiler64


Ignore:
Timestamp:
May 4, 2007, 5:04:50 PM (18 years ago)
Author:
dai_9181
Message:

名前空間機能をクラスの静的メンバに適用。

File:
1 edited

Legend:

Unmodified
Added
Removed
  • BasicCompiler64/Compile_Var.cpp

    r103 r106  
    388388    else lstrcpy(variable,NameBuffer);
    389389
     390    // 名前空間を分離
     391    char namespaceStr[VN_SIZE]="", simpleName[VN_SIZE];
     392    Smoothie::Meta::namespaceScopesCollection.SplitNamespace( variable, namespaceStr, simpleName );
     393
     394    // 先頭オブジェクトまたはクラス名と入れ子メンバに分割
    390395    CClass::RefType refType;
    391     if( FormatUseProcReturnObject( variable, VarName, array, refType, member ) ){
    392         // 戻り値オブジェクトのメンバを直接参照しているとき
    393         //例: func().member
    394 
    395         // TODO: 消す
    396         SetError();
    397         return false;
    398         /*
    399         void *pInfo;
    400         int idProc=GetProc(VarName,(void **)&pInfo);
    401 
    402         if(idProc){
    403             pRelativeVar->dwKind=VAR_DIRECTMEM;
    404 
    405             Type type;
    406 
    407             //////////////////////////////////////////////////////
    408             /////    レジスタ資源のバックアップ
    409             {   BACKUP_REGISTER_RESOURCE
    410             //////////////////////////////////////////////////////
    411 
    412                 ////////////////
    413                 // 呼び出し
    414                 ////////////////
    415 
    416                 CallProc(idProc,pInfo,VarName,array,type);
    417 
    418                 //戻り値をr11にコピー
    419                 op_mov_RR( REG_R11, REG_RAX );
    420 
    421             /////////////////////////////////////////////
    422             //////   レジスタ資源を復元
    423                 RESTORE_REGISTER_RESOURCE
    424             }////////////////////////////////////////////
    425 
    426             if(!_member_offset(
    427                 isErrorEnabled,
    428                 isWriteAccess,
    429                 type.GetClass(),
    430                 member,pRelativeVar,resultType,0)) return false;
    431 
    432             return true;
    433         }*/
    434     }
    435 
    436 
    437 
    438     lstrcpy(VarName,variable);
    439     GetVarFormatString(VarName,array,lpPtrOffset,member,refType);
     396    char member[VN_SIZE],array[VN_SIZE],lpPtrOffset[VN_SIZE];
     397    GetVarFormatString(simpleName,array,lpPtrOffset,member,refType);
     398
     399    // 名前空間を分離していた場合は結合
     400    char VarName[VN_SIZE];
     401    if( namespaceStr[0] ){
     402        sprintf( VarName, "%s.%s", namespaceStr, simpleName );
     403    }
     404    else{
     405        lstrcpy( VarName, simpleName );
     406    }
    440407
    441408    const int *pSubScripts;
Note: See TracChangeset for help on using the changeset viewer.