* include/libvirt/libvirt.h.in (virTypedParameterType) (VIR_TYPED_PARAM_FIELD_LENGTH, _virTypedParameter): New enum, macro, and type. (virSchedParameter, virBlkioParameter, virMemoryParameter): Rewrite in terms of a common type, while keeping all old public names for backwards compatibility. (struct _virSchedParameter, struct _virBlkioParameter) (struct _virMemoryParameter): Delete - these are private names. * python/generator.py (enum): Cope with the refactoring. --- include/libvirt/libvirt.h.in | 144 +++++++++++++++++++++++------------------ python/generator.py | 12 ++++ 2 files changed, 93 insertions(+), 63 deletions(-) diff --git a/include/libvirt/libvirt.h.in b/include/libvirt/libvirt.h.in index a174201..7cd6e13 100644 --- a/include/libvirt/libvirt.h.in +++ b/include/libvirt/libvirt.h.in @@ -281,18 +281,70 @@ struct _virNodeInfo { }; +/* Common data types shared among interfaces with name/type/value lists. */ + +/** + * virTypedParameterType: + * + * Express the type of a virTypedParameter + */ +typedef enum { + VIR_TYPED_PARAM_INT = 1, /* integer case */ + VIR_TYPED_PARAM_UINT = 2, /* unsigned integer case */ + VIR_TYPED_PARAM_LLONG = 3, /* long long case */ + VIR_TYPED_PARAM_ULLONG = 4, /* unsigned long long case */ + VIR_TYPED_PARAM_DOUBLE = 5, /* double case */ + VIR_TYPED_PARAM_BOOLEAN = 6 /* boolean(character) case */ +} virTypedParameterType; + +/** + * VIR_TYPED_PARAM_FIELD_LENGTH: + * + * Macro providing the field length of virTypedParameter name + */ +#define VIR_TYPED_PARAM_FIELD_LENGTH 80 + +/** + * virTypedParameter: + * + * A named parameter, including a type and value. + */ +typedef struct _virTypedParameter virTypedParameter; + +struct _virTypedParameter { + char field[VIR_TYPED_PARAM_FIELD_LENGTH]; /* parameter name */ + int type; /* parameter type, virTypedParameterType */ + union { + int i; /* type is INT */ + unsigned int ui; /* type is UINT */ + long long int l; /* type is LLONG */ + unsigned long long int ul; /* type is ULLONG */ + double d; /* type is DOUBLE */ + char b; /* type is BOOLEAN */ + } value; /* parameter value */ +}; + +/** + * virTypedParameterPtr: + * + * a pointer to a virTypedParameter structure. + */ +typedef virTypedParameter *virTypedParameterPtr; + +/* Management of scheduler parameters */ + /** * virDomainSchedParameterType: * * A scheduler parameter field type */ typedef enum { - VIR_DOMAIN_SCHED_FIELD_INT = 1, /* integer case */ - VIR_DOMAIN_SCHED_FIELD_UINT = 2, /* unsigned integer case */ - VIR_DOMAIN_SCHED_FIELD_LLONG = 3, /* long long case */ - VIR_DOMAIN_SCHED_FIELD_ULLONG = 4, /* unsigned long long case */ - VIR_DOMAIN_SCHED_FIELD_DOUBLE = 5, /* double case */ - VIR_DOMAIN_SCHED_FIELD_BOOLEAN = 6 /* boolean(character) case */ + VIR_DOMAIN_SCHED_FIELD_INT = VIR_TYPED_PARAM_INT, + VIR_DOMAIN_SCHED_FIELD_UINT = VIR_TYPED_PARAM_UINT, + VIR_DOMAIN_SCHED_FIELD_LLONG = VIR_TYPED_PARAM_LLONG, + VIR_DOMAIN_SCHED_FIELD_ULLONG = VIR_TYPED_PARAM_ULLONG, + VIR_DOMAIN_SCHED_FIELD_DOUBLE = VIR_TYPED_PARAM_DOUBLE, + VIR_DOMAIN_SCHED_FIELD_BOOLEAN = VIR_TYPED_PARAM_BOOLEAN, } virSchedParameterType; typedef enum { @@ -307,7 +359,7 @@ typedef enum { * Macro providing the field length of virSchedParameter */ -#define VIR_DOMAIN_SCHED_FIELD_LENGTH 80 +#define VIR_DOMAIN_SCHED_FIELD_LENGTH VIR_TYPED_PARAM_FIELD_LENGTH /** * virDomainSchedParameter: @@ -315,20 +367,7 @@ typedef enum { * a virDomainSchedParameter is the set of scheduler parameters */ -typedef struct _virSchedParameter virSchedParameter; - -struct _virSchedParameter { - char field[VIR_DOMAIN_SCHED_FIELD_LENGTH]; /* parameter name */ - int type; /* parameter type */ - union { - int i; /* data for integer case */ - unsigned int ui; /* data for unsigned integer case */ - long long int l; /* data for long long integer case */ - unsigned long long int ul; /* data for unsigned long long integer case */ - double d; /* data for double case */ - char b; /* data for char case */ - } value; /* parameter value */ -}; +typedef struct _virTypedParameter virSchedParameter; /** * virSchedParameterPtr: @@ -758,18 +797,21 @@ int virDomainGetState (virDomainPtr domain, */ char * virDomainGetSchedulerType(virDomainPtr domain, int *nparams); + +/* Manage blkio parameters. */ + /** * virDomainBlkioParameterType: * * A blkio parameter field type */ typedef enum { - VIR_DOMAIN_BLKIO_PARAM_INT = 1, /* integer case */ - VIR_DOMAIN_BLKIO_PARAM_UINT = 2, /* unsigned integer case */ - VIR_DOMAIN_BLKIO_PARAM_LLONG = 3, /* long long case */ - VIR_DOMAIN_BLKIO_PARAM_ULLONG = 4, /* unsigned long long case */ - VIR_DOMAIN_BLKIO_PARAM_DOUBLE = 5, /* double case */ - VIR_DOMAIN_BLKIO_PARAM_BOOLEAN = 6 /* boolean(character) case */ + VIR_DOMAIN_BLKIO_PARAM_INT = VIR_TYPED_PARAM_INT, + VIR_DOMAIN_BLKIO_PARAM_UINT = VIR_TYPED_PARAM_UINT, + VIR_DOMAIN_BLKIO_PARAM_LLONG = VIR_TYPED_PARAM_LLONG, + VIR_DOMAIN_BLKIO_PARAM_ULLONG = VIR_TYPED_PARAM_ULLONG, + VIR_DOMAIN_BLKIO_PARAM_DOUBLE = VIR_TYPED_PARAM_DOUBLE, + VIR_DOMAIN_BLKIO_PARAM_BOOLEAN = VIR_TYPED_PARAM_BOOLEAN, } virBlkioParameterType; /** @@ -778,7 +820,7 @@ typedef enum { * Macro providing the field length of virBlkioParameter */ -#define VIR_DOMAIN_BLKIO_FIELD_LENGTH 80 +#define VIR_DOMAIN_BLKIO_FIELD_LENGTH VIR_TYPED_PARAM_FIELD_LENGTH /** * VIR_DOMAIN_BLKIO_WEIGHT: @@ -795,20 +837,7 @@ typedef enum { * a virDomainBlkioParameter is the set of blkio parameters */ -typedef struct _virBlkioParameter virBlkioParameter; - -struct _virBlkioParameter { - char field[VIR_DOMAIN_BLKIO_FIELD_LENGTH]; /* parameter name */ - int type; /* parameter type */ - union { - int i; /* data for integer case */ - unsigned int ui; /* data for unsigned integer case */ - long long int l; /* data for long long integer case */ - unsigned long long int ul; /* data for unsigned long long integer case */ - double d; /* data for double case */ - char b; /* data for char case */ - } value; /* parameter value */ -}; +typedef struct _virTypedParameter virBlkioParameter; /** * virBlkioParameterPtr: @@ -826,18 +855,20 @@ int virDomainGetBlkioParameters(virDomainPtr domain, virBlkioParameterPtr params, int *nparams, unsigned int flags); +/* Manage memory parameters. */ + /** * virDomainMemoryParameterType: * * A memory parameter field type */ typedef enum { - VIR_DOMAIN_MEMORY_PARAM_INT = 1, /* integer case */ - VIR_DOMAIN_MEMORY_PARAM_UINT = 2, /* unsigned integer case */ - VIR_DOMAIN_MEMORY_PARAM_LLONG = 3, /* long long case */ - VIR_DOMAIN_MEMORY_PARAM_ULLONG = 4, /* unsigned long long case */ - VIR_DOMAIN_MEMORY_PARAM_DOUBLE = 5, /* double case */ - VIR_DOMAIN_MEMORY_PARAM_BOOLEAN = 6 /* boolean(character) case */ + VIR_DOMAIN_MEMORY_PARAM_INT = VIR_TYPED_PARAM_INT, + VIR_DOMAIN_MEMORY_PARAM_UINT = VIR_TYPED_PARAM_UINT, + VIR_DOMAIN_MEMORY_PARAM_LLONG = VIR_TYPED_PARAM_LLONG, + VIR_DOMAIN_MEMORY_PARAM_ULLONG = VIR_TYPED_PARAM_ULLONG, + VIR_DOMAIN_MEMORY_PARAM_DOUBLE = VIR_TYPED_PARAM_DOUBLE, + VIR_DOMAIN_MEMORY_PARAM_BOOLEAN = VIR_TYPED_PARAM_BOOLEAN, } virMemoryParameterType; /** @@ -846,7 +877,7 @@ typedef enum { * Macro providing the field length of virMemoryParameter */ -#define VIR_DOMAIN_MEMORY_FIELD_LENGTH 80 +#define VIR_DOMAIN_MEMORY_FIELD_LENGTH VIR_TYPED_PARAM_FIELD_LENGTH /** * VIR_DOMAIN_MEMORY_PARAM_UNLIMITED: @@ -899,20 +930,7 @@ typedef enum { * a virDomainMemoryParameter is the set of scheduler parameters */ -typedef struct _virMemoryParameter virMemoryParameter; - -struct _virMemoryParameter { - char field[VIR_DOMAIN_MEMORY_FIELD_LENGTH]; /* parameter name */ - int type; /* parameter type */ - union { - int i; /* data for integer case */ - unsigned int ui; /* data for unsigned integer case */ - long long int l; /* data for long long integer case */ - unsigned long long int ul; /* data for unsigned long long integer case */ - double d; /* data for double case */ - char b; /* data for char case */ - } value; /* parameter value */ -}; +typedef struct _virTypedParameter virMemoryParameter; /** * virMemoryParameterPtr: diff --git a/python/generator.py b/python/generator.py index 9f9deb2..1741bba 100755 --- a/python/generator.py +++ b/python/generator.py @@ -154,6 +154,18 @@ def function(name, desc, ret, args, file, cond): def enum(type, name, value): if not enums.has_key(type): enums[type] = {} + if value == 'VIR_TYPED_PARAM_INT': + value = 1 + elif value == 'VIR_TYPED_PARAM_UINT': + value = 2 + elif value == 'VIR_TYPED_PARAM_LLONG': + value = 3 + elif value == 'VIR_TYPED_PARAM_ULLONG': + value = 4 + elif value == 'VIR_TYPED_PARAM_DOUBLE': + value = 5 + elif value == 'VIR_TYPED_PARAM_BOOLEAN': + value = 6 enums[type][name] = value ####################################################################### -- 1.7.4.4 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list