root / include / qapi / visitor.h @ 69dd62df
History | View | Annotate | Download (2.7 kB)
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/qmp/qobject.h" |
17 |
#include "qapi/error.h" |
18 |
#include <stdlib.h> |
19 |
|
20 |
typedef struct GenericList |
21 |
{ |
22 |
union {
|
23 |
void *value;
|
24 |
uint64_t padding; |
25 |
}; |
26 |
struct GenericList *next;
|
27 |
} GenericList; |
28 |
|
29 |
typedef struct Visitor Visitor; |
30 |
|
31 |
void visit_start_handle(Visitor *v, void **obj, const char *kind, |
32 |
const char *name, Error **errp); |
33 |
void visit_end_handle(Visitor *v, Error **errp);
|
34 |
void visit_start_struct(Visitor *v, void **obj, const char *kind, |
35 |
const char *name, size_t size, Error **errp); |
36 |
void visit_end_struct(Visitor *v, Error **errp);
|
37 |
void visit_start_implicit_struct(Visitor *v, void **obj, size_t size, |
38 |
Error **errp); |
39 |
void visit_end_implicit_struct(Visitor *v, Error **errp);
|
40 |
void visit_start_list(Visitor *v, const char *name, Error **errp); |
41 |
GenericList *visit_next_list(Visitor *v, GenericList **list, Error **errp); |
42 |
void visit_end_list(Visitor *v, Error **errp);
|
43 |
void visit_start_optional(Visitor *v, bool *present, const char *name, |
44 |
Error **errp); |
45 |
void visit_end_optional(Visitor *v, Error **errp);
|
46 |
void visit_get_next_type(Visitor *v, int *obj, const int *qtypes, |
47 |
const char *name, Error **errp); |
48 |
void visit_type_enum(Visitor *v, int *obj, const char *strings[], |
49 |
const char *kind, const char *name, Error **errp); |
50 |
void visit_type_int(Visitor *v, int64_t *obj, const char *name, Error **errp); |
51 |
void visit_type_uint8(Visitor *v, uint8_t *obj, const char *name, Error **errp); |
52 |
void visit_type_uint16(Visitor *v, uint16_t *obj, const char *name, Error **errp); |
53 |
void visit_type_uint32(Visitor *v, uint32_t *obj, const char *name, Error **errp); |
54 |
void visit_type_uint64(Visitor *v, uint64_t *obj, const char *name, Error **errp); |
55 |
void visit_type_int8(Visitor *v, int8_t *obj, const char *name, Error **errp); |
56 |
void visit_type_int16(Visitor *v, int16_t *obj, const char *name, Error **errp); |
57 |
void visit_type_int32(Visitor *v, int32_t *obj, const char *name, Error **errp); |
58 |
void visit_type_int64(Visitor *v, int64_t *obj, const char *name, Error **errp); |
59 |
void visit_type_size(Visitor *v, uint64_t *obj, const char *name, Error **errp); |
60 |
void visit_type_bool(Visitor *v, bool *obj, const char *name, Error **errp); |
61 |
void visit_type_str(Visitor *v, char **obj, const char *name, Error **errp); |
62 |
void visit_type_number(Visitor *v, double *obj, const char *name, Error **errp); |
63 |
|
64 |
#endif
|