*/
jsonObject* jsonNewNumberObject( long double num );
+
+/**
+ * Creates a new json bool
+ */
+jsonObject* jsonNewBoolObject(int val);
+
/**
* Deallocates an object
*/
int jsonBoolIsTrue( jsonObject* boolObj );
+void jsonSetBool(jsonObject* bl, int val);
jsonObject* jsonObjectClone( const jsonObject* o );
return o;
}
+jsonObject* jsonNewBoolObject(int val) {
+ jsonObject* o = jsonNewObject(NULL);
+ o->type = JSON_BOOL;
+ jsonSetBool(o, val);
+ return o;
+}
+
jsonObject* jsonNewObjectType(int type) {
jsonObject* o = jsonNewObject(NULL);
o->type = type;
jsonObjectFree(o);
}
+void jsonSetBool(jsonObject* bl, int val) {
+ if(!bl) return;
+ JSON_INIT_CLEAR(bl, JSON_BOOL);
+ bl->value.b = val;
+}
unsigned long jsonObjectPush(jsonObject* o, jsonObject* newo) {
if(!(o && newo)) return -1;
dest->classname = strdup(classname);
}
+/*
jsonObject* jsonObjectClone( const jsonObject* o ) {
if(!o) return NULL;
char* json = jsonObjectToJSONRaw(o);
free(json);
return oo;
}
+*/
+
+jsonObject* jsonObjectClone( const jsonObject* o ) {
+ if(!o) return NULL;
+
+ jsonObject* arr;
+ jsonObject* hash;
+ jsonIterator* itr;
+ jsonObject* tmp;
+ int i;
+
+ switch(o->type) {
+ case JSON_NULL:
+ return jsonNewObject(NULL);
+ case JSON_STRING:
+ return jsonNewObject(jsonObjectGetString(o));
+ case JSON_NUMBER:
+ return jsonNewNumberObject(jsonObjectGetNumber(o));
+ case JSON_BOOL:
+ return jsonNewBoolObject(jsonBoolIsTrue((jsonObject*) o));
+ case JSON_ARRAY:
+ arr = jsonNewObject(NULL);
+ for(i=0; i < o->size; i++)
+ jsonObjectPush(arr, jsonObjectClone(jsonObjectGetIndex(o, i)));
+ return arr;
+ case JSON_HASH:
+ hash = jsonNewObject(NULL);
+ itr = jsonNewIterator(o);
+ while( (tmp = jsonIteratorNext(itr)) )
+ jsonObjectSetKey(hash, itr->key, jsonObjectClone(tmp));
+ jsonObjectIteratorFree(itr);
+ return hash;
+ }
+}
int jsonBoolIsTrue( jsonObject* boolObj ) {
if( boolObj && boolObj->type == JSON_BOOL && boolObj->value.b )