[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v4 20/21] libxlu: introduce new APIs
These APIs can be used to manipulate XLU_ConfigValue and XLU_ConfigList. APIs introduced: 1. xlu_cfg_value_type 2. xlu_cfg_value_get_string 3. xlu_cfg_value_get_list 4. xlu_cfg_get_listitem2 Move some definitions from private header to public header as needed. Signed-off-by: Wei Liu <wei.liu2@xxxxxxxxxx> Cc: Ian Jackson <ian.jackson@xxxxxxxxxxxxx> Cc: Ian Campbell <ian.campbell@xxxxxxxxxx> --- tools/libxl/libxlu_cfg.c | 25 +++++++++++++++++++++++++ tools/libxl/libxlu_internal.h | 7 ------- tools/libxl/libxlutil.h | 11 +++++++++++ 3 files changed, 36 insertions(+), 7 deletions(-) diff --git a/tools/libxl/libxlu_cfg.c b/tools/libxl/libxlu_cfg.c index e072046..edb1d67 100644 --- a/tools/libxl/libxlu_cfg.c +++ b/tools/libxl/libxlu_cfg.c @@ -199,6 +199,31 @@ static int find_atom(const XLU_Config *cfg, const char *n, return 0; } + +enum XLU_ConfigValueType xlu_cfg_value_type(const XLU_ConfigValue *value) +{ + return value->type; +} + +const char *xlu_cfg_value_get_string(const XLU_ConfigValue *value) +{ + assert(value->type == XLU_STRING); + return value->u.string; +} + +const XLU_ConfigList *xlu_cfg_value_get_list(const XLU_ConfigValue *value) +{ + assert(value->type == XLU_LIST); + return &value->u.list; +} + +const XLU_ConfigValue *xlu_cfg_get_listitem2(const XLU_ConfigList *list, + int entry) +{ + if (entry < 0 || entry >= list->nvalues) return NULL; + return list->values[entry]; +} + int xlu_cfg_get_string(const XLU_Config *cfg, const char *n, const char **value_r, int dont_warn) { XLU_ConfigSetting *set; diff --git a/tools/libxl/libxlu_internal.h b/tools/libxl/libxlu_internal.h index 3f4ef80..db86369 100644 --- a/tools/libxl/libxlu_internal.h +++ b/tools/libxl/libxlu_internal.h @@ -25,13 +25,6 @@ #include "libxlutil.h" -enum XLU_ConfigValueType { - XLU_STRING, - XLU_LIST, -}; - -typedef struct XLU_ConfigValue XLU_ConfigValue; - typedef struct XLU_ConfigList { int nvalues; XLU_ConfigValue **values; diff --git a/tools/libxl/libxlutil.h b/tools/libxl/libxlutil.h index 0333e55..893ec0e 100644 --- a/tools/libxl/libxlutil.h +++ b/tools/libxl/libxlutil.h @@ -20,9 +20,15 @@ #include "libxl.h" +enum XLU_ConfigValueType { + XLU_STRING, + XLU_LIST, +}; + /* Unless otherwise stated, all functions return an errno value. */ typedef struct XLU_Config XLU_Config; typedef struct XLU_ConfigList XLU_ConfigList; +typedef struct XLU_ConfigValue XLU_ConfigValue; XLU_Config *xlu_cfg_init(FILE *report, const char *report_filename); /* 0 means we got ENOMEM. */ @@ -66,6 +72,11 @@ const char *xlu_cfg_get_listitem(const XLU_ConfigList*, int entry); /* xlu_cfg_get_listitem cannot fail, except that if entry is * out of range it returns 0 (not setting errno) */ +enum XLU_ConfigValueType xlu_cfg_value_type(const XLU_ConfigValue *value); +const char *xlu_cfg_value_get_string(const XLU_ConfigValue *value); +const XLU_ConfigList *xlu_cfg_value_get_list(const XLU_ConfigValue *value); +const XLU_ConfigValue *xlu_cfg_get_listitem2(const XLU_ConfigList *list, + int entry); /* * Disk specification parsing. -- 1.7.10.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |