@@ -108,21 +108,31 @@ void object2string(PyObject *pv, zval *zv);
108108void long2long (PyObject *pv, zval *zv);
109109/* *
110110 * Type conversion, PHP to Python
111+ * Return value: New reference.
111112 */
112113PyObject *php2py (zval *zv);
113114/* *
114115 * PHP to Python, Convert actual value to python object type as much as possible
116+ * Return value: New reference.
115117 */
116118PyObject *php2py_object (zval *zv);
117119/* *
118120 * Python to Python, Convert actual value to PHP scalar type as much as possible
119121 */
120122PyObject *py2py_scalar (PyObject *pv);
121-
123+ /* *
124+ * Return value: New reference.
125+ */
122126PyObject *array2list (zend_array *ht);
127+ /* *
128+ * Return value: New reference.
129+ */
123130static inline PyObject *array2list (zval *zv) {
124131 return array2list (Z_ARRVAL_P (zv));
125132}
133+ /* *
134+ * Return value: New reference.
135+ */
126136PyObject *array2set (zend_array *ht);
127137static inline PyObject *array2set (zval *zv) {
128138 return array2set (Z_ARRVAL_P (zv));
@@ -133,14 +143,27 @@ static inline PyObject *array2tuple(zval *zv) {
133143}
134144PyObject *resource2py (zval *zres);
135145PyObject *reference2py (zval *zv);
146+ /* *
147+ * Return value: New reference.
148+ */
136149PyObject *array2dict (zend_array *ht);
150+ /* *
151+ * Return value: New reference.
152+ */
137153PyObject *string2py (zend_string *zv);
154+ /* *
155+ * Return value: New reference.
156+ */
138157PyObject *long2long (zval *zv);
139-
158+ /* *
159+ * Return value: New reference.
160+ */
140161static inline PyObject *array2dict (zval *zv) {
141162 return array2dict (Z_ARRVAL_P (zv));
142163}
143-
164+ /* *
165+ * Return value: New reference.
166+ */
144167static inline PyObject *string2py (zval *zv) {
145168 return string2py (Z_STR_P (zv));
146169}
@@ -185,6 +208,7 @@ int php_class_iter_init(INIT_FUNC_ARGS);
185208int php_class_fn_init (INIT_FUNC_ARGS);
186209int php_class_error_init (INIT_FUNC_ARGS);
187210void php_class_init_all (INIT_FUNC_ARGS);
211+ int php_python_operator_init (INIT_FUNC_ARGS);
188212
189213zend_class_entry *phpy_object_get_ce ();
190214zend_class_entry *phpy_sequence_get_ce ();
@@ -239,6 +263,11 @@ namespace php {
239263void new_module (zval *zv, PyObject *pv);
240264void new_object (zval *zv, PyObject *pv);
241265void new_object (zval *zv, PyObject *pv, zend_class_entry *ce);
266+ /* *
267+ * This function does not increment the reference count for pv object;
268+ * a new reference must be passed in, otherwise a gc error will occur.
269+ */
270+ void new_object_no_addref (zval *zv, PyObject *pv);
242271void new_dict (zval *zv, PyObject *pv);
243272void new_list (zval *zv, PyObject *pv);
244273void new_tuple (zval *zv, PyObject *pv);
0 commit comments