summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCharles Harris <charlesr.harris@gmail.com>2008-05-24 23:04:06 +0000
committerCharles Harris <charlesr.harris@gmail.com>2008-05-24 23:04:06 +0000
commit4acc46e218883af4f32fd4d714abb0e8876bc146 (patch)
tree5666ec1e9855aba8957ec78ad8aab8d3a827623d
parent7deec36fadb821155148f061ec0a9c0fc89ee556 (diff)
downloadnumpy-4acc46e218883af4f32fd4d714abb0e8876bc146.tar.gz
Delete generate_array_api.py
-rw-r--r--numpy/core/code_generators/generate_array_api.py193
1 files changed, 0 insertions, 193 deletions
diff --git a/numpy/core/code_generators/generate_array_api.py b/numpy/core/code_generators/generate_array_api.py
deleted file mode 100644
index 9cbc317ac..000000000
--- a/numpy/core/code_generators/generate_array_api.py
+++ /dev/null
@@ -1,193 +0,0 @@
-import os
-import genapi
-
-types = ['Generic','Number','Integer','SignedInteger','UnsignedInteger',
- 'Inexact',
- 'Floating', 'ComplexFloating', 'Flexible', 'Character',
- 'Byte','Short','Int', 'Long', 'LongLong', 'UByte', 'UShort',
- 'UInt', 'ULong', 'ULongLong', 'Float', 'Double', 'LongDouble',
- 'CFloat', 'CDouble', 'CLongDouble', 'Object', 'String', 'Unicode',
- 'Void']
-
-h_template = r"""
-#ifdef _MULTIARRAYMODULE
-
-typedef struct {
- PyObject_HEAD
- npy_bool obval;
-} PyBoolScalarObject;
-
-
-static unsigned int PyArray_GetNDArrayCVersion (void);
-static PyTypeObject PyBigArray_Type;
-static PyTypeObject PyArray_Type;
-static PyTypeObject PyArrayDescr_Type;
-static PyTypeObject PyArrayFlags_Type;
-static PyTypeObject PyArrayIter_Type;
-static PyTypeObject PyArrayMapIter_Type;
-static PyTypeObject PyArrayMultiIter_Type;
-static int NPY_NUMUSERTYPES=0;
-static PyTypeObject PyBoolArrType_Type;
-static PyBoolScalarObject _PyArrayScalar_BoolValues[2];
-
-%s
-
-#else
-
-#if defined(PY_ARRAY_UNIQUE_SYMBOL)
-#define PyArray_API PY_ARRAY_UNIQUE_SYMBOL
-#endif
-
-#if defined(NO_IMPORT) || defined(NO_IMPORT_ARRAY)
-extern void **PyArray_API;
-#else
-#if defined(PY_ARRAY_UNIQUE_SYMBOL)
-void **PyArray_API;
-#else
-static void **PyArray_API=NULL;
-#endif
-#endif
-
-#define PyArray_GetNDArrayCVersion (*(unsigned int (*)(void)) PyArray_API[0])
-#define PyBigArray_Type (*(PyTypeObject *)PyArray_API[1])
-#define PyArray_Type (*(PyTypeObject *)PyArray_API[2])
-#define PyArrayDescr_Type (*(PyTypeObject *)PyArray_API[3])
-#define PyArrayFlags_Type (*(PyTypeObject *)PyArray_API[4])
-#define PyArrayIter_Type (*(PyTypeObject *)PyArray_API[5])
-#define PyArrayMultiIter_Type (*(PyTypeObject *)PyArray_API[6])
-#define NPY_NUMUSERTYPES (*(int *)PyArray_API[7])
-#define PyBoolArrType_Type (*(PyTypeObject *)PyArray_API[8])
-#define _PyArrayScalar_BoolValues ((PyBoolScalarObject *)PyArray_API[9])
-
-%s
-
-#if !defined(NO_IMPORT_ARRAY) && !defined(NO_IMPORT)
-static int
-_import_array(void)
-{
- PyObject *numpy = PyImport_ImportModule("numpy.core.multiarray");
- PyObject *c_api = NULL;
- if (numpy == NULL) return -1;
- c_api = PyObject_GetAttrString(numpy, "_ARRAY_API");
- if (c_api == NULL) {Py_DECREF(numpy); return -1;}
- if (PyCObject_Check(c_api)) {
- PyArray_API = (void **)PyCObject_AsVoidPtr(c_api);
- }
- Py_DECREF(c_api);
- Py_DECREF(numpy);
- if (PyArray_API == NULL) return -1;
- /* Perform runtime check of C API version */
- if (NPY_VERSION != PyArray_GetNDArrayCVersion()) {
- PyErr_Format(PyExc_RuntimeError, "module compiled against "\
- "version %%x of C-API but this version of numpy is %%x", \
- (int) NPY_VERSION, (int) PyArray_GetNDArrayCVersion());
- return -1;
- }
- return 0;
-}
-
-#define import_array() {if (_import_array() < 0) {PyErr_Print(); PyErr_SetString(PyExc_ImportError, "numpy.core.multiarray failed to import"); return; } }
-
-#define import_array1(ret) {if (_import_array() < 0) {PyErr_Print(); PyErr_SetString(PyExc_ImportError, "numpy.core.multiarray failed to import"); return ret; } }
-
-#define import_array2(msg, ret) {if (_import_array() < 0) {PyErr_Print(); PyErr_SetString(PyExc_ImportError, msg); return ret; } }
-
-#endif
-
-#endif
-"""
-
-
-c_template = r"""
-/* These pointers will be stored in the C-object for use in other
- extension modules
-*/
-
-void *PyArray_API[] = {
- (void *) PyArray_GetNDArrayCVersion,
- (void *) &PyBigArray_Type,
- (void *) &PyArray_Type,
- (void *) &PyArrayDescr_Type,
- (void *) &PyArrayFlags_Type,
- (void *) &PyArrayIter_Type,
- (void *) &PyArrayMultiIter_Type,
- (int *) &NPY_NUMUSERTYPES,
- (void *) &PyBoolArrType_Type,
- (void *) &_PyArrayScalar_BoolValues,
-%s
-};
-"""
-
-c_api_header = """
-===========
-Numpy C-API
-===========
-"""
-
-def generate_api(output_dir, force=False):
- basename = 'multiarray_api'
-
- h_file = os.path.join(output_dir, '__%s.h' % basename)
- c_file = os.path.join(output_dir, '__%s.c' % basename)
- d_file = os.path.join(output_dir, '%s.txt' % basename)
- targets = (h_file, c_file, d_file)
- sources = ['numpy_api_order.txt']
-
- if (not force and not genapi.should_rebuild(targets, sources + [__file__])):
- return targets
- else:
- do_generate_api(targets, sources)
-
- return targets
-
-def do_generate_api(targets, sources):
- header_file = targets[0]
- c_file = targets[1]
- doc_file = targets[2]
-
- numpyapi_list = genapi.get_api_functions('NUMPY_API', sources[0])
-
- # API fixes for __arrayobject_api.h
- fixed = 10
- numtypes = len(types) + fixed
-
- module_list = []
- extension_list = []
- init_list = []
-
- # setup types
- for k, atype in enumerate(types):
- num = fixed + k
- astr = " (void *) &Py%sArrType_Type," % types[k]
- init_list.append(astr)
- astr = "static PyTypeObject Py%sArrType_Type;" % types[k]
- module_list.append(astr)
- astr = "#define Py%sArrType_Type (*(PyTypeObject *)PyArray_API[%d])" % \
- (types[k], num)
- extension_list.append(astr)
-
- # set up object API
- genapi.add_api_list(numtypes, 'PyArray_API', numpyapi_list,
- module_list, extension_list, init_list)
-
- # Write to header
- fid = open(header_file, 'w')
- s = h_template % ('\n'.join(module_list), '\n'.join(extension_list))
- fid.write(s)
- fid.close()
-
- # Write to c-code
- fid = open(c_file, 'w')
- s = c_template % '\n'.join(init_list)
- fid.write(s)
- fid.close()
-
- # write to documentation
- fid = open(doc_file, 'w')
- fid.write(c_api_header)
- for func in numpyapi_list:
- fid.write(func.to_ReST())
- fid.write('\n\n')
- fid.close()
-
- return targets