#pragma once #include #include "TypeDef.h" #include "Namespace.h" #include "Procedure.h" #include "Class.h" // プロジェクト中に存在するメタ情報 class Meta : public Jenga::Common::BoostXmlSupport { Classes *pClasses; ProcPointers *pProcPointers; public: Meta( Classes *pNewClasses, ProcPointers *pNewProcPointers ) : pClasses( pNewClasses ) , pProcPointers( pNewProcPointers ) { } ~Meta() { delete pClasses; delete pProcPointers; } // 名前空間 NamespaceScopesCollection namespaceScopesCollection; // クラス Classes &GetClasses() { return *pClasses; } void SetClasses( Classes *pClasses ) { this->pClasses = pClasses; } // TypeDef TypeDefCollection typeDefs; // 関数ポインタ ProcPointers &GetProcPointers() { return *pProcPointers; } // blittable型 BlittableTypes blittableTypes; // XMLシリアライズ用 private: virtual const char *RootTagName() const { return "meta"; } friend class boost::serialization::access; template void serialize(Archive& ar, const unsigned int version) { //ar & BOOST_SERIALIZATION_NVP( pClasses ); } }; #define DEF_XML_SCHEMA( node ) BOOST_CLASS_IMPLEMENTATION( node, boost::serialization::object_serializable ); // ノード クラスを追加したらここでも定義する DEF_XML_SCHEMA( Meta ) #undef DEF_XML_SCHEMA