source: swig/python/language.i @ aa33ad9

abac0-leakabac0-meicompt_changesgec13mei-idmei-rt0-nmei_rt0mei_rt2mei_rt2_fix_1meiyap-rt1meiyap1rt2tvf-new-xml
Last change on this file since aa33ad9 was ade843e, checked in by Mike Ryan <mikeryan@…>, 14 years ago

support strings instead of bytearrays in python < 2.6

  • Property mode set to 100644
File size: 1.2 KB
RevLine 
[06e2fc5]1%typemap(argout) bool &success {
2    PyObject *o, *o2, *o3;
3    o = PyBool_FromLong(*$1);
4    if ((!$result) || ($result == Py_None)) {
5        $result = o;
6    } else {
7        if (!PyTuple_Check($result)) {
8            PyObject *o2 = $result;
9            $result = PyTuple_New(1);
10            PyTuple_SetItem($result,0,o2);
11        }
12        o3 = PyTuple_New(2);
13        PyTuple_SetItem(o3,0,o);
14        PyTuple_SetItem(o3,1,$result);
15        $result = o3;
16    }
17}
18
19%typemap(in,numinputs=0) bool &success(bool temp) {
20    $1 = &temp;
21}
[9b0b961]22
[ade843e]23// bytearrays are new as of 2.6
24%{
25#if (PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION >= 6) || PY_MAJOR_VERSION > 2
26#define MODERN_PYTHON
27#endif
28%}
29
30// abac_chunk_t is a bytearray or a string
31%typemap(in) abac_chunk_t %{
32#ifdef MODERN_PYTHON
[9b0b961]33    $1.ptr = (unsigned char *)PyByteArray_AS_STRING($input);
34    $1.len = PyByteArray_GET_SIZE($input);
[ade843e]35#else
36    PyString_AsStringAndSize(
37        $input,
38        (char **)&$1.ptr,
39        &$1.len
40    );
41#endif
42%}
[9b0b961]43
[ade843e]44%typemap(out) abac_chunk_t %{
45#ifdef MODERN_PYTHON
[9b0b961]46    $result = PyByteArray_FromStringAndSize(
47        (const char *)$1.ptr,
48        $1.len
49    );
[ade843e]50#else
51    $result = PyString_FromStringAndSize(
52        (const char *)$1.ptr,
53        $1.len
54    );
55#endif
56%}
Note: See TracBrowser for help on using the repository browser.