xref: /qemu/include/hw/vmstate-if.h (revision 107b59698f79b323c4d111c46eb9e3db6f9d258b)
1*107b5969SMarc-André Lureau /*
2*107b5969SMarc-André Lureau  * VMState interface
3*107b5969SMarc-André Lureau  *
4*107b5969SMarc-André Lureau  * Copyright (c) 2009-2019 Red Hat Inc
5*107b5969SMarc-André Lureau  * This work is licensed under the terms of the GNU GPL, version 2 or later.
6*107b5969SMarc-André Lureau  * See the COPYING file in the top-level directory.
7*107b5969SMarc-André Lureau  */
8*107b5969SMarc-André Lureau 
9*107b5969SMarc-André Lureau #ifndef VMSTATE_IF_H
10*107b5969SMarc-André Lureau #define VMSTATE_IF_H
11*107b5969SMarc-André Lureau 
12*107b5969SMarc-André Lureau #include "qom/object.h"
13*107b5969SMarc-André Lureau 
14*107b5969SMarc-André Lureau #define TYPE_VMSTATE_IF "vmstate-if"
15*107b5969SMarc-André Lureau 
16*107b5969SMarc-André Lureau #define VMSTATE_IF_CLASS(klass)                                     \
17*107b5969SMarc-André Lureau     OBJECT_CLASS_CHECK(VMStateIfClass, (klass), TYPE_VMSTATE_IF)
18*107b5969SMarc-André Lureau #define VMSTATE_IF_GET_CLASS(obj)                           \
19*107b5969SMarc-André Lureau     OBJECT_GET_CLASS(VMStateIfClass, (obj), TYPE_VMSTATE_IF)
20*107b5969SMarc-André Lureau #define VMSTATE_IF(obj)                             \
21*107b5969SMarc-André Lureau     INTERFACE_CHECK(VMStateIf, (obj), TYPE_VMSTATE_IF)
22*107b5969SMarc-André Lureau 
23*107b5969SMarc-André Lureau typedef struct VMStateIf VMStateIf;
24*107b5969SMarc-André Lureau 
25*107b5969SMarc-André Lureau typedef struct VMStateIfClass {
26*107b5969SMarc-André Lureau     InterfaceClass parent_class;
27*107b5969SMarc-André Lureau 
28*107b5969SMarc-André Lureau     char * (*get_id)(VMStateIf *obj);
29*107b5969SMarc-André Lureau } VMStateIfClass;
30*107b5969SMarc-André Lureau 
31*107b5969SMarc-André Lureau static inline char *vmstate_if_get_id(VMStateIf *vmif)
32*107b5969SMarc-André Lureau {
33*107b5969SMarc-André Lureau     if (!vmif) {
34*107b5969SMarc-André Lureau         return NULL;
35*107b5969SMarc-André Lureau     }
36*107b5969SMarc-André Lureau 
37*107b5969SMarc-André Lureau     return VMSTATE_IF_GET_CLASS(vmif)->get_id(vmif);
38*107b5969SMarc-André Lureau }
39*107b5969SMarc-André Lureau 
40*107b5969SMarc-André Lureau #endif /* VMSTATE_IF_H */
41