root / include / qapi / visitor-impl.h @ 0b7593e0
History | View | Annotate | Download (3 kB)
1 | 0f71a1e0 | Paolo Bonzini | /*
|
---|---|---|---|
2 | 0f71a1e0 | Paolo Bonzini | * Core Definitions for QAPI Visitor implementations
|
3 | 0f71a1e0 | Paolo Bonzini | *
|
4 | 0f71a1e0 | Paolo Bonzini | * Copyright (C) 2012 Red Hat, Inc.
|
5 | 0f71a1e0 | Paolo Bonzini | *
|
6 | 0f71a1e0 | Paolo Bonzini | * Author: Paolo Bonizni <pbonzini@redhat.com>
|
7 | 0f71a1e0 | Paolo Bonzini | *
|
8 | 0f71a1e0 | Paolo Bonzini | * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
|
9 | 0f71a1e0 | Paolo Bonzini | * See the COPYING.LIB file in the top-level directory.
|
10 | 0f71a1e0 | Paolo Bonzini | *
|
11 | 0f71a1e0 | Paolo Bonzini | */
|
12 | 0f71a1e0 | Paolo Bonzini | #ifndef QAPI_VISITOR_IMPL_H
|
13 | 0f71a1e0 | Paolo Bonzini | #define QAPI_VISITOR_IMPL_H
|
14 | 0f71a1e0 | Paolo Bonzini | |
15 | 7b1b5d19 | Paolo Bonzini | #include "qapi/error.h" |
16 | 7b1b5d19 | Paolo Bonzini | #include "qapi/visitor.h" |
17 | 0f71a1e0 | Paolo Bonzini | |
18 | 7edd63f1 | Paolo Bonzini | struct Visitor
|
19 | 7edd63f1 | Paolo Bonzini | { |
20 | 7edd63f1 | Paolo Bonzini | /* Must be set */
|
21 | 7edd63f1 | Paolo Bonzini | void (*start_struct)(Visitor *v, void **obj, const char *kind, |
22 | 7edd63f1 | Paolo Bonzini | const char *name, size_t size, Error **errp); |
23 | 7edd63f1 | Paolo Bonzini | void (*end_struct)(Visitor *v, Error **errp);
|
24 | 7edd63f1 | Paolo Bonzini | |
25 | 761d524d | Kevin Wolf | void (*start_implicit_struct)(Visitor *v, void **obj, size_t size, |
26 | 761d524d | Kevin Wolf | Error **errp); |
27 | 761d524d | Kevin Wolf | void (*end_implicit_struct)(Visitor *v, Error **errp);
|
28 | 761d524d | Kevin Wolf | |
29 | 7edd63f1 | Paolo Bonzini | void (*start_list)(Visitor *v, const char *name, Error **errp); |
30 | 7edd63f1 | Paolo Bonzini | GenericList *(*next_list)(Visitor *v, GenericList **list, Error **errp); |
31 | 7edd63f1 | Paolo Bonzini | void (*end_list)(Visitor *v, Error **errp);
|
32 | 7edd63f1 | Paolo Bonzini | |
33 | 7edd63f1 | Paolo Bonzini | void (*type_enum)(Visitor *v, int *obj, const char *strings[], |
34 | 7edd63f1 | Paolo Bonzini | const char *kind, const char *name, Error **errp); |
35 | 69dd62df | Kevin Wolf | void (*get_next_type)(Visitor *v, int *kind, const int *qobjects, |
36 | 69dd62df | Kevin Wolf | const char *name, Error **errp); |
37 | 7edd63f1 | Paolo Bonzini | |
38 | 7edd63f1 | Paolo Bonzini | void (*type_int)(Visitor *v, int64_t *obj, const char *name, Error **errp); |
39 | 7edd63f1 | Paolo Bonzini | void (*type_bool)(Visitor *v, bool *obj, const char *name, Error **errp); |
40 | 7edd63f1 | Paolo Bonzini | void (*type_str)(Visitor *v, char **obj, const char *name, Error **errp); |
41 | 7edd63f1 | Paolo Bonzini | void (*type_number)(Visitor *v, double *obj, const char *name, |
42 | 7edd63f1 | Paolo Bonzini | Error **errp); |
43 | 7edd63f1 | Paolo Bonzini | |
44 | 7edd63f1 | Paolo Bonzini | /* May be NULL */
|
45 | 7edd63f1 | Paolo Bonzini | void (*start_optional)(Visitor *v, bool *present, const char *name, |
46 | 7edd63f1 | Paolo Bonzini | Error **errp); |
47 | 7edd63f1 | Paolo Bonzini | void (*end_optional)(Visitor *v, Error **errp);
|
48 | 7edd63f1 | Paolo Bonzini | |
49 | 7edd63f1 | Paolo Bonzini | void (*start_handle)(Visitor *v, void **obj, const char *kind, |
50 | 7edd63f1 | Paolo Bonzini | const char *name, Error **errp); |
51 | 7edd63f1 | Paolo Bonzini | void (*end_handle)(Visitor *v, Error **errp);
|
52 | 7edd63f1 | Paolo Bonzini | void (*type_uint8)(Visitor *v, uint8_t *obj, const char *name, Error **errp); |
53 | 7edd63f1 | Paolo Bonzini | void (*type_uint16)(Visitor *v, uint16_t *obj, const char *name, Error **errp); |
54 | 7edd63f1 | Paolo Bonzini | void (*type_uint32)(Visitor *v, uint32_t *obj, const char *name, Error **errp); |
55 | 7edd63f1 | Paolo Bonzini | void (*type_uint64)(Visitor *v, uint64_t *obj, const char *name, Error **errp); |
56 | 7edd63f1 | Paolo Bonzini | void (*type_int8)(Visitor *v, int8_t *obj, const char *name, Error **errp); |
57 | 7edd63f1 | Paolo Bonzini | void (*type_int16)(Visitor *v, int16_t *obj, const char *name, Error **errp); |
58 | 7edd63f1 | Paolo Bonzini | void (*type_int32)(Visitor *v, int32_t *obj, const char *name, Error **errp); |
59 | 7edd63f1 | Paolo Bonzini | void (*type_int64)(Visitor *v, int64_t *obj, const char *name, Error **errp); |
60 | 7edd63f1 | Paolo Bonzini | /* visit_type_size() falls back to (*type_uint64)() if type_size is unset */
|
61 | 7edd63f1 | Paolo Bonzini | void (*type_size)(Visitor *v, uint64_t *obj, const char *name, Error **errp); |
62 | 7edd63f1 | Paolo Bonzini | }; |
63 | 7edd63f1 | Paolo Bonzini | |
64 | 0f71a1e0 | Paolo Bonzini | void input_type_enum(Visitor *v, int *obj, const char *strings[], |
65 | 0f71a1e0 | Paolo Bonzini | const char *kind, const char *name, Error **errp); |
66 | 0f71a1e0 | Paolo Bonzini | void output_type_enum(Visitor *v, int *obj, const char *strings[], |
67 | 0f71a1e0 | Paolo Bonzini | const char *kind, const char *name, Error **errp); |
68 | 0f71a1e0 | Paolo Bonzini | |
69 | 0f71a1e0 | Paolo Bonzini | #endif |