Changeset 636 in dev for trunk/ab5.0/abdev/compiler_x86


Ignore:
Timestamp:
Jun 10, 2008, 11:40:17 PM (16 years ago)
Author:
dai_9181
Message:

libファイルを跨ったテンプレート展開に対応。

Location:
trunk/ab5.0/abdev/compiler_x86
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/ab5.0/abdev/compiler_x86/Compile_ProcOp.cpp

    r632 r636  
    328328    }
    329329
     330    char *backupBasbuf = NULL;
     331    int backupCurrentRelationalObjectModuleIndexForSource = compiler.GetCurrentRelationalObjectModuleIndexForSource();
     332
    330333    if( !pUserProc->IsAutoGeneration() )
    331334    {
     335        // テンプレート展開がされている場合、対象のソースコードが現在のオブジェクトモジュールではない場合がある
     336        if( compiler.staticLibraries[compiler.GetCurrentRelationalObjectModuleIndexForSource()]->GetName() != pUserProc->GetSourceCodePosition().GetObjectModuleName() )
     337        {
     338            for( int i=0; i<static_cast<int>(compiler.staticLibraries.size()); i++ )
     339            {
     340                const ObjectModule *pObjectModule = compiler.staticLibraries[i];
     341
     342                if( pObjectModule->GetName() == pUserProc->GetSourceCodePosition().GetObjectModuleName() )
     343                {
     344                    compiler.SetCurrentRelationalObjectModuleIndexForSource( i );
     345                    basbuf = const_cast<char *>(compiler.GetCurrentSource().GetBuffer());
     346                }
     347            }
     348        }
     349
    332350        cp=pUserProc->GetSourceCodePosition().GetPos();
    333351        for(;;cp++){
  • trunk/ab5.0/abdev/compiler_x86/MakePeHdr.cpp

    r632 r636  
    120120
    121121    // 静的リンク
     122    compiler.PreStaticLink( compiler.staticLibraries );
    122123    compiler.StaticLink( compiler.staticLibraries );
    123124
     
    144145    {
    145146        ActiveBasic::Compiler::LexicalAnalyzer::CollectEnums(
    146             compiler.GetObjectModule().GetCurrentSource().GetBuffer(),
     147            compiler.GetCurrentSource().GetBuffer(),
    147148            compiler.enumInfoCollection
    148149        );
     
    157158    // 名前空間情報を取得
    158159    ActiveBasic::Compiler::LexicalAnalyzer::CollectNamespaces(
    159         compiler.GetObjectModule().GetCurrentSource().GetBuffer(),
     160        compiler.GetCurrentSource().GetBuffer(),
    160161        compiler.GetObjectModule().meta.GetNamespaces()
    161162    );
     
    164165    {
    165166        ActiveBasic::Compiler::LexicalAnalyzer::CollectDelegates(
    166             compiler.GetObjectModule().GetCurrentSource().GetBuffer(),
     167            compiler.GetCurrentSource().GetBuffer(),
    167168            compiler.GetObjectModule().meta.GetDelegates()
    168169        );
     
    180181    //     ※オブジェクトの内容までは取得しない
    181182    ActiveBasic::Compiler::LexicalAnalyzer::CollectClassesForNameOnly(
    182         compiler.GetObjectModule().GetCurrentSource().GetBuffer(),
     183        compiler.GetCurrentSource().GetBuffer(),
    183184        compiler.GetObjectModule().meta.GetClasses()
    184185    );
     
    186187    //TypeDef情報を収集
    187188    ActiveBasic::Compiler::LexicalAnalyzer::CollectTypeDefs(
    188         compiler.GetObjectModule().GetCurrentSource().GetBuffer(),
     189        compiler.GetCurrentSource().GetBuffer(),
    189190        compiler.GetObjectModule().meta.GetTypeDefs()
    190191    );
     
    201202    //定数情報を取得
    202203    ActiveBasic::Compiler::LexicalAnalyzer::CollectConsts(
    203         compiler.GetObjectModule().GetCurrentSource().GetBuffer(),
     204        compiler.GetCurrentSource().GetBuffer(),
    204205        compiler.GetObjectModule().meta.GetGlobalConsts(),
    205206        compiler.GetObjectModule().meta.GetGlobalConstMacros()
     
    209210    compiler.SetCompilingClass( NULL );
    210211    ActiveBasic::Compiler::LexicalAnalyzer::CollectProcedures(
    211         compiler.GetObjectModule().GetCurrentSource().GetBuffer(),
     212        compiler.GetCurrentSource().GetBuffer(),
    212213        compiler.GetObjectModule().meta.GetUserProcs(),
    213214        compiler.GetObjectModule().meta.GetDllProcs()
     
    216217    // クラス情報を取得(※注 - CollectProceduresの後に呼び出す)
    217218    ActiveBasic::Compiler::LexicalAnalyzer::CollectClasses(
    218         compiler.GetObjectModule().GetCurrentSource().GetBuffer(),
     219        compiler.GetCurrentSource().GetBuffer(),
    219220        compiler.GetObjectModule().meta.GetClasses()
    220221    );
Note: See TracChangeset for help on using the changeset viewer.