On 17/04/2015 16:22, Daniel P. Berrange wrote: > 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 <berra...@redhat.com> > --- > 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 4e673f9..913963e 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 de9238b..7ad26c0 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 09bb0fd..f4a2f74 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 5934f59..00ba104 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 223b577..dfdba2f 100644 > --- a/include/qom/object.h > +++ b/include/qom/object.h > @@ -1011,7 +1011,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 a14a1c7..d7f92c5 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 1d8fb96..bcdc94d 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 b66b93a..a18ba16 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 29c7aea..2534398 100644 > --- a/qom/object.c > +++ b/qom/object.c > @@ -1025,7 +1025,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 db87218..c8d6db6 100644 > --- a/scripts/qapi-types.py > +++ b/scripts/qapi-types.py > @@ -118,7 +118,7 @@ struct %(name)s > > def generate_enum_lookup(name, values): > ret = mcgen(''' > -const char *%(name)s_lookup[] = { > +const char * const %(name)s_lookup[] = { > ''', > name=name) > i = 0 > @@ -140,7 +140,7 @@ const char *%(name)s_lookup[] = { > > def generate_enum(name, values): > lookup_decl = mcgen(''' > -extern const char *%(name)s_lookup[]; > +extern const char * const %(name)s_lookup[]; > ''', > name=name) > >
Reviewed-by: Paolo Bonzini <pbonz...@redhat.com>