Eric Blake <ebl...@redhat.com> writes: > QAPISchemaType.c_type() was a bit awkward. Rather than having two > optional orthogonal boolean flags that should never both be true, > and where all callers should pass a compile-time constant (well, > our use of is_unboxed wasn't constant, but a future patch is about > to remove the special case for simple unions, so we can live with > the churn of refactoring the code in the meantime), the more > object-oriented approach uses different method names that can be > overridden as needed, and which convey the intent by the method > name. The caller just makes sure to use the right variant, rather > than having to worry about boolean flags. > > It requires slightly more Python, but is arguably easier to read.
The second sentence is rather long. Suggest: QAPISchemaType.c_type() is a bit awkward: it takes two optional boolean flags is_param and is_unboxed that should never both be true. Add a new method for each of the flags, and drop the flags from c_type(). Most calls pass no flags. They remain unchanged. One call passes is_param=True. Call new .c_param_type() instead. One call passes is_unboxed=True except for simple union types. This is actually an ugly special case that should go away soon. Until then, we now have to call either .c_type() or the new .c_unboxed_type(). Tolerable. > Suggested-by: Markus Armbruster <arm...@redhat.com> > Signed-off-by: Eric Blake <ebl...@redhat.com> Patch looks good.