diff options
author | David Cournapeau <cournape@gmail.com> | 2009-10-08 13:51:37 +0000 |
---|---|---|
committer | David Cournapeau <cournape@gmail.com> | 2009-10-08 13:51:37 +0000 |
commit | dc0960522dd532ef9916111ff4cc178c0a4bd489 (patch) | |
tree | bce1d4e93b74c178f54380c0b2fe7c5efb4d1666 | |
parent | 0fbe4ede29cc438ebaf125bc5744681ecbead9aa (diff) | |
download | numpy-dc0960522dd532ef9916111ff4cc178c0a4bd489.tar.gz |
ENH: Add a FunctionApi class to handle functions when generating multiarray api boilerplate.
-rw-r--r-- | numpy/core/code_generators/generate_numpy_api.py | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/numpy/core/code_generators/generate_numpy_api.py b/numpy/core/code_generators/generate_numpy_api.py index 622abbd2b..14f98e78d 100644 --- a/numpy/core/code_generators/generate_numpy_api.py +++ b/numpy/core/code_generators/generate_numpy_api.py @@ -213,6 +213,31 @@ class BoolValuesApi: self.type, self.index) +def _repl(str): + return str.replace('intp', 'npy_intp').replace('Bool','npy_bool') + +class FunctionApi: + def __init__(self, name, index, return_type, args): + self.name = name + self.index = index + self.return_type = return_type + self.args = args + + def _argtypes_string(self): + if not self.args: + return 'void' + argstr = ', '.join([_repl(a[0]) for a in self.args]) + return argstr + + def define_from_array_api_string(self): + define = """\ +#define %s \\\n (*(%s (*)(%s)) \\ + PyArray_API[%d])""" % (self.name, + self.return_type, + self._argtypes_string(), + self.index) + return define + def generate_api_func(func, index, api_name): # Declaration used internally by numpy intern_decl = "NPY_NO_EXPORT %s %s \\\n (%s);" % \ |