Ignore:
Timestamp:
Aug 14, 2007, 11:57:32 PM (17 years ago)
Author:
dai_9181
Message:

vtbl構築をコード生成後(最終リンクの前)に行うようにした

File:
1 edited

Legend:

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

    r280 r282  
    2121        AddressOf,      // ユーザ定義関数位置スケジュール
    2222        DllProc,        // DLL関数位置スケジュール
     23        Vtbl,           // vtblスケジュール
    2324    };
    2425
     
    3132        const ::UserProc *pUserProc;
    3233        const ::DllProc *pDllProc;
     34        const ::CClass *pClass;
    3335    };
    3436
     
    5254            ar & boost::serialization::make_nvp("pDllProc", const_cast<::DllProc *&>(pDllProc));
    5355            break;
     56        case Vtbl:
     57            ar & boost::serialization::make_nvp("pClass", const_cast<::CClass *&>(pClass));
     58            break;
    5459        default:
    5560            ar & BOOST_SERIALIZATION_NVP( lpValue );
     
    8085    {
    8186    }
     87    Schedule( const ::CClass *pClass, long offset )
     88        : type( Schedule::Vtbl )
     89        , offset( offset )
     90        , pClass( pClass )
     91    {
     92    }
    8293    ~Schedule()
    8394    {
     
    111122        }
    112123        return *pUserProc;
     124    }
     125    const ::CClass &GetClass() const
     126    {
     127        if( type != Schedule::Vtbl )
     128        {
     129            SetError();
     130        }
     131        return *pClass;
    113132    }
    114133
     
    360379    void PutUserProcSchedule( const UserProc *pUserProc, bool isCall );
    361380    void PutDllProcSchedule( const DllProc *pDllProc );
     381    void PutVtblSchedule( const CClass *pClass );
    362382    void Put( short s )
    363383    {
Note: See TracChangeset for help on using the changeset viewer.