]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/libvirt.git/commitdiff
libvirt.h: consolidate typed parameter handling
authorEric Blake <eblake@redhat.com>
Tue, 17 May 2011 17:44:53 +0000 (11:44 -0600)
committerEric Blake <eblake@redhat.com>
Wed, 18 May 2011 14:40:28 +0000 (08:40 -0600)
The new type is identical to the three old types that it replaces,
and by creating a common type, this allows future patches to share
common code that manipulates typed parameters.

This change is backwards-compatible in API (recompilation works
without any edits) and ABI (an older client that has not been
recompiled uses the same layout) for code using only public
names; only code using private names (those beginning with _)
will have to adapt.

* 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
python/generator.py

index a174201b871d5956ef1fccf4161211bfbf206341..7cd6e1377fe30addd9d6591ba6b459021bf4d25b 100644 (file)
@@ -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:
index 9f9deb290e95fbeaf63caf1b2fd34fb66f7d9318..1741bba66940369e498c7c7aaff8d782034675f5 100755 (executable)
@@ -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
 
 #######################################################################