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

Legend:

Unmodified
Added
Removed
  • trunk/abdev/BasicCompiler32/MakePeHdr.cpp

    r165 r183  
    11#include <jenga/include/common/Environment.h>
     2
     3#include <jenga/include/smoothie/Smoothie.h>
     4
     5#include <LexicalScopingImpl.h>
     6#include <ClassImpl.h>
     7#include <Compiler.h>
    28
    39#include "../BasicCompiler_Common/common.h"
     
    134140    //////////////////
    135141    // データテーブル
    136     dataTable.Init();
     142    Compiler::GetNativeCode().GetDataTable().Init();
    137143    if(bDebugCompile){
    138         dataTable.Add( (long)0x00000002 );
     144        Compiler::GetNativeCode().GetDataTable().Add( (long)0x00000002 );
    139145    }
    140146
     
    160166
    161167    //関数ポインタ情報を初期化
    162     Smoothie::meta.procPointers.clear();
     168    Smoothie::GetMeta().GetProcPointers().clear();
    163169
    164170    // 名前空間情報を取得
    165171    NamespaceScopesCollection::CollectNamespaces(
    166172        Smoothie::Lexical::source.GetBuffer(),
    167         Smoothie::meta.namespaceScopesCollection
     173        Smoothie::GetMeta().namespaceScopesCollection
    168174    );
    169175
     
    171177    //   GetSubInfo関数の中で参照されるオブジェクト名を事前に取得する。
    172178    //     ※オブジェクトの内容までは取得しない
    173     pobj_DBClass=new Classes();
    174     pobj_DBClass->InitNames();
     179    Smoothie::GetMeta().GetClasses().CollectClassesForNameOnly( Smoothie::Lexical::source );
    175180
    176181    //TypeDef情報を初期化
    177     Smoothie::meta.typeDefs.Init();
     182    Smoothie::GetMeta().typeDefs.Init();
    178183
    179184    //定数情報を取得
     
    181186
    182187    //サブルーチン(ユーザー定義、DLL関数)の識別子、アドレスを取得
    183     pobj_CompilingClass=0;
     188    Smoothie::Temp::pCompilingClass=0;
    184189    GetSubInfo();
    185190
    186191    //クラス情報を取得(※注 - GetSubInfoの後に呼び出す)
    187     pobj_DBClass->GetAllClassInfo();
     192    Smoothie::GetMeta().GetClasses().GetAllClassInfo();
    188193
    189194    //コードと行番号の関係
     
    336341
    337342    //レキシカルスコープ情報を初期化
    338     obj_LexScopes.Init(obp);
     343    GetLexicalScopes().Init(obp);
    339344
    340345
     
    360365    if(!bDll){
    361366        // 名前空間が初期化されているかをチェック
    362         if( Smoothie::Lexical::liveingNamespaceScopes.size() ){
     367        if( Smoothie::Temp::liveingNamespaceScopes.size() ){
    363368            SetError();
    364369        }
     
    405410
    406411        //クラスに属する静的メンバを定義
    407         CMember::InitStaticMember();
     412        Smoothie::GetMeta().GetClasses().InitStaticMember();
    408413
    409414        //グローバル実行領域をコンパイル開始
     
    460465
    461466        // 名前空間が正しく閉じられているかをチェック
    462         if( Smoothie::Lexical::liveingNamespaceScopes.size() ){
     467        if( Smoothie::Temp::liveingNamespaceScopes.size() ){
    463468            SetError(63,NULL,-1);
    464469        }
     
    792797    //(デバッグ情報で利用される)
    793798    extern int AllInitGlobalVarSize;
    794     foreach( Variable *pVar, globalVars ){
     799    BOOST_FOREACH( Variable *pVar, globalVars ){
    795800        if(pVar->offset&0x80000000){
    796801            pVar->offset=(pVar->offset&0x7FFFFFFF)+AllInitGlobalVarSize;
     
    874879
    875880    //データセクションのファイル上のサイズ
    876     if(dataTable.GetSize()%FILE_ALIGNMENT) FileSize_DataSection=dataTable.GetSize()+(FILE_ALIGNMENT-dataTable.GetSize()%FILE_ALIGNMENT);
    877     else FileSize_DataSection=dataTable.GetSize();
     881    if(Compiler::GetNativeCode().GetDataTable().GetSize()%FILE_ALIGNMENT) FileSize_DataSection=Compiler::GetNativeCode().GetDataTable().GetSize()+(FILE_ALIGNMENT-Compiler::GetNativeCode().GetDataTable().GetSize()%FILE_ALIGNMENT);
     882    else FileSize_DataSection=Compiler::GetNativeCode().GetDataTable().GetSize();
    878883    if(FileSize_DataSection) bUse_DataSection=1;
    879884    else bUse_DataSection=0;
     
    10661071    ////////////////////////////////////////
    10671072    //仮想関数データテーブルスケジュール
    1068     pobj_DBClass->ActionVtblSchedule(ImageBase,MemPos_CodeSection);
     1073    Smoothie::GetMeta().GetClasses().ActionVtblSchedule(ImageBase,MemPos_CodeSection);
    10691074
    10701075
     
    16011606    if(bUse_DataSection){
    16021607        //データ テーブル
    1603         WriteFile(hFile,dataTable.GetPtr(),dataTable.GetSize(),(DWORD *)&i2,NULL);
     1608        WriteFile(hFile,Compiler::GetNativeCode().GetDataTable().GetPtr(),Compiler::GetNativeCode().GetDataTable().GetSize(),(DWORD *)&i2,NULL);
    16041609        i+=i2;
    16051610    }
     
    17131718
    17141719    //クラスに関するメモリを解放
    1715     delete pobj_DBClass;
    1716     pobj_DBClass=0;
     1720    Smoothie::GetMeta().GetClasses().Clear();
    17171721}
Note: See TracChangeset for help on using the changeset viewer.