Deleted Added
sdiff udiff text old ( 13714:35636064b7a1 ) new ( 13763:1adc93bf6a65 )
full compact
1# Copyright (c) 2017 ARM Limited
2# All rights reserved.
3#
4# The license below extends only to copyright in the software and shall
5# not be construed as granting a license to any other intellectual
6# property including but not limited to intellectual property relating
7# to a hardware implementation of the functionality of the software
8# licensed hereunder. You may use the software subject to the license

--- 44 unchanged lines hidden (view full) ---

53 self.cxx_name = cxx_name if cxx_name else name
54 self.writable = writable
55
56 def export(self, code, cname):
57 export = "def_readwrite" if self.writable else "def_readonly"
58 code('.${export}("${{self.name}}", &${cname}::${{self.cxx_name}})')
59
60class PyBindMethod(PyBindExport):
61 def __init__(self, name, cxx_name=None, args=None):
62 self.name = name
63 self.cxx_name = cxx_name if cxx_name else name
64 self.args = args
65
66 def _conv_arg(self, value):
67 if isinstance(value, bool):
68 return "true" if value else "false"
69 elif isinstance(value, (float, int)):
70 return repr(value)
71 else:
72 raise TypeError("Unsupported PyBind default value type")
73
74 def export(self, code, cname):
75 if self.args:
76 def get_arg_decl(arg):
77 if isinstance(arg, tuple):
78 name, default = arg
79 return 'py::arg("%s") = %s' % (
80 name, self._conv_arg(default))
81 else:
82 return 'py::arg("%s")' % arg
83
84 code('.def("${{self.name}}", &${cname}::${{self.name}}, ')
85 code(' ' + \
86 ', '.join([ get_arg_decl(a) for a in self.args ]) + ')')
87 else:
88 code('.def("${{self.name}}", &${cname}::${{self.cxx_name}})')