Ignore:
Timestamp:
Jun 24, 2007, 6:49:13 PM (17 years ago)
Author:
dai_9181
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/abdev/BasicCompiler_Common/DebugMiddleFile.cpp

    r159 r182  
     1#include <jenga/include/smoothie/Smoothie.h>
     2
     3#include <ClassImpl.h>
     4
    15#include "../BasicCompiler_Common/common.h"
    26
     
    2832        (*p)+=lstrlen(buffer+(*p))+1;
    2933
    30         type.SetIndex( (LONG_PTR)pobj_DBClass->Find(szClassName) );
     34        type.SetIndex( (LONG_PTR)Smoothie::GetMeta().GetClasses().Find(szClassName) );
    3135    }
    3236    else{
     
    115119
    116120    //イテレータをリセット
    117     extern Classes *pobj_DBClass;
    118     pobj_DBClass->Iterator_Reset();
     121    Smoothie::GetMeta().GetClasses().Iterator_Reset();
    119122
    120123    //個数
    121     *(long *)(buffer+i2)=pobj_DBClass->Iterator_GetMaxCount();
    122     i2+=sizeof(long);
    123 
    124     while(pobj_DBClass->Iterator_HasNext()){
     124    *(long *)(buffer+i2)=Smoothie::GetMeta().GetClasses().Iterator_GetMaxCount();
     125    i2+=sizeof(long);
     126
     127    while(Smoothie::GetMeta().GetClasses().Iterator_HasNext()){
    125128        CClass *pobj_c;
    126         pobj_c=pobj_DBClass->Iterator_GetNext();
     129        pobj_c=Smoothie::GetMeta().GetClasses().Iterator_GetNext();
    127130
    128131        //クラス名
     
    136139    // TypeDef情報
    137140    //////////////////
    138     *(long *)(buffer+i2)=(int)Smoothie::meta.typeDefs.size();
    139     i2+=sizeof(long);
    140     for(i3=0;i3<(int)Smoothie::meta.typeDefs.size();i3++){
    141         lstrcpy(buffer+i2,Smoothie::meta.typeDefs[i3].GetName().c_str() );
    142         i2+=lstrlen(buffer+i2)+1;
    143 
    144         lstrcpy(buffer+i2,Smoothie::meta.typeDefs[i3].GetBaseName().c_str() );
     141    *(long *)(buffer+i2)=(int)Smoothie::GetMeta().typeDefs.size();
     142    i2+=sizeof(long);
     143    for(i3=0;i3<(int)Smoothie::GetMeta().typeDefs.size();i3++){
     144        lstrcpy(buffer+i2,Smoothie::GetMeta().typeDefs[i3].GetName().c_str() );
     145        i2+=lstrlen(buffer+i2)+1;
     146
     147        lstrcpy(buffer+i2,Smoothie::GetMeta().typeDefs[i3].GetBaseName().c_str() );
    145148        i2+=lstrlen(buffer+i2)+1;
    146149
     
    156159    *(long *)(buffer+i2)=(int)::globalVars.size();
    157160    i2+=sizeof(long);
    158     foreach( Variable *pVar, ::globalVars ){
     161    BOOST_FOREACH( Variable *pVar, ::globalVars ){
    159162        //変数名
    160163        lstrcpy(buffer+i2,pVar->GetName().c_str());
     
    245248            }
    246249
    247             foreach( Variable *pVar, pUserProc->localVars ){
     250            BOOST_FOREACH( Variable *pVar, pUserProc->localVars ){
    248251                lstrcpy(buffer+i2,pVar->GetName().c_str());
    249252                i2+=lstrlen(buffer+i2)+1;
     
    304307
    305308    //イテレータをリセット
    306     pobj_DBClass->Iterator_Reset();
    307 
    308     while(pobj_DBClass->Iterator_HasNext()){
     309    Smoothie::GetMeta().GetClasses().Iterator_Reset();
     310
     311    while(Smoothie::GetMeta().GetClasses().Iterator_HasNext()){
    309312        CClass *pobj_c;
    310         pobj_c=pobj_DBClass->Iterator_GetNext();
     313        pobj_c=Smoothie::GetMeta().GetClasses().Iterator_GetNext();
    311314
    312315
     
    324327
    325328        //メンバ
    326         *(long *)(buffer+i2)=(int)pobj_c->dynamicMembers.size();
    327         i2+=sizeof(long);
    328         foreach( CMember *member, pobj_c->dynamicMembers ){
     329        *(long *)(buffer+i2)=(int)pobj_c->GetDynamicMembers().size();
     330        i2+=sizeof(long);
     331        BOOST_FOREACH( CMember *member, pobj_c->GetDynamicMembers() ){
    329332            // 名前
    330333            lstrcpy(buffer+i2,member->GetName().c_str());
     
    353356
    354357        //メソッド
    355         *(long *)(buffer+i2)=(long)pobj_c->methods.size();
    356         i2+=sizeof(long);
    357         foreach( const CMethod *pMethod, pobj_c->methods ){
     358        *(long *)(buffer+i2)=(long)pobj_c->GetMethods().size();
     359        i2+=sizeof(long);
     360        BOOST_FOREACH( const CMethod *pMethod, pobj_c->GetMethods() ){
    358361            *(Prototype::Accessibility *)(buffer+i2)=pMethod->GetAccessibility();
    359362            i2+=sizeof(Prototype::Accessibility);
     
    371374
    372375        //静的メンバ
    373         *(long *)(buffer+i2)=(long)pobj_c->staticMembers.size();
    374         i2+=sizeof(long);
    375         foreach( CMember *member, pobj_c->staticMembers ){
     376        *(long *)(buffer+i2)=(long)pobj_c->GetStaticMembers().size();
     377        i2+=sizeof(long);
     378        BOOST_FOREACH( CMember *member, pobj_c->GetStaticMembers() ){
    376379            // 名前
    377380            lstrcpy(buffer+i2,member->GetName().c_str());
     
    432435    char temp2[MAX_PATH],*temp5;
    433436
    434     pobj_CompilingClass = NULL;
     437    Smoothie::Temp::pCompilingClass = NULL;
    435438
    436439    i2=0;
     
    482485    ///////////////////////////////////////////
    483486
    484     this->pobj_DBClass=new Classes();
     487    this->pobj_DBClass=new ClassesImpl();
    485488
    486489    int iMaxClassCount;
     
    490493        //クラス名
    491494        // TODO: 名前空間が未完成
    492         pobj_DBClass->AddClass(NamespaceScopes(),NamespaceScopesCollection(),buffer+i2,0);
    493         i2+=lstrlen(buffer+i2)+1;
    494     }
    495 
    496     extern Classes *pobj_DBClass;
    497     pobj_DBClass=this->pobj_DBClass;
     495        this->pobj_DBClass->Add(NamespaceScopes(),NamespaceScopesCollection(),buffer+i2,0);
     496        i2+=lstrlen(buffer+i2)+1;
     497    }
     498
     499    Smoothie::GetMeta().SetClasses( this->pobj_DBClass );
    498500
    499501
     
    503505
    504506    //初期化
    505     Smoothie::meta.typeDefs.clear();
     507    Smoothie::GetMeta().typeDefs.clear();
    506508
    507509    //個数を取得
     
    513515
    514516        // 名前空間に未対応
    515         Smoothie::meta.typeDefs.push_back( TypeDef( NamespaceScopes(), temp5, buffer+i2 ) );
     517        Smoothie::GetMeta().typeDefs.push_back( TypeDef( NamespaceScopes(), temp5, buffer+i2, -1 ) );
    516518
    517519        i2+=lstrlen(buffer+i2)+1;
     
    590592        const CClass *pClass = NULL;
    591593        if(szParentClassName[0]){
    592             pClass=pobj_DBClass->Find(szParentClassName);
     594            pClass=Smoothie::GetMeta().GetClasses().Find(szParentClassName);
    593595        }
    594596
     
    695697        i2+=lstrlen(buffer+i2)+1;
    696698
    697         pobj_c =  const_cast<CClass *>( pobj_DBClass->Find(szClassName) );
     699        pobj_c =  const_cast<CClass *>( Smoothie::GetMeta().GetClasses().Find(szClassName) );
    698700
    699701        //仮想関数の数
     
    724726            i2+=sizeof(Prototype::Accessibility);
    725727
    726             CMember *member=new CMember( accessibility, name, type, false );
     728            CMember *member=new CMember( accessibility, name, type, false, "", "" );
    727729
    728730            memcpy(member->SubScripts,buffer+i2,sizeof(int)*MAX_ARRAYDIM);
    729731            i2+=sizeof(int)*MAX_ARRAYDIM;
    730732
    731             pobj_c->dynamicMembers.push_back( member );
     733            pobj_c->GetDynamicMembers().push_back( member );
    732734        }
    733735
     
    746748            const CClass *pobj_InheritsClass = NULL;
    747749            if(szInherits[0]){
    748                 pobj_InheritsClass=pobj_DBClass->Find(szInherits);
     750                pobj_InheritsClass=Smoothie::GetMeta().GetClasses().Find(szInherits);
    749751            }
    750752
     
    764766            CMethod *pMethod = new DynamicMethod( pUserProc, accessibility, 0,0,false, pobj_InheritsClass);
    765767
    766             pobj_c->methods.push_back( pMethod );
     768            pobj_c->GetMethods().push_back( pMethod );
    767769        }
    768770
     
    786788            i2+=sizeof(Prototype::Accessibility);
    787789
    788             CMember *member=new CMember( accessibility, name, type, false );
     790            CMember *member=new CMember( accessibility, name, type, false, "", "" );
    789791
    790792            memcpy(member->SubScripts,buffer+i2,sizeof(int)*MAX_ARRAYDIM);
    791793            i2+=sizeof(int)*MAX_ARRAYDIM;
    792794
    793             pobj_c->staticMembers.push_back( member );
     795            pobj_c->GetStaticMembers().push_back( member );
    794796        }
    795797    }
     
    943945
    944946    // クラス情報
    945     extern Classes *pobj_DBClass;
    946     pobj_DBClass=this->pobj_DBClass;
     947    Smoothie::GetMeta().SetClasses( this->pobj_DBClass );
    947948
    948949    //定数を取得
     
    979980
    980981    //クラスに関するメモリを解放
    981     delete pobj_DBClass;
    982     pobj_DBClass=0;
     982    delete this->pobj_DBClass;
     983    this->pobj_DBClass=0;
    983984
    984985    //サブルーチン情報のメモリ解放
     
    992993
    993994    //コードバッファを解放
    994     HeapDefaultFree(OpBuffer);
     995    free(OpBuffer);
    995996    OpBuffer=0;
    996997
Note: See TracChangeset for help on using the changeset viewer.