source: dev/trunk/ab5.0/abdev/ab_common/include/Lexical/RelationalObjectModuleItem.h

Last change on this file was 829, checked in by イグトランス (egtra), 12 years ago

svn:eol-styleとsvn:mime-type(文字コード指定含む)の設定

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/plain; charset=Shift_JIS
File size: 2.4 KB
Line 
1#pragma once
2
3class ObjectModule;
4
5namespace ActiveBasic{ namespace Common{ namespace Lexical{
6
7
8class RelationalObjectModuleItem
9 : public Symbol
10{
11 int relationalObjectModuleIndex;
12
13 // XMLシリアライズ用
14private:
15 friend class boost::serialization::access;
16 template<class Archive> void serialize(Archive& ar, const unsigned int version)
17 {
18 ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP( Symbol );
19 ar & BOOST_SERIALIZATION_NVP( relationalObjectModuleIndex );
20 }
21
22protected:
23 RelationalObjectModuleItem(RelationalObjectModuleItem&& relationalObjectModuleItem)
24 : Symbol(std::move(relationalObjectModuleItem))
25 , relationalObjectModuleIndex(std::move(relationalObjectModuleItem.relationalObjectModuleIndex))
26 , isNeedResolve(std::move(false))
27 {
28 }
29
30 RelationalObjectModuleItem( const RelationalObjectModuleItem &relationalObjectModuleItem )
31 : Symbol( relationalObjectModuleItem )
32 , relationalObjectModuleIndex( relationalObjectModuleItem.relationalObjectModuleIndex )
33 , isNeedResolve( false )
34 {
35 }
36
37 RelationalObjectModuleItem( const Symbol &symbol )
38 : Symbol( symbol )
39 , relationalObjectModuleIndex( 0 )
40 , isNeedResolve( false )
41 {
42 }
43
44 RelationalObjectModuleItem()
45 : relationalObjectModuleIndex( -1 )
46 , isNeedResolve( false )
47 {
48 }
49
50 RelationalObjectModuleItem& operator =(RelationalObjectModuleItem&& y)
51 {
52 Symbol::operator =(std::move(y));
53 relationalObjectModuleIndex = std::move(y.relationalObjectModuleIndex);
54 isNeedResolve = std::move(y.isNeedResolve);
55 return *this;
56 }
57
58 RelationalObjectModuleItem& operator =(RelationalObjectModuleItem const& y)
59 {
60 Symbol::operator =(y);
61 relationalObjectModuleIndex = y.relationalObjectModuleIndex;
62 isNeedResolve = y.isNeedResolve;
63 return *this;
64 }
65
66public:
67 int GetRelationalObjectModuleIndex() const
68 {
69 return relationalObjectModuleIndex;
70 }
71 void SetRelationalObjectModuleIndex( int relationalObjectModuleIndex )
72 {
73 this->relationalObjectModuleIndex = relationalObjectModuleIndex;
74 }
75
76 virtual void ResetRelationalObjectModuleIndex( const std::vector<int> &relationTable )
77 {
78 this->relationalObjectModuleIndex = relationTable[this->relationalObjectModuleIndex];
79 }
80
81 bool IsExternal() const
82 {
83 return ( relationalObjectModuleIndex != 0 );
84 }
85
86 bool isNeedResolve;
87 bool IsNeedResolve() const
88 {
89 return isNeedResolve;
90 }
91 void NeedResolve()
92 {
93 isNeedResolve = true;
94 }
95
96 virtual bool Resolve( const ObjectModule &resolver, ResolveErrors &resolveErrors ) = 0;
97};
98
99
100}}}
Note: See TracBrowser for help on using the repository browser.