aboutsummaryrefslogtreecommitdiffstats
path: root/PySide/typesystem_templates.xml
blob: 03a220326657432c4147991d791b6da0ef9c45e5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
<?xml version="1.0"?>
<typesystem>
    <!-- Templates to fix bool* parameters -->
    <template name="fix_bool*">
        bool ok_;
        %RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(&amp;ok_);
        %PYARG_0 = Shiboken::makeTuple(retval_, ok_);
    </template>
    <template name="fix_args,bool*">
        bool ok_;
        %RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(%ARGUMENT_NAMES, &amp;ok_);
        %PYARG_0 = Shiboken::makeTuple(retval_, ok_);
    </template>
    <template name="fix_arg,bool*,arg">
        bool ok_;
        %RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(%1, &amp;ok_, %3);
        %PYARG_0 = Shiboken::makeTuple(retval_, ok_);
    </template>
    <template name="fix_bool*,arg">
        bool ok_;
        %RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(&amp;ok_, %2);
        %PYARG_0 = Shiboken::makeTuple(retval_, ok_);
    </template>
    <template name="fix_arg,arg,arg,arg,arg,arg,arg,bool*,arg">
        bool ok_;
        %RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(%1, %2, %3, %4, %5, %6, %7, &amp;ok_, %9);
        %PYARG_0 = Shiboken::makeTuple(retval_, ok_);
    </template>
    <template name="fix_arg,arg,arg,arg,arg,arg,bool*,arg">
        bool ok_;
        %RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(%1, %2, %3, %4, %5, %6, &amp;ok_, %8);
        %PYARG_0 = Shiboken::makeTuple(retval_, ok_);
    </template>
    <template name="fix_arg,arg,arg,arg,arg,bool*,arg">
        bool ok_;
        %RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(%1, %2, %3, %4, %5, &amp;ok_, %7);
        %PYARG_0 = Shiboken::makeTuple(retval_, ok_);
    </template>
    <template name="get_slice">
        %TYPE* sequence;
        Py_ssize_t start, end;
        Py_ssize_t len = %CPPSELF->count();

        if (_i1 &gt; len)
            start = len;
        else if (_i1 &lt; 0)
            start = 0;
        else
            start = _i1;

        if (_i2 &gt; len)
            end = len;
        else if (_i2 &lt; 0)
           end = 0;
        else
           end = _i2;

        sequence = new %TYPE();
        for (Py_ssize_t i = start; i &lt; end; i++)
            sequence->append(%CPPSELF->at(i));

        return %CONVERTTOPYTHON[%TYPE](*sequence);
    </template>

    <template name="fix_args,QRectF*">
        QRectF rect_;
        %CPPSELF.%FUNCTION_NAME(%ARGUMENT_NAMES, &amp;rect_);
        return %CONVERTTOPYTHON[QRectF](rect_);
    </template>

    <template name="fix_args,QRect*">
        QRect rect_;
        %CPPSELF.%FUNCTION_NAME(%ARGUMENT_NAMES, &amp;rect_);
        return %CONVERTTOPYTHON[QRectF](rect_);
    </template>

    <template name="fix_char*">
        char val_;
        %RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(&amp;val_);
        %PYARG_0 = PyTuple_Pack(2, %CONVERTTOPYTHON[%RETURN_TYPE](retval_), %CONVERTTOPYTHON[char](val_));
    </template>

    <template name="fix_int*,int*,int*,int*">
        int a, b, c, d;
        %CPPSELF.%FUNCTION_NAME(&amp;a, &amp;b, &amp;c, &amp;d);
        %PYARG_0 = Shiboken::makeTuple(a, b, c, d);
    </template>
    <template name="fix_qreal*,qreal*,qreal*,qreal*">
        qreal a, b, c, d;
        %CPPSELF.%FUNCTION_NAME(&amp;a, &amp;b, &amp;c, &amp;d);
        %PYARG_0 = Shiboken::makeTuple(a, b, c, d);
    </template>

    <template name="fix_int*,int*,int*,int*,int*">
        int a, b, c, d, e;
        %CPPSELF.%FUNCTION_NAME(&amp;a, &amp;b, &amp;c, &amp;d, &amp;e);
        %PYARG_0 = Shiboken::makeTuple(a, b, c, d, e);
    </template>
    <template name="fix_qreal*,qreal*,qreal*,qreal*,qreal*">
        qreal a, b, c, d, e;
        %CPPSELF.%FUNCTION_NAME(&amp;a, &amp;b, &amp;c, &amp;d, &amp;e);
        %PYARG_0 = Shiboken::makeTuple(a, b, c, d, e);
    </template>
    <template name="read_wrapper">
        char _data[%2];
        qint64 _size = %CPPSELF.%FUNCTION_NAME(_data, %2);
        if (_size > 0)
            return %CONVERTTOPYTHON[QByteArray](QByteArray(_data, _size));
        else
            return %CONVERTTOPYTHON[QByteArray](QByteArray());
    </template>
    <template name="fix_return_args,int*">
        RETURNTYPE _ret;
        int _arg;
        _ret = %CPPSELF.%FUNCTION_NAME(%ARGUMENT_NAMES, &amp;_arg);
        %PYARG_0 = Shiboken::makeTuple(_ret, _arg);
    </template>
</typesystem>