* 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