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 <[email protected]> > --- > 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
> [email protected]
> http://lists.freedesktop.org/mailman/listinfo/spice-devel
pgpC8EIsDDXT6.pgp
Description: PGP signature
_______________________________________________ Spice-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/spice-devel
