pybind.py (13763:1adc93bf6a65) pybind.py (14061:bd3e8e7a983d)
1# Copyright (c) 2017 ARM Limited
1# Copyright (c) 2017, 2019 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
9# terms below provided that you ensure that this notice is replicated

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

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,
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
9# terms below provided that you ensure that this notice is replicated

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

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 return_value_policy=None):
62 return_value_policy=None, static=False):
63 self.name = name
64 self.cxx_name = cxx_name if cxx_name else name
65 self.args = args
66 self.return_value_policy = return_value_policy
63 self.name = name
64 self.cxx_name = cxx_name if cxx_name else name
65 self.args = args
66 self.return_value_policy = return_value_policy
67 self.method_def = 'def_static' if static else 'def'
67
68 def _conv_arg(self, value):
69 if isinstance(value, bool):
70 return "true" if value else "false"
71 elif isinstance(value, (float, int)):
72 return repr(value)
73 else:
74 raise TypeError("Unsupported PyBind default value type")

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

83 if isinstance(arg, tuple):
84 name, default = arg
85 return 'py::arg("%s") = %s' % (
86 name, self._conv_arg(default))
87 else:
88 return 'py::arg("%s")' % arg
89
90 arguments.extend(list([ get_arg_decl(a) for a in self.args ]))
68
69 def _conv_arg(self, value):
70 if isinstance(value, bool):
71 return "true" if value else "false"
72 elif isinstance(value, (float, int)):
73 return repr(value)
74 else:
75 raise TypeError("Unsupported PyBind default value type")

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

84 if isinstance(arg, tuple):
85 name, default = arg
86 return 'py::arg("%s") = %s' % (
87 name, self._conv_arg(default))
88 else:
89 return 'py::arg("%s")' % arg
90
91 arguments.extend(list([ get_arg_decl(a) for a in self.args ]))
91 code('.def(' + ', '.join(arguments) + ')')
92 code('.' + self.method_def + '(' + ', '.join(arguments) + ')')