~ubuntu-branches/ubuntu/trusty/jcc/trusty-proposed

« back to all changes in this revision

Viewing changes to jcc/sources/macros.h

  • Committer: Bazaar Package Importer
  • Author(s): Ludovico Cavedon
  • Date: 2010-07-18 11:16:04 UTC
  • mfrom: (1.1.3 upstream)
  • Revision ID: james.westby@ubuntu.com-20100718111604-pmncb3js701dk0qp
Tags: 2.6-1
* New upstream release.
* Fix typo in README.Debian.
* Refresh avoid-ftbfs-unknown-archs.patch.
* Update Standards-Version to 3.9.0.

Show diffs side-by-side

added added

removed removed

Lines of Context:
20
20
        try {                                                           \
21
21
            PythonThreadState state(1);                                 \
22
22
            action;                                                     \
23
 
        } catch (JCCEnv::pythonError) {                                 \
24
 
            return NULL;                                                \
25
 
        } catch (JCCEnv::exception e) {                                 \
26
 
            return PyErr_SetJavaError(e.throwable);                     \
 
23
        } catch (int e) {                                               \
 
24
            switch (e) {                                                \
 
25
              case _EXC_PYTHON:                                         \
 
26
                return NULL;                                            \
 
27
              case _EXC_JAVA:                                           \
 
28
                return PyErr_SetJavaError();                            \
 
29
              default:                                                  \
 
30
                throw;                                                  \
 
31
            }                                                           \
27
32
        }                                                               \
28
33
    }
29
34
 
32
37
        try {                                                           \
33
38
            PythonThreadState state(1);                                 \
34
39
            action;                                                     \
35
 
        } catch (JCCEnv::pythonError) {                                 \
36
 
            return -1;                                                  \
37
 
        } catch (JCCEnv::exception e) {                                 \
38
 
            PyErr_SetJavaError(e.throwable);                            \
39
 
            return -1;                                                  \
 
40
        } catch (int e) {                                               \
 
41
            switch (e) {                                                \
 
42
              case _EXC_PYTHON:                                         \
 
43
                return -1;                                              \
 
44
              case _EXC_JAVA:                                           \
 
45
                PyErr_SetJavaError();                                   \
 
46
                return -1;                                              \
 
47
              default:                                                  \
 
48
                throw;                                                  \
 
49
            }                                                           \
40
50
        }                                                               \
41
51
    }
42
52
 
53
63
#define DECLARE_GETSET_FIELD(type, name)        \
54
64
    { #name, (getter) type##_get__##name, (setter) type##_set__##name, "", NULL }
55
65
 
 
66
#define PY_TYPE(name) name##$$Type
56
67
 
57
68
#define DECLARE_TYPE(name, t_name, base, javaClass,                         \
58
69
                     init, iter, iternext, getset, mapping, sequence)       \
59
 
PyTypeObject name##$$Type = {                                               \
 
70
PyTypeObject PY_TYPE(name) = {                                              \
60
71
    PyObject_HEAD_INIT(NULL)                                                \
61
72
    /* ob_size            */   0,                                           \
62
73
    /* tp_name            */   #name,                                       \
88
99
    /* tp_methods         */   t_name##__methods_,                          \
89
100
    /* tp_members         */   0,                                           \
90
101
    /* tp_getset          */   getset,                                      \
91
 
    /* tp_base            */   &base##$$Type,                               \
 
102
    /* tp_base            */   &PY_TYPE(base),                              \
92
103
    /* tp_dict            */   0,                                           \
93
104
    /* tp_descr_get       */   0,                                           \
94
105
    /* tp_descr_set       */   0,                                           \
102
113
    if (!!object)                                                       \
103
114
    {                                                                   \
104
115
        t_name *self =                                                  \
105
 
            (t_name *) name##$$Type.tp_alloc(&name##$$Type, 0);         \
 
116
            (t_name *) PY_TYPE(name).tp_alloc(&PY_TYPE(name), 0);       \
106
117
        if (self)                                                       \
107
118
            self->object = object;                                      \
108
119
        return (PyObject *) self;                                       \
113
124
{                                                                       \
114
125
    if (!!object)                                                       \
115
126
    {                                                                   \
116
 
        t_name *self =                                                  \
117
 
            (t_name *) name##$$Type.tp_alloc(&name##$$Type, 0);         \
 
127
        if (!env->isInstanceOf(object, javaClass::initializeClass))     \
 
128
        {                                                               \
 
129
            PyErr_SetObject(PyExc_TypeError,                            \
 
130
                            (PyObject *) &PY_TYPE(name));               \
 
131
            return NULL;                                                \
 
132
        }                                                               \
 
133
        t_name *self = (t_name *)                                       \
 
134
            PY_TYPE(name).tp_alloc(&PY_TYPE(name), 0);                  \
118
135
        if (self)                                                       \
119
136
            self->object = javaClass(object);                           \
120
137
        return (PyObject *) self;                                       \
123
140
}                                                                       \
124
141
 
125
142
 
126
 
#define INSTALL_TYPE(name, module)                                     \
127
 
    if (PyType_Ready(&name##$$Type) == 0)                              \
128
 
    {                                                                  \
129
 
        Py_INCREF(&name##$$Type);                                      \
130
 
        PyModule_AddObject(module, #name, (PyObject *) &name##$$Type); \
 
143
#define INSTALL_TYPE(name, module)                                      \
 
144
    if (PyType_Ready(&PY_TYPE(name)) == 0)                              \
 
145
    {                                                                   \
 
146
        Py_INCREF(&PY_TYPE(name));                                      \
 
147
        PyModule_AddObject(module, #name, (PyObject *) &PY_TYPE(name)); \
131
148
    }
132
149
 
133
150
 
139
156
            Py_RETURN_FALSE;                    \
140
157
    }
141
158
 
 
159
#define Py_RETURN_SELF                                      \
 
160
    {                                                       \
 
161
        Py_INCREF(self);                                    \
 
162
        return (PyObject *) self;                           \
 
163
    }
 
164
 
142
165
 
143
166
#if PY_VERSION_HEX < 0x02040000
144
167