Mercurial > hgrepos > Python > libs > ConfigMix
annotate configmix/_py_helper.h @ 698:3a9d661d33b5
Implement SYS:executable
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Wed, 14 Jun 2023 09:13:07 +0200 |
| parents | f454889e41fa |
| children |
| rev | line source |
|---|---|
|
559
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
1 /* -*- coding: utf-8 -*- */ |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
2 /* |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
3 * Some Python helper for C. |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
4 * |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
5 * Also contains some interesting backports from later Python versions. |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
6 * |
|
593
f454889e41fa
Adjust copyright year (the end) to 2022
Franz Glasner <fzglas.hg@dom66.de>
parents:
563
diff
changeset
|
7 * :Copyright: (c) 2021-2022, Franz Glasner. All rights reserved. |
|
559
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
8 * :License: BSD-3-Clause. See LICENSE.txt for details. |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
9 */ |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
10 |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
11 #if !defined(_PY_HELPER_H_d9df407295df4884a88e56699f6c6d8d) |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
12 #define _PY_HELPER_H_d9df407295df4884a88e56699f6c6d8d |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
13 |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
14 #if PY_VERSION_HEX < 0x030A0000 |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
15 |
|
560
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
16 /* |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
17 * Return a new owned reference to an object |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
18 */ |
|
559
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
19 static inline |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
20 PyObject * |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
21 Py_NewRef(PyObject *obj) |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
22 { |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
23 Py_INCREF(obj); |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
24 return obj; |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
25 } |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
26 |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
27 |
|
560
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
28 /* |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
29 * Return a new owned reference to an object when the input can be NULL |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
30 */ |
|
559
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
31 static inline |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
32 PyObject * |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
33 Py_XNewRef(PyObject *obj) |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
34 { |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
35 Py_XINCREF(obj); |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
36 return obj; |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
37 } |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
38 |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
39 #endif /* PY_VERSION_HEX < 0x030A0000 */ |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
40 |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
41 |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
42 static inline |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
43 void |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
44 py_clear_ref(PyObject **obj) |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
45 { |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
46 PyObject *tmp; |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
47 |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
48 if ((tmp = *obj) != NULL) { |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
49 *obj = NULL; |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
50 Py_DECREF(tmp); |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
51 } |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
52 } |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
53 |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
54 |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
55 /* |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
56 * NOTE: This implementation is valid for CPython only! |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
57 */ |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
58 static inline |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
59 int |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
60 py_object_is(PyObject *obj1, PyObject *obj2) |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
61 { |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
62 return (obj1 == obj2); |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
63 } |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
64 |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
65 |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
66 /* |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
67 * NOTE: This implementation is valid for CPython only! |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
68 */ |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
69 static inline |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
70 int |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
71 py_object_isnot(PyObject *obj1, PyObject *obj2) |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
72 { |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
73 return (obj1 != obj2); |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
74 } |
|
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
75 |
|
560
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
76 |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
77 /** |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
78 * Copy from source to destination and make an owned reference. |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
79 * Also safely clear the destination before. |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
80 */ |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
81 static inline |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
82 void |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
83 py_assign(PyObject **dest, PyObject *src) |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
84 { |
|
563
2c211934d4b0
Some more helper functions (with regard to NULL PyObjects)
Franz Glasner <fzglas.hg@dom66.de>
parents:
562
diff
changeset
|
85 Py_DECREF(*dest); |
|
2c211934d4b0
Some more helper functions (with regard to NULL PyObjects)
Franz Glasner <fzglas.hg@dom66.de>
parents:
562
diff
changeset
|
86 *dest = Py_NewRef(src); |
|
2c211934d4b0
Some more helper functions (with regard to NULL PyObjects)
Franz Glasner <fzglas.hg@dom66.de>
parents:
562
diff
changeset
|
87 } |
|
2c211934d4b0
Some more helper functions (with regard to NULL PyObjects)
Franz Glasner <fzglas.hg@dom66.de>
parents:
562
diff
changeset
|
88 |
|
2c211934d4b0
Some more helper functions (with regard to NULL PyObjects)
Franz Glasner <fzglas.hg@dom66.de>
parents:
562
diff
changeset
|
89 |
|
2c211934d4b0
Some more helper functions (with regard to NULL PyObjects)
Franz Glasner <fzglas.hg@dom66.de>
parents:
562
diff
changeset
|
90 /** |
|
2c211934d4b0
Some more helper functions (with regard to NULL PyObjects)
Franz Glasner <fzglas.hg@dom66.de>
parents:
562
diff
changeset
|
91 * Copy from source to destination and make an owned reference. |
|
2c211934d4b0
Some more helper functions (with regard to NULL PyObjects)
Franz Glasner <fzglas.hg@dom66.de>
parents:
562
diff
changeset
|
92 * Also clear the destination before. |
|
2c211934d4b0
Some more helper functions (with regard to NULL PyObjects)
Franz Glasner <fzglas.hg@dom66.de>
parents:
562
diff
changeset
|
93 */ |
|
2c211934d4b0
Some more helper functions (with regard to NULL PyObjects)
Franz Glasner <fzglas.hg@dom66.de>
parents:
562
diff
changeset
|
94 static inline |
|
2c211934d4b0
Some more helper functions (with regard to NULL PyObjects)
Franz Glasner <fzglas.hg@dom66.de>
parents:
562
diff
changeset
|
95 void |
|
2c211934d4b0
Some more helper functions (with regard to NULL PyObjects)
Franz Glasner <fzglas.hg@dom66.de>
parents:
562
diff
changeset
|
96 py_x_assign(PyObject **dest, PyObject *src) |
|
2c211934d4b0
Some more helper functions (with regard to NULL PyObjects)
Franz Glasner <fzglas.hg@dom66.de>
parents:
562
diff
changeset
|
97 { |
|
560
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
98 Py_XDECREF(*dest); |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
99 *dest = Py_NewRef(src); |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
100 } |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
101 |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
102 |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
103 /** |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
104 * Copy from source to destination and make an owned reference. |
|
563
2c211934d4b0
Some more helper functions (with regard to NULL PyObjects)
Franz Glasner <fzglas.hg@dom66.de>
parents:
562
diff
changeset
|
105 * Also clear the destination before. The source object may be NULL. |
|
2c211934d4b0
Some more helper functions (with regard to NULL PyObjects)
Franz Glasner <fzglas.hg@dom66.de>
parents:
562
diff
changeset
|
106 */ |
|
2c211934d4b0
Some more helper functions (with regard to NULL PyObjects)
Franz Glasner <fzglas.hg@dom66.de>
parents:
562
diff
changeset
|
107 static inline |
|
2c211934d4b0
Some more helper functions (with regard to NULL PyObjects)
Franz Glasner <fzglas.hg@dom66.de>
parents:
562
diff
changeset
|
108 void |
|
2c211934d4b0
Some more helper functions (with regard to NULL PyObjects)
Franz Glasner <fzglas.hg@dom66.de>
parents:
562
diff
changeset
|
109 py_assign_x(PyObject **dest, PyObject *src) |
|
2c211934d4b0
Some more helper functions (with regard to NULL PyObjects)
Franz Glasner <fzglas.hg@dom66.de>
parents:
562
diff
changeset
|
110 { |
|
2c211934d4b0
Some more helper functions (with regard to NULL PyObjects)
Franz Glasner <fzglas.hg@dom66.de>
parents:
562
diff
changeset
|
111 Py_DECREF(*dest); |
|
2c211934d4b0
Some more helper functions (with regard to NULL PyObjects)
Franz Glasner <fzglas.hg@dom66.de>
parents:
562
diff
changeset
|
112 *dest = Py_XNewRef(src); |
|
2c211934d4b0
Some more helper functions (with regard to NULL PyObjects)
Franz Glasner <fzglas.hg@dom66.de>
parents:
562
diff
changeset
|
113 } |
|
2c211934d4b0
Some more helper functions (with regard to NULL PyObjects)
Franz Glasner <fzglas.hg@dom66.de>
parents:
562
diff
changeset
|
114 |
|
2c211934d4b0
Some more helper functions (with regard to NULL PyObjects)
Franz Glasner <fzglas.hg@dom66.de>
parents:
562
diff
changeset
|
115 |
|
2c211934d4b0
Some more helper functions (with regard to NULL PyObjects)
Franz Glasner <fzglas.hg@dom66.de>
parents:
562
diff
changeset
|
116 /** |
|
2c211934d4b0
Some more helper functions (with regard to NULL PyObjects)
Franz Glasner <fzglas.hg@dom66.de>
parents:
562
diff
changeset
|
117 * Copy from source to destination and make an owned reference. |
|
560
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
118 * Also safely clear the destination before. The source object may be NULL. |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
119 */ |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
120 static inline |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
121 void |
|
563
2c211934d4b0
Some more helper functions (with regard to NULL PyObjects)
Franz Glasner <fzglas.hg@dom66.de>
parents:
562
diff
changeset
|
122 py_x_assign_x(PyObject **dest, PyObject *src) |
|
560
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
123 { |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
124 Py_XDECREF(*dest); |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
125 *dest = Py_XNewRef(src); |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
126 } |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
127 |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
128 |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
129 /* |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
130 * Transfer from a borrowed reference to an owned one and clear the source. |
| 562 | 131 * Also clear the destination before. |
|
560
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
132 */ |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
133 static inline |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
134 void |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
135 py_transfer_borrowed(PyObject **dest, PyObject **src) |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
136 { |
| 562 | 137 Py_DECREF(*dest); |
| 138 *dest = Py_NewRef(*src); | |
| 139 *src = NULL; | |
| 140 } | |
| 141 | |
| 142 | |
| 143 /* | |
| 144 * Transfer from a borrowed reference to an owned one and clear the source. | |
| 145 * Also safely clear the destination before. | |
| 146 */ | |
| 147 static inline | |
| 148 void | |
| 149 py_x_transfer_borrowed(PyObject **dest, PyObject **src) | |
| 150 { | |
|
560
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
151 Py_XDECREF(*dest); |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
152 *dest = Py_NewRef(*src); |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
153 *src = NULL; |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
154 } |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
155 |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
156 |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
157 /* |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
158 * Transfer from a borrowed reference to an owned one and clear the source. |
| 562 | 159 * Also clear the destination before. The source object may be NULL. |
| 160 */ | |
| 161 static inline | |
| 162 void | |
| 163 py_transfer_x_borrowed(PyObject **dest, PyObject **src) | |
| 164 { | |
| 165 Py_DECREF(*dest); | |
| 166 *dest = Py_XNewRef(*src); | |
| 167 *src = NULL; | |
| 168 } | |
| 169 | |
| 170 | |
| 171 /* | |
| 172 * Transfer from a borrowed reference to an owned one and clear the source. | |
|
560
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
173 * Also safely clear the destination before. The source object may be NULL. |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
174 */ |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
175 static inline |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
176 void |
| 562 | 177 py_x_transfer_x_borrowed(PyObject **dest, PyObject **src) |
|
560
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
178 { |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
179 Py_XDECREF(*dest); |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
180 *dest = Py_XNewRef(*src); |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
181 *src = NULL; |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
182 } |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
183 |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
184 |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
185 /* |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
186 * Transfer ownership from a owned reference to an owned one and clear the |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
187 * source. |
| 562 | 188 * Also clear the destination before. |
| 189 */ | |
| 190 static inline | |
| 191 void | |
| 192 py_transfer_owned(PyObject **dest, PyObject **src) | |
| 193 { | |
| 194 Py_DECREF(*dest); | |
| 195 *dest = *src; | |
| 196 *src = NULL; | |
| 197 } | |
| 198 | |
| 199 | |
| 200 /* | |
| 201 * Transfer ownership from a owned reference to an owned one and clear the | |
| 202 * source. | |
|
560
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
203 * Also safely clear the destination before. |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
204 */ |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
205 static inline |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
206 void |
| 562 | 207 py_x_transfer_owned(PyObject **dest, PyObject **src) |
|
560
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
208 { |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
209 Py_XDECREF(*dest); |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
210 *dest = *src; |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
211 *src = NULL; |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
212 } |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
213 |
|
81238ea2dbe3
Implement and use more helper functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
559
diff
changeset
|
214 |
|
559
bb160a1e67d7
A simple helper include file with some conveniente functions.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
215 #endif |
