[Spice-devel] [PATCH 07/33] codegen: Do some check on attributes
Christophe Fergeau
cfergeau at redhat.com
Mon Jul 20 11:10:48 PDT 2015
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 at redhat.com>
> ---
> 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 at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/spice-devel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/spice-devel/attachments/20150720/d8755c02/attachment.sig>
More information about the Spice-devel
mailing list