source: python/ext/aubiowraphell.h @ 5c1200a

feature/autosinkfeature/constantqfeature/pitchshiftfeature/pydocstringsfeature/timestretchpitchshiftsamplertimestretchyinfft+
Last change on this file since 5c1200a was 5c1200a, checked in by Paul Brossier <piem@piem.org>, 3 years ago

python/ext: continue preparing for python 3

  • Property mode set to 100644
File size: 2.4 KB
Line 
1#include "aubio-types.h"
2
3#define AUBIO_DECLARE(NAME, PARAMS...) \
4typedef struct { \
5  PyObject_HEAD \
6  aubio_ ## NAME ## _t * o; \
7  PARAMS; \
8} Py_## NAME;
9
10#define AUBIO_INIT(NAME, PARAMS... ) \
11static int \
12Py_ ## NAME ## _init (Py_ ## NAME * self, PyObject * args, PyObject * kwds) \
13{ \
14  self->o = new_aubio_## NAME ( PARAMS ); \
15  if (self->o == NULL) { \
16    PyErr_SetString (PyExc_RuntimeError, "error creating object"); \
17    return -1; \
18  } \
19\
20  return 0; \
21}
22
23#define AUBIO_DEL(NAME) \
24static void \
25Py_ ## NAME ## _del ( Py_ ## NAME * self) \
26{ \
27  del_aubio_ ## NAME (self->o); \
28  Py_TYPE(self)->tp_free ((PyObject *) self); \
29}
30
31#define AUBIO_MEMBERS_START(NAME) \
32static PyMemberDef Py_ ## NAME ## _members[] = {
33
34#define AUBIO_MEMBERS_STOP(NAME) \
35  {NULL} \
36};
37
38#define AUBIO_METHODS(NAME) \
39static PyMethodDef Py_ ## NAME ## _methods[] = { \
40  {NULL} \
41};
42
43
44#define AUBIO_TYPEOBJECT(NAME, PYNAME) \
45PyTypeObject Py_ ## NAME ## Type = { \
46  PyVarObject_HEAD_INIT (NULL, 0) \
47  PYNAME,                      \
48  sizeof (Py_ ## NAME),          \
49  0,                           \
50  (destructor) Py_ ## NAME ## _del,  \
51  0,                           \
52  0,                           \
53  0,                           \
54  0,                           \
55  0,                           \
56  0,                           \
57  0,                           \
58  0,                           \
59  0,                           \
60  (ternaryfunc)Py_ ## NAME ## _do,   \
61  0,                           \
62  0,                           \
63  0,                           \
64  0,                           \
65  Py_TPFLAGS_DEFAULT,          \
66  Py_ ## NAME ## _doc,               \
67  0,                           \
68  0,                           \
69  0,                           \
70  0,                           \
71  0,                           \
72  0,                           \
73  Py_ ## NAME ## _methods,           \
74  Py_ ## NAME ## _members,           \
75  0,                           \
76  0,                           \
77  0,                           \
78  0,                           \
79  0,                           \
80  0,                           \
81  (initproc) Py_ ## NAME ## _init,   \
82  0,                           \
83  Py_ ## NAME ## _new,               \
84};
85
86// some more helpers
87#define AUBIO_NEW_VEC(name, type, lengthval) \
88  name = (type *) PyObject_New (type, & type ## Type); \
89  name->length = lengthval;
Note: See TracBrowser for help on using the repository browser.