| Index: third_party/cython/src/Cython/Utility/Printing.c
|
| diff --git a/third_party/cython/src/Cython/Utility/Printing.c b/third_party/cython/src/Cython/Utility/Printing.c
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..71aa7eafe95d64f82afe719c479e3aac32f0bd6c
|
| --- /dev/null
|
| +++ b/third_party/cython/src/Cython/Utility/Printing.c
|
| @@ -0,0 +1,176 @@
|
| +////////////////////// Print.proto //////////////////////
|
| +//@substitute: naming
|
| +
|
| +static int __Pyx_Print(PyObject*, PyObject *, int); /*proto*/
|
| +#if CYTHON_COMPILING_IN_PYPY || PY_MAJOR_VERSION >= 3
|
| +static PyObject* $print_function = 0;
|
| +static PyObject* $print_function_kwargs = 0;
|
| +#endif
|
| +
|
| +////////////////////// Print.cleanup //////////////////////
|
| +//@substitute: naming
|
| +
|
| +#if CYTHON_COMPILING_IN_PYPY || PY_MAJOR_VERSION >= 3
|
| +Py_CLEAR($print_function);
|
| +Py_CLEAR($print_function_kwargs);
|
| +#endif
|
| +
|
| +////////////////////// Print //////////////////////
|
| +//@substitute: naming
|
| +
|
| +#if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION < 3
|
| +static PyObject *__Pyx_GetStdout(void) {
|
| + PyObject *f = PySys_GetObject((char *)"stdout");
|
| + if (!f) {
|
| + PyErr_SetString(PyExc_RuntimeError, "lost sys.stdout");
|
| + }
|
| + return f;
|
| +}
|
| +
|
| +static int __Pyx_Print(PyObject* f, PyObject *arg_tuple, int newline) {
|
| + int i;
|
| +
|
| + if (!f) {
|
| + if (!(f = __Pyx_GetStdout()))
|
| + return -1;
|
| + }
|
| + Py_INCREF(f);
|
| + for (i=0; i < PyTuple_GET_SIZE(arg_tuple); i++) {
|
| + PyObject* v;
|
| + if (PyFile_SoftSpace(f, 1)) {
|
| + if (PyFile_WriteString(" ", f) < 0)
|
| + goto error;
|
| + }
|
| + v = PyTuple_GET_ITEM(arg_tuple, i);
|
| + if (PyFile_WriteObject(v, f, Py_PRINT_RAW) < 0)
|
| + goto error;
|
| + if (PyString_Check(v)) {
|
| + char *s = PyString_AsString(v);
|
| + Py_ssize_t len = PyString_Size(v);
|
| + if (len > 0) {
|
| + // append soft-space if necessary (not using isspace() due to C/C++ problem on MacOS-X)
|
| + switch (s[len-1]) {
|
| + case ' ': break;
|
| + case '\f': case '\r': case '\n': case '\t': case '\v':
|
| + PyFile_SoftSpace(f, 0);
|
| + break;
|
| + default: break;
|
| + }
|
| + }
|
| + }
|
| + }
|
| + if (newline) {
|
| + if (PyFile_WriteString("\n", f) < 0)
|
| + goto error;
|
| + PyFile_SoftSpace(f, 0);
|
| + }
|
| + Py_DECREF(f);
|
| + return 0;
|
| +error:
|
| + Py_DECREF(f);
|
| + return -1;
|
| +}
|
| +
|
| +#else /* Python 3 has a print function */
|
| +
|
| +static int __Pyx_Print(PyObject* stream, PyObject *arg_tuple, int newline) {
|
| + PyObject* kwargs = 0;
|
| + PyObject* result = 0;
|
| + PyObject* end_string;
|
| + if (unlikely(!$print_function)) {
|
| + $print_function = PyObject_GetAttr($builtins_cname, PYIDENT("print"));
|
| + if (!$print_function)
|
| + return -1;
|
| + }
|
| + if (stream) {
|
| + kwargs = PyDict_New();
|
| + if (unlikely(!kwargs))
|
| + return -1;
|
| + if (unlikely(PyDict_SetItem(kwargs, PYIDENT("file"), stream) < 0))
|
| + goto bad;
|
| + if (!newline) {
|
| + end_string = PyUnicode_FromStringAndSize(" ", 1);
|
| + if (unlikely(!end_string))
|
| + goto bad;
|
| + if (PyDict_SetItem(kwargs, PYIDENT("end"), end_string) < 0) {
|
| + Py_DECREF(end_string);
|
| + goto bad;
|
| + }
|
| + Py_DECREF(end_string);
|
| + }
|
| + } else if (!newline) {
|
| + if (unlikely(!$print_function_kwargs)) {
|
| + $print_function_kwargs = PyDict_New();
|
| + if (unlikely(!$print_function_kwargs))
|
| + return -1;
|
| + end_string = PyUnicode_FromStringAndSize(" ", 1);
|
| + if (unlikely(!end_string))
|
| + return -1;
|
| + if (PyDict_SetItem($print_function_kwargs, PYIDENT("end"), end_string) < 0) {
|
| + Py_DECREF(end_string);
|
| + return -1;
|
| + }
|
| + Py_DECREF(end_string);
|
| + }
|
| + kwargs = $print_function_kwargs;
|
| + }
|
| + result = PyObject_Call($print_function, arg_tuple, kwargs);
|
| + if (unlikely(kwargs) && (kwargs != $print_function_kwargs))
|
| + Py_DECREF(kwargs);
|
| + if (!result)
|
| + return -1;
|
| + Py_DECREF(result);
|
| + return 0;
|
| +bad:
|
| + if (kwargs != $print_function_kwargs)
|
| + Py_XDECREF(kwargs);
|
| + return -1;
|
| +}
|
| +#endif
|
| +
|
| +////////////////////// PrintOne.proto //////////////////////
|
| +//@requires: Print
|
| +
|
| +static int __Pyx_PrintOne(PyObject* stream, PyObject *o); /*proto*/
|
| +
|
| +////////////////////// PrintOne //////////////////////
|
| +
|
| +#if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION < 3
|
| +
|
| +static int __Pyx_PrintOne(PyObject* f, PyObject *o) {
|
| + if (!f) {
|
| + if (!(f = __Pyx_GetStdout()))
|
| + return -1;
|
| + }
|
| + Py_INCREF(f);
|
| + if (PyFile_SoftSpace(f, 0)) {
|
| + if (PyFile_WriteString(" ", f) < 0)
|
| + goto error;
|
| + }
|
| + if (PyFile_WriteObject(o, f, Py_PRINT_RAW) < 0)
|
| + goto error;
|
| + if (PyFile_WriteString("\n", f) < 0)
|
| + goto error;
|
| + Py_DECREF(f);
|
| + return 0;
|
| +error:
|
| + Py_DECREF(f);
|
| + return -1;
|
| + /* the line below is just to avoid C compiler
|
| + * warnings about unused functions */
|
| + return __Pyx_Print(f, NULL, 0);
|
| +}
|
| +
|
| +#else /* Python 3 has a print function */
|
| +
|
| +static int __Pyx_PrintOne(PyObject* stream, PyObject *o) {
|
| + int res;
|
| + PyObject* arg_tuple = PyTuple_Pack(1, o);
|
| + if (unlikely(!arg_tuple))
|
| + return -1;
|
| + res = __Pyx_Print(stream, arg_tuple, 1);
|
| + Py_DECREF(arg_tuple);
|
| + return res;
|
| +}
|
| +
|
| +#endif
|
|
|