aboutsummaryrefslogtreecommitdiff
path: root/catapult/common/py_vulcanize/third_party/rjsmin/_setup/include/cext.h
diff options
context:
space:
mode:
Diffstat (limited to 'catapult/common/py_vulcanize/third_party/rjsmin/_setup/include/cext.h')
-rw-r--r--catapult/common/py_vulcanize/third_party/rjsmin/_setup/include/cext.h286
1 files changed, 286 insertions, 0 deletions
diff --git a/catapult/common/py_vulcanize/third_party/rjsmin/_setup/include/cext.h b/catapult/common/py_vulcanize/third_party/rjsmin/_setup/include/cext.h
new file mode 100644
index 00000000..78fa7f53
--- /dev/null
+++ b/catapult/common/py_vulcanize/third_party/rjsmin/_setup/include/cext.h
@@ -0,0 +1,286 @@
+/*
+ * Copyright 2006 - 2014
+ * Andr\xe9 Malo or his licensors, as applicable
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * central naming stuff
+ */
+
+#ifndef SETUP_CEXT_H
+#define SETUP_CEXT_H
+
+#ifndef EXT_MODULE
+#error EXT_MODULE must be defined outside of this file (-DEXT_MODULE=...)
+#endif
+
+/*
+ * include core header files
+ */
+#define PY_SSIZE_T_CLEAN
+
+#include "Python.h"
+#include "structmember.h"
+
+/*
+ * define our helper macros depending on the stuff above
+ */
+#define STRINGIFY(n) STRINGIFY_HELPER(n)
+#define STRINGIFY_HELPER(n) #n
+#define CONCATENATE(first, second) CONCATENATE_HELPER(first, second)
+#define CONCATENATE_HELPER(first, second) first##second
+
+#define EXT_MODULE_NAME STRINGIFY(EXT_MODULE)
+#ifdef EXT_PACKAGE
+#define EXT_PACKAGE_NAME STRINGIFY(EXT_PACKAGE)
+#define EXT_MODULE_PATH EXT_PACKAGE_NAME "." EXT_MODULE_NAME
+#else
+#define EXT_PACKAGE_NAME ""
+#define EXT_MODULE_PATH EXT_MODULE_NAME
+#endif
+
+#define EXT_DOCS_VAR CONCATENATE(var, CONCATENATE(EXT_MODULE, __doc__))
+#define EXT_METHODS_VAR CONCATENATE(var, CONCATENATE(EXT_MODULE, _methods))
+#define EXT_METHODS static PyMethodDef EXT_METHODS_VAR[]
+
+#define EXT_DEFINE_VAR CONCATENATE(var, CONCATENATE(EXT_MODULE, _module))
+
+/* Py3K Support */
+#if PY_MAJOR_VERSION >= 3
+
+#define EXT3
+
+#ifndef Py_TPFLAGS_HAVE_CLASS
+#define Py_TPFLAGS_HAVE_CLASS (0)
+#endif
+
+#ifndef Py_TPFLAGS_HAVE_WEAKREFS
+#define Py_TPFLAGS_HAVE_WEAKREFS (0)
+#endif
+
+#ifndef Py_TPFLAGS_HAVE_ITER
+#define Py_TPFLAGS_HAVE_ITER (0)
+#endif
+
+#ifndef PyMODINIT_FUNC
+#define EXT_INIT_FUNC PyObject *CONCATENATE(PyInit_, EXT_MODULE)(void)
+#else
+#define EXT_INIT_FUNC PyMODINIT_FUNC CONCATENATE(PyInit_, EXT_MODULE)(void)
+#endif
+
+#define EXT_DEFINE(name, methods, doc) \
+static struct PyModuleDef EXT_DEFINE_VAR = { \
+ PyModuleDef_HEAD_INIT, \
+ name, \
+ doc, \
+ -1, \
+ methods, \
+ NULL, \
+ NULL, \
+ NULL, \
+ NULL \
+}
+
+#define EXT_CREATE(def) (PyModule_Create(def))
+#define EXT_INIT_ERROR(module) do {Py_XDECREF(module); return NULL;} while(0)
+#define EXT_INIT_RETURN(module) return module
+
+#define EXT_DOC_UNICODE(m)
+
+#else /* end py3k */
+
+#define EXT2
+
+#ifndef PyVarObject_HEAD_INIT
+ #define PyVarObject_HEAD_INIT(type, size) \
+ PyObject_HEAD_INIT(type) size,
+#endif
+
+#ifndef PyMODINIT_FUNC
+#define EXT_INIT_FUNC void CONCATENATE(init, EXT_MODULE)(void)
+#else
+#define EXT_INIT_FUNC PyMODINIT_FUNC CONCATENATE(init, EXT_MODULE)(void)
+#endif
+
+#define EXT_DEFINE__STRUCT \
+ CONCATENATE(struct, CONCATENATE(EXT_MODULE, _module))
+
+struct EXT_DEFINE__STRUCT {
+ char *m_name;
+ char *m_doc;
+ PyMethodDef *m_methods;
+};
+#define EXT_DEFINE(name, methods, doc) \
+static struct EXT_DEFINE__STRUCT EXT_DEFINE_VAR = { \
+ name, \
+ doc, \
+ methods \
+}
+
+#define EXT_CREATE(def) ((def)->m_doc \
+ ? Py_InitModule3((def)->m_name, (def)->m_methods, (def)->m_doc) \
+ : Py_InitModule((def)->m_name, (def)->m_methods) \
+)
+#define EXT_INIT_ERROR(module) return
+#define EXT_INIT_RETURN(module) return
+
+#define EXT_DOC_UNICODE(m) do { \
+ PyObject *doc__, *uni__; \
+ int res__; \
+ \
+ if ((doc__ = PyObject_GetAttrString(m, "__doc__"))) { \
+ uni__ = PyUnicode_FromEncodedObject(doc__, "utf-8", "strict"); \
+ Py_DECREF(doc__); \
+ if (!uni__) \
+ EXT_INIT_ERROR(m); \
+ res__ = PyObject_SetAttrString(m, "__doc__", uni__); \
+ Py_DECREF(uni__); \
+ if (res__ == -1) \
+ EXT_INIT_ERROR(m); \
+ } \
+ else if (!(PyErr_Occurred() \
+ && PyErr_ExceptionMatches(PyExc_AttributeError))) \
+ EXT_INIT_ERROR(m); \
+} while(0)
+
+#endif /* end py2K */
+
+#define EXT_INIT_TYPE(module, type) do { \
+ if (PyType_Ready(type) < 0) \
+ EXT_INIT_ERROR(module); \
+} while (0)
+
+#define EXT_ADD_TYPE(module, name, type) do { \
+ Py_INCREF(type); \
+ if (PyModule_AddObject(module, name, (PyObject *)(type)) < 0) \
+ EXT_INIT_ERROR(module); \
+} while (0)
+
+#define EXT_ADD_UNICODE(module, name, string, encoding) do { \
+ if (PyModule_AddObject( \
+ module, \
+ name, \
+ PyUnicode_Decode( \
+ string, \
+ sizeof(string) - 1, \
+ encoding, \
+ "strict" \
+ )) < 0) \
+ EXT_INIT_ERROR(module); \
+} while (0)
+
+#define EXT_ADD_STRING(module, name, string) do { \
+ if (PyModule_AddStringConstant(module, name, string) < 0) \
+ EXT_INIT_ERROR(module); \
+} while (0)
+
+#define EXT_ADD_INT(module, name, number) do { \
+ if (PyModule_AddIntConstant(module, name, number) < 0) \
+ EXT_INIT_ERROR(module); \
+} while (0)
+
+
+/* PEP 353 support, implemented as of python 2.5 */
+#if PY_VERSION_HEX < 0x02050000
+typedef int Py_ssize_t;
+#define PyInt_FromSsize_t(arg) PyInt_FromLong((long)arg)
+#define PyInt_AsSsize_t(arg) (int)PyInt_AsLong(arg)
+#define PY_SSIZE_T_MAX ((Py_ssize_t)INT_MAX)
+#endif
+
+/*
+ * some helper macros (Python 2.4)
+ */
+#ifndef Py_VISIT
+#define Py_VISIT(op) do { \
+ if (op) { \
+ int vret = visit((op), arg); \
+ if (vret) return vret; \
+ } \
+} while (0)
+#endif
+
+#ifdef Py_CLEAR
+#undef Py_CLEAR
+#endif
+#define Py_CLEAR(op) do { \
+ if (op) { \
+ PyObject *tmp__ = (PyObject *)(op); \
+ (op) = NULL; \
+ Py_DECREF(tmp__); \
+ } \
+} while (0)
+
+#ifndef Py_RETURN_NONE
+#define Py_RETURN_NONE return Py_INCREF(Py_None), Py_None
+#endif
+
+#ifndef Py_RETURN_FALSE
+#define Py_RETURN_FALSE return Py_INCREF(Py_False), Py_False
+#endif
+
+#ifndef Py_RETURN_TRUE
+#define Py_RETURN_TRUE return Py_INCREF(Py_True), Py_True
+#endif
+
+/* Macros for inline documentation. (Python 2.3) */
+#ifndef PyDoc_VAR
+#define PyDoc_VAR(name) static char name[]
+#endif
+
+#ifndef PyDoc_STRVAR
+#define PyDoc_STRVAR(name,str) PyDoc_VAR(name) = PyDoc_STR(str)
+#endif
+
+#ifndef PyDoc_STR
+#ifdef WITH_DOC_STRINGS
+#define PyDoc_STR(str) str
+#else
+#define PyDoc_STR(str) ""
+#endif
+#endif
+
+/* Basestring check (basestring introduced in Python 2.3) */
+#if PY_VERSION_HEX < 0x02030000
+#define BaseString_Check(type) ( \
+ PyObject_TypeCheck((type), &PyString_Type) \
+ || PyObject_TypeCheck((type), &PyUnicode_Type) \
+)
+#else
+#define BaseString_Check(type) PyObject_TypeCheck((type), &PyBaseString_Type)
+#endif
+
+#define GENERIC_ALLOC(type) \
+ ((void *)((PyTypeObject *)type)->tp_alloc(type, (Py_ssize_t)0))
+
+/* PyPy doesn't define it */
+#ifndef PyType_IS_GC
+#define PyType_IS_GC(t) PyType_HasFeature((t), Py_TPFLAGS_HAVE_GC)
+#endif
+
+#ifndef Py_TYPE
+#define Py_TYPE(ob) (((PyObject*)(ob))->ob_type)
+#endif
+
+#define DEFINE_GENERIC_DEALLOC(prefix) \
+static void prefix##_dealloc(void *self) \
+{ \
+ if (PyType_IS_GC(Py_TYPE(self))) \
+ PyObject_GC_UnTrack(self); \
+ (void)prefix##_clear(self); \
+ (Py_TYPE(self))->tp_free((PyObject *)self); \
+}
+
+#endif /* SETUP_CEXT_H */