Ignore:
Timestamp:
Aug 1, 2007, 11:19:01 PM (17 years ago)
Author:
dai_9181
Message:

MetaImplを廃止し、Metaにした。
ObjectModuleクラス、Linkerクラスを用意。

Location:
trunk/abdev/BasicCompiler_Common/include
Files:
1 added
5 edited
1 moved

Legend:

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

    r215 r256  
    2626    bool WriteXml( const string &xmlFilePath, bool isShowExceptionMessage = true ) const;
    2727
    28     bool ReadBinaly( const string &filePath, bool isShowExceptionMessage = true );
    29     bool WriteBinaly( const string &filePath, bool isShowExceptionMessage = true ) const;
     28    bool ReadBinary( const string &filePath, bool isShowExceptionMessage = true );
     29    bool WriteBinary( const string &filePath, bool isShowExceptionMessage = true ) const;
    3030
    3131    bool ReadText( const string &filePath, bool isShowExceptionMessage = true );
  • trunk/abdev/BasicCompiler_Common/include/Compiler.h

    r225 r256  
    33#include <CodeGenerator.h>
    44#include <NamespaceSupporter.h>
    5 #include <MetaImpl.h>
     5#include <Meta.h>
    66#include <DataTable.h>
    77#include <CodeGenerator.h>
     8#include <Linker.h>
    89
    910class Compiler
     
    1112    // 名前空間サポート
    1213    NamespaceSupporter namespaceSupporter;
    13 
    14     // メタ情報
    15     MetaImpl metaImpl;
    16 
    17     // データテーブル
    18     DataTable dataTable;
    1914
    2015public:
     
    2520    }
    2621
    27     MetaImpl &GetMeta()
    28     {
    29         return metaImpl;
    30     }
    31 
    32     DataTable &GetDataTable()
    33     {
    34         return dataTable;
    35     }
    36 
    37     // グローバル領域のネイティブコード
    38     NativeCode globalNativeCode;
     22    // オブジェクトモジュール
     23    ObjectModule objectModule;
    3924
    4025    // コード生成機構
    4126    CodeGenerator codeGenerator;
     27
     28    // リンカ
     29    Linker linker;
    4230
    4331    static bool StringToType( const std::string &typeName, Type &type );
  • trunk/abdev/BasicCompiler_Common/include/DataTable.h

    r184 r256  
    11#pragma once
     2
     3#include <BoostSerializationSupport.h>
    24
    35//DataTable.cpp
    46class DataTable{
    5     void *pdata;
     7    char *buffer;
    68    int size;
    79
     10    // XMLシリアライズ用
     11private:
     12    friend class boost::serialization::access;
     13    BOOST_SERIALIZATION_SPLIT_MEMBER();
     14    template<class Archive> void load(Archive& ar, const unsigned int version)
     15    {
     16        std::string _buffer;
     17        ar & BOOST_SERIALIZATION_NVP( _buffer );
     18        ar & BOOST_SERIALIZATION_NVP( size );
     19
     20        // 読み込み後の処理
     21        Realloc( size );
     22        for( int i=0; i<size; i++ )
     23        {
     24            if( _buffer[i*3+2] != ',' )
     25            {
     26                //エラー
     27                DebugBreak();
     28            }
     29            ULONG_PTR l;
     30            sscanf( _buffer.c_str() + i*3, "%02x,", &l );
     31            buffer[i] = (char)l;
     32        }
     33    }
     34    template<class Archive> void save(Archive& ar, const unsigned int version) const
     35    {
     36        // 保存準備
     37        char *tempCode = (char *)calloc( (size+1) * 3, 1 );
     38        for( int i=0; i<size; i++ )
     39        {
     40            char temp[32];
     41            sprintf( temp, "%02x,", (unsigned char)buffer[i] );
     42            tempCode[i*3] = temp[0];
     43            tempCode[i*3+1] = temp[1];
     44            tempCode[i*3+2] = temp[2];
     45        }
     46
     47        std::string _buffer = tempCode;
     48        free( tempCode );
     49
     50        ar & BOOST_SERIALIZATION_NVP( _buffer );
     51        ar & BOOST_SERIALIZATION_NVP( size );
     52    }
     53
    854public:
    9     DataTable();
    10     ~DataTable();
    11     void Init();
     55    DataTable()
     56        : buffer( (char *)malloc(100) )
     57        , size( 0 )
     58    {
     59        lstrcpy( buffer, "initialized!!!" );
     60    }
     61    DataTable( const DataTable &dataTable )
     62        : buffer( (char *)malloc(100) )
     63        , size( 0 )
     64    {
     65        lstrcpy( buffer, "initialized!!!" );
     66        AddBinary( dataTable.GetPtr(), dataTable.GetSize() );
     67    }
     68    ~DataTable()
     69    {
     70        free( buffer );
     71    }
     72    void Clear()
     73    {
     74        size = 0;
     75    }
    1276
    13     int AddBinary( const void *pdata, int size );
     77    void operator =( const DataTable &dataTable )
     78    {
     79        Clear();
     80        AddBinary( dataTable.GetPtr(), dataTable.GetSize() );
     81    }
     82
     83    void Realloc( int size );
     84    int AddBinary( const void *buffer, int size );
    1485    int Add( _int64 i64data );
    1586    int Add( int i32data );
  • trunk/abdev/BasicCompiler_Common/include/Meta.h

    r255 r256  
    1111#include <Const.h>
    1212
    13 class MetaImpl : public Jenga::Common::BoostSerializationSupport<MetaImpl>
     13class Meta
    1414{
    1515    // 名前空間
     
    4545    // XMLシリアライズ用
    4646private:
    47     virtual const char *RootTagName() const
    48     {
    49         return "metaImpl";
    50     }
    5147    friend class boost::serialization::access;
    5248    template<class Archive> void serialize(Archive& ar, const unsigned int version)
    5349    {
    54         trace_for_serialize( "serializing - MetaImpl" );
     50        trace_for_serialize( "serializing - Meta" );
    5551
    5652        ar & BOOST_SERIALIZATION_NVP( namespaceScopesCollection );
     
    6965
    7066public:
    71     MetaImpl()
     67    Meta()
    7268        : classesImpl()
    7369        , pNowClassesForDebugger( &classesImpl )
  • trunk/abdev/BasicCompiler_Common/include/NativeCode.h

    r253 r256  
    3939    template<class Archive> void serialize(Archive& ar, const unsigned int version)
    4040    {
     41        trace_for_serialize( "serializing - Schedule" );
     42
    4143        ar & BOOST_SERIALIZATION_NVP( type );
    4244        ar & BOOST_SERIALIZATION_NVP( offset );
     
    9496    template<class Archive> void load(Archive& ar, const unsigned int version)
    9597    {
     98        trace_for_serialize( "serializing(load) - NativeCode" );
     99
    96100        std::string code;
    97101        ar & BOOST_SERIALIZATION_NVP( code );
     
    103107        for( int i=0; i<size; i++ )
    104108        {
    105             char c;
    106             sscanf( code.c_str() + i*3, "%02x,", &c );
    107             codeBuffer[i] = c;
     109            ULONG_PTR l;
     110            sscanf( code.c_str() + i*3, "%02x,", &l );
     111            codeBuffer[i] = (char)l;
    108112        }
    109113    }
    110114    template<class Archive> void save(Archive& ar, const unsigned int version) const
    111115    {
     116        trace_for_serialize( "serializing(save) - NativeCode" );
     117
    112118        // 保存準備
    113         char *tempCode = (char *)malloc( (size+1) * 3 );
     119        char *tempCode = (char *)calloc( (size+1) * 3, 1 );
    114120        for( int i=0; i<size; i++ )
    115121        {
    116122            char temp[32];
    117             sprintf( temp, "%02x,", codeBuffer[i] );
     123            sprintf( temp, "%02x,", (unsigned char)codeBuffer[i] );
    118124            tempCode[i*3] = temp[0];
    119125            tempCode[i*3+1] = temp[1];
     
    130136
    131137
    132     void Realloc( int additionSize = 0 )
    133     {
    134         if( allocateSize < size + 8192 + additionSize )
    135         {
    136             while( allocateSize < size + 8192 + additionSize )
     138    void Realloc( int newSize )
     139    {
     140        if( allocateSize < newSize + 8192 )
     141        {
     142            while( allocateSize < newSize + 8192 )
    137143            {
    138144                allocateSize += 8192;
     
    149155    {
    150156    }
     157    NativeCode( const NativeCode &nativeCode )
     158        : allocateSize( 8192 )
     159        , codeBuffer( (char *)malloc( allocateSize ) )
     160        , size( 0 )
     161    {
     162        Put( nativeCode );
     163    }
    151164    NativeCode( const char *codeBuffer, int size )
    152165        : allocateSize( 8192 )
     
    165178    }
    166179
     180    void operator =( const NativeCode &nativeCode )
     181    {
     182        Clear();
     183        Put( nativeCode );
     184    }
     185
    167186    int GetSize() const
    168187    {
     
    203222    void Put( const char *codeBuffer, int size )
    204223    {
    205         Realloc( size );
     224        Realloc( this->size + size );
    206225
    207226        memcpy( this->codeBuffer + this->size, codeBuffer, size );
     
    268287    void Put( char c )
    269288    {
     289        Realloc( size + 1 );
    270290        codeBuffer[size++] = c;
    271         Realloc();
    272291
    273292
  • trunk/abdev/BasicCompiler_Common/include/SmoothieImpl.h

    r206 r256  
    33#include <jenga/include/smoothie/Smoothie.h>
    44
    5 #include <MetaImpl.h>
     5#include <Meta.h>
    66
    77class SmoothieImpl : public Smoothie
Note: See TracChangeset for help on using the changeset viewer.