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/BasicCompiler_Common/DebugMiddleFile.cpp

    r603 r636  
    9999    }
    100100
     101    // オブジェクトモジュールリストに類似したソースコードリスト
     102    {
     103        // オブジェクトモジュールリストに類似したソースコードリストを作成
     104        BasicSources sources;
     105        BOOST_FOREACH( const ObjectModule *pObjectModule, compiler.staticLibraries )
     106        {
     107            sources.push_back( pObjectModule->GetSource() );
     108        }
     109
     110        // テキストデータにシリアライズ
     111        std::string textString;
     112        sources.WriteBinaryString( textString );
     113
     114        // サイズ
     115        *(long *)(buffer+i2) = (long)textString.size();
     116        i2+=sizeof(long);
     117
     118        //バッファが足りない場合は再確保
     119        if(BufferSize<i2+(int)textString.size()+32768){
     120            while( BufferSize<i2+(int)textString.size()+32768 )
     121            {
     122                BufferSize+=32768;
     123            }
     124
     125            buffer=(char *)HeapReAlloc(hHeap,0,buffer,BufferSize);
     126        }
     127
     128        // バッファ
     129        memcpy( buffer+i2, textString.c_str(), textString.size() );
     130        i2 += (int)textString.size();
     131    }
     132
    101133
    102134    ////////////////////////
     
    115147        i2+=sizeof(long);
    116148
    117         *(long *)(buffer+i2) = sourceLine.GetSourceIndex();
     149        *(long *)(buffer+i2) = sourceLine.GetRelationalObjectModuleIndex();
    118150        i2+=sizeof(long);
    119151
     
    192224        this->objectModule.ReadString( textString );
    193225
    194         compiler.SelectObjectModule( this->objectModule );
    195     }
    196 
     226        compiler.SelectObjectModule( &this->objectModule );
     227    }
     228
     229    // オブジェクトモジュールリストに類似したソースコードリスト
     230    {
     231        // サイズ
     232        int size = *(long *)(buffer+i2);
     233        i2 += sizeof(long);
     234
     235        // バッファ
     236        const std::string textString( (const char *)(buffer + i2), size );
     237        i2 += size;
     238
     239        // テキストデータからシリアライズ
     240        this->_sourcesLinkRelationalObjectModule.ReadBinaryString( textString );
     241    }
    197242
    198243    //コードと行番号の関係
     
    246291    //ソースコード
    247292    extern char *basbuf;
    248     basbuf = const_cast<char *>(compiler.GetObjectModule().GetSource(0).GetBuffer());
     293    basbuf = const_cast<char *>(compiler.GetObjectModule().GetSource().GetBuffer());
    249294
    250295
     
    252297    // ブレークポイントを適用
    253298    /////////////////////////////
     299
     300    // オブジェクトモジュールリストに類似したソースコードリスト
     301    extern BasicSources sourcesLinkRelationalObjectModule;
     302    sourcesLinkRelationalObjectModule = this->_sourcesLinkRelationalObjectModule;
    254303
    255304    //コードと行番号の関係
     
    364413
    365414    // オブジェクトモジュール
    366     compiler.SelectObjectModule( this->objectModule );
     415    compiler.SelectObjectModule( &this->objectModule );
    367416
    368417    //コードと行番号の関係
Note: See TracChangeset for help on using the changeset viewer.