OLD | NEW |
| (Empty) |
1 /* | |
2 Unix SMB/CIFS implementation. | |
3 Samba utility functions | |
4 Copyright (C) Jelmer Vernooij <jelmer@samba.org> 2008 | |
5 | |
6 This program is free software; you can redistribute it and/or modify | |
7 it under the terms of the GNU General Public License as published by | |
8 the Free Software Foundation; either version 3 of the License, or | |
9 (at your option) any later version. | |
10 | |
11 This program is distributed in the hope that it will be useful, | |
12 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 GNU General Public License for more details. | |
15 | |
16 You should have received a copy of the GNU General Public License | |
17 along with this program. If not, see <http://www.gnu.org/licenses/>. | |
18 */ | |
19 | |
20 #ifndef _PY_TALLOC_H_ | |
21 #define _PY_TALLOC_H_ | |
22 | |
23 #include <Python.h> | |
24 #include <talloc.h> | |
25 | |
26 typedef struct { | |
27 PyObject_HEAD | |
28 TALLOC_CTX *talloc_ctx; | |
29 void *ptr; | |
30 } py_talloc_Object; | |
31 | |
32 /* Deallocate a py_talloc_Object */ | |
33 void py_talloc_dealloc(PyObject* self); | |
34 | |
35 /* Retrieve the pointer for a py_talloc_object. Like talloc_get_type() | |
36 * but for py_talloc_Objects. */ | |
37 | |
38 /* FIXME: Call PyErr_SetString(PyExc_TypeError, "expected " __STR(type) ") | |
39 * when talloc_get_type() returns NULL. */ | |
40 #define py_talloc_get_type(py_obj, type) (talloc_get_type(py_talloc_get_ptr(py_o
bj), type)) | |
41 | |
42 #define py_talloc_get_ptr(py_obj) (((py_talloc_Object *)py_obj)->ptr) | |
43 #define py_talloc_get_mem_ctx(py_obj) ((py_talloc_Object *)py_obj)->talloc_ctx | |
44 | |
45 PyObject *py_talloc_steal_ex(PyTypeObject *py_type, TALLOC_CTX *mem_ctx, void *p
tr); | |
46 PyObject *py_talloc_reference_ex(PyTypeObject *py_type, TALLOC_CTX *mem_ctx, voi
d *ptr); | |
47 #define py_talloc_steal(py_type, talloc_ptr) py_talloc_steal_ex(py_type, talloc_
ptr, talloc_ptr) | |
48 #define py_talloc_reference(py_type, talloc_ptr) py_talloc_reference_ex(py_type,
talloc_ptr, talloc_ptr) | |
49 | |
50 /* Sane default implementation of reprfunc. */ | |
51 PyObject *py_talloc_default_repr(PyObject *py_obj); | |
52 | |
53 #define py_talloc_new(type, typeobj) py_talloc_steal(typeobj, talloc_zero(NULL,
type)) | |
54 | |
55 PyObject *PyCObject_FromTallocPtr(void *); | |
56 | |
57 #endif /* _PY_TALLOC_H_ */ | |
OLD | NEW |