Changeset 85 in dev for BasicCompiler_Common


Ignore:
Timestamp:
Mar 30, 2007, 4:19:07 AM (18 years ago)
Author:
dai_9181
Message:

オブジェクトの循環参照を許容した(構造体はダメ)。
抽象クラスをメンバの型に指定できるようにした。
メンバがオブジェクトだったとき、自動的にNewするのをやめ、初期値としてNothingを指定するようにした。

Location:
BasicCompiler_Common
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • BasicCompiler_Common/Class.cpp

    r79 r85  
    3030    }
    3131
     32    /*
     33    TODO: 消す
     34    メンバ定義は抽象クラスでもOK
    3235    if( IsObject() ){
    3336        if( GetClass().IsAbstract() ){
     
    3538            SetError(125,GetClass().name,cp);
    3639        }
    37     }
     40    }*/
    3841
    3942    //メンバ名
     
    574577    }
    575578
     579    /*
     580    TODO: 消す
     581    これはAB5からは良くなった(参照型になったため)
     582
    576583    //コンポジションの関係にあるメンバも検査する
    577584    for(int i=0;i < iMemberNum;i++){
     
    581588        }
    582589    }
     590    */
    583591
    584592    return false;
     
    860868    if(fConstructor||bDestructor){
    861869        // コンストラクタ、デストラクタのアクセシビリティをチェック
    862         if(dwAccess!=ACCESS_PUBLIC){
    863             SetError(116,NULL,nowLine);
    864             dwAccess=ACCESS_PUBLIC;
    865         }
    866870
    867871        //強制的にConst修飾子をつける
     
    946950    for(i=0;i<objClass.iMemberNum;i++){
    947951        const CMember *pMember = objClass.ppobj_Member[i];
    948         if(pMember->IsObject()){
     952        if(pMember->IsStruct()){
    949953            //循環参照でないかをチェック
    950954            if(pobj_LoopRefCheck->check(pMember->GetClass().name)){
  • BasicCompiler_Common/VarList.cpp

    r78 r85  
    2323
    2424    if( type.IsObject() || type.IsStruct() ){
     25        i2=1;
    2526        if( type.IsObject() ){
    2627            // 参照型ということを考慮する
    27             ReadProcessMemory(hDebugProcess,(void *)offset,&pData,sizeof(void *),&accessBytes);
     28            i2=ReadProcessMemory(hDebugProcess,(void *)offset,&pData,sizeof(void *),&accessBytes);
    2829            offset = pData;
    2930        }
     
    3435        hParent=TreeView_InsertItem(hVarTree,lptv);
    3536
    36         VarList_Member(hVarTree,hParent,offset,type.GetClass(),0);
     37        if(i2 && offset) VarList_Member(hVarTree,hParent,offset,type.GetClass(),0);
    3738        return;
    3839    }
  • BasicCompiler_Common/common.h

    r84 r85  
    4747
    4848#ifdef _AMD64_
    49 #define VER_INFO        "(x64) β rev.184"
     49#define VER_INFO        "(x64) β rev.194"
    5050#else
    51 #define VER_INFO        "β rev.184"
     51#define VER_INFO        "β rev.194"
    5252#endif
    5353
  • BasicCompiler_Common/error.cpp

    r75 r85  
    168168    if(num==114) lstrcpy(msg,"デストラクタはパラメータを持てません。");
    169169    if(num==115) lstrcpy(msg,"コンストラクタ及びデストラクタは戻り値を持てません。");
    170     if(num==116) lstrcpy(msg,"コンストラクタ及びデストラクタはパブリックアクセスにしなければなりません。");
     170    //if(num==116) lstrcpy(msg,"コンストラクタ及びデストラクタはパブリックアクセスにしなければなりません。");
    171171    if(num==117) lstrcpy(msg,"デストラクタの名前が \"~クラス名\" になっていません。");
    172172    if(num==118) lstrcpy(msg,"参照する基底クラスが存在しません。");
Note: See TracChangeset for help on using the changeset viewer.