From 040f7e6ba2e2282b80f332a031b77d7d34b4fc85 Mon Sep 17 00:00:00 2001 From: Joshua Haberman Date: Mon, 24 Aug 2009 21:44:22 -0700 Subject: Significant memory-management refactoring any Python extension. --- lang_ext/python/cext.h | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 lang_ext/python/cext.h (limited to 'lang_ext/python/cext.h') diff --git a/lang_ext/python/cext.h b/lang_ext/python/cext.h new file mode 100644 index 0000000..e0e7832 --- /dev/null +++ b/lang_ext/python/cext.h @@ -0,0 +1,48 @@ +/* + * upb - a minimalist implementation of protocol buffers. + * + * Copyright (c) 2009 Joshua Haberman. See LICENSE for details. + * + */ + +#ifndef UPB_PYTHON_CEXT_H_ +#define UPB_PYTHON_CEXT_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + PyObject_HEAD + struct upb_context *context; + PyObject *created_defs; +} PyUpb_Context; + +typedef struct { + PyObject_HEAD + struct upb_msgdef *def; + PyUpb_Context *context; +} PyUpb_MsgDef; + +extern PyTypeObject PyUpb_MsgDefType; + +/* What format string should be passed to PyArg_ParseTuple to get just a raw + * string of bytes and a length. */ +#if PY_MAJOR_VERSION >= 3 +#define BYTES_FORMAT "y#" +#else +#define BYTES_FORMAT "s#" +#endif + +#define RETURN_BOOL(val) if(val) { Py_RETURN_TRUE; } else { Py_RETURN_FALSE; } + +extern PyMODINIT_FUNC initdefinition(void); +extern PyMODINIT_FUNC initpb(void); + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif -- cgit v1.2.3