diff options
Diffstat (limited to 'c++-qt')
-rw-r--r-- | c++-qt/src/object.cpp | 229 |
1 files changed, 0 insertions, 229 deletions
diff --git a/c++-qt/src/object.cpp b/c++-qt/src/object.cpp index d148774..8af203f 100644 --- a/c++-qt/src/object.cpp +++ b/c++-qt/src/object.cpp | |||
@@ -77,236 +77,7 @@ Gats::Object *Gats::Object::read( QIODevice &rIn ) | |||
77 | 77 | ||
78 | return pObj; | 78 | return pObj; |
79 | } | 79 | } |
80 | /* | ||
81 | void Gats::Object::skipWs( QByteArray::const_iterator &i ) | ||
82 | { | ||
83 | for(; *i == ' ' || *i == '\t' || *i == '\r' || *i == '\n'; i++ ) { } | ||
84 | } | ||
85 | 80 | ||
86 | QByteArray Gats::Object::token( QByteArray::const_iterator &i ) | ||
87 | { | ||
88 | QByteArray sRet; | ||
89 | if( *i == '\"' ) | ||
90 | { | ||
91 | for( i++; i && *i != '\"' ; i++ ) | ||
92 | { | ||
93 | if( *i == '\\' ) | ||
94 | i++; | ||
95 | sRet += i; | ||
96 | } | ||
97 | i++; | ||
98 | } | ||
99 | else | ||
100 | { | ||
101 | for(; i && *i != ' ' && *i != '\t' && *i != '\r' && *i != '\n' && | ||
102 | *i != ',' && *i != ']' && *i != '}' && *i != '[' && | ||
103 | *i != '{'; i++ ) | ||
104 | { | ||
105 | sRet += i; | ||
106 | } | ||
107 | } | ||
108 | |||
109 | return sRet; | ||
110 | } | ||
111 | |||
112 | Gats::Object *Gats::Object::strToGats( QByteArray::const_iterator &i ) | ||
113 | { | ||
114 | skipWs( i ); | ||
115 | |||
116 | switch( *i ) | ||
117 | { | ||
118 | case '[': | ||
119 | { | ||
120 | Gats::List *pLst = new Gats::List(); | ||
121 | i++; | ||
122 | for(;;) | ||
123 | { | ||
124 | Gats::Object *pObj = strToGats( i ); | ||
125 | if( !pObj ) | ||
126 | break; | ||
127 | pLst->append( pObj ); | ||
128 | skipWs( i ); | ||
129 | switch( *i ) | ||
130 | { | ||
131 | case ',': | ||
132 | i++; | ||
133 | break; | ||
134 | |||
135 | case ']': | ||
136 | i++; | ||
137 | return pLst; | ||
138 | |||
139 | default: | ||
140 | throw "PUT GOOD EXCEPTION HERE"; | ||
141 | } | ||
142 | } | ||
143 | } | ||
144 | break; | ||
145 | |||
146 | case '{': | ||
147 | { | ||
148 | Gats::Dictionary *pDict = new Gats::Dictionary(); | ||
149 | i++; | ||
150 | for(;;) | ||
151 | { | ||
152 | skipWs( i ); | ||
153 | if( *i != '\"' ) | ||
154 | throw "PUT GOOD EXCEPTION HERE"; | ||
155 | QByteArray sKey = token( i ); | ||
156 | skipWs( i ); | ||
157 | if( *i != ':' ) | ||
158 | throw "PUT GOOD EXCEPTION HERE"; | ||
159 | "seperated with colons."); | ||
160 | i++; | ||
161 | Gats::Object *pObj = strToGats( i ); | ||
162 | if( !pObj ) | ||
163 | throw "PUT GOOD EXCEPTION HERE"; | ||
164 | pDict->insert( sKey, pObj ); | ||
165 | skipWs( i ); | ||
166 | switch( *i ) | ||
167 | { | ||
168 | case ',': | ||
169 | i++; | ||
170 | break; | ||
171 | |||
172 | case '}': | ||
173 | i++; | ||
174 | return pDict; | ||
175 | |||
176 | default: | ||
177 | throw "PUT GOOD EXCEPTION HERE"; | ||
178 | } | ||
179 | } | ||
180 | } | ||
181 | break; | ||
182 | |||
183 | case '\"': | ||
184 | return new Gats::String( token( i ) ); | ||
185 | break; | ||
186 | |||
187 | case '0': | ||
188 | case '1': | ||
189 | case '2': | ||
190 | case '3': | ||
191 | case '4': | ||
192 | case '5': | ||
193 | case '6': | ||
194 | case '7': | ||
195 | case '8': | ||
196 | case '9': | ||
197 | case '.': | ||
198 | case '+': | ||
199 | case '-': | ||
200 | { | ||
201 | QByteArray s = token( i ); | ||
202 | int iSize = s.getSize(); | ||
203 | if( s[iSize-1] == 'i' ) | ||
204 | { | ||
205 | return new Gats::Integer( | ||
206 | strtoll( s.getStr(), NULL, 10 ) | ||
207 | ); | ||
208 | } | ||
209 | else if( s[iSize-1] == 'f' ) | ||
210 | { | ||
211 | return new Gats::Float( | ||
212 | strtod( s.getStr(), NULL ) | ||
213 | ); | ||
214 | } | ||
215 | else | ||
216 | { | ||
217 | for( QByteArray::iterator i = s.begin(); i; i++ ) | ||
218 | { | ||
219 | if( *i == '.' ) | ||
220 | return new Gats::Float( | ||
221 | strtod( s.getStr(), NULL ) | ||
222 | ); | ||
223 | } | ||
224 | return new Gats::Integer( | ||
225 | strtoll( s.getStr(), NULL, 10 ) | ||
226 | ); | ||
227 | } | ||
228 | } | ||
229 | break; | ||
230 | |||
231 | default: | ||
232 | { | ||
233 | QByteArray s = token( i ); | ||
234 | int iSize = s.getSize(); | ||
235 | // Test for explicit types first | ||
236 | if( iSize > 2 ) | ||
237 | { | ||
238 | if( (s[0] >= '0' && s[0] <= '9') || s[0] == '+' || s[0] == '-' ) | ||
239 | { | ||
240 | } | ||
241 | else | ||
242 | { | ||
243 | QByteArray st = s.toLower(); | ||
244 | if( st == "true" ) | ||
245 | { | ||
246 | return new Gats::Boolean( true ); | ||
247 | } | ||
248 | else if( st == "false" ) | ||
249 | { | ||
250 | return new Gats::Boolean( false ); | ||
251 | } | ||
252 | } | ||
253 | } | ||
254 | } | ||
255 | break; | ||
256 | } | ||
257 | |||
258 | return NULL; | ||
259 | } | ||
260 | |||
261 | Gats::Object *Gats::Object::strToGats( const QByteArray &sStr ) | ||
262 | { | ||
263 | QByteArray::const_iterator i = sStr.begin(); | ||
264 | |||
265 | return strToGats( i ); | ||
266 | } | ||
267 | |||
268 | Bu::Formatter &operator<<( Bu::Formatter &f, const Gats::Object &obj ) | ||
269 | { | ||
270 | switch( obj.getType() ) | ||
271 | { | ||
272 | case Gats::typeDictionary: | ||
273 | return f << dynamic_cast<const Gats::Dictionary &>(obj); | ||
274 | |||
275 | case Gats::typeList: | ||
276 | return f << dynamic_cast<const Gats::List &>(obj); | ||
277 | |||
278 | case Gats::typeString: | ||
279 | return f << dynamic_cast<const Gats::String &>(obj); | ||
280 | |||
281 | case Gats::typeInteger: | ||
282 | return f << dynamic_cast<const Gats::Integer &>(obj); | ||
283 | |||
284 | case Gats::typeFloat: | ||
285 | return f << dynamic_cast<const Gats::Float &>(obj); | ||
286 | |||
287 | case Gats::typeBoolean: | ||
288 | return f << dynamic_cast<const Gats::Boolean &>(obj); | ||
289 | |||
290 | default: | ||
291 | return f << "***ERROR: Bad Gats type***"; | ||
292 | } | ||
293 | } | ||
294 | |||
295 | Bu::Formatter &operator<<( Bu::Formatter &f, const Gats::Type &t ) | ||
296 | { | ||
297 | switch( t ) | ||
298 | { | ||
299 | case Gats::typeDictionary: return f << "dictionary"; | ||
300 | case Gats::typeList: return f << "list"; | ||
301 | case Gats::typeString: return f << "string"; | ||
302 | case Gats::typeInteger: return f << "integer"; | ||
303 | case Gats::typeFloat: return f << "float"; | ||
304 | case Gats::typeBoolean: return f << "boolean"; | ||
305 | } | ||
306 | |||
307 | return f << "***unknown***"; | ||
308 | } | ||
309 | */ | ||
310 | const char *Gats::typeToStr( Gats::Type t ) | 81 | const char *Gats::typeToStr( Gats::Type t ) |
311 | { | 82 | { |
312 | switch( t ) | 83 | switch( t ) |