}
+static virJSONValuePtr
+virJSONValueObjectSteal(virJSONValuePtr object,
+ const char *key)
+{
+ size_t i;
+ virJSONValuePtr obj = NULL;
+
+ if (object->type != VIR_JSON_TYPE_OBJECT)
+ return NULL;
+
+ for (i = 0; i < object->data.object.npairs; i++) {
+ if (STREQ(object->data.object.pairs[i].key, key)) {
+ VIR_STEAL_PTR(obj, object->data.object.pairs[i].value);
+ VIR_FREE(object->data.object.pairs[i].key);
+ VIR_DELETE_ELEMENT(object->data.object.pairs, i,
+ object->data.object.npairs);
+ break;
+ }
+ }
+
+ return obj;
+}
+
+
/* Return the value associated with KEY within OBJECT, but return NULL
* if the key is missing or if value is not the correct TYPE. */
virJSONValuePtr
}
+/* Steal the value associated with KEY within OBJECT, but return NULL
+ * if the key is missing or if value is not the correct TYPE. */
+static virJSONValuePtr
+virJSONValueObjectStealByType(virJSONValuePtr object,
+ const char *key,
+ virJSONType type)
+{
+ virJSONValuePtr value = virJSONValueObjectSteal(object, key);
+
+ if (value && value->type == type)
+ return value;
+ return NULL;
+}
+
+
int
virJSONValueObjectKeysNumber(virJSONValuePtr object)
{
}
+virJSONValuePtr
+virJSONValueObjectStealArray(virJSONValuePtr object, const char *key)
+{
+ return virJSONValueObjectStealByType(object, key, VIR_JSON_TYPE_ARRAY);
+}
+
+
int
virJSONValueObjectIsNull(virJSONValuePtr object,
const char *key)
const char *key);
virJSONValuePtr virJSONValueObjectGetArray(virJSONValuePtr object,
const char *key);
+virJSONValuePtr virJSONValueObjectStealArray(virJSONValuePtr object,
+ const char *key);
const char *virJSONValueObjectGetString(virJSONValuePtr object, const char *key);
int virJSONValueObjectGetNumberInt(virJSONValuePtr object, const char *key, int *value);