Lines Matching +full:- +full:- +full:root
4 * Copyright (C) 2012-2016 Red Hat, Inc.
11 * See the COPYING.LIB file in the top-level directory.
16 #include "qapi/compat-policy.h"
17 #include "qapi/qobject-output-visitor.h"
18 #include "qapi/visitor-impl.h"
37 QObject *root; /* Root of the output visit */ member
57 assert(qov->root); in qobject_output_push_obj()
59 e->value = value; in qobject_output_push_obj()
60 e->qapi = qapi; in qobject_output_push_obj()
61 QSLIST_INSERT_HEAD(&qov->stack, e, node); in qobject_output_push_obj()
67 QStackEntry *e = QSLIST_FIRST(&qov->stack); in qobject_output_pop()
71 assert(e->qapi == qapi); in qobject_output_pop()
72 QSLIST_REMOVE_HEAD(&qov->stack, node); in qobject_output_pop()
73 value = e->value; in qobject_output_pop()
81 * by that container. Otherwise, @value is now the root. */
85 QStackEntry *e = QSLIST_FIRST(&qov->stack); in qobject_output_add_obj()
86 QObject *cur = e ? e->value : NULL; in qobject_output_add_obj()
89 /* Don't allow reuse of visitor on more than one root */ in qobject_output_add_obj()
90 assert(!qov->root); in qobject_output_add_obj()
91 qov->root = value; in qobject_output_add_obj()
141 return tail->next; in qobject_output_next_list()
215 CompatPolicy *pol = &v->compat_policy; in qobject_output_policy_skip()
218 && pol->deprecated_output == COMPAT_POLICY_OUTPUT_HIDE) in qobject_output_policy_skip()
220 && pol->unstable_output == COMPAT_POLICY_OUTPUT_HIDE); in qobject_output_policy_skip()
223 /* Finish building, and return the root object.
224 * The root object is never null. The caller becomes the object's
231 assert(qov->root && QSLIST_EMPTY(&qov->stack)); in qobject_output_complete()
232 assert(opaque == qov->result); in qobject_output_complete()
234 *qov->result = qobject_ref(qov->root); in qobject_output_complete()
235 qov->result = NULL; in qobject_output_complete()
243 while (!QSLIST_EMPTY(&qov->stack)) { in qobject_output_free()
244 e = QSLIST_FIRST(&qov->stack); in qobject_output_free()
245 QSLIST_REMOVE_HEAD(&qov->stack, node); in qobject_output_free()
249 qobject_unref(qov->root); in qobject_output_free()
259 v->visitor.type = VISITOR_OUTPUT; in qobject_output_visitor_new()
260 v->visitor.start_struct = qobject_output_start_struct; in qobject_output_visitor_new()
261 v->visitor.end_struct = qobject_output_end_struct; in qobject_output_visitor_new()
262 v->visitor.start_list = qobject_output_start_list; in qobject_output_visitor_new()
263 v->visitor.next_list = qobject_output_next_list; in qobject_output_visitor_new()
264 v->visitor.end_list = qobject_output_end_list; in qobject_output_visitor_new()
265 v->visitor.type_int64 = qobject_output_type_int64; in qobject_output_visitor_new()
266 v->visitor.type_uint64 = qobject_output_type_uint64; in qobject_output_visitor_new()
267 v->visitor.type_bool = qobject_output_type_bool; in qobject_output_visitor_new()
268 v->visitor.type_str = qobject_output_type_str; in qobject_output_visitor_new()
269 v->visitor.type_number = qobject_output_type_number; in qobject_output_visitor_new()
270 v->visitor.type_any = qobject_output_type_any; in qobject_output_visitor_new()
271 v->visitor.type_null = qobject_output_type_null; in qobject_output_visitor_new()
272 v->visitor.policy_skip = qobject_output_policy_skip; in qobject_output_visitor_new()
273 v->visitor.complete = qobject_output_complete; in qobject_output_visitor_new()
274 v->visitor.free = qobject_output_free; in qobject_output_visitor_new()
277 v->result = result; in qobject_output_visitor_new()
279 return &v->visitor; in qobject_output_visitor_new()