|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [RFC v2 3/7] libxl: add PASS_BY_CONST_REFERENCE to idl
Currently, there is only support for PASS_BY_{REFERENCE,VALUE} in the IDL.
As a piece of adding function support, add logic for PASS_BY_CONST_REFERENCE
so that function generation code can use Type.make_arg() for function
signatures that require const reference parameters.
Signed-off-by: Nick Rosbrook <rosbrookn@xxxxxxxxxxxx>
---
tools/libs/light/idl.py | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/tools/libs/light/idl.py b/tools/libs/light/idl.py
index 20278c272a..a8a4768efc 100644
--- a/tools/libs/light/idl.py
+++ b/tools/libs/light/idl.py
@@ -4,6 +4,7 @@ import sys
PASS_BY_VALUE = 1
PASS_BY_REFERENCE = 2
+PASS_BY_CONST_REFERENCE = 3
DIR_NONE = 0
DIR_IN = 1
@@ -40,7 +41,7 @@ class Type(object):
raise ValueError
self.passby = kwargs.setdefault('passby', PASS_BY_VALUE)
- if self.passby not in [PASS_BY_VALUE, PASS_BY_REFERENCE]:
+ if self.passby not in [PASS_BY_VALUE, PASS_BY_REFERENCE,
PASS_BY_CONST_REFERENCE]:
raise ValueError
self.private = kwargs.setdefault('private', False)
@@ -109,6 +110,8 @@ class Type(object):
if passby == PASS_BY_REFERENCE:
return "%s *%s" % (self.typename, n)
+ elif passby == PASS_BY_CONST_REFERENCE:
+ return "const %s *%s" % (self.typename, n)
else:
return "%s %s" % (self.typename, n)
@@ -116,7 +119,7 @@ class Type(object):
if passby is None: passby = self.passby
if isref is None: isref = self.passby == PASS_BY_REFERENCE
- if passby == PASS_BY_REFERENCE:
+ if passby in [PASS_BY_REFERENCE, PASS_BY_CONST_REFERENCE]:
if isref:
return "%s" % (n)
else:
@@ -272,7 +275,7 @@ class KeyedUnion(Aggregate):
raise ValueError
kv_kwargs = dict([(x.lstrip('keyvar_'),y) for (x,y) in kwargs.items()
if x.startswith('keyvar_')])
-
+
self.keyvar = Field(keyvar_type, keyvar_name, **kv_kwargs)
for f in fields:
@@ -392,6 +395,7 @@ def parse(f):
elif isinstance(t,type(object)) and issubclass(t, Function):
globs[n] = t
elif n in ['PASS_BY_REFERENCE', 'PASS_BY_VALUE',
+ 'PASS_BY_CONST_REFERENCE',
'DIR_NONE', 'DIR_IN', 'DIR_OUT', 'DIR_BOTH',
'namespace', 'hidden']:
globs[n] = t
--
2.17.1
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |