diff options
author | Mike Buland <eichlan@xagasoft.com> | 2009-10-16 12:59:45 +0000 |
---|---|---|
committer | Mike Buland <eichlan@xagasoft.com> | 2009-10-16 12:59:45 +0000 |
commit | 96b07a22f5392f5d7f821f5743deb3d64bd94e89 (patch) | |
tree | f8610916735e2bc5304031168f724cde7d909653 /src/tafnode.cpp | |
parent | 835c3420326a3a3a94baa8690bf09941182d29b0 (diff) | |
download | libbu++-96b07a22f5392f5d7f821f5743deb3d64bd94e89.tar.gz libbu++-96b07a22f5392f5d7f821f5743deb3d64bd94e89.tar.bz2 libbu++-96b07a22f5392f5d7f821f5743deb3d64bd94e89.tar.xz libbu++-96b07a22f5392f5d7f821f5743deb3d64bd94e89.zip |
Although this looks like a load of code changes, this represents no functional
change to the Taf system. Really all that's happened is I've broken out the
core taf data types into seperate files, and gone ahead and created a helpful
new header file ("taf.h") that will include the entire taf system, including
the reader and writer for you.
This means that a lot of programs will start complaining, but fortunately,
there's an easy solution, if it complains about taf, make sure to include taf.h
at the top, instead of other taf files and you'll be set.
The next set of changes will add lots of helpers to the taf system and change
the reader to read non-const structures, i.e. I'll actually add editing support
to created taf structures.
Diffstat (limited to 'src/tafnode.cpp')
-rw-r--r-- | src/tafnode.cpp | 195 |
1 files changed, 0 insertions, 195 deletions
diff --git a/src/tafnode.cpp b/src/tafnode.cpp index 8ea2e95..e7711fb 100644 --- a/src/tafnode.cpp +++ b/src/tafnode.cpp | |||
@@ -23,198 +23,3 @@ Bu::TafNode::NodeType Bu::TafNode::getType() const | |||
23 | return eType; | 23 | return eType; |
24 | } | 24 | } |
25 | 25 | ||
26 | Bu::TafGroup::TafGroup( const Bu::FString &sName ) : | ||
27 | TafNode( typeGroup ), | ||
28 | sName( sName ) | ||
29 | { | ||
30 | } | ||
31 | |||
32 | Bu::TafGroup::~TafGroup() | ||
33 | { | ||
34 | for( NodeList::iterator i = lChildren.begin(); i != lChildren.end(); i++ ) | ||
35 | { | ||
36 | delete (*i); | ||
37 | } | ||
38 | } | ||
39 | |||
40 | const Bu::FString &Bu::TafGroup::getName() const | ||
41 | { | ||
42 | return sName; | ||
43 | } | ||
44 | |||
45 | void Bu::TafGroup::setName( const Bu::FString &sName ) | ||
46 | { | ||
47 | this->sName = sName; | ||
48 | } | ||
49 | |||
50 | Bu::TafNode *Bu::TafGroup::addChild( Bu::TafNode *pNode ) | ||
51 | { | ||
52 | switch( pNode->getType() ) | ||
53 | { | ||
54 | case typeGroup: | ||
55 | addChild( (Bu::TafGroup *)pNode ); | ||
56 | break; | ||
57 | |||
58 | case typeProperty: | ||
59 | addChild( (Bu::TafProperty *)pNode ); | ||
60 | break; | ||
61 | |||
62 | case typeComment: | ||
63 | addChild( (Bu::TafComment *)pNode ); | ||
64 | break; | ||
65 | } | ||
66 | |||
67 | return pNode; | ||
68 | } | ||
69 | |||
70 | Bu::TafGroup *Bu::TafGroup::addChild( TafGroup *pNode ) | ||
71 | { | ||
72 | TafGroup *pGroup = (TafGroup *)pNode; | ||
73 | if( !hChildren.has( pGroup->getName() ) ) | ||
74 | hChildren.insert( pGroup->getName(), GroupList() ); | ||
75 | hChildren.get( pGroup->getName() ).append( pGroup ); | ||
76 | lChildren.append( pNode ); | ||
77 | return pNode; | ||
78 | } | ||
79 | |||
80 | Bu::TafProperty *Bu::TafGroup::addChild( TafProperty *pNode ) | ||
81 | { | ||
82 | TafProperty *pProperty = (TafProperty *)pNode; | ||
83 | if( !hProp.has( pProperty->getName() ) ) | ||
84 | hProp.insert( pProperty->getName(), PropList() ); | ||
85 | hProp.get( pProperty->getName() ).append( pProperty->getValue() ); | ||
86 | lChildren.append( pNode ); | ||
87 | return pNode; | ||
88 | } | ||
89 | |||
90 | Bu::TafComment *Bu::TafGroup::addChild( TafComment *pNode ) | ||
91 | { | ||
92 | lChildren.append( pNode ); | ||
93 | return pNode; | ||
94 | } | ||
95 | |||
96 | Bu::TafGroup *Bu::TafGroup::addGroup( const Bu::FString &sName ) | ||
97 | { | ||
98 | return addChild( new TafGroup( sName ) ); | ||
99 | } | ||
100 | |||
101 | Bu::TafProperty *Bu::TafGroup::addProperty( | ||
102 | const Bu::FString &sName, const Bu::FString &sValue ) | ||
103 | { | ||
104 | return addChild( new TafProperty( sName, sValue ) ); | ||
105 | } | ||
106 | |||
107 | bool Bu::TafGroup::hasChild( const Bu::FString &sName ) const | ||
108 | { | ||
109 | return hChildren.has( sName ); | ||
110 | } | ||
111 | |||
112 | const Bu::TafGroup::GroupList &Bu::TafGroup::getChildren( const Bu::FString &sName ) const | ||
113 | { | ||
114 | try { | ||
115 | return hChildren.get( sName ); | ||
116 | } catch( Bu::HashException &e ) | ||
117 | { | ||
118 | throw Bu::TafException("No children of group \"%s\" match \"%s\".", | ||
119 | this->sName.getStr(), sName.getStr() ); | ||
120 | } | ||
121 | } | ||
122 | |||
123 | const Bu::TafGroup::NodeList &Bu::TafGroup::getChildren() const | ||
124 | { | ||
125 | return lChildren; | ||
126 | } | ||
127 | |||
128 | const Bu::TafGroup *Bu::TafGroup::getChild( const Bu::FString &sName ) const | ||
129 | { | ||
130 | try { | ||
131 | return hChildren.get( sName ).first(); | ||
132 | } catch( Bu::HashException &e ) | ||
133 | { | ||
134 | throw Bu::TafException("No children of group \"%s\" match \"%s\".", | ||
135 | this->sName.getStr(), sName.getStr() ); | ||
136 | } | ||
137 | } | ||
138 | |||
139 | bool Bu::TafGroup::hasProperty( const Bu::FString &sName ) const | ||
140 | { | ||
141 | return hProp.has( sName ); | ||
142 | } | ||
143 | |||
144 | const Bu::TafGroup::PropList &Bu::TafGroup::getProperties( const Bu::FString &sName ) const | ||
145 | { | ||
146 | try { | ||
147 | return hProp.get( sName ); | ||
148 | } catch( Bu::HashException &e ) | ||
149 | { | ||
150 | throw Bu::TafException("No properties of group \"%s\" match \"%s\".", | ||
151 | this->sName.getStr(), sName.getStr() ); | ||
152 | } | ||
153 | } | ||
154 | |||
155 | const Bu::FString &Bu::TafGroup::getProperty( const Bu::FString &sName ) const | ||
156 | { | ||
157 | try { | ||
158 | return hProp.get( sName ).first(); | ||
159 | } catch( Bu::HashException &e ) | ||
160 | { | ||
161 | throw Bu::TafException("No properties of group \"%s\" match \"%s\".", | ||
162 | this->sName.getStr(), sName.getStr() ); | ||
163 | } | ||
164 | } | ||
165 | |||
166 | const Bu::FString &Bu::TafGroup::getProperty( const Bu::FString &sName, | ||
167 | const Bu::FString &sDef ) const | ||
168 | { | ||
169 | try | ||
170 | { | ||
171 | return hProp.get( sName ).first(); | ||
172 | } | ||
173 | catch( Bu::HashException &e ) | ||
174 | { | ||
175 | return sDef; | ||
176 | } | ||
177 | } | ||
178 | |||
179 | Bu::TafProperty::TafProperty( const Bu::FString &sName, const Bu::FString &sValue ) : | ||
180 | TafNode( typeProperty ), | ||
181 | sName( sName ), | ||
182 | sValue( sValue ) | ||
183 | { | ||
184 | } | ||
185 | |||
186 | Bu::TafProperty::~TafProperty() | ||
187 | { | ||
188 | } | ||
189 | |||
190 | const Bu::FString &Bu::TafProperty::getName() const | ||
191 | { | ||
192 | return sName; | ||
193 | } | ||
194 | |||
195 | const Bu::FString &Bu::TafProperty::getValue() const | ||
196 | { | ||
197 | return sValue; | ||
198 | } | ||
199 | |||
200 | Bu::TafComment::TafComment( const Bu::FString &sText, bool bEOL ) : | ||
201 | TafNode( typeComment ), | ||
202 | sText( sText ), | ||
203 | bEOL( bEOL ) | ||
204 | { | ||
205 | } | ||
206 | |||
207 | Bu::TafComment::~TafComment() | ||
208 | { | ||
209 | } | ||
210 | |||
211 | const Bu::FString &Bu::TafComment::getText() const | ||
212 | { | ||
213 | return sText; | ||
214 | } | ||
215 | |||
216 | bool Bu::TafComment::isEOLStyle() const | ||
217 | { | ||
218 | return bEOL; | ||
219 | } | ||
220 | |||