[637] | 1 | #pragma once
|
---|
| 2 |
|
---|
[639] | 3 | class ObjectModule;
|
---|
| 4 |
|
---|
[637] | 5 | namespace ActiveBasic{ namespace Common{ namespace Lexical{
|
---|
| 6 |
|
---|
| 7 |
|
---|
| 8 | class RelationalObjectModuleItem
|
---|
| 9 | : public Symbol
|
---|
| 10 | {
|
---|
| 11 | int relationalObjectModuleIndex;
|
---|
| 12 |
|
---|
| 13 | // XMLシリアライズ用
|
---|
| 14 | private:
|
---|
| 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 |
|
---|
[816] | 22 | protected:
|
---|
| 23 | RelationalObjectModuleItem(RelationalObjectModuleItem&& relationalObjectModuleItem)
|
---|
| 24 | : Symbol(std::move(relationalObjectModuleItem))
|
---|
| 25 | , relationalObjectModuleIndex(std::move(relationalObjectModuleItem.relationalObjectModuleIndex))
|
---|
| 26 | , isNeedResolve(std::move(false))
|
---|
| 27 | {
|
---|
| 28 | }
|
---|
| 29 |
|
---|
[637] | 30 | RelationalObjectModuleItem( const RelationalObjectModuleItem &relationalObjectModuleItem )
|
---|
| 31 | : Symbol( relationalObjectModuleItem )
|
---|
| 32 | , relationalObjectModuleIndex( relationalObjectModuleItem.relationalObjectModuleIndex )
|
---|
| 33 | , isNeedResolve( false )
|
---|
| 34 | {
|
---|
| 35 | }
|
---|
[816] | 36 |
|
---|
[637] | 37 | RelationalObjectModuleItem( const Symbol &symbol )
|
---|
| 38 | : Symbol( symbol )
|
---|
| 39 | , relationalObjectModuleIndex( 0 )
|
---|
| 40 | , isNeedResolve( false )
|
---|
| 41 | {
|
---|
| 42 | }
|
---|
[816] | 43 |
|
---|
[637] | 44 | RelationalObjectModuleItem()
|
---|
| 45 | : relationalObjectModuleIndex( -1 )
|
---|
| 46 | , isNeedResolve( false )
|
---|
| 47 | {
|
---|
| 48 | }
|
---|
| 49 |
|
---|
[816] | 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 |
|
---|
| 66 | public:
|
---|
[637] | 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 |
|
---|
[640] | 96 | virtual bool Resolve( const ObjectModule &resolver, ResolveErrors &resolveErrors ) = 0;
|
---|
[637] | 97 | };
|
---|
| 98 |
|
---|
| 99 |
|
---|
| 100 | }}}
|
---|