Ignore:
Timestamp:
Jun 26, 2007, 12:06:12 AM (17 years ago)
Author:
dai_9181
Message:
 
Location:
trunk/abdev/BasicCompiler_Common/include
Files:
2 added
1 edited

Legend:

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

    r184 r191  
    88    ClassImpl( const NamespaceScopes &namespaceScopes, const NamespaceScopesCollection &importedNamespaces, const string &name )
    99        : CClass( namespaceScopes, importedNamespaces, name )
     10    {
     11    }
     12    ClassImpl()
     13        : CClass()
    1014    {
    1115    }
     
    2630    virtual LONG_PTR GetVtblGlobalOffset(void) const;
    2731    virtual void ActionVtblSchedule(LONG_PTR ImageBase, LONG_PTR MemPos_CodeSection);
     32
     33
     34    // XMLシリアライズ用
     35private:
     36    friend class boost::serialization::access;
     37    template<class Archive> void serialize(Archive& ar, const unsigned int version)
     38    {
     39        ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP( CClass );
     40    }
    2841};
     42BOOST_IS_ABSTRACT( CClass );
    2943
    3044class ClassesImpl : public Classes
    3145{
    3246public:
     47    ClassesImpl()
     48        : Classes()
     49    {
     50    }
     51
    3352    virtual CClass *Create( const NamespaceScopes &namespaceScopes, const NamespaceScopesCollection &importedNamespaces, const char *name);
    3453    virtual void CollectClassesForNameOnly( const BasicSource &source );
     
    4362    virtual void Compile_System_InitializeUserTypes();
    4463
     64
     65    // XMLシリアライズ用
     66private:
     67    friend class boost::serialization::access;
     68    BOOST_SERIALIZATION_SPLIT_MEMBER();
     69    template<class Archive> void load(Archive& ar, const unsigned int version)
     70    {
     71        std::vector<ClassImpl *> vectorClasses;
     72        ar & BOOST_SERIALIZATION_NVP( vectorClasses );
     73
     74        // 読み込み後の処理
     75        Clear();
     76        BOOST_FOREACH( CClass *pClass, vectorClasses )
     77        {
     78            Insert( pClass );
     79        }
     80    }
     81    template<class Archive> void save(Archive& ar, const unsigned int version) const
     82    {
     83        // 保存準備
     84        std::vector<ClassImpl *> vectorClasses;
     85        vectorClasses.clear();
     86        Iterator_Reset();
     87        while( Iterator_HasNext() )
     88        {
     89            vectorClasses.push_back( dynamic_cast<ClassImpl *>(Iterator_GetNext()) );
     90        }
     91
     92        ar & BOOST_SERIALIZATION_NVP( vectorClasses );
     93    }
    4594};
     95BOOST_IS_ABSTRACT( Classes );
Note: See TracChangeset for help on using the changeset viewer.