On Wed, Jul 01, 2015 at 06:09:59PM +0100, Frediano Ziglio wrote: > Verify that the attribute is known. This could help for instance to > avoid some future typo mistake. > Also we have a list of attributes we can comment. > > Signed-off-by: Frediano Ziglio <fziglio@xxxxxxxxxx> > --- > python_modules/ptypes.py | 69 ++++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 69 insertions(+) > > diff --git a/python_modules/ptypes.py b/python_modules/ptypes.py > index 845fa73..3a307ed 100644 > --- a/python_modules/ptypes.py > +++ b/python_modules/ptypes.py > @@ -62,11 +62,76 @@ class FixedSize: > # other members > propagated_attributes=["ptr_array", "nonnull", "chunk"] > > +valid_attributes={ > + # write to an array at end of structure "embedded/appended at the end of the structure" maybe ? > + 'end', > + # the C structure contain a pointer to data contains > + # for instance we want to write an array to an allocated array > + 'to_ptr', > + # write output to this C structure > + 'ctype', > + # prefix for flags/values enumerations > + 'prefix', > + # use in demarshaller to use directly data from message without copy > + 'nocopy', > + # store member array in a pointer > + # similar to to_ptr but has an additional argument as C field to > + # store length > + 'as_ptr', > + # do not generate marshal code > + # used for last members to be able to marshall them manually > + 'nomarshal', > + # ??? not used by python code Given the name, probably meant to annotate \0 strings, or NULL terminated char **, or stuff like that ? > + 'zero_terminated', > + 'marshall', > + # this pointer member cannot be null > + 'nonnull', > + # this flags member contains only a single flag 'flag' rather than 'flags' ? > + 'unique_flag', > + 'ptr_array', > + 'outvar', > + # C structure has anonymous member (used in switch) 'has an anonymous' > + 'anon', > + 'chunk', > + # this channel if conditional to an #ifdef I cannot really parse this one, could you reformulate ? > + 'ifdef', > + # write this member as zero on network > + 'zero', > + # specify minor version required for these members > + 'minor', > + 'bytes_count', > + # this attribute does not exists on the network, fill just structure with the value > + 'virtual', > + # for a switch this indicate that on network indicates Looks good otherwise > + # will occupy always same size (maximum size required for all members) > + 'fixedsize', > + # use 32 bit pointer > + 'ptr32', > +} > + > +attributes_with_arguments={ > + 'ctype', > + 'prefix', > + 'as_ptr', > + 'outvar', > + 'ifdef', > + 'minor', > + 'bytes_count', > + 'virtual', > +} > + > def fix_attributes(attribute_list): > attrs = {} > for attr in attribute_list: > name = attr[0][1:] > lst = attr[1:] > + if not name in valid_attributes: > + raise Exception("Attribute %s not recognized" % name) > + if not name in attributes_with_arguments: > + if len(lst) > 0: > + raise Exception("Attribute %s specified with options" % name) > + elif len(lst) > 1: > + raise Exception("Attribute %s has more than 1 argument" % name) > attrs[name] = lst > return attrs > > @@ -139,6 +204,8 @@ class Type: > _types_by_name[self.name] = self > > def has_attr(self, name): > + if not name in valid_attributes: > + raise Exception('attribute %s not expected' % name) > return name in self.attributes > > class TypeRef(Type): > @@ -522,6 +589,8 @@ class Containee: > return not self.is_switch() and self.member_type.is_primitive() > > def has_attr(self, name): > + if not name in valid_attributes: > + raise Exception('attribute %s not expected' % name) > return name in self.attributes > > def has_minor_attr(self): > -- > 2.1.0 > > _______________________________________________ > Spice-devel mailing list > Spice-devel@xxxxxxxxxxxxxxxxxxxxx > http://lists.freedesktop.org/mailman/listinfo/spice-devel
Attachment:
pgpYDrFhyrdOr.pgp
Description: PGP signature
_______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/spice-devel