diff options
Diffstat (limited to 'c++-qt/src')
| -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 ) |
