> > +#define DEFINE_PROP_UNSIGNED_DEPRECATED(_name, _state, _field, \
> > +                                        _defval, _prop, _type) \
> > +    DEFINE_PROP(_name, _state, _field, _prop, _type,           \
> > +                .set_default = true,                           \
> > +                .defval.u    = (_type)_defval,                 \
> > +                .flags       = OBJECT_PROPERTY_DEPRECATED)
> > +
> >  #define DEFINE_PROP_UNSIGNED_NODEFAULT(_name, _state, _field, _prop, 
> > _type) \
> 
> adding flags to the end of the names, basicaly spawns a lot of vartions of 
> the same macro,
> 
> perhaps it's time to just add flags field and consoladate existing 'flag 
> named' variants,
> the one won't need to introduce DEFINE_PROP_UNSIGNED_DEPRECATED at all,
> just use appropriate flag(s) when decaring property.

Good idea, what about this?

-#define DEFINE_PROP_UNSIGNED(_name, _state, _field, _defval, _prop, _type) \
-    DEFINE_PROP(_name, _state, _field, _prop, _type,                       \
-                .set_default = true,                                       \
-                .defval.u  = (_type)_defval)
+#define DEFINE_PROP_UNSIGNED(_name, _state, _field, _defval, _prop, _type, 
...) \
+    DEFINE_PROP(_name, _state, _field, _prop, _type,                           
 \
+                .set_default = true,                                           
 \
+                .defval.u  = (_type)_defval,                                   
 \
+                ##__VA_ARGS__)

...

-#define DEFINE_PROP_UINT8(_n, _s, _f, _d)                       \
-    DEFINE_PROP_UNSIGNED(_n, _s, _f, _d, qdev_prop_uint8, uint8_t)
+#define DEFINE_PROP_UINT8(_n, _s, _f, _d, ...)                       \
+    DEFINE_PROP_UNSIGNED(_n, _s, _f, _d, qdev_prop_uint8, uint8_t, 
##__VA_ARGS__)

Then we can mark a property as deprecated by:

DEFINE_PROP_UINT8("version", IOAPICCommonState, version, IOAPIC_VER_DEF,
                  .flags = OBJECT_PROPERTY_DEPRECATED),


Regards,
Zhao

Reply via email to