#include "longintrepr.h"
#include "boolobject.h"
#include "floatobject.h"
-#ifndef WITHOUT_COMPLEX
#include "complexobject.h"
-#endif
#include "rangeobject.h"
#include "memoryobject.h"
#include "tupleobject.h"
Core and Builtins
-----------------
+- Issue *7147: Remove support for compiling Python without complex number
+ support.
+
- Issue #7120: logging: Removed import of multiprocessing which is causing
crash in GAE.
#include <ieeefp.h>
#endif
-#ifndef WITHOUT_COMPLEX
-
/* elementary operations on complex numbers */
static Py_complex c_1 = {1., 0.};
complex_new, /* tp_new */
PyObject_Del, /* tp_free */
};
-
-#endif
if (PyType_Ready(&PyStaticMethod_Type) < 0)
Py_FatalError("Can't initialize static method type");
-#ifndef WITHOUT_COMPLEX
if (PyType_Ready(&PyComplex_Type) < 0)
Py_FatalError("Can't initialize complex type");
-#endif
+
if (PyType_Ready(&PyFloat_Type) < 0)
Py_FatalError("Can't initialize float type");
c = tok_nextc(tok);
if (c == '.')
goto fraction;
-#ifndef WITHOUT_COMPLEX
if (c == 'j' || c == 'J')
goto imaginary;
-#endif
if (c == 'x' || c == 'X') {
/* Hex */
goto fraction;
else if (c == 'e' || c == 'E')
goto exponent;
-#ifndef WITHOUT_COMPLEX
else if (c == 'j' || c == 'J')
goto imaginary;
-#endif
else if (nonzero) {
tok->done = E_TOKEN;
tok_backup(tok, c);
c = tok_nextc(tok);
} while (isdigit(c));
}
-#ifndef WITHOUT_COMPLEX
if (c == 'j' || c == 'J')
/* Imaginary part */
imaginary:
c = tok_nextc(tok);
-#endif
}
}
tok_backup(tok, c);
const char *end;
long x;
double dx;
-#ifndef WITHOUT_COMPLEX
Py_complex compl;
int imflag;
-#endif
assert(s != NULL);
errno = 0;
end = s + strlen(s) - 1;
-#ifndef WITHOUT_COMPLEX
imflag = *end == 'j' || *end == 'J';
-#endif
if (s[0] == '0') {
x = (long) PyOS_strtoul((char *)s, (char **)&end, 0);
if (x < 0 && errno == 0) {
return PyLong_FromLong(x);
}
/* XXX Huge floats may silently fail */
-#ifndef WITHOUT_COMPLEX
if (imflag) {
compl.real = 0.;
compl.imag = PyOS_string_to_double(s, (char **)&end, NULL);
return PyComplex_FromCComplex(compl);
}
else
-#endif
{
dx = PyOS_string_to_double(s, NULL, NULL);
if (dx == -1.0 && PyErr_Occurred())
SETBUILTIN("bytearray", &PyByteArray_Type);
SETBUILTIN("bytes", &PyBytes_Type);
SETBUILTIN("classmethod", &PyClassMethod_Type);
-#ifndef WITHOUT_COMPLEX
SETBUILTIN("complex", &PyComplex_Type);
-#endif
SETBUILTIN("dict", &PyDict_Type);
SETBUILTIN("enumerate", &PyEnum_Type);
SETBUILTIN("filter", &PyFilter_Type);
break;
}
-#ifndef WITHOUT_COMPLEX
case 'D': {/* complex double */
Py_complex *p = va_arg(*p_va, Py_complex *);
Py_complex cval;
*p = cval;
break;
}
-#endif /* WITHOUT_COMPLEX */
case 'c': {/* char */
char *p = va_arg(*p_va, char *);
#endif
case 'f': /* float */
case 'd': /* double */
-#ifndef WITHOUT_COMPLEX
case 'D': /* complex double */
-#endif
case 'c': /* char */
{
(void) va_arg(*p_va, void *);
PyMem_Free(buf);
}
}
-#ifndef WITHOUT_COMPLEX
else if (PyComplex_CheckExact(v)) {
if (p->version > 1) {
unsigned char buf[8];
PyMem_Free(buf);
}
}
-#endif
else if (PyBytes_CheckExact(v)) {
w_byte(TYPE_STRING, p);
n = PyBytes_GET_SIZE(v);
break;
}
-#ifndef WITHOUT_COMPLEX
case TYPE_COMPLEX:
{
char buf[256];
retval = PyComplex_FromCComplex(c);
break;
}
-#endif
case TYPE_STRING:
n = r_long(p);
return PyFloat_FromDouble(
(double)va_arg(*p_va, va_double));
-#ifndef WITHOUT_COMPLEX
case 'D':
return PyComplex_FromCComplex(
*((Py_complex *)va_arg(*p_va, Py_complex *)));
-#endif /* WITHOUT_COMPLEX */
case 'c':
{