summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Cournapeau <cournape@gmail.com>2009-10-08 13:51:37 +0000
committerDavid Cournapeau <cournape@gmail.com>2009-10-08 13:51:37 +0000
commitdc0960522dd532ef9916111ff4cc178c0a4bd489 (patch)
treebce1d4e93b74c178f54380c0b2fe7c5efb4d1666
parent0fbe4ede29cc438ebaf125bc5744681ecbead9aa (diff)
downloadnumpy-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.py25
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);" % \