Ignore:
Timestamp:
Aug 5, 2007, 3:47:49 AM (17 years ago)
Author:
dai_9181
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/abdev/BasicCompiler_Common/include/NativeCode.h

    r258 r263  
    112112typedef std::vector<Schedule> Schedules;
    113113
     114#define CODETYPE_SYSTEMPROC     0x0001
     115#define CODETYPE_DEBUGPROC      0x0002
     116class SourceLine
     117{
     118    int lineNum;
     119    long nativeCodePos;
     120    long sourceCodePos;
     121    DWORD codeType;
     122
     123    // XMLシリアライズ用
     124private:
     125    friend class boost::serialization::access;
     126    template<class Archive> void serialize(Archive& ar, const unsigned int version)
     127    {
     128        trace_for_serialize( "serializing - SourceLine" );
     129
     130        ar & BOOST_SERIALIZATION_NVP( lineNum );
     131        ar & BOOST_SERIALIZATION_NVP( nativeCodePos );
     132        ar & BOOST_SERIALIZATION_NVP( sourceCodePos );
     133        ar & BOOST_SERIALIZATION_NVP( codeType );
     134    }
     135
     136public:
     137    SourceLine( int lineNum, int nativeCodePos, int sourceCodePos, DWORD codeType )
     138        : lineNum( lineNum )
     139        , nativeCodePos( nativeCodePos )
     140        , sourceCodePos( sourceCodePos )
     141        , codeType( codeType )
     142    {
     143    }
     144    SourceLine()
     145    {
     146    }
     147
     148    int GetLineNum() const
     149    {
     150        return lineNum;
     151    }
     152    long GetNativeCodePos() const
     153    {
     154        return nativeCodePos;
     155    }
     156    long GetSourceCodePos() const
     157    {
     158        return sourceCodePos;
     159    }
     160    void SetSourceCodePos( int sourceCodePos )
     161    {
     162        this->sourceCodePos = sourceCodePos;
     163    }
     164    DWORD GetCodeType() const
     165    {
     166        return codeType;
     167    }
     168    bool IsInSystemProc() const
     169    {
     170        return ( (codeType&CODETYPE_SYSTEMPROC) != 0 );
     171    }
     172    bool IsInDebugProc() const
     173    {
     174        return ( (codeType&CODETYPE_DEBUGPROC) != 0 );
     175    }
     176};
     177typedef std::vector<SourceLine> SourceLines;
     178
    114179class NativeCode
    115180{
     
    118183    int size;
    119184
     185    // リンカで解決しなければならないスケジュール
    120186    Schedules schedules;
     187
     188    // ソースコード行番号とネイティブコード位置の対応情報
     189    SourceLines sourceLines;
    121190
    122191    // XMLシリアライズ用
     
    132201        ar & BOOST_SERIALIZATION_NVP( size );
    133202        ar & BOOST_SERIALIZATION_NVP( schedules );
     203        ar & BOOST_SERIALIZATION_NVP( sourceLines );
    134204
    135205        // 読み込み後の処理
     
    163233        ar & BOOST_SERIALIZATION_NVP( size );
    164234        ar & BOOST_SERIALIZATION_NVP( schedules );
     235        ar & BOOST_SERIALIZATION_NVP( sourceLines );
    165236    }
    166237
     
    192263        Put( nativeCode, isOpBuffer );
    193264    }
    194     NativeCode( const char *codeBuffer, int size )
     265    NativeCode( const char *codeBuffer, int size, bool isOpBuffer )
    195266        : allocateSize( 8192 )
    196267        , codeBuffer( (char *)malloc( allocateSize ) )
    197268        , size( 0 )
    198269    {
    199         Put( codeBuffer, size );
     270        Put( codeBuffer, size, isOpBuffer );
    200271    }
    201272    ~NativeCode()
     
    214285    }
    215286
     287    const char *GetCodeBuffer() const
     288    {
     289        return codeBuffer;
     290    }
    216291    int GetSize() const
    217292    {
     
    332407        ObpPlus();
    333408    }
     409
     410    void NextSourceLine();
    334411};
Note: See TracChangeset for help on using the changeset viewer.