From 2e4450ff432daef524cb3557fca68a3b7b5c7823 Mon Sep 17 00:00:00 2001 From: "Daniel P. Berrange" Date: Wed, 13 May 2015 17:14:07 +0100 Subject: [PATCH] qom: Make enum string tables const-correct MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The enum string table parameters in various QOM/QAPI methods are declared 'const char *strings[]'. This results in const warnings if passed a variable that was declared as static const char * const strings[] = { .... }; Add the extra const annotation to the parameters, since neither the string elements, nor the array itself should ever be modified. Signed-off-by: Daniel P. Berrange Reviewed-by: Eric Blake Signed-off-by: Andreas Färber --- include/hw/qdev-core.h | 2 +- include/qapi/util.h | 2 +- include/qapi/visitor-impl.h | 6 +++--- include/qapi/visitor.h | 2 +- include/qom/object.h | 2 +- qapi/qapi-dealloc-visitor.c | 3 ++- qapi/qapi-util.c | 2 +- qapi/qapi-visit-core.c | 6 +++--- qom/object.c | 2 +- scripts/qapi-types.py | 4 ++-- 10 files changed, 16 insertions(+), 15 deletions(-) diff --git a/include/hw/qdev-core.h b/include/hw/qdev-core.h index d4be92fbee..ad9eb89e59 100644 --- a/include/hw/qdev-core.h +++ b/include/hw/qdev-core.h @@ -236,7 +236,7 @@ struct Property { struct PropertyInfo { const char *name; const char *description; - const char **enum_table; + const char * const *enum_table; int (*print)(DeviceState *dev, Property *prop, char *dest, size_t len); ObjectPropertyAccessor *get; ObjectPropertyAccessor *set; diff --git a/include/qapi/util.h b/include/qapi/util.h index de9238bf95..7ad26c0aca 100644 --- a/include/qapi/util.h +++ b/include/qapi/util.h @@ -11,7 +11,7 @@ #ifndef QAPI_UTIL_H #define QAPI_UTIL_H -int qapi_enum_parse(const char *lookup[], const char *buf, +int qapi_enum_parse(const char * const lookup[], const char *buf, int max, int def, Error **errp); #endif diff --git a/include/qapi/visitor-impl.h b/include/qapi/visitor-impl.h index 09bb0fd408..f4a2f746c8 100644 --- a/include/qapi/visitor-impl.h +++ b/include/qapi/visitor-impl.h @@ -30,7 +30,7 @@ struct Visitor GenericList *(*next_list)(Visitor *v, GenericList **list, Error **errp); void (*end_list)(Visitor *v, Error **errp); - void (*type_enum)(Visitor *v, int *obj, const char *strings[], + void (*type_enum)(Visitor *v, int *obj, const char * const strings[], const char *kind, const char *name, Error **errp); void (*get_next_type)(Visitor *v, int *kind, const int *qobjects, const char *name, Error **errp); @@ -59,9 +59,9 @@ struct Visitor void (*end_union)(Visitor *v, bool data_present, Error **errp); }; -void input_type_enum(Visitor *v, int *obj, const char *strings[], +void input_type_enum(Visitor *v, int *obj, const char * const strings[], const char *kind, const char *name, Error **errp); -void output_type_enum(Visitor *v, int *obj, const char *strings[], +void output_type_enum(Visitor *v, int *obj, const char * const strings[], const char *kind, const char *name, Error **errp); #endif diff --git a/include/qapi/visitor.h b/include/qapi/visitor.h index 5934f59ad8..00ba104cd4 100644 --- a/include/qapi/visitor.h +++ b/include/qapi/visitor.h @@ -43,7 +43,7 @@ void visit_optional(Visitor *v, bool *present, const char *name, Error **errp); void visit_get_next_type(Visitor *v, int *obj, const int *qtypes, const char *name, Error **errp); -void visit_type_enum(Visitor *v, int *obj, const char *strings[], +void visit_type_enum(Visitor *v, int *obj, const char * const strings[], const char *kind, const char *name, Error **errp); void visit_type_int(Visitor *v, int64_t *obj, const char *name, Error **errp); void visit_type_uint8(Visitor *v, uint8_t *obj, const char *name, Error **errp); diff --git a/include/qom/object.h b/include/qom/object.h index 018e27eb0c..701b4c57e7 100644 --- a/include/qom/object.h +++ b/include/qom/object.h @@ -1081,7 +1081,7 @@ int64_t object_property_get_int(Object *obj, const char *name, * an enum). */ int object_property_get_enum(Object *obj, const char *name, - const char *strings[], Error **errp); + const char * const strings[], Error **errp); /** * object_property_get_uint16List: diff --git a/qapi/qapi-dealloc-visitor.c b/qapi/qapi-dealloc-visitor.c index a14a1c7146..d7f92c5d68 100644 --- a/qapi/qapi-dealloc-visitor.c +++ b/qapi/qapi-dealloc-visitor.c @@ -156,7 +156,8 @@ static void qapi_dealloc_type_size(Visitor *v, uint64_t *obj, const char *name, { } -static void qapi_dealloc_type_enum(Visitor *v, int *obj, const char *strings[], +static void qapi_dealloc_type_enum(Visitor *v, int *obj, + const char * const strings[], const char *kind, const char *name, Error **errp) { diff --git a/qapi/qapi-util.c b/qapi/qapi-util.c index 1d8fb96eff..bcdc94d5a9 100644 --- a/qapi/qapi-util.c +++ b/qapi/qapi-util.c @@ -14,7 +14,7 @@ #include "qapi/error.h" #include "qapi/util.h" -int qapi_enum_parse(const char *lookup[], const char *buf, +int qapi_enum_parse(const char * const lookup[], const char *buf, int max, int def, Error **errp) { int i; diff --git a/qapi/qapi-visit-core.c b/qapi/qapi-visit-core.c index b66b93ae2b..a18ba1670f 100644 --- a/qapi/qapi-visit-core.c +++ b/qapi/qapi-visit-core.c @@ -89,7 +89,7 @@ void visit_get_next_type(Visitor *v, int *obj, const int *qtypes, } } -void visit_type_enum(Visitor *v, int *obj, const char *strings[], +void visit_type_enum(Visitor *v, int *obj, const char * const strings[], const char *kind, const char *name, Error **errp) { v->type_enum(v, obj, strings, kind, name, errp); @@ -260,7 +260,7 @@ void visit_type_number(Visitor *v, double *obj, const char *name, Error **errp) v->type_number(v, obj, name, errp); } -void output_type_enum(Visitor *v, int *obj, const char *strings[], +void output_type_enum(Visitor *v, int *obj, const char * const strings[], const char *kind, const char *name, Error **errp) { @@ -279,7 +279,7 @@ void output_type_enum(Visitor *v, int *obj, const char *strings[], visit_type_str(v, &enum_str, name, errp); } -void input_type_enum(Visitor *v, int *obj, const char *strings[], +void input_type_enum(Visitor *v, int *obj, const char * const strings[], const char *kind, const char *name, Error **errp) { diff --git a/qom/object.c b/qom/object.c index dd82287a57..523307d839 100644 --- a/qom/object.c +++ b/qom/object.c @@ -1070,7 +1070,7 @@ int64_t object_property_get_int(Object *obj, const char *name, } int object_property_get_enum(Object *obj, const char *name, - const char *strings[], Error **errp) + const char * const strings[], Error **errp) { StringOutputVisitor *sov; StringInputVisitor *siv; diff --git a/scripts/qapi-types.py b/scripts/qapi-types.py index d28a6b07be..e6eb4b613a 100644 --- a/scripts/qapi-types.py +++ b/scripts/qapi-types.py @@ -105,7 +105,7 @@ struct %(name)s def generate_enum_lookup(name, values): ret = mcgen(''' -const char *%(name)s_lookup[] = { +const char * const %(name)s_lookup[] = { ''', name=c_name(name)) i = 0 @@ -128,7 +128,7 @@ const char *%(name)s_lookup[] = { def generate_enum(name, values): name = c_name(name) lookup_decl = mcgen(''' -extern const char *%(name)s_lookup[]; +extern const char * const %(name)s_lookup[]; ''', name=name)