Generated by Cython 0.28.2
Yellow lines hint at Python interaction.
Click on a line that starts with a "+
" to see the C code that Cython generated for it.
Raw output: gdk_atoms.c
01: # This file is part of Xpra.
02: # Copyright (C) 2017 Antoine Martin <antoine@devloop.org.uk>
03: # Xpra is released under the terms of the GNU GPL v2, or, at your option, any
04: # later version. See the file COPYING for details.
05:
06: # cython code for manipulating GdkAtoms
07:
08: #cython: wraparound=False
09: from __future__ import absolute_import
10:
+11: from gi.repository import Gdk
__pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_s_Gdk); __Pyx_GIVEREF(__pyx_n_s_Gdk); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_Gdk); __pyx_t_2 = __Pyx_Import(__pyx_n_s_gi_repository, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_Gdk); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_Gdk, __pyx_t_1) < 0) __PYX_ERR(0, 11, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
12:
13: from libc.stdint cimport uintptr_t
14:
15:
16: cdef extern from "Python.h":
17: int PyObject_AsReadBuffer(object obj, void ** buffer, Py_ssize_t * buffer_len) except -1
18:
19: cdef extern from "gtk-3.0/gdk/gdk.h":
20: ctypedef void* GdkAtom
21: GdkAtom GDK_NONE
22:
23: cdef extern from "gtk-3.0/gdk/gdkproperty.h":
24: ctypedef char gchar
25: ctypedef int gint
26: ctypedef gint gboolean
27: gchar* gdk_atom_name(GdkAtom atom)
28: GdkAtom gdk_atom_intern(const gchar *atom_name, gboolean only_if_exists)
29:
30:
+31: def gdk_atom_objects_from_gdk_atom_array(atom_string):
/* Python wrapper */ static PyObject *__pyx_pw_4xpra_10gtk_common_4gtk3_9gdk_atoms_1gdk_atom_objects_from_gdk_atom_array(PyObject *__pyx_self, PyObject *__pyx_v_atom_string); /*proto*/ static PyMethodDef __pyx_mdef_4xpra_10gtk_common_4gtk3_9gdk_atoms_1gdk_atom_objects_from_gdk_atom_array = {"gdk_atom_objects_from_gdk_atom_array", (PyCFunction)__pyx_pw_4xpra_10gtk_common_4gtk3_9gdk_atoms_1gdk_atom_objects_from_gdk_atom_array, METH_O, 0}; static PyObject *__pyx_pw_4xpra_10gtk_common_4gtk3_9gdk_atoms_1gdk_atom_objects_from_gdk_atom_array(PyObject *__pyx_self, PyObject *__pyx_v_atom_string) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("gdk_atom_objects_from_gdk_atom_array (wrapper)", 0); __pyx_r = __pyx_pf_4xpra_10gtk_common_4gtk3_9gdk_atoms_gdk_atom_objects_from_gdk_atom_array(__pyx_self, ((PyObject *)__pyx_v_atom_string)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_4xpra_10gtk_common_4gtk3_9gdk_atoms_gdk_atom_objects_from_gdk_atom_array(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_atom_string) { GdkAtom const *__pyx_v_array; GdkAtom __pyx_v_atom; gchar *__pyx_v_name; Py_ssize_t __pyx_v_array_len_bytes; CYTHON_UNUSED uintptr_t __pyx_v_gdk_atom_value; size_t __pyx_v_array_len; PyObject *__pyx_v_objects = NULL; size_t __pyx_v_i; PyObject *__pyx_v_gdk_atom = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("gdk_atom_objects_from_gdk_atom_array", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_9); __Pyx_XDECREF(__pyx_t_10); __Pyx_AddTraceback("xpra.gtk_common.gtk3.gdk_atoms.gdk_atom_objects_from_gdk_atom_array", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_objects); __Pyx_XDECREF(__pyx_v_gdk_atom); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple_ = PyTuple_Pack(10, __pyx_n_s_atom_string, __pyx_n_s_array, __pyx_n_s_atom, __pyx_n_s_name, __pyx_n_s_array_len_bytes, __pyx_n_s_gdk_atom_value, __pyx_n_s_array_len, __pyx_n_s_objects, __pyx_n_s_i, __pyx_n_s_gdk_atom); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 31, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple_); __Pyx_GIVEREF(__pyx_tuple_); /* … */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_4xpra_10gtk_common_4gtk3_9gdk_atoms_1gdk_atom_objects_from_gdk_atom_array, NULL, __pyx_n_s_xpra_gtk_common_gtk3_gdk_atoms); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 31, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_gdk_atom_objects_from_gdk_atom_a, __pyx_t_2) < 0) __PYX_ERR(0, 31, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_codeobj__2 = (PyObject*)__Pyx_PyCode_New(1, 0, 10, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple_, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_xpra_gtk_common_gtk3_gdk_atoms_p, __pyx_n_s_gdk_atom_objects_from_gdk_atom_a, 31, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__2)) __PYX_ERR(0, 31, __pyx_L1_error)
+32: cdef const GdkAtom * array = <GdkAtom*> NULL
__pyx_v_array = ((GdkAtom *)NULL);
33: cdef GdkAtom atom
34: cdef gchar* name
+35: cdef Py_ssize_t array_len_bytes = 0
__pyx_v_array_len_bytes = 0;
+36: cdef uintptr_t gdk_atom_value = 0
__pyx_v_gdk_atom_value = 0;
+37: assert PyObject_AsReadBuffer(atom_string, <const void**> &array, &array_len_bytes)==0
#ifndef CYTHON_WITHOUT_ASSERTIONS if (unlikely(!Py_OptimizeFlag)) { __pyx_t_1 = PyObject_AsReadBuffer(__pyx_v_atom_string, ((void const **)(&__pyx_v_array)), (&__pyx_v_array_len_bytes)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 37, __pyx_L1_error) if (unlikely(!((__pyx_t_1 == 0) != 0))) { PyErr_SetNone(PyExc_AssertionError); __PYX_ERR(0, 37, __pyx_L1_error) } } #endif
+38: array_len = array_len_bytes / sizeof(GdkAtom)
__pyx_t_2 = (sizeof(GdkAtom)); if (unlikely(__pyx_t_2 == 0)) { PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero"); __PYX_ERR(0, 38, __pyx_L1_error) } __pyx_v_array_len = (__pyx_v_array_len_bytes / __pyx_t_2);
+39: objects = []
__pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 39, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_v_objects = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0;
+40: for i in range(array_len):
__pyx_t_2 = __pyx_v_array_len; __pyx_t_4 = __pyx_t_2; for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { __pyx_v_i = __pyx_t_5;
+41: atom = array[i]
__pyx_v_atom = (__pyx_v_array[__pyx_v_i]);
+42: if atom==GDK_NONE:
__pyx_t_6 = ((__pyx_v_atom == GDK_NONE) != 0); if (__pyx_t_6) { /* … */ }
+43: continue
goto __pyx_L3_continue;
44: #round-trip via the name,
45: #inefficient but what other constructor is there?
+46: name = gdk_atom_name(atom)
__pyx_v_name = gdk_atom_name(__pyx_v_atom);
+47: if name:
__pyx_t_6 = (__pyx_v_name != 0); if (__pyx_t_6) { /* … */ } __pyx_L3_continue:; }
+48: gdk_atom = Gdk.Atom.intern(name, False)
__pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_Gdk); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 48, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_Atom); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 48, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_intern); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 48, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = __Pyx_PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 48, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = NULL; __pyx_t_1 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); __pyx_t_1 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_8, Py_False}; __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_1, 2+__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 48, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_8, Py_False}; __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_1, 2+__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 48, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } else #endif { __pyx_t_10 = PyTuple_New(2+__pyx_t_1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 48, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); if (__pyx_t_9) { __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_9); __pyx_t_9 = NULL; } __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_1, __pyx_t_8); __Pyx_INCREF(Py_False); __Pyx_GIVEREF(Py_False); PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_1, Py_False); __pyx_t_8 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 48, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF_SET(__pyx_v_gdk_atom, __pyx_t_3); __pyx_t_3 = 0;
+49: objects.append(gdk_atom)
__pyx_t_11 = __Pyx_PyList_Append(__pyx_v_objects, __pyx_v_gdk_atom); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 49, __pyx_L1_error)
+50: return objects
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_objects); __pyx_r = __pyx_v_objects; goto __pyx_L0;
51:
+52: def gdk_atom_array_from_atoms(atoms):
/* Python wrapper */ static PyObject *__pyx_pw_4xpra_10gtk_common_4gtk3_9gdk_atoms_3gdk_atom_array_from_atoms(PyObject *__pyx_self, PyObject *__pyx_v_atoms); /*proto*/ static PyMethodDef __pyx_mdef_4xpra_10gtk_common_4gtk3_9gdk_atoms_3gdk_atom_array_from_atoms = {"gdk_atom_array_from_atoms", (PyCFunction)__pyx_pw_4xpra_10gtk_common_4gtk3_9gdk_atoms_3gdk_atom_array_from_atoms, METH_O, 0}; static PyObject *__pyx_pw_4xpra_10gtk_common_4gtk3_9gdk_atoms_3gdk_atom_array_from_atoms(PyObject *__pyx_self, PyObject *__pyx_v_atoms) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("gdk_atom_array_from_atoms (wrapper)", 0); __pyx_r = __pyx_pf_4xpra_10gtk_common_4gtk3_9gdk_atoms_2gdk_atom_array_from_atoms(__pyx_self, ((PyObject *)__pyx_v_atoms)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_4xpra_10gtk_common_4gtk3_9gdk_atoms_2gdk_atom_array_from_atoms(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_atoms) { GdkAtom __pyx_v_gdk_atom; uintptr_t __pyx_v_gdk_atom_value; PyObject *__pyx_v_atom_array = NULL; PyObject *__pyx_v_atom = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("gdk_atom_array_from_atoms", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("xpra.gtk_common.gtk3.gdk_atoms.gdk_atom_array_from_atoms", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_atom_array); __Pyx_XDECREF(__pyx_v_atom); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__3 = PyTuple_Pack(5, __pyx_n_s_atoms, __pyx_n_s_gdk_atom, __pyx_n_s_gdk_atom_value, __pyx_n_s_atom_array, __pyx_n_s_atom); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 52, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__3); __Pyx_GIVEREF(__pyx_tuple__3); /* … */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_4xpra_10gtk_common_4gtk3_9gdk_atoms_3gdk_atom_array_from_atoms, NULL, __pyx_n_s_xpra_gtk_common_gtk3_gdk_atoms); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 52, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_gdk_atom_array_from_atoms, __pyx_t_2) < 0) __PYX_ERR(0, 52, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
53: cdef GdkAtom gdk_atom
54: cdef uintptr_t gdk_atom_value
+55: atom_array = []
__pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 55, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_atom_array = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+56: for atom in atoms:
if (likely(PyList_CheckExact(__pyx_v_atoms)) || PyTuple_CheckExact(__pyx_v_atoms)) { __pyx_t_1 = __pyx_v_atoms; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0; __pyx_t_3 = NULL; } else { __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_atoms); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 56, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 56, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_3)) { if (likely(PyList_CheckExact(__pyx_t_1))) { if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 56, __pyx_L1_error) #else __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 56, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif } else { if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 56, __pyx_L1_error) #else __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 56, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif } } else { __pyx_t_4 = __pyx_t_3(__pyx_t_1); if (unlikely(!__pyx_t_4)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 56, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_4); } __Pyx_XDECREF_SET(__pyx_v_atom, __pyx_t_4); __pyx_t_4 = 0; /* … */ } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+57: gdk_atom = gdk_atom_intern(atom, False)
__pyx_t_5 = __Pyx_PyObject_AsString(__pyx_v_atom); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(0, 57, __pyx_L1_error) __pyx_v_gdk_atom = gdk_atom_intern(__pyx_t_5, 0);
+58: if gdk_atom!=GDK_NONE:
__pyx_t_6 = ((__pyx_v_gdk_atom != GDK_NONE) != 0); if (__pyx_t_6) { /* … */ }
+59: gdk_atom_value = <uintptr_t> gdk_atom
__pyx_v_gdk_atom_value = ((uintptr_t)__pyx_v_gdk_atom);
+60: atom_array.append(gdk_atom_value)
__pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_gdk_atom_value); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 60, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_7 = __Pyx_PyList_Append(__pyx_v_atom_array, __pyx_t_4); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 60, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+61: return atom_array
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_atom_array); __pyx_r = __pyx_v_atom_array; goto __pyx_L0;