Changeset 62 in dev for BasicCompiler_Common


Ignore:
Timestamp:
Feb 22, 2007, 3:57:56 AM (18 years ago)
Author:
dai_9181
Message:

グローバル変数に対してByRefを指定できるようにした

Location:
BasicCompiler_Common
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • BasicCompiler_Common/Class.cpp

    r59 r62  
    127127            sprintf(temporary,"%s.%s",pobj_c->name,member->name);
    128128            AddGlobalVariable(
     129                false,
    129130                temporary,
    130131                member->SubScripts,
  • BasicCompiler_Common/Variable.cpp

    r57 r62  
    11371137
    11381138
    1139 void AddGlobalVariable(char *name,int *SubScripts,TYPEINFO *pTypeInfo,int TypeSize,char *InitBuf,char *ConstractParameter,DWORD dwFlag){
     1139void AddGlobalVariable(bool isRef, char *name,int *SubScripts,TYPEINFO *pTypeInfo,int TypeSize,char *InitBuf,char *ConstractParameter,DWORD dwFlag){
    11401140    /////////////////////////
    11411141    // グローバル変数を追加
     
    11591159
    11601160    GlobalVar=(VARIABLE *)HeapReAlloc(hHeap,0,GlobalVar,(MaxGlobalVarNum+1)*sizeof(VARIABLE));
     1161    VARIABLE *pVar = &GlobalVar[MaxGlobalVarNum];
     1162    MaxGlobalVarNum++;
     1163
     1164    if( isRef ){
     1165        //参照型
     1166        pVar->fRef = REF_VARIABLE;
     1167        TypeSize = PTR_SIZE;
     1168    }
     1169    else pVar->fRef=0;
    11611170
    11621171    for(i2=1,i3=0;i3<255;i3++){
    11631172        //配列要素数
    1164         GlobalVar[MaxGlobalVarNum].SubScripts[i3]=SubScripts[i3];
     1173        pVar->SubScripts[i3]=SubScripts[i3];
    11651174
    11661175        if(SubScripts[i3]==-1) break;
     
    11701179    if(VarSize%PTR_SIZE) VarSize+=PTR_SIZE-(VarSize%PTR_SIZE);
    11711180
    1172     //新しいオブジェクトポインタを取得
    1173     VARIABLE *pVar = &GlobalVar[MaxGlobalVarNum];
    1174 
    1175     //グローバル変数の個数を増加
    1176     MaxGlobalVarNum++;
    1177 
    11781181    lstrcpy(pVar->name,name);
    1179     pVar->fRef = 0;
    11801182    if(dwFlag & DIMFLAG_CONST) pVar->bConst = true;
    11811183    else pVar->bConst = false;
     
    12181220            //単発式が初期値のオブジェクトの場合
    12191221            //初期値をコピーコンストラクタに渡す
     1222
     1223            if( isRef ){
     1224                SetRefVariable( name, InitBuf );
     1225            }
    12201226        }
    12211227        else{
  • BasicCompiler_Common/Variable.h

    r49 r62  
    2828BOOL GetDimentionFormat(const char *buffer, const bool isRef, char *VarName,int *SubScripts,TYPEINFO *pTypeInfo,char *InitBuf,char *ConstractParameter);
    2929BOOL GetNowStaticVarFullName(char *VarName,char *FullName);
    30 void AddGlobalVariable(char *name,int *SubScripts,TYPEINFO *pTypeInfo,int TypeSize,char *InitBuf,char *ConstractParameter,DWORD dwFlag);
     30void AddGlobalVariable(bool isRef, char *name,int *SubScripts,TYPEINFO *pTypeInfo,int TypeSize,char *InitBuf,char *ConstractParameter,DWORD dwFlag);
    3131
Note: See TracChangeset for help on using the changeset viewer.