#pragma once class NativeSection { public: // グローバル領域のネイティブコード NativeCode globalNativeCode; // データテーブル DataTable dataTable; private: // ソースコード int currentSourceIndex; BasicSources sources; // XMLシリアライズ用 private: virtual const char *RootTagName() const { return "nativeSection"; } friend class boost::serialization::access; template void serialize(Archive& ar, const unsigned int version) { trace_for_serialize( "serializing - objectModule" ); ar & BOOST_SERIALIZATION_NVP( globalNativeCode ); ar & BOOST_SERIALIZATION_NVP( dataTable ); ar & BOOST_SERIALIZATION_NVP( currentSourceIndex ); ar & BOOST_SERIALIZATION_NVP( sources ); } public: int GetCurrentSourceIndex() const { return currentSourceIndex; } const BasicSource &GetCurrentSource() const { return sources[currentSourceIndex]; } BasicSource &GetCurrentSource() { return sources[currentSourceIndex]; } void SetCurrentSourceIndex( int currentSourceIndex ) { this->currentSourceIndex = currentSourceIndex; } const BasicSource &GetSource( int sourceIndex ) const { return sources[sourceIndex]; } BasicSources &GetSources() { return sources; } }; class ObjectModule { public: // メタ情報 Meta meta; NativeSection nativeSection; // XMLシリアライズ用 private: virtual const char *RootTagName() const { return "objectModule"; } friend class boost::serialization::access; template void serialize(Archive& ar, const unsigned int version) { trace_for_serialize( "serializing - objectModule" ); ar & BOOST_SERIALIZATION_NVP( meta ); ar & BOOST_SERIALIZATION_NVP( nativeSection ); } public: void StaticLink( ObjectModule &objectModule ); bool Read( const std::string &filePath ); bool Write( const std::string &filePath ) const; bool Load( const Jenga::Common::Binary &binary ); bool Save( Jenga::Common::Binary &binary ) const; }; typedef std::vector ObjectModules;