source: dev/trunk/abdev/BasicCompiler_Common/include/ClassImpl.h@ 191

Last change on this file since 191 was 191, checked in by dai_9181, 17 years ago
File size: 2.9 KB
Line 
1#pragma once
2
3#include <jenga/include/smoothie/Class.h>
4
5class ClassImpl: public CClass
6{
7public:
8 ClassImpl( const NamespaceScopes &namespaceScopes, const NamespaceScopesCollection &importedNamespaces, const string &name )
9 : CClass( namespaceScopes, importedNamespaces, name )
10 {
11 }
12 ClassImpl()
13 : CClass()
14 {
15 }
16
17 //継承させる
18 virtual bool Inherits( const char *inheritNames, int nowLine );
19 virtual bool InheritsClass( const CClass &inheritsClass, int nowLine );
20 virtual bool InheritsInterface( const CClass &inheritsClass, int nowLine );
21
22 //メンバ、メソッドの追加
23 CMember *CreateMember( Prototype::Accessibility accessibility, bool isConst, bool isRef, char *buffer, int nowLine );
24 virtual void AddMember( Prototype::Accessibility accessibility, bool idConst, bool isRef, char *buffer, int nowLine );
25 virtual void AddStaticMember( Prototype::Accessibility accessibility, bool isConst, bool isRef, char *buffer, int nowLine );
26
27 virtual void AddMethod(CClass *pobj_c, Prototype::Accessibility accessibility, BOOL bStatic, bool isConst, bool isAbstract,
28 bool isVirtual, bool isOverride, char *buffer, int nowLine);
29
30 virtual LONG_PTR GetVtblGlobalOffset(void) const;
31 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 }
41};
42BOOST_IS_ABSTRACT( CClass );
43
44class ClassesImpl : public Classes
45{
46public:
47 ClassesImpl()
48 : Classes()
49 {
50 }
51
52 virtual CClass *Create( const NamespaceScopes &namespaceScopes, const NamespaceScopesCollection &importedNamespaces, const char *name);
53 virtual void CollectClassesForNameOnly( const BasicSource &source );
54
55 virtual void InitStaticMember();
56
57private:
58 bool MemberVar_LoopRefCheck(const CClass &objClass);
59public:
60 virtual void GetClass_recur(const char *lpszInheritsClass);
61 virtual void GetAllClassInfo();
62 virtual void Compile_System_InitializeUserTypes();
63
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 }
94};
95BOOST_IS_ABSTRACT( Classes );
Note: See TracBrowser for help on using the repository browser.