Changeset 103 in dev for BasicCompiler64


Ignore:
Timestamp:
May 2, 2007, 4:08:58 AM (18 years ago)
Author:
dai_9181
Message:

名前空間機能をグローバル変数、定数と列挙型に適用。
一部、クラスの静的メンバと名前空間の相性が悪いコードが潜んでいるため、要改修

Location:
BasicCompiler64
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • BasicCompiler64/Compile_Var.cpp

    r97 r103  
    562562        if(member[0]){
    563563            lstrcpy(temporary,member);
     564
     565            // TODO: 名前空間を考慮したコードになっていない
    564566
    565567            char tempMember[VN_SIZE];
  • BasicCompiler64/MakePeHdr.cpp

    r100 r103  
    302302
    303303    if(!bDll){
     304        // 名前空間が初期化されているかをチェック
     305        if( Smoothie::Lexical::liveingNamespaceScopes.size() ){
     306            SetError();
     307        }
     308
    304309        //ラベル用のメモリを確保
    305310        extern LABEL *pLabelNames;
     
    411416        HeapDefaultFree(WithInfo.ppName);
    412417        HeapDefaultFree(WithInfo.pWithCp);
     418
     419        // 名前空間が正しく閉じられているかをチェック
     420        if( Smoothie::Lexical::liveingNamespaceScopes.size() ){
     421            SetError(63,NULL,-1);
     422        }
     423
    413424    }
    414425    else{
  • BasicCompiler64/NumOpe.cpp

    r102 r103  
    239239    lstrcpy(termLeft,termFull);
    240240
    241     if( (string)term=="DayOfWeek"){
    242         int test=0;
    243     }
    244 
    245241    // パース
    246242    char member[VN_SIZE];
     
    258254        Type leftType;
    259255        if( !TermOpe( termLeft, baseType, leftType, isLiteral, pbUseHeap, &isClassName ) ){
    260             return false;
     256            goto globalArea;
    261257        }
    262258
     
    273269        return TermMemberOpe( leftType.GetClass(), baseType, resultType, termFull, termLeft, member );
    274270    }
    275 
     271globalArea:
    276272
    277273    //////////////////////////////////////////////
     
    290286    // グローバル属性エリア
    291287    /////////////////////////////////////////////////////////////////
    292 globalArea:
    293288
    294289    int UseReg=pobj_reg->GetNextReg();
     
    783778                    // 何らかの識別子
    784779
     780    if( (string)term=="ParentArea.NamespaceEnumTest.x"){
     781        int test=0;
     782    }
     783
    785784                    bool isLiteral;
    786785                    if( TermOpe( term, baseType, resultType, isLiteral, &bUseHeap[sp] ) ){
     
    870869                    //////////////
    871870
    872                     i3 = CDBConst::obj.GetType(term);
     871                    i3 = CDBConst::obj.GetBasicType(term);
    873872                    if(i3){
     873                        if( CDBConst::obj.IsStringPtr( term ) ){
     874                            //リテラル文字列
     875
     876                            double dbl = CDBConst::obj.GetDoubleData(term);
     877                            memcpy(&i64data,&dbl,sizeof(double));
     878
     879                            //バイト数
     880                            i3=lstrlen((char *)i64data);
     881
     882                            memcpy(term,(char *)i64data,i3);
     883                            term[i3]=0;
     884                            goto StrLiteral;
     885                        }
     886
    874887                        type_stack[sp] = i3;
    875888                        if(IsRealNumberType(i3)){
Note: See TracChangeset for help on using the changeset viewer.