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

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

File:
1 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++){
Note: See TracChangeset for help on using the changeset viewer.