cachepc-qemu

Fork of AMDESE/qemu with changes for cachepc side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-qemu
Log | Files | Refs | Submodules | LICENSE | sfeed.txt

qobject-output-visitor.h (2059B)


      1/*
      2 * Output Visitor
      3 *
      4 * Copyright IBM, Corp. 2011
      5 *
      6 * Authors:
      7 *  Anthony Liguori   <aliguori@us.ibm.com>
      8 *
      9 * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
     10 * See the COPYING.LIB file in the top-level directory.
     11 *
     12 */
     13
     14#ifndef QOBJECT_OUTPUT_VISITOR_H
     15#define QOBJECT_OUTPUT_VISITOR_H
     16
     17#include "qapi/visitor.h"
     18#include "qapi/qapi-types-compat.h"
     19
     20typedef struct QObjectOutputVisitor QObjectOutputVisitor;
     21
     22/**
     23 * Create a QObject output visitor for @obj
     24 *
     25 * A QObject output visitor visit builds a QObject from QAPI Object.
     26 * This simultaneously walks the QAPI object and the QObject being
     27 * built.  The latter walk starts at @obj.
     28 *
     29 * visit_type_FOO() creates a QObject for QAPI type FOO.  It creates a
     30 * QDict for struct/union types, a QList for list types, QString for
     31 * type 'str' and enumeration types, QNum for integer and float
     32 * types, QBool for type 'bool'.  For type 'any', it increments the
     33 * QObject's reference count.  For QAPI alternate types, it creates
     34 * the QObject for the member that is in use.
     35 *
     36 * visit_start_struct() ... visit_end_struct() visits a QAPI
     37 * struct/union and creates a QDict.  Visits in between visit the
     38 * members.  visit_optional() is true when the struct/union has this
     39 * member.  visit_check_struct() does nothing.
     40 *
     41 * visit_start_list() ... visit_end_list() visits a QAPI list and
     42 * creates a QList.  Visits in between visit list members, one after
     43 * the other.  visit_next_list() returns NULL when all QAPI list
     44 * members have been visited.  visit_check_list() does nothing.
     45 *
     46 * visit_start_alternate() ... visit_end_alternate() visits a QAPI
     47 * alternate.  The visit in between creates the QObject for the
     48 * alternate member that is in use.
     49 *
     50 * Errors are not expected to happen.
     51 *
     52 * The caller is responsible for freeing the visitor with
     53 * visit_free().
     54 */
     55Visitor *qobject_output_visitor_new(QObject **result);
     56
     57void qobject_output_visitor_set_policy(Visitor *v,
     58                                       CompatPolicyOutput deprecated);
     59
     60#endif