~ahs3/+junk/cq-qemu

« back to all changes in this revision

Viewing changes to qapi/qapi-visit-core.h

  • Committer: Al Stone
  • Date: 2012-02-09 01:17:20 UTC
  • Revision ID: albert.stone@canonical.com-20120209011720-tztl7ik3qayz80p4
first commit to bzr for qemu

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Core Definitions for QAPI Visitor Classes
 
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
#ifndef QAPI_VISITOR_CORE_H
 
14
#define QAPI_VISITOR_CORE_H
 
15
 
 
16
#include "qapi/qapi-types-core.h"
 
17
#include <stdlib.h>
 
18
 
 
19
typedef struct GenericList
 
20
{
 
21
    void *value;
 
22
    struct GenericList *next;
 
23
} GenericList;
 
24
 
 
25
typedef struct Visitor Visitor;
 
26
 
 
27
struct Visitor
 
28
{
 
29
    /* Must be set */
 
30
    void (*start_struct)(Visitor *v, void **obj, const char *kind,
 
31
                         const char *name, size_t size, Error **errp);
 
32
    void (*end_struct)(Visitor *v, Error **errp);
 
33
 
 
34
    void (*start_list)(Visitor *v, const char *name, Error **errp);
 
35
    GenericList *(*next_list)(Visitor *v, GenericList **list, Error **errp);
 
36
    void (*end_list)(Visitor *v, Error **errp);
 
37
 
 
38
    void (*type_enum)(Visitor *v, int *obj, const char *strings[],
 
39
                      const char *kind, const char *name, Error **errp);
 
40
 
 
41
    void (*type_int)(Visitor *v, int64_t *obj, const char *name, Error **errp);
 
42
    void (*type_bool)(Visitor *v, bool *obj, const char *name, Error **errp);
 
43
    void (*type_str)(Visitor *v, char **obj, const char *name, Error **errp);
 
44
    void (*type_number)(Visitor *v, double *obj, const char *name,
 
45
                        Error **errp);
 
46
 
 
47
    /* May be NULL */
 
48
    void (*start_optional)(Visitor *v, bool *present, const char *name,
 
49
                           Error **errp);
 
50
    void (*end_optional)(Visitor *v, Error **errp);
 
51
 
 
52
    void (*start_handle)(Visitor *v, void **obj, const char *kind,
 
53
                         const char *name, Error **errp);
 
54
    void (*end_handle)(Visitor *v, Error **errp);
 
55
};
 
56
 
 
57
void visit_start_handle(Visitor *v, void **obj, const char *kind,
 
58
                        const char *name, Error **errp);
 
59
void visit_end_handle(Visitor *v, Error **errp);
 
60
void visit_start_struct(Visitor *v, void **obj, const char *kind,
 
61
                        const char *name, size_t size, Error **errp);
 
62
void visit_end_struct(Visitor *v, Error **errp);
 
63
void visit_start_list(Visitor *v, const char *name, Error **errp);
 
64
GenericList *visit_next_list(Visitor *v, GenericList **list, Error **errp);
 
65
void visit_end_list(Visitor *v, Error **errp);
 
66
void visit_start_optional(Visitor *v, bool *present, const char *name,
 
67
                          Error **errp);
 
68
void visit_end_optional(Visitor *v, Error **errp);
 
69
void visit_type_enum(Visitor *v, int *obj, const char *strings[],
 
70
                     const char *kind, const char *name, Error **errp);
 
71
void visit_type_int(Visitor *v, int64_t *obj, const char *name, Error **errp);
 
72
void visit_type_bool(Visitor *v, bool *obj, const char *name, Error **errp);
 
73
void visit_type_str(Visitor *v, char **obj, const char *name, Error **errp);
 
74
void visit_type_number(Visitor *v, double *obj, const char *name, Error **errp);
 
75
 
 
76
#endif