diff options
author | David Cournapeau <cournape@gmail.com> | 2009-10-08 13:47:27 +0000 |
---|---|---|
committer | David Cournapeau <cournape@gmail.com> | 2009-10-08 13:47:27 +0000 |
commit | 52738fdb4a4882da6ac252a913e057cc984c7747 (patch) | |
tree | 56130799fdece9e678c7d368979aa5e26b0ae5db | |
parent | fba5fcddfdfd8f04a6d78896259cb4ff470dc608 (diff) | |
download | numpy-52738fdb4a4882da6ac252a913e057cc984c7747.tar.gz |
ENH: generate first types decl from the type dict.
-rw-r--r-- | numpy/core/code_generators/generate_numpy_api.py | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/numpy/core/code_generators/generate_numpy_api.py b/numpy/core/code_generators/generate_numpy_api.py index 596fbc567..d03797eb7 100644 --- a/numpy/core/code_generators/generate_numpy_api.py +++ b/numpy/core/code_generators/generate_numpy_api.py @@ -1,6 +1,8 @@ import os import genapi +import numpy_api + # new_types are types added later on, for which the offset in the API function # pointer array should be different (to avoid breaking the ABI). new_types = ['TimeInteger', 'Datetime', 'Timedelta'] @@ -211,6 +213,13 @@ class Type: self.ptr_cast, self.index) +def order_dict(d): + """Order dict by its values.""" + o = d.items() + def cmp(x, y): + return x[1] - y[1] + return sorted(o, cmp=cmp) + def do_generate_api(targets, sources): header_file = targets[0] c_file = targets[1] @@ -229,13 +238,14 @@ def do_generate_api(targets, sources): #define %s (*(%s (*)(%s)) PyArray_API[0]) """ % (first_func.name, first_func.return_type, first_func.argtypes_string()) - first_types = [ - Type('PyBigArray_Type', 1, 'PyTypeObject'), - Type('PyArray_Type', 2, 'PyTypeObject'), - Type('PyArrayDescr_Type', 3, 'PyTypeObject'), - Type('PyArrayFlags_Type', 4, 'PyTypeObject'), - Type('PyArrayIter_Type', 5, 'PyTypeObject'), - Type('PyArrayMultiIter_Type', 6, 'PyTypeObject')] + # Handle original types + multiarray_types = numpy_api.multiarray_types_api + ordered_types_api = order_dict(multiarray_types) + + first_types = [] + for i in range(6): + name, index = ordered_types_api.pop(0) + first_types.append(Type(name, index, 'PyTypeObject')) for t in first_types: beg_api += "%s\n" % t.decl_str() |