diff options
| author | Mike Buland <eichlan@xagasoft.com> | 2007-06-27 18:11:13 +0000 |
|---|---|---|
| committer | Mike Buland <eichlan@xagasoft.com> | 2007-06-27 18:11:13 +0000 |
| commit | c86c0cf088492e02431dffb1f860ff2f6faa492d (patch) | |
| tree | 1191879314028bb8f58daf45d48dacc6ba9ea583 /src/tafnode.h | |
| parent | 5ec9a131e12d021c42b46b601f5e79502485bebb (diff) | |
| download | libbu++-c86c0cf088492e02431dffb1f860ff2f6faa492d.tar.gz libbu++-c86c0cf088492e02431dffb1f860ff2f6faa492d.tar.bz2 libbu++-c86c0cf088492e02431dffb1f860ff2f6faa492d.tar.xz libbu++-c86c0cf088492e02431dffb1f860ff2f6faa492d.zip | |
The taf system is new and improved. The writer works, we added C++ style
comment blocks, and it retains the order of all nodes.
Diffstat (limited to 'src/tafnode.h')
| -rw-r--r-- | src/tafnode.h | 68 |
1 files changed, 58 insertions, 10 deletions
diff --git a/src/tafnode.h b/src/tafnode.h index 08f78e8..55a5123 100644 --- a/src/tafnode.h +++ b/src/tafnode.h | |||
| @@ -14,29 +14,77 @@ namespace Bu | |||
| 14 | class TafNode | 14 | class TafNode |
| 15 | { | 15 | { |
| 16 | public: | 16 | public: |
| 17 | typedef Bu::List<Bu::FString> PropList; | 17 | enum NodeType |
| 18 | typedef Bu::Hash<Bu::FString, PropList> PropHash; | 18 | { |
| 19 | typedef Bu::List<TafNode *> NodeList; | 19 | typeGroup, |
| 20 | typedef Bu::Hash<Bu::FString, NodeList> NodeHash; | 20 | typeProperty, |
| 21 | typeComment | ||
| 22 | }; | ||
| 21 | 23 | ||
| 22 | public: | 24 | public: |
| 23 | TafNode(); | 25 | TafNode( NodeType eType ); |
| 24 | virtual ~TafNode(); | 26 | virtual ~TafNode(); |
| 25 | 27 | ||
| 26 | void setName( const Bu::FString &sName ); | 28 | const NodeType getType() const; |
| 29 | |||
| 30 | private: | ||
| 31 | NodeType eType; | ||
| 32 | }; | ||
| 33 | |||
| 34 | class TafProperty; | ||
| 35 | class TafComment; | ||
| 36 | class TafGroup : public TafNode | ||
| 37 | { | ||
| 38 | public: | ||
| 39 | typedef Bu::List<Bu::FString> PropList; | ||
| 40 | typedef Bu::Hash<Bu::FString, PropList> PropHash; | ||
| 41 | typedef Bu::List<class Bu::TafGroup *> GroupList; | ||
| 42 | typedef Bu::Hash<Bu::FString, GroupList> GroupHash; | ||
| 43 | typedef Bu::List<class Bu::TafNode *> NodeList; | ||
| 44 | |||
| 45 | TafGroup( const Bu::FString &sName ); | ||
| 46 | virtual ~TafGroup(); | ||
| 47 | |||
| 27 | const Bu::FString &getName() const; | 48 | const Bu::FString &getName() const; |
| 28 | 49 | ||
| 29 | void setProperty( Bu::FString sName, Bu::FString sValue ); | ||
| 30 | const Bu::FString &getProperty( const Bu::FString &sName ) const; | 50 | const Bu::FString &getProperty( const Bu::FString &sName ) const; |
| 31 | const PropList &getProperties( const Bu::FString &sName ) const; | 51 | const PropList &getProperties( const Bu::FString &sName ) const; |
| 32 | const TafNode *getChild( const Bu::FString &sName ) const; | 52 | const TafGroup *getChild( const Bu::FString &sName ) const; |
| 33 | const NodeList &getChildren( const Bu::FString &sName ) const; | 53 | const GroupList &getChildren( const Bu::FString &sName ) const; |
| 34 | void addChild( TafNode *pNode ); | 54 | void addChild( TafNode *pNode ); |
| 55 | const NodeList &getChildren() const; | ||
| 35 | 56 | ||
| 36 | private: | 57 | private: |
| 37 | Bu::FString sName; | 58 | Bu::FString sName; |
| 38 | PropHash hProp; | 59 | PropHash hProp; |
| 39 | NodeHash hChildren; | 60 | GroupHash hChildren; |
| 61 | NodeList lChildren; | ||
| 62 | }; | ||
| 63 | |||
| 64 | class TafProperty : public TafNode | ||
| 65 | { | ||
| 66 | public: | ||
| 67 | TafProperty( const Bu::FString &sName, const Bu::FString &sValue ); | ||
| 68 | virtual ~TafProperty(); | ||
| 69 | |||
| 70 | const Bu::FString &getName() const; | ||
| 71 | const Bu::FString &getValue() const; | ||
| 72 | |||
| 73 | private: | ||
| 74 | Bu::FString sName; | ||
| 75 | Bu::FString sValue; | ||
| 76 | }; | ||
| 77 | |||
| 78 | class TafComment : public TafNode | ||
| 79 | { | ||
| 80 | public: | ||
| 81 | TafComment( const Bu::FString &sText ); | ||
| 82 | virtual ~TafComment(); | ||
| 83 | |||
| 84 | const Bu::FString &getText() const; | ||
| 85 | |||
| 86 | private: | ||
| 87 | Bu::FString sText; | ||
| 40 | }; | 88 | }; |
| 41 | } | 89 | } |
| 42 | 90 | ||
