Welcome to mirror list, hosted at ThFree Co, Russian Federation.

pygobject_8h_source.html « public - gitlab.com/Remmina/remminadoc.gitlab.io.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 9be99f6bcba24207c9391a0529c8dc31bad97d2f (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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Remmina - The GTK+ Remote Desktop Client: pygobject.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="org.remmina.Remmina.png"/></td>
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Remmina - The GTK+ Remote Desktop Client
   &#160;<span id="projectnumber">v1.4.25</span>
   </div>
   <div id="projectbrief">Remmina is a remote desktop client written in GTK+, aiming to be useful for system administrators and travellers, who need to work with lots of remote computers in front of either large monitors or tiny netbooks. Remmina supports multiple network protocols in an integrated and consistent user interface. Currently RDP, VNC, NX, XDMCP and SSH are supported.</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('pygobject_8h_source.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="headertitle">
<div class="title">pygobject.h</div>  </div>
</div><!--header-->
<div class="contents">
<a href="pygobject_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/* -*- Mode: C; c-basic-offset: 4 -*- */</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> * Remmina - The GTK+ Remote Desktop Client</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment"> * Copyright (C) 2016-2022 Antenore Gatta, Giovanni Panozzo</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="comment"> * along with this program; if not, write to the Free Software</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor,</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="comment"> * Boston, MA  02110-1301, USA.</span></div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="comment"> *  In addition, as a special exception, the copyright holders give</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="comment"> *  permission to link the code of portions of this program with the</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="comment"> *  OpenSSL library under certain conditions as described in each</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="comment"> *  individual source file, and distribute linked combinations</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="comment"> *  including the two.</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="comment"> *  You must obey the GNU General Public License in all respects</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="comment"> *  for all of the code used other than OpenSSL. *  If you modify</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="comment"> *  file(s) with this exception, you may extend this exception to your</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="comment"> *  version of the file(s), but you are not obligated to do so. *  If you</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="comment"> *  do not wish to do so, delete this exception statement from your</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="comment"> *  version. *  If you delete this exception statement from all source</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="comment"> *  files in the program, then also delete it here.</span></div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="preprocessor">#ifndef _PYGOBJECT_H_</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="preprocessor">#define _PYGOBJECT_H_</span></div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="preprocessor">#include &lt;Python.h&gt;</span></div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="preprocessor">#include &lt;glib.h&gt;</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="preprocessor">#include &lt;glib-object.h&gt;</span></div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;G_BEGIN_DECLS</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="comment">/* PyGClosure is a _private_ structure */</span></div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="pygobject_8h.html#a31a009f7ec59c55c3ad1fe73343e543f">   47</a></span>&#160;<span class="keyword">typedef</span> void (* <a class="code" href="pygobject_8h.html#a31a009f7ec59c55c3ad1fe73343e543f">PyClosureExceptionHandler</a>) (GValue *ret, guint n_param_values, <span class="keyword">const</span> GValue *params);</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="pygobject_8h.html#a5fd56bd0ab96fa108f13eedd4a32813d">   48</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct___py_g_closure.html">_PyGClosure</a> <a class="code" href="struct___py_g_closure.html">PyGClosure</a>;</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="pygobject_8h.html#a8373d23668bd78bcb75857e129e49b17">   49</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span>_PyGObjectData <a class="code" href="pygobject_8h.html#a8373d23668bd78bcb75857e129e49b17">PyGObjectData</a>;</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="struct___py_g_closure.html">   51</a></span>&#160;<span class="keyword">struct </span><a class="code" href="struct___py_g_closure.html">_PyGClosure</a> {</div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="struct___py_g_closure.html#a8d27f12a150fc5022f60defb6643b5b3">   52</a></span>&#160;    GClosure <a class="code" href="struct___py_g_closure.html#a8d27f12a150fc5022f60defb6643b5b3">closure</a>;</div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="struct___py_g_closure.html#ad1a54d7ba427efc43fb1784e3bd8fc53">   53</a></span>&#160;    PyObject *<a class="code" href="struct___py_g_closure.html#ad1a54d7ba427efc43fb1784e3bd8fc53">callback</a>;</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="struct___py_g_closure.html#a06f82387cbfc6b15a572b42ad8e68d7b">   54</a></span>&#160;    PyObject *<a class="code" href="struct___py_g_closure.html#a06f82387cbfc6b15a572b42ad8e68d7b">extra_args</a>; <span class="comment">/* tuple of extra args to pass to callback */</span></div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="struct___py_g_closure.html#ac12e0615b1fbb88223162564f5655001">   55</a></span>&#160;    PyObject *<a class="code" href="struct___py_g_closure.html#ac12e0615b1fbb88223162564f5655001">swap_data</a>; <span class="comment">/* other object for gtk_signal_connect__object */</span></div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="struct___py_g_closure.html#ad62131315a6dd08a8454c683709756b5">   56</a></span>&#160;    <a class="code" href="pygobject_8h.html#a31a009f7ec59c55c3ad1fe73343e543f">PyClosureExceptionHandler</a> <a class="code" href="struct___py_g_closure.html#ad62131315a6dd08a8454c683709756b5">exception_handler</a>;</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;};</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="pygobject_8h.html#a18eca93aad557c40e8a75b655961b159">   59</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">enum</span> {</div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="pygobject_8h.html#a18eca93aad557c40e8a75b655961b159a6ca21e5d81f80ca35b556f92f5ca35cc">   60</a></span>&#160;    <a class="code" href="pygobject_8h.html#a18eca93aad557c40e8a75b655961b159a6ca21e5d81f80ca35b556f92f5ca35cc">PYGOBJECT_USING_TOGGLE_REF</a> = 1 &lt;&lt; 0,</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="pygobject_8h.html#a18eca93aad557c40e8a75b655961b159a9ed2edb74e687da7e752fd9968eece34">   61</a></span>&#160;    <a class="code" href="pygobject_8h.html#a18eca93aad557c40e8a75b655961b159a9ed2edb74e687da7e752fd9968eece34">PYGOBJECT_IS_FLOATING_REF</a> = 1 &lt;&lt; 1</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;} <a class="code" href="pygobject_8h.html#a18eca93aad557c40e8a75b655961b159">PyGObjectFlags</a>;</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;  <span class="comment">/* closures is just an alias for what is found in the</span></div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;<span class="comment">   * PyGObjectData */</span></div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="struct_py_g_object.html">   66</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span>{</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;    PyObject_HEAD</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="struct_py_g_object.html#a430bcbe0d2b121a985172a45bf3714f8">   68</a></span>&#160;    GObject *<a class="code" href="struct_py_g_object.html#a430bcbe0d2b121a985172a45bf3714f8">obj</a>;</div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="struct_py_g_object.html#a5f60ec58074a34b1e6573a90e31d198e">   69</a></span>&#160;    PyObject *<a class="code" href="struct_py_g_object.html#a5f60ec58074a34b1e6573a90e31d198e">inst_dict</a>; <span class="comment">/* the instance dictionary -- must be last */</span></div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="struct_py_g_object.html#ae72a52661fdb6bd5566be7bb85012260">   70</a></span>&#160;    PyObject *<a class="code" href="struct_py_g_object.html#ae72a52661fdb6bd5566be7bb85012260">weakreflist</a>; <span class="comment">/* list of weak references */</span></div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;      <span class="comment">/*&lt; private &gt;*/</span></div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;      <span class="comment">/* using union to preserve ABI compatibility (structure size</span></div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;<span class="comment">       * must not change) */</span></div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;    <span class="keyword">union </span>{</div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="struct_py_g_object.html#ad51b8278b3ddd6ed392cc388cb95ed3d">   76</a></span>&#160;        GSList *<a class="code" href="struct_py_g_object.html#ad51b8278b3ddd6ed392cc388cb95ed3d">closures</a>; <span class="comment">/* stale field; no longer updated DO-NOT-USE! */</span></div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="struct_py_g_object.html#a517264b1e7fdb622956923bd5e59288c">   77</a></span>&#160;        <a class="code" href="pygobject_8h.html#a18eca93aad557c40e8a75b655961b159">PyGObjectFlags</a> <a class="code" href="struct_py_g_object.html#a517264b1e7fdb622956923bd5e59288c">flags</a>;</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;    } private_flags;</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;} <a class="code" href="struct_py_g_object.html">PyGObject</a>;</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;<span class="preprocessor">#define pygobject_get(v) (((PyGObject *)(v))-&gt;obj)</span></div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;<span class="preprocessor">#define pygobject_check(v,base) (PyObject_TypeCheck(v,base))</span></div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="struct_py_g_boxed.html">   85</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span>{</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;    PyObject_HEAD</div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="struct_py_g_boxed.html#a77d67756985e5c2f822ffa3a99500d0d">   87</a></span>&#160;    gpointer <a class="code" href="struct_py_g_boxed.html#a77d67756985e5c2f822ffa3a99500d0d">boxed</a>;</div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="struct_py_g_boxed.html#a2cf407ea1a1c5375075bc5c41302f7a2">   88</a></span>&#160;    GType <a class="code" href="struct_py_g_boxed.html#a2cf407ea1a1c5375075bc5c41302f7a2">gtype</a>;</div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="struct_py_g_boxed.html#a4bd93b702c369951058787ee1f1f8921">   89</a></span>&#160;    gboolean <a class="code" href="struct_py_g_boxed.html#a4bd93b702c369951058787ee1f1f8921">free_on_dealloc</a>;</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;} <a class="code" href="struct_py_g_boxed.html">PyGBoxed</a>;</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;<span class="preprocessor">#define pyg_boxed_get(v,t)      ((t *)((PyGBoxed *)(v))-&gt;boxed)</span></div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;<span class="preprocessor">#define pyg_boxed_check(v,typecode) (PyObject_TypeCheck(v, &amp;PyGBoxed_Type) &amp;&amp; ((PyGBoxed *)(v))-&gt;gtype == typecode)</span></div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="struct_py_g_pointer.html">   95</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span>{</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;    PyObject_HEAD</div><div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="struct_py_g_pointer.html#aa7372c41b1e65d1c8f46bcddf727c1b4">   97</a></span>&#160;    gpointer <a class="code" href="struct_py_g_pointer.html#aa7372c41b1e65d1c8f46bcddf727c1b4">pointer</a>;</div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="struct_py_g_pointer.html#a247024c11b1f37f8e39c912f5667b363">   98</a></span>&#160;    GType <a class="code" href="struct_py_g_pointer.html#a247024c11b1f37f8e39c912f5667b363">gtype</a>;</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;} <a class="code" href="struct_py_g_pointer.html">PyGPointer</a>;</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;<span class="preprocessor">#define pyg_pointer_get(v,t)      ((t *)((PyGPointer *)(v))-&gt;pointer)</span></div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;<span class="preprocessor">#define pyg_pointer_check(v,typecode) (PyObject_TypeCheck(v, &amp;PyGPointer_Type) &amp;&amp; ((PyGPointer *)(v))-&gt;gtype == typecode)</span></div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;</div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="pygobject_8h.html#aa4fb7010e1fe712bd991f6636358af72">  104</a></span>&#160;<span class="keyword">typedef</span> void (*<a class="code" href="pygobject_8h.html#aa4fb7010e1fe712bd991f6636358af72">PyGFatalExceptionFunc</a>) (void);</div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="pygobject_8h.html#afe8c456f1f21fb47870b39d1cfc6cf7f">  105</a></span>&#160;<span class="keyword">typedef</span> void (*<a class="code" href="pygobject_8h.html#afe8c456f1f21fb47870b39d1cfc6cf7f">PyGThreadBlockFunc</a>) (void);</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;</div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="struct_py_g_param_spec.html">  107</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span>{</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;    PyObject_HEAD</div><div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="struct_py_g_param_spec.html#a443861467512d950328b7e449cbe13f5">  109</a></span>&#160;    GParamSpec *<a class="code" href="struct_py_g_param_spec.html#a443861467512d950328b7e449cbe13f5">pspec</a>;</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;} <a class="code" href="struct_py_g_param_spec.html">PyGParamSpec</a>;</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;<span class="preprocessor">#define PyGParamSpec_Get(v) (((PyGParamSpec *)v)-&gt;pspec)</span></div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;<span class="preprocessor">#define PyGParamSpec_Check(v) (PyObject_TypeCheck(v, &amp;PyGParamSpec_Type))</span></div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;</div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="pygobject_8h.html#ae7eb0d738416d8c9e517e5315010d98b">  115</a></span>&#160;<span class="keyword">typedef</span> int (*<a class="code" href="pygobject_8h.html#ae7eb0d738416d8c9e517e5315010d98b">PyGClassInitFunc</a>) (gpointer gclass, PyTypeObject *pyclass);</div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="pygobject_8h.html#aa6bee291c198fcfe9815d319f8a021a1">  116</a></span>&#160;<span class="keyword">typedef</span> PyTypeObject * (*PyGTypeRegistrationFunction) (<span class="keyword">const</span> gchar *name,</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;                               gpointer data);</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;</div><div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="struct___py_g_object___functions.html">  119</a></span>&#160;<span class="keyword">struct </span><a class="code" href="struct___py_g_object___functions.html">_PyGObject_Functions</a> {</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;    <span class="comment">/*</span></div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;<span class="comment">     * All field names in here are considered private,</span></div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;<span class="comment">     * use the macros below instead, which provides stability</span></div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;<span class="comment">     */</span></div><div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="struct___py_g_object___functions.html#a61415690fdbf81e25713851b2f846852">  124</a></span>&#160;    void (* register_class)(PyObject *dict, <span class="keyword">const</span> gchar *class_name,</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;                GType gtype, PyTypeObject *type, PyObject *bases);</div><div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="struct___py_g_object___functions.html#a825b53b27b02b6d2ae002c578ceef995">  126</a></span>&#160;    void (* register_wrapper)(PyObject *<span class="keyword">self</span>);</div><div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="struct___py_g_object___functions.html#a640a78c567d19c4207812a0001c4c98a">  127</a></span>&#160;    PyTypeObject *(* lookup_class)(GType type);</div><div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="struct___py_g_object___functions.html#a626213ec102c82af7fedf0c56d649848">  128</a></span>&#160;    PyObject *(* newgobj)(GObject *obj);</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;</div><div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="struct___py_g_object___functions.html#a0c3d849d751913eac5c1e1b807a39767">  130</a></span>&#160;    GClosure *(* closure_new)(PyObject *<a class="code" href="struct___py_g_closure.html#ad1a54d7ba427efc43fb1784e3bd8fc53">callback</a>, PyObject *<a class="code" href="struct___py_g_closure.html#a06f82387cbfc6b15a572b42ad8e68d7b">extra_args</a>,</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;                  PyObject *<a class="code" href="struct___py_g_closure.html#ac12e0615b1fbb88223162564f5655001">swap_data</a>);</div><div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="struct___py_g_object___functions.html#ad769046c96b260bcc38ca91134acc562">  132</a></span>&#160;    void      (* object_watch_closure)(PyObject *<span class="keyword">self</span>, GClosure *<a class="code" href="struct___py_g_closure.html#a8d27f12a150fc5022f60defb6643b5b3">closure</a>);</div><div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="struct___py_g_object___functions.html#a121d444bd1df094a0ac719bc352be72d">  133</a></span>&#160;    GDestroyNotify <a class="code" href="struct___py_g_object___functions.html#a121d444bd1df094a0ac719bc352be72d">destroy_notify</a>;</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;</div><div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="struct___py_g_object___functions.html#ac81c2a41d94c5dd99a2318a051890154">  135</a></span>&#160;    GType (* type_from_object)(PyObject *obj);</div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="struct___py_g_object___functions.html#a5d46c58885ea45da65f913ff7a91de9e">  136</a></span>&#160;    PyObject *(* type_wrapper_new)(GType type);</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;</div><div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="struct___py_g_object___functions.html#a9713988fd7793fc380123c78126881cd">  138</a></span>&#160;    gint (* enum_get_value)(GType enum_type, PyObject *obj, gint *val);</div><div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="struct___py_g_object___functions.html#a5445cee3fea52b52016fc080c6fc585d">  139</a></span>&#160;    gint (* flags_get_value)(GType flag_type, PyObject *obj, gint *val);</div><div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="struct___py_g_object___functions.html#a87e150041957b9756859eec2d71fe910">  140</a></span>&#160;    void (* register_gtype_custom)(GType gtype,</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;                PyObject *(* from_func)(<span class="keyword">const</span> GValue *value),</div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;                <span class="keywordtype">int</span> (* to_func)(GValue *value, PyObject *obj));</div><div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="struct___py_g_object___functions.html#a9962a8fc110070bfea4a004d62ae3aab">  143</a></span>&#160;    int (* value_from_pyobject)(GValue *value, PyObject *obj);</div><div class="line"><a name="l00144"></a><span class="lineno"><a class="line" href="struct___py_g_object___functions.html#a7061caa3d0872fea89d5a4b04fd6af01">  144</a></span>&#160;    PyObject *(* value_as_pyobject)(<span class="keyword">const</span> GValue *value, gboolean copy_boxed);</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;</div><div class="line"><a name="l00146"></a><span class="lineno"><a class="line" href="struct___py_g_object___functions.html#a466ef91a231952e23c11ec960839786e">  146</a></span>&#160;    void (* register_interface)(PyObject *dict, <span class="keyword">const</span> gchar *class_name,</div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;                GType gtype, PyTypeObject *type);</div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;</div><div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="struct___py_g_object___functions.html#af9303ea3630404a9859b38d693fdd449">  149</a></span>&#160;    PyTypeObject *<a class="code" href="struct___py_g_object___functions.html#af9303ea3630404a9859b38d693fdd449">boxed_type</a>;</div><div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="struct___py_g_object___functions.html#a52c9cf526527680629e088052e401da9">  150</a></span>&#160;    void (* register_boxed)(PyObject *dict, <span class="keyword">const</span> gchar *class_name,</div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;                GType boxed_type, PyTypeObject *type);</div><div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="struct___py_g_object___functions.html#a3d20c0f1f1f2f20f4d7d42966655f2dd">  152</a></span>&#160;    PyObject *(* boxed_new)(GType boxed_type, gpointer boxed,</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;                gboolean copy_boxed, gboolean own_ref);</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;</div><div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="struct___py_g_object___functions.html#abefaf680195305d6e5f03b3d9ff6999d">  155</a></span>&#160;    PyTypeObject *<a class="code" href="struct___py_g_object___functions.html#abefaf680195305d6e5f03b3d9ff6999d">pointer_type</a>;</div><div class="line"><a name="l00156"></a><span class="lineno"><a class="line" href="struct___py_g_object___functions.html#a25e8e4d70de68dc02430db738858ccbb">  156</a></span>&#160;    void (* register_pointer)(PyObject *dict, <span class="keyword">const</span> gchar *class_name,</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;                  GType pointer_type, PyTypeObject *type);</div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="struct___py_g_object___functions.html#a50cbad73cc3b772d6e6a22c9b754dc10">  158</a></span>&#160;    PyObject *(* pointer_new)(GType boxed_type, gpointer pointer);</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;</div><div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="struct___py_g_object___functions.html#a1ea385299ad7dc5defc51c870043d18c">  160</a></span>&#160;    void (* enum_add_constants)(PyObject *module, GType enum_type,</div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;                <span class="keyword">const</span> gchar *strip_prefix);</div><div class="line"><a name="l00162"></a><span class="lineno"><a class="line" href="struct___py_g_object___functions.html#a42c0c09090af7b56edbed46a17b0832c">  162</a></span>&#160;    void (* flags_add_constants)(PyObject *module, GType flags_type,</div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;                 <span class="keyword">const</span> gchar *strip_prefix);</div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;</div><div class="line"><a name="l00165"></a><span class="lineno"><a class="line" href="struct___py_g_object___functions.html#a3a838ae95cee74657429c012a410ee7d">  165</a></span>&#160;    <span class="keyword">const</span> gchar *(* constant_strip_prefix)(<span class="keyword">const</span> gchar *name,</div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;                     <span class="keyword">const</span> gchar *strip_prefix);</div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;</div><div class="line"><a name="l00168"></a><span class="lineno"><a class="line" href="struct___py_g_object___functions.html#a330da4584805c35e179ee081168afb19">  168</a></span>&#160;    gboolean (* error_check)(GError **error);</div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;</div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;    <span class="comment">/* hooks to register handlers for getting GDK threads to cooperate</span></div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;<span class="comment">     * with python threading */</span></div><div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="struct___py_g_object___functions.html#a47a7799ca12267831b38aead878f6b51">  172</a></span>&#160;    void (* set_thread_block_funcs) (<a class="code" href="pygobject_8h.html#afe8c456f1f21fb47870b39d1cfc6cf7f">PyGThreadBlockFunc</a> block_threads_func,</div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;                     <a class="code" href="pygobject_8h.html#afe8c456f1f21fb47870b39d1cfc6cf7f">PyGThreadBlockFunc</a> unblock_threads_func);</div><div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="struct___py_g_object___functions.html#a98baff9a2adb7d8d41572e5f33a36faf">  174</a></span>&#160;    <a class="code" href="pygobject_8h.html#afe8c456f1f21fb47870b39d1cfc6cf7f">PyGThreadBlockFunc</a> <a class="code" href="struct___py_g_object___functions.html#a98baff9a2adb7d8d41572e5f33a36faf">block_threads</a>;</div><div class="line"><a name="l00175"></a><span class="lineno"><a class="line" href="struct___py_g_object___functions.html#aa1061a25517a0174ea2f4cae1ad421de">  175</a></span>&#160;    <a class="code" href="pygobject_8h.html#afe8c456f1f21fb47870b39d1cfc6cf7f">PyGThreadBlockFunc</a> <a class="code" href="struct___py_g_object___functions.html#aa1061a25517a0174ea2f4cae1ad421de">unblock_threads</a>;</div><div class="line"><a name="l00176"></a><span class="lineno"><a class="line" href="struct___py_g_object___functions.html#ab5994a4acad9d77c2c658835e3660aad">  176</a></span>&#160;    PyTypeObject *<a class="code" href="struct___py_g_object___functions.html#ab5994a4acad9d77c2c658835e3660aad">paramspec_type</a>;</div><div class="line"><a name="l00177"></a><span class="lineno"><a class="line" href="struct___py_g_object___functions.html#af668b2fa5de021ec68787230b899e8a5">  177</a></span>&#160;    PyObject *(* paramspec_new)(GParamSpec *spec);</div><div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="struct___py_g_object___functions.html#a3522f7689e752c5beb1e9bdbeb1ec617">  178</a></span>&#160;    GParamSpec *(*paramspec_get)(PyObject *tuple);</div><div class="line"><a name="l00179"></a><span class="lineno"><a class="line" href="struct___py_g_object___functions.html#aeb4ebdaa647823fc86c02ceee500a399">  179</a></span>&#160;    int (*pyobj_to_unichar_conv)(PyObject *pyobj, <span class="keywordtype">void</span>* ptr);</div><div class="line"><a name="l00180"></a><span class="lineno"><a class="line" href="struct___py_g_object___functions.html#abd7bb1466f79148197a55787a00b78f7">  180</a></span>&#160;    gboolean (*parse_constructor_args)(GType        obj_type,</div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;                                       <span class="keywordtype">char</span>       **arg_names,</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;                                       <span class="keywordtype">char</span>       **prop_names,</div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;                                       GParameter  *params,</div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;                                       guint       *nparams,</div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;                                       PyObject   **py_args);</div><div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="struct___py_g_object___functions.html#a27dc86ac458c26fb91326cdd79de655d">  186</a></span>&#160;    PyObject *(* param_gvalue_as_pyobject) (<span class="keyword">const</span> GValue* gvalue,</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;                                            gboolean copy_boxed,</div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;                        <span class="keyword">const</span> GParamSpec* pspec);</div><div class="line"><a name="l00189"></a><span class="lineno"><a class="line" href="struct___py_g_object___functions.html#aaa33d58537dc500a74778d213eb2317c">  189</a></span>&#160;    int (* gvalue_from_param_pyobject) (GValue* value,</div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;                                        PyObject* py_obj,</div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;                    <span class="keyword">const</span> GParamSpec* pspec);</div><div class="line"><a name="l00192"></a><span class="lineno"><a class="line" href="struct___py_g_object___functions.html#a8001eeb6a1aa2b21a4bc64551bb187bc">  192</a></span>&#160;    PyTypeObject *<a class="code" href="struct___py_g_object___functions.html#a8001eeb6a1aa2b21a4bc64551bb187bc">enum_type</a>;</div><div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="struct___py_g_object___functions.html#ab6ec4ef9e5a49df2b6c3e0d5e32e6240">  193</a></span>&#160;    PyObject *(*enum_add)(PyObject *module,</div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;              <span class="keyword">const</span> <span class="keywordtype">char</span> *type_name_,</div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;              <span class="keyword">const</span> <span class="keywordtype">char</span> *strip_prefix,</div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;              GType gtype);</div><div class="line"><a name="l00197"></a><span class="lineno"><a class="line" href="struct___py_g_object___functions.html#af51fb81c8f11f3e30906a740590adb70">  197</a></span>&#160;    PyObject* (*enum_from_gtype)(GType gtype, <span class="keywordtype">int</span> value);</div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;</div><div class="line"><a name="l00199"></a><span class="lineno"><a class="line" href="struct___py_g_object___functions.html#ad78ae39de24df75bd03ae5cd4a9cc41a">  199</a></span>&#160;    PyTypeObject *<a class="code" href="struct___py_g_object___functions.html#ad78ae39de24df75bd03ae5cd4a9cc41a">flags_type</a>;</div><div class="line"><a name="l00200"></a><span class="lineno"><a class="line" href="struct___py_g_object___functions.html#a0f1dbd5adeef32c45057d0b48c3516c3">  200</a></span>&#160;    PyObject *(*flags_add)(PyObject *module,</div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;               <span class="keyword">const</span> <span class="keywordtype">char</span> *type_name_,</div><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;               <span class="keyword">const</span> <span class="keywordtype">char</span> *strip_prefix,</div><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;               GType gtype);</div><div class="line"><a name="l00204"></a><span class="lineno"><a class="line" href="struct___py_g_object___functions.html#aad8f2702878f8cd16faced56a1f57bfd">  204</a></span>&#160;    PyObject* (*flags_from_gtype)(GType gtype, <span class="keywordtype">int</span> value);</div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;</div><div class="line"><a name="l00206"></a><span class="lineno"><a class="line" href="struct___py_g_object___functions.html#a71bc3c45f05ddd2e0306db0b745a1928">  206</a></span>&#160;    gboolean <a class="code" href="struct___py_g_object___functions.html#a71bc3c45f05ddd2e0306db0b745a1928">threads_enabled</a>;</div><div class="line"><a name="l00207"></a><span class="lineno"><a class="line" href="struct___py_g_object___functions.html#aae527b2b765b476782cbf7fda73a3431">  207</a></span>&#160;    int       (*enable_threads) (void);</div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;</div><div class="line"><a name="l00209"></a><span class="lineno"><a class="line" href="struct___py_g_object___functions.html#a5e9c101abdff6c00951b7002f46449bc">  209</a></span>&#160;    int       (*gil_state_ensure) (void);</div><div class="line"><a name="l00210"></a><span class="lineno"><a class="line" href="struct___py_g_object___functions.html#a8d91144565902e5e9aab18e7c333fca2">  210</a></span>&#160;    void      (*gil_state_release) (<span class="keywordtype">int</span> flag);</div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;</div><div class="line"><a name="l00212"></a><span class="lineno"><a class="line" href="struct___py_g_object___functions.html#a396c5dbcb6c9ab83c4d1214d4f7cc73b">  212</a></span>&#160;    void      (*register_class_init) (GType gtype, <a class="code" href="pygobject_8h.html#ae7eb0d738416d8c9e517e5315010d98b">PyGClassInitFunc</a> class_init);</div><div class="line"><a name="l00213"></a><span class="lineno"><a class="line" href="struct___py_g_object___functions.html#a812e0a8871f3fef5f32bf78b216c2622">  213</a></span>&#160;    void      (*register_interface_info) (GType gtype, <span class="keyword">const</span> GInterfaceInfo *info);</div><div class="line"><a name="l00214"></a><span class="lineno"><a class="line" href="struct___py_g_object___functions.html#a0efb8529ae333287c8deb9cff64ad4e8">  214</a></span>&#160;    void      (*closure_set_exception_handler) (GClosure *<a class="code" href="struct___py_g_closure.html#a8d27f12a150fc5022f60defb6643b5b3">closure</a>, <a class="code" href="pygobject_8h.html#a31a009f7ec59c55c3ad1fe73343e543f">PyClosureExceptionHandler</a> handler);</div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;</div><div class="line"><a name="l00216"></a><span class="lineno"><a class="line" href="struct___py_g_object___functions.html#a12c41e1d275f9519e15900ddbf760aed">  216</a></span>&#160;    void      (*add_warning_redirection) (<span class="keyword">const</span> <span class="keywordtype">char</span> *domain,</div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;                                          PyObject   *warning);</div><div class="line"><a name="l00218"></a><span class="lineno"><a class="line" href="struct___py_g_object___functions.html#a3a352a93b4ef023bfe3c82e52d8b56be">  218</a></span>&#160;    void      (*disable_warning_redirections) (void);</div><div class="line"><a name="l00219"></a><span class="lineno"><a class="line" href="struct___py_g_object___functions.html#ac8fd3fc3e0ef2d7578f2c6e789359fce">  219</a></span>&#160;    void      (*type_register_custom)(<span class="keyword">const</span> gchar *type_name,</div><div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;                      <a class="code" href="pygobject_8h.html#aa6bee291c198fcfe9815d319f8a021a1">PyGTypeRegistrationFunction</a> <a class="code" href="struct___py_g_closure.html#ad1a54d7ba427efc43fb1784e3bd8fc53">callback</a>,</div><div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;                      gpointer data);</div><div class="line"><a name="l00222"></a><span class="lineno"><a class="line" href="struct___py_g_object___functions.html#afaee7ba8c128deedb97211535b233c43">  222</a></span>&#160;    gboolean  (*gerror_exception_check) (GError **error);</div><div class="line"><a name="l00223"></a><span class="lineno"><a class="line" href="struct___py_g_object___functions.html#a4610c6b3a0751db275d76488f9b87bc9">  223</a></span>&#160;    PyObject* (*option_group_new) (GOptionGroup *group);</div><div class="line"><a name="l00224"></a><span class="lineno"><a class="line" href="struct___py_g_object___functions.html#a7ccc5186918e1b596f3a20bc373ae318">  224</a></span>&#160;    GType (* type_from_object_strict) (PyObject *obj, gboolean strict);</div><div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;};</div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;<span class="preprocessor">#ifndef _INSIDE_PYGOBJECT_</span></div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;</div><div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;<span class="preprocessor">#if defined(NO_IMPORT) || defined(NO_IMPORT_PYGOBJECT)</span></div><div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;<span class="keyword">extern</span> <span class="keyword">struct </span><a class="code" href="struct___py_g_object___functions.html">_PyGObject_Functions</a> *<a class="code" href="pygobject_8h.html#a2fa9a05e0ca89774ce56238aa81a6cac">_PyGObject_API</a>;</div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00232"></a><span class="lineno"><a class="line" href="pygobject_8h.html#a2fa9a05e0ca89774ce56238aa81a6cac">  232</a></span>&#160;<span class="keyword">struct </span><a class="code" href="struct___py_g_object___functions.html">_PyGObject_Functions</a> *<a class="code" href="pygobject_8h.html#a2fa9a05e0ca89774ce56238aa81a6cac">_PyGObject_API</a>;</div><div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;</div><div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;<span class="preprocessor">#define pygobject_register_class    (_PyGObject_API-&gt;register_class)</span></div><div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;<span class="preprocessor">#define pygobject_register_wrapper  (_PyGObject_API-&gt;register_wrapper)</span></div><div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;<span class="preprocessor">#define pygobject_lookup_class      (_PyGObject_API-&gt;lookup_class)</span></div><div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;<span class="preprocessor">#define pygobject_new               (_PyGObject_API-&gt;newgobj)</span></div><div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;<span class="preprocessor">#define pyg_closure_new             (_PyGObject_API-&gt;closure_new)</span></div><div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;<span class="preprocessor">#define pygobject_watch_closure     (_PyGObject_API-&gt;object_watch_closure)</span></div><div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;<span class="preprocessor">#define pyg_closure_set_exception_handler (_PyGObject_API-&gt;closure_set_exception_handler)</span></div><div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;<span class="preprocessor">#define pyg_destroy_notify          (_PyGObject_API-&gt;destroy_notify)</span></div><div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;<span class="preprocessor">#define pyg_type_from_object_strict   (_PyGObject_API-&gt;type_from_object_strict)</span></div><div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;<span class="preprocessor">#define pyg_type_from_object        (_PyGObject_API-&gt;type_from_object)</span></div><div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;<span class="preprocessor">#define pyg_type_wrapper_new        (_PyGObject_API-&gt;type_wrapper_new)</span></div><div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;<span class="preprocessor">#define pyg_enum_get_value          (_PyGObject_API-&gt;enum_get_value)</span></div><div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;<span class="preprocessor">#define pyg_flags_get_value         (_PyGObject_API-&gt;flags_get_value)</span></div><div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;<span class="preprocessor">#define pyg_register_gtype_custom   (_PyGObject_API-&gt;register_gtype_custom)</span></div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;<span class="preprocessor">#define pyg_value_from_pyobject     (_PyGObject_API-&gt;value_from_pyobject)</span></div><div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;<span class="preprocessor">#define pyg_value_as_pyobject       (_PyGObject_API-&gt;value_as_pyobject)</span></div><div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;<span class="preprocessor">#define pyg_register_interface      (_PyGObject_API-&gt;register_interface)</span></div><div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;<span class="preprocessor">#define PyGBoxed_Type               (*_PyGObject_API-&gt;boxed_type)</span></div><div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;<span class="preprocessor">#define pyg_register_boxed          (_PyGObject_API-&gt;register_boxed)</span></div><div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;<span class="preprocessor">#define pyg_boxed_new               (_PyGObject_API-&gt;boxed_new)</span></div><div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;<span class="preprocessor">#define PyGPointer_Type             (*_PyGObject_API-&gt;pointer_type)</span></div><div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;<span class="preprocessor">#define pyg_register_pointer        (_PyGObject_API-&gt;register_pointer)</span></div><div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;<span class="preprocessor">#define pyg_pointer_new             (_PyGObject_API-&gt;pointer_new)</span></div><div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;<span class="preprocessor">#define pyg_enum_add_constants      (_PyGObject_API-&gt;enum_add_constants)</span></div><div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;<span class="preprocessor">#define pyg_flags_add_constants     (_PyGObject_API-&gt;flags_add_constants)</span></div><div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;<span class="preprocessor">#define pyg_constant_strip_prefix   (_PyGObject_API-&gt;constant_strip_prefix)</span></div><div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;<span class="preprocessor">#define pyg_error_check             (_PyGObject_API-&gt;error_check)</span></div><div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;<span class="preprocessor">#define pyg_set_thread_block_funcs  (_PyGObject_API-&gt;set_thread_block_funcs)</span></div><div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;<span class="preprocessor">#define PyGParamSpec_Type           (*_PyGObject_API-&gt;paramspec_type)</span></div><div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;<span class="preprocessor">#define pyg_param_spec_new          (_PyGObject_API-&gt;paramspec_new)</span></div><div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;<span class="preprocessor">#define pyg_param_spec_from_object  (_PyGObject_API-&gt;paramspec_get)</span></div><div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;<span class="preprocessor">#define pyg_pyobj_to_unichar_conv   (_PyGObject_API-&gt;pyobj_to_unichar_conv)</span></div><div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;<span class="preprocessor">#define pyg_parse_constructor_args  (_PyGObject_API-&gt;parse_constructor_args)</span></div><div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;<span class="preprocessor">#define pyg_param_gvalue_as_pyobject   (_PyGObject_API-&gt;value_as_pyobject)</span></div><div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;<span class="preprocessor">#define pyg_param_gvalue_from_pyobject (_PyGObject_API-&gt;gvalue_from_param_pyobject)</span></div><div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;<span class="preprocessor">#define PyGEnum_Type                (*_PyGObject_API-&gt;enum_type)</span></div><div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;<span class="preprocessor">#define pyg_enum_add                (_PyGObject_API-&gt;enum_add)</span></div><div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;<span class="preprocessor">#define pyg_enum_from_gtype         (_PyGObject_API-&gt;enum_from_gtype)</span></div><div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;<span class="preprocessor">#define PyGFlags_Type               (*_PyGObject_API-&gt;flags_type)</span></div><div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;<span class="preprocessor">#define pyg_flags_add               (_PyGObject_API-&gt;flags_add)</span></div><div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;<span class="preprocessor">#define pyg_flags_from_gtype        (_PyGObject_API-&gt;flags_from_gtype)</span></div><div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;<span class="preprocessor">#define pyg_enable_threads          (_PyGObject_API-&gt;enable_threads)</span></div><div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;<span class="preprocessor">#define pyg_gil_state_ensure        (_PyGObject_API-&gt;gil_state_ensure)</span></div><div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;<span class="preprocessor">#define pyg_gil_state_release       (_PyGObject_API-&gt;gil_state_release)</span></div><div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;<span class="preprocessor">#define pyg_register_class_init     (_PyGObject_API-&gt;register_class_init)</span></div><div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;<span class="preprocessor">#define pyg_register_interface_info (_PyGObject_API-&gt;register_interface_info)</span></div><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;<span class="preprocessor">#define pyg_add_warning_redirection   (_PyGObject_API-&gt;add_warning_redirection)</span></div><div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;<span class="preprocessor">#define pyg_disable_warning_redirections (_PyGObject_API-&gt;disable_warning_redirections)</span></div><div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;<span class="preprocessor">#define pyg_type_register_custom_callback (_PyGObject_API-&gt;type_register_custom)</span></div><div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;<span class="preprocessor">#define pyg_gerror_exception_check (_PyGObject_API-&gt;gerror_exception_check)</span></div><div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;<span class="preprocessor">#define pyg_option_group_new       (_PyGObject_API-&gt;option_group_new)</span></div><div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;</div><div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;<span class="preprocessor">#define pyg_block_threads()   G_STMT_START {   \</span></div><div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;<span class="preprocessor">    if (_PyGObject_API-&gt;block_threads != NULL) \</span></div><div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;<span class="preprocessor">      (* _PyGObject_API-&gt;block_threads)();     \</span></div><div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;<span class="preprocessor">  } G_STMT_END</span></div><div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;<span class="preprocessor">#define pyg_unblock_threads() G_STMT_START {     \</span></div><div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;<span class="preprocessor">    if (_PyGObject_API-&gt;unblock_threads != NULL) \</span></div><div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;<span class="preprocessor">      (* _PyGObject_API-&gt;unblock_threads)();     \</span></div><div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;<span class="preprocessor">  } G_STMT_END</span></div><div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;</div><div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;<span class="preprocessor">#define pyg_threads_enabled (_PyGObject_API-&gt;threads_enabled)</span></div><div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;</div><div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;<span class="preprocessor">#define pyg_begin_allow_threads                 \</span></div><div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;<span class="preprocessor">    G_STMT_START {                              \</span></div><div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;<span class="preprocessor">        PyThreadState *_save = NULL;            \</span></div><div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;<span class="preprocessor">        if (_PyGObject_API-&gt;threads_enabled)    \</span></div><div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;<span class="preprocessor">            _save = PyEval_SaveThread();</span></div><div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;<span class="preprocessor">#define pyg_end_allow_threads                   \</span></div><div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;<span class="preprocessor">        if (_PyGObject_API-&gt;threads_enabled)    \</span></div><div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;<span class="preprocessor">            PyEval_RestoreThread(_save);        \</span></div><div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;<span class="preprocessor">    } G_STMT_END</span></div><div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;</div><div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;</div><div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;<span class="keyword">static</span> <span class="keyword">inline</span> PyObject *</div><div class="line"><a name="l00323"></a><span class="lineno"><a class="line" href="pygobject_8h.html#a4710f3c87d09751239a9ea9cd8fd4e15">  323</a></span>&#160;<a class="code" href="pygobject_8h.html#a4710f3c87d09751239a9ea9cd8fd4e15">pygobject_init</a>(<span class="keywordtype">int</span> req_major, <span class="keywordtype">int</span> req_minor, <span class="keywordtype">int</span> req_micro)</div><div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;{</div><div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;    PyObject *gobject, *cobject;</div><div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;</div><div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;    gobject = PyImport_ImportModule(<span class="stringliteral">&quot;gi._gobject&quot;</span>);</div><div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;    <span class="keywordflow">if</span> (!gobject) {</div><div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;        <span class="keywordflow">if</span> (PyErr_Occurred())</div><div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;        {</div><div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;            PyObject *type, *value, *traceback;</div><div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;            PyObject *py_orig_exc;</div><div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;            PyErr_Fetch(&amp;type, &amp;value, &amp;traceback);</div><div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;            py_orig_exc = PyObject_Repr(value);</div><div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;            Py_XDECREF(type);</div><div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;            Py_XDECREF(value);</div><div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;            Py_XDECREF(traceback);</div><div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;</div><div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;</div><div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;<span class="preprocessor">#if PY_VERSION_HEX &lt; 0x03000000</span></div><div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;            PyErr_Format(PyExc_ImportError,</div><div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;                         <span class="stringliteral">&quot;could not import gobject (error was: %s)&quot;</span>,</div><div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;                         PyString_AsString(py_orig_exc));</div><div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;            {</div><div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;                <span class="comment">/* Can not use PyErr_Format because it doesn&#39;t have</span></div><div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;<span class="comment">                 * a format string for dealing with PyUnicode objects</span></div><div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;<span class="comment">                 * like PyUnicode_FromFormat has</span></div><div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;<span class="comment">                 */</span></div><div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;                PyObject *errmsg = PyUnicode_FromFormat(<span class="stringliteral">&quot;could not import gobject (error was: %U)&quot;</span>,</div><div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;                                                        py_orig_exc);</div><div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;</div><div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;                <span class="keywordflow">if</span> (errmsg) {</div><div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;                   PyErr_SetObject(PyExc_ImportError,</div><div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;                                   errmsg);</div><div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;                   Py_DECREF(errmsg);</div><div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;                }</div><div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;                <span class="comment">/* if errmsg is NULL then we might have OOM</span></div><div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;<span class="comment">                 * PyErr should already be set and trying to</span></div><div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;<span class="comment">                 * return our own error would be futile</span></div><div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;<span class="comment">                 */</span></div><div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;            }</div><div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;            Py_DECREF(py_orig_exc);</div><div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;        } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;            PyErr_SetString(PyExc_ImportError,</div><div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;                            <span class="stringliteral">&quot;could not import gobject (no error given)&quot;</span>);</div><div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;        }</div><div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;        <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;    }</div><div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;</div><div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;    cobject = PyObject_GetAttrString(gobject, <span class="stringliteral">&quot;_PyGObject_API&quot;</span>);</div><div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;<span class="preprocessor">#if PY_VERSION_HEX &gt;= 0x03000000</span></div><div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;    <span class="keywordflow">if</span> (cobject &amp;&amp; PyCapsule_CheckExact(cobject))</div><div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;        _PyGObject_API = (<span class="keyword">struct </span><a class="code" href="struct___py_g_object___functions.html">_PyGObject_Functions</a> *) PyCapsule_GetPointer(cobject, <span class="stringliteral">&quot;gobject._PyGObject_API&quot;</span>);</div><div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;</div><div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;    <span class="keywordflow">if</span> (cobject &amp;&amp; PyCObject_Check(cobject))</div><div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;        _PyGObject_API = (<span class="keyword">struct</span> <a class="code" href="struct___py_g_object___functions.html">_PyGObject_Functions</a> *) PyCObject_AsVoidPtr(cobject);</div><div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;    <span class="keywordflow">else</span> {</div><div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;        PyErr_SetString(PyExc_ImportError,</div><div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;                        <span class="stringliteral">&quot;could not import gobject (could not find _PyGObject_API object)&quot;</span>);</div><div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;        Py_DECREF(gobject);</div><div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;        <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;    }</div><div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;</div><div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;    <span class="keywordflow">if</span> (req_major != -1)</div><div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;    {</div><div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;        <span class="keywordtype">int</span> found_major, found_minor, found_micro;</div><div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;        PyObject *version;</div><div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;</div><div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;        version = PyObject_GetAttrString(gobject, <span class="stringliteral">&quot;pygobject_version&quot;</span>);</div><div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;        <span class="keywordflow">if</span> (!version) {</div><div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;            PyErr_SetString(PyExc_ImportError,</div><div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;                            <span class="stringliteral">&quot;could not import gobject (version too old)&quot;</span>);</div><div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;            Py_DECREF(gobject);</div><div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;            <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;        }</div><div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;        <span class="keywordflow">if</span> (!PyArg_ParseTuple(version, <span class="stringliteral">&quot;iii&quot;</span>,</div><div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;                              &amp;found_major, &amp;found_minor, &amp;found_micro)) {</div><div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;            PyErr_SetString(PyExc_ImportError,</div><div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;                            <span class="stringliteral">&quot;could not import gobject (version has invalid format)&quot;</span>);</div><div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;            Py_DECREF(version);</div><div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;            Py_DECREF(gobject);</div><div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;            <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;        }</div><div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;        Py_DECREF(version);</div><div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;        <span class="keywordflow">if</span> (req_major != found_major ||</div><div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;            req_minor &gt;  found_minor ||</div><div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;            (req_minor == found_minor &amp;&amp; req_micro &gt; found_micro)) {</div><div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;            PyErr_Format(PyExc_ImportError,</div><div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;                         <span class="stringliteral">&quot;could not import gobject (version mismatch, %d.%d.%d is required, &quot;</span></div><div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;                         <span class="stringliteral">&quot;found %d.%d.%d)&quot;</span>, req_major, req_minor, req_micro,</div><div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;                         found_major, found_minor, found_micro);</div><div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;            Py_DECREF(gobject);</div><div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;            <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;        }</div><div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;    }</div><div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;    <span class="keywordflow">return</span> gobject;</div><div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;}</div><div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;</div><div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;<span class="preprocessor"> #define PYLIST_FROMGLIBLIST(type,prefix,py_list,list,item_convert_func,\</span></div><div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160;<span class="preprocessor">                            list_free,list_item_free)  \</span></div><div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;<span class="preprocessor">G_STMT_START \</span></div><div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;<span class="preprocessor">{ \</span></div><div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;<span class="preprocessor">    gint i, len; \</span></div><div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;<span class="preprocessor">    PyObject *item; \</span></div><div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;<span class="preprocessor">    void (*glib_list_free)(type*) = list_free; \</span></div><div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;<span class="preprocessor">    GFunc glib_list_item_free = (GFunc)list_item_free;  \</span></div><div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;<span class="preprocessor"> \</span></div><div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;<span class="preprocessor">    len = prefix##_length(list); \</span></div><div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;<span class="preprocessor">    py_list = PyList_New(len); \</span></div><div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;<span class="preprocessor">    for (i = 0; i &lt; len; i++) { \</span></div><div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;<span class="preprocessor">        gpointer list_item = prefix##_nth_data(list, i); \</span></div><div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160;<span class="preprocessor"> \</span></div><div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160;<span class="preprocessor">        item = item_convert_func; \</span></div><div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160;<span class="preprocessor">        PyList_SetItem(py_list, i, item); \</span></div><div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;<span class="preprocessor">    } \</span></div><div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;<span class="preprocessor">    if (glib_list_item_free != NULL) \</span></div><div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;<span class="preprocessor">        prefix##_foreach(list, glib_list_item_free, NULL); \</span></div><div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;<span class="preprocessor">    if (glib_list_free != NULL) \</span></div><div class="line"><a name="l00457"></a><span class="lineno">  457</span>&#160;<span class="preprocessor">        glib_list_free(list); \</span></div><div class="line"><a name="l00458"></a><span class="lineno">  458</span>&#160;<span class="preprocessor">} G_STMT_END</span></div><div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160;</div><div class="line"><a name="l00492"></a><span class="lineno">  492</span>&#160;<span class="preprocessor">#define PYLIST_FROMGLIST(py_list,list,item_convert_func,list_free,\</span></div><div class="line"><a name="l00493"></a><span class="lineno">  493</span>&#160;<span class="preprocessor">                         list_item_free) \</span></div><div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160;<span class="preprocessor">        PYLIST_FROMGLIBLIST(GList,g_list,py_list,list,item_convert_func,\</span></div><div class="line"><a name="l00495"></a><span class="lineno">  495</span>&#160;<span class="preprocessor">                            list_free,list_item_free)</span></div><div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160;</div><div class="line"><a name="l00529"></a><span class="lineno">  529</span>&#160;<span class="preprocessor">#define PYLIST_FROMGSLIST(py_list,list,item_convert_func,list_free,\</span></div><div class="line"><a name="l00530"></a><span class="lineno">  530</span>&#160;<span class="preprocessor">                          list_item_free) \</span></div><div class="line"><a name="l00531"></a><span class="lineno">  531</span>&#160;<span class="preprocessor">        PYLIST_FROMGLIBLIST(GSList,g_slist,py_list,list,item_convert_func,\</span></div><div class="line"><a name="l00532"></a><span class="lineno">  532</span>&#160;<span class="preprocessor">                            list_free,list_item_free)</span></div><div class="line"><a name="l00533"></a><span class="lineno">  533</span>&#160;</div><div class="line"><a name="l00548"></a><span class="lineno">  548</span>&#160;<span class="preprocessor">#define PYLIST_ASGLIBLIST(type,prefix,py_list,list,check_func,\</span></div><div class="line"><a name="l00549"></a><span class="lineno">  549</span>&#160;<span class="preprocessor">                           convert_func,child_free_func,errormsg,errorreturn) \</span></div><div class="line"><a name="l00550"></a><span class="lineno">  550</span>&#160;<span class="preprocessor">G_STMT_START \</span></div><div class="line"><a name="l00551"></a><span class="lineno">  551</span>&#160;<span class="preprocessor">{ \</span></div><div class="line"><a name="l00552"></a><span class="lineno">  552</span>&#160;<span class="preprocessor">    Py_ssize_t i, n_list; \</span></div><div class="line"><a name="l00553"></a><span class="lineno">  553</span>&#160;<span class="preprocessor">    GFunc glib_child_free_func = (GFunc)child_free_func;        \</span></div><div class="line"><a name="l00554"></a><span class="lineno">  554</span>&#160;<span class="preprocessor"> \</span></div><div class="line"><a name="l00555"></a><span class="lineno">  555</span>&#160;<span class="preprocessor">    if (!(py_list = PySequence_Fast(py_list, &quot;&quot;))) { \</span></div><div class="line"><a name="l00556"></a><span class="lineno">  556</span>&#160;<span class="preprocessor">        errormsg; \</span></div><div class="line"><a name="l00557"></a><span class="lineno">  557</span>&#160;<span class="preprocessor">        return errorreturn; \</span></div><div class="line"><a name="l00558"></a><span class="lineno">  558</span>&#160;<span class="preprocessor">    } \</span></div><div class="line"><a name="l00559"></a><span class="lineno">  559</span>&#160;<span class="preprocessor">    n_list = PySequence_Fast_GET_SIZE(py_list); \</span></div><div class="line"><a name="l00560"></a><span class="lineno">  560</span>&#160;<span class="preprocessor">    for (i = 0; i &lt; n_list; i++) { \</span></div><div class="line"><a name="l00561"></a><span class="lineno">  561</span>&#160;<span class="preprocessor">        PyObject *py_item = PySequence_Fast_GET_ITEM(py_list, i); \</span></div><div class="line"><a name="l00562"></a><span class="lineno">  562</span>&#160;<span class="preprocessor"> \</span></div><div class="line"><a name="l00563"></a><span class="lineno">  563</span>&#160;<span class="preprocessor">        if (!check_func) { \</span></div><div class="line"><a name="l00564"></a><span class="lineno">  564</span>&#160;<span class="preprocessor">            if (glib_child_free_func) \</span></div><div class="line"><a name="l00565"></a><span class="lineno">  565</span>&#160;<span class="preprocessor">                    prefix##_foreach(list, glib_child_free_func, NULL); \</span></div><div class="line"><a name="l00566"></a><span class="lineno">  566</span>&#160;<span class="preprocessor">            prefix##_free(list); \</span></div><div class="line"><a name="l00567"></a><span class="lineno">  567</span>&#160;<span class="preprocessor">            Py_DECREF(py_list); \</span></div><div class="line"><a name="l00568"></a><span class="lineno">  568</span>&#160;<span class="preprocessor">            errormsg; \</span></div><div class="line"><a name="l00569"></a><span class="lineno">  569</span>&#160;<span class="preprocessor">            return errorreturn; \</span></div><div class="line"><a name="l00570"></a><span class="lineno">  570</span>&#160;<span class="preprocessor">        } \</span></div><div class="line"><a name="l00571"></a><span class="lineno">  571</span>&#160;<span class="preprocessor">        list = prefix##_prepend(list, convert_func); \</span></div><div class="line"><a name="l00572"></a><span class="lineno">  572</span>&#160;<span class="preprocessor">    }; \</span></div><div class="line"><a name="l00573"></a><span class="lineno">  573</span>&#160;<span class="preprocessor">        Py_DECREF(py_list); \</span></div><div class="line"><a name="l00574"></a><span class="lineno">  574</span>&#160;<span class="preprocessor">        list =  prefix##_reverse(list); \</span></div><div class="line"><a name="l00575"></a><span class="lineno">  575</span>&#160;<span class="preprocessor">} \</span></div><div class="line"><a name="l00576"></a><span class="lineno">  576</span>&#160;<span class="preprocessor">G_STMT_END</span></div><div class="line"><a name="l00577"></a><span class="lineno">  577</span>&#160;</div><div class="line"><a name="l00616"></a><span class="lineno">  616</span>&#160;<span class="preprocessor">#define PYLIST_ASGLIST(py_list,list,check_func,convert_func,child_free_func,\</span></div><div class="line"><a name="l00617"></a><span class="lineno">  617</span>&#160;<span class="preprocessor">                       errormsg,errorreturn) \</span></div><div class="line"><a name="l00618"></a><span class="lineno">  618</span>&#160;<span class="preprocessor">        PYLIST_ASGLIBLIST(GList,g_list,py_list,list,check_func,convert_func,\</span></div><div class="line"><a name="l00619"></a><span class="lineno">  619</span>&#160;<span class="preprocessor">                          child_free_func,errormsg,errorreturn)</span></div><div class="line"><a name="l00620"></a><span class="lineno">  620</span>&#160;</div><div class="line"><a name="l00660"></a><span class="lineno">  660</span>&#160;<span class="preprocessor">#define PYLIST_ASGSLIST(py_list,list,check_func,convert_func,child_free_func,\</span></div><div class="line"><a name="l00661"></a><span class="lineno">  661</span>&#160;<span class="preprocessor">                        errormsg,errorreturn) \</span></div><div class="line"><a name="l00662"></a><span class="lineno">  662</span>&#160;<span class="preprocessor">        PYLIST_ASGLIBLIST(GSList,g_slist,py_list,list,check_func,convert_func,\</span></div><div class="line"><a name="l00663"></a><span class="lineno">  663</span>&#160;<span class="preprocessor">                          child_free_func,errormsg,errorreturn)</span></div><div class="line"><a name="l00664"></a><span class="lineno">  664</span>&#160;</div><div class="line"><a name="l00665"></a><span class="lineno">  665</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* !_INSIDE_PYGOBJECT_ */</span><span class="preprocessor"></span></div><div class="line"><a name="l00666"></a><span class="lineno">  666</span>&#160;</div><div class="line"><a name="l00667"></a><span class="lineno">  667</span>&#160;G_END_DECLS</div><div class="line"><a name="l00668"></a><span class="lineno">  668</span>&#160;</div><div class="line"><a name="l00669"></a><span class="lineno">  669</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* !_PYGOBJECT_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="struct_py_g_pointer_html_a247024c11b1f37f8e39c912f5667b363"><div class="ttname"><a href="struct_py_g_pointer.html#a247024c11b1f37f8e39c912f5667b363">PyGPointer::gtype</a></div><div class="ttdeci">GType gtype</div><div class="ttdef"><b>Definition:</b> <a href="pygobject_8h_source.html#l00098">pygobject.h:98</a></div></div>
<div class="ttc" id="pygobject_8h_html_a2fa9a05e0ca89774ce56238aa81a6cac"><div class="ttname"><a href="pygobject_8h.html#a2fa9a05e0ca89774ce56238aa81a6cac">_PyGObject_API</a></div><div class="ttdeci">struct _PyGObject_Functions * _PyGObject_API</div><div class="ttdef"><b>Definition:</b> <a href="pygobject_8h_source.html#l00232">pygobject.h:232</a></div></div>
<div class="ttc" id="pygobject_8h_html_aa6bee291c198fcfe9815d319f8a021a1"><div class="ttname"><a href="pygobject_8h.html#aa6bee291c198fcfe9815d319f8a021a1">PyGTypeRegistrationFunction</a></div><div class="ttdeci">PyTypeObject *(* PyGTypeRegistrationFunction)(const gchar *name, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="pygobject_8h_source.html#l00116">pygobject.h:116</a></div></div>
<div class="ttc" id="struct___py_g_object___functions_html_a98baff9a2adb7d8d41572e5f33a36faf"><div class="ttname"><a href="struct___py_g_object___functions.html#a98baff9a2adb7d8d41572e5f33a36faf">_PyGObject_Functions::block_threads</a></div><div class="ttdeci">PyGThreadBlockFunc block_threads</div><div class="ttdef"><b>Definition:</b> <a href="pygobject_8h_source.html#l00174">pygobject.h:174</a></div></div>
<div class="ttc" id="struct___py_g_closure_html_ad62131315a6dd08a8454c683709756b5"><div class="ttname"><a href="struct___py_g_closure.html#ad62131315a6dd08a8454c683709756b5">_PyGClosure::exception_handler</a></div><div class="ttdeci">PyClosureExceptionHandler exception_handler</div><div class="ttdef"><b>Definition:</b> <a href="pygobject_8h_source.html#l00056">pygobject.h:56</a></div></div>
<div class="ttc" id="struct_py_g_object_html_ae72a52661fdb6bd5566be7bb85012260"><div class="ttname"><a href="struct_py_g_object.html#ae72a52661fdb6bd5566be7bb85012260">PyGObject::weakreflist</a></div><div class="ttdeci">PyObject * weakreflist</div><div class="ttdef"><b>Definition:</b> <a href="pygobject_8h_source.html#l00070">pygobject.h:70</a></div></div>
<div class="ttc" id="struct_py_g_object_html_a517264b1e7fdb622956923bd5e59288c"><div class="ttname"><a href="struct_py_g_object.html#a517264b1e7fdb622956923bd5e59288c">PyGObject::flags</a></div><div class="ttdeci">PyGObjectFlags flags</div><div class="ttdef"><b>Definition:</b> <a href="pygobject_8h_source.html#l00077">pygobject.h:77</a></div></div>
<div class="ttc" id="struct___py_g_closure_html_a06f82387cbfc6b15a572b42ad8e68d7b"><div class="ttname"><a href="struct___py_g_closure.html#a06f82387cbfc6b15a572b42ad8e68d7b">_PyGClosure::extra_args</a></div><div class="ttdeci">PyObject * extra_args</div><div class="ttdef"><b>Definition:</b> <a href="pygobject_8h_source.html#l00054">pygobject.h:54</a></div></div>
<div class="ttc" id="struct_py_g_object_html"><div class="ttname"><a href="struct_py_g_object.html">PyGObject</a></div><div class="ttdef"><b>Definition:</b> <a href="pygobject_8h_source.html#l00066">pygobject.h:66</a></div></div>
<div class="ttc" id="pygobject_8h_html_a8373d23668bd78bcb75857e129e49b17"><div class="ttname"><a href="pygobject_8h.html#a8373d23668bd78bcb75857e129e49b17">PyGObjectData</a></div><div class="ttdeci">struct _PyGObjectData PyGObjectData</div><div class="ttdef"><b>Definition:</b> <a href="pygobject_8h_source.html#l00049">pygobject.h:49</a></div></div>
<div class="ttc" id="struct___py_g_object___functions_html_ad78ae39de24df75bd03ae5cd4a9cc41a"><div class="ttname"><a href="struct___py_g_object___functions.html#ad78ae39de24df75bd03ae5cd4a9cc41a">_PyGObject_Functions::flags_type</a></div><div class="ttdeci">PyTypeObject * flags_type</div><div class="ttdef"><b>Definition:</b> <a href="pygobject_8h_source.html#l00199">pygobject.h:199</a></div></div>
<div class="ttc" id="struct___py_g_object___functions_html_a8001eeb6a1aa2b21a4bc64551bb187bc"><div class="ttname"><a href="struct___py_g_object___functions.html#a8001eeb6a1aa2b21a4bc64551bb187bc">_PyGObject_Functions::enum_type</a></div><div class="ttdeci">PyTypeObject * enum_type</div><div class="ttdef"><b>Definition:</b> <a href="pygobject_8h_source.html#l00192">pygobject.h:192</a></div></div>
<div class="ttc" id="pygobject_8h_html_a18eca93aad557c40e8a75b655961b159a6ca21e5d81f80ca35b556f92f5ca35cc"><div class="ttname"><a href="pygobject_8h.html#a18eca93aad557c40e8a75b655961b159a6ca21e5d81f80ca35b556f92f5ca35cc">PYGOBJECT_USING_TOGGLE_REF</a></div><div class="ttdef"><b>Definition:</b> <a href="pygobject_8h_source.html#l00060">pygobject.h:60</a></div></div>
<div class="ttc" id="struct_py_g_param_spec_html"><div class="ttname"><a href="struct_py_g_param_spec.html">PyGParamSpec</a></div><div class="ttdef"><b>Definition:</b> <a href="pygobject_8h_source.html#l00107">pygobject.h:107</a></div></div>
<div class="ttc" id="struct_py_g_object_html_ad51b8278b3ddd6ed392cc388cb95ed3d"><div class="ttname"><a href="struct_py_g_object.html#ad51b8278b3ddd6ed392cc388cb95ed3d">PyGObject::closures</a></div><div class="ttdeci">GSList * closures</div><div class="ttdef"><b>Definition:</b> <a href="pygobject_8h_source.html#l00076">pygobject.h:76</a></div></div>
<div class="ttc" id="struct_py_g_object_html_a5f60ec58074a34b1e6573a90e31d198e"><div class="ttname"><a href="struct_py_g_object.html#a5f60ec58074a34b1e6573a90e31d198e">PyGObject::inst_dict</a></div><div class="ttdeci">PyObject * inst_dict</div><div class="ttdef"><b>Definition:</b> <a href="pygobject_8h_source.html#l00069">pygobject.h:69</a></div></div>
<div class="ttc" id="struct___py_g_object___functions_html_abefaf680195305d6e5f03b3d9ff6999d"><div class="ttname"><a href="struct___py_g_object___functions.html#abefaf680195305d6e5f03b3d9ff6999d">_PyGObject_Functions::pointer_type</a></div><div class="ttdeci">PyTypeObject * pointer_type</div><div class="ttdef"><b>Definition:</b> <a href="pygobject_8h_source.html#l00155">pygobject.h:155</a></div></div>
<div class="ttc" id="struct___py_g_object___functions_html_a71bc3c45f05ddd2e0306db0b745a1928"><div class="ttname"><a href="struct___py_g_object___functions.html#a71bc3c45f05ddd2e0306db0b745a1928">_PyGObject_Functions::threads_enabled</a></div><div class="ttdeci">gboolean threads_enabled</div><div class="ttdef"><b>Definition:</b> <a href="pygobject_8h_source.html#l00206">pygobject.h:206</a></div></div>
<div class="ttc" id="struct_py_g_pointer_html"><div class="ttname"><a href="struct_py_g_pointer.html">PyGPointer</a></div><div class="ttdef"><b>Definition:</b> <a href="pygobject_8h_source.html#l00095">pygobject.h:95</a></div></div>
<div class="ttc" id="pygobject_8h_html_a18eca93aad557c40e8a75b655961b159a9ed2edb74e687da7e752fd9968eece34"><div class="ttname"><a href="pygobject_8h.html#a18eca93aad557c40e8a75b655961b159a9ed2edb74e687da7e752fd9968eece34">PYGOBJECT_IS_FLOATING_REF</a></div><div class="ttdef"><b>Definition:</b> <a href="pygobject_8h_source.html#l00061">pygobject.h:61</a></div></div>
<div class="ttc" id="pygobject_8h_html_ae7eb0d738416d8c9e517e5315010d98b"><div class="ttname"><a href="pygobject_8h.html#ae7eb0d738416d8c9e517e5315010d98b">PyGClassInitFunc</a></div><div class="ttdeci">int(* PyGClassInitFunc)(gpointer gclass, PyTypeObject *pyclass)</div><div class="ttdef"><b>Definition:</b> <a href="pygobject_8h_source.html#l00115">pygobject.h:115</a></div></div>
<div class="ttc" id="struct___py_g_object___functions_html_ab5994a4acad9d77c2c658835e3660aad"><div class="ttname"><a href="struct___py_g_object___functions.html#ab5994a4acad9d77c2c658835e3660aad">_PyGObject_Functions::paramspec_type</a></div><div class="ttdeci">PyTypeObject * paramspec_type</div><div class="ttdef"><b>Definition:</b> <a href="pygobject_8h_source.html#l00176">pygobject.h:176</a></div></div>
<div class="ttc" id="struct___py_g_closure_html_ac12e0615b1fbb88223162564f5655001"><div class="ttname"><a href="struct___py_g_closure.html#ac12e0615b1fbb88223162564f5655001">_PyGClosure::swap_data</a></div><div class="ttdeci">PyObject * swap_data</div><div class="ttdef"><b>Definition:</b> <a href="pygobject_8h_source.html#l00055">pygobject.h:55</a></div></div>
<div class="ttc" id="struct_py_g_object_html_a430bcbe0d2b121a985172a45bf3714f8"><div class="ttname"><a href="struct_py_g_object.html#a430bcbe0d2b121a985172a45bf3714f8">PyGObject::obj</a></div><div class="ttdeci">PyObject_HEAD GObject * obj</div><div class="ttdef"><b>Definition:</b> <a href="pygobject_8h_source.html#l00068">pygobject.h:68</a></div></div>
<div class="ttc" id="struct_py_g_boxed_html_a2cf407ea1a1c5375075bc5c41302f7a2"><div class="ttname"><a href="struct_py_g_boxed.html#a2cf407ea1a1c5375075bc5c41302f7a2">PyGBoxed::gtype</a></div><div class="ttdeci">GType gtype</div><div class="ttdef"><b>Definition:</b> <a href="pygobject_8h_source.html#l00088">pygobject.h:88</a></div></div>
<div class="ttc" id="pygobject_8h_html_afe8c456f1f21fb47870b39d1cfc6cf7f"><div class="ttname"><a href="pygobject_8h.html#afe8c456f1f21fb47870b39d1cfc6cf7f">PyGThreadBlockFunc</a></div><div class="ttdeci">void(* PyGThreadBlockFunc)(void)</div><div class="ttdef"><b>Definition:</b> <a href="pygobject_8h_source.html#l00105">pygobject.h:105</a></div></div>
<div class="ttc" id="struct___py_g_object___functions_html_a121d444bd1df094a0ac719bc352be72d"><div class="ttname"><a href="struct___py_g_object___functions.html#a121d444bd1df094a0ac719bc352be72d">_PyGObject_Functions::destroy_notify</a></div><div class="ttdeci">GDestroyNotify destroy_notify</div><div class="ttdef"><b>Definition:</b> <a href="pygobject_8h_source.html#l00133">pygobject.h:133</a></div></div>
<div class="ttc" id="pygobject_8h_html_a18eca93aad557c40e8a75b655961b159"><div class="ttname"><a href="pygobject_8h.html#a18eca93aad557c40e8a75b655961b159">PyGObjectFlags</a></div><div class="ttdeci">PyGObjectFlags</div><div class="ttdef"><b>Definition:</b> <a href="pygobject_8h_source.html#l00059">pygobject.h:59</a></div></div>
<div class="ttc" id="pygobject_8h_html_a4710f3c87d09751239a9ea9cd8fd4e15"><div class="ttname"><a href="pygobject_8h.html#a4710f3c87d09751239a9ea9cd8fd4e15">pygobject_init</a></div><div class="ttdeci">static PyObject * pygobject_init(int req_major, int req_minor, int req_micro)</div><div class="ttdoc">pygobject_init: : minimum version major number, or -1 : minimum version minor number, or -1 : minimum version micro number, or -1 </div><div class="ttdef"><b>Definition:</b> <a href="pygobject_8h_source.html#l00323">pygobject.h:323</a></div></div>
<div class="ttc" id="struct___py_g_object___functions_html"><div class="ttname"><a href="struct___py_g_object___functions.html">_PyGObject_Functions</a></div><div class="ttdef"><b>Definition:</b> <a href="pygobject_8h_source.html#l00119">pygobject.h:119</a></div></div>
<div class="ttc" id="struct___py_g_closure_html_a8d27f12a150fc5022f60defb6643b5b3"><div class="ttname"><a href="struct___py_g_closure.html#a8d27f12a150fc5022f60defb6643b5b3">_PyGClosure::closure</a></div><div class="ttdeci">GClosure closure</div><div class="ttdef"><b>Definition:</b> <a href="pygobject_8h_source.html#l00052">pygobject.h:52</a></div></div>
<div class="ttc" id="pygobject_8h_html_aa4fb7010e1fe712bd991f6636358af72"><div class="ttname"><a href="pygobject_8h.html#aa4fb7010e1fe712bd991f6636358af72">PyGFatalExceptionFunc</a></div><div class="ttdeci">void(* PyGFatalExceptionFunc)(void)</div><div class="ttdef"><b>Definition:</b> <a href="pygobject_8h_source.html#l00104">pygobject.h:104</a></div></div>
<div class="ttc" id="struct___py_g_closure_html_ad1a54d7ba427efc43fb1784e3bd8fc53"><div class="ttname"><a href="struct___py_g_closure.html#ad1a54d7ba427efc43fb1784e3bd8fc53">_PyGClosure::callback</a></div><div class="ttdeci">PyObject * callback</div><div class="ttdef"><b>Definition:</b> <a href="pygobject_8h_source.html#l00053">pygobject.h:53</a></div></div>
<div class="ttc" id="struct_py_g_boxed_html"><div class="ttname"><a href="struct_py_g_boxed.html">PyGBoxed</a></div><div class="ttdef"><b>Definition:</b> <a href="pygobject_8h_source.html#l00085">pygobject.h:85</a></div></div>
<div class="ttc" id="struct_py_g_param_spec_html_a443861467512d950328b7e449cbe13f5"><div class="ttname"><a href="struct_py_g_param_spec.html#a443861467512d950328b7e449cbe13f5">PyGParamSpec::pspec</a></div><div class="ttdeci">PyObject_HEAD GParamSpec * pspec</div><div class="ttdef"><b>Definition:</b> <a href="pygobject_8h_source.html#l00109">pygobject.h:109</a></div></div>
<div class="ttc" id="struct___py_g_closure_html"><div class="ttname"><a href="struct___py_g_closure.html">_PyGClosure</a></div><div class="ttdef"><b>Definition:</b> <a href="pygobject_8h_source.html#l00051">pygobject.h:51</a></div></div>
<div class="ttc" id="struct_py_g_boxed_html_a77d67756985e5c2f822ffa3a99500d0d"><div class="ttname"><a href="struct_py_g_boxed.html#a77d67756985e5c2f822ffa3a99500d0d">PyGBoxed::boxed</a></div><div class="ttdeci">PyObject_HEAD gpointer boxed</div><div class="ttdef"><b>Definition:</b> <a href="pygobject_8h_source.html#l00087">pygobject.h:87</a></div></div>
<div class="ttc" id="pygobject_8h_html_a31a009f7ec59c55c3ad1fe73343e543f"><div class="ttname"><a href="pygobject_8h.html#a31a009f7ec59c55c3ad1fe73343e543f">PyClosureExceptionHandler</a></div><div class="ttdeci">G_BEGIN_DECLS typedef void(* PyClosureExceptionHandler)(GValue *ret, guint n_param_values, const GValue *params)</div><div class="ttdef"><b>Definition:</b> <a href="pygobject_8h_source.html#l00047">pygobject.h:47</a></div></div>
<div class="ttc" id="struct_py_g_boxed_html_a4bd93b702c369951058787ee1f1f8921"><div class="ttname"><a href="struct_py_g_boxed.html#a4bd93b702c369951058787ee1f1f8921">PyGBoxed::free_on_dealloc</a></div><div class="ttdeci">gboolean free_on_dealloc</div><div class="ttdef"><b>Definition:</b> <a href="pygobject_8h_source.html#l00089">pygobject.h:89</a></div></div>
<div class="ttc" id="struct___py_g_object___functions_html_aa1061a25517a0174ea2f4cae1ad421de"><div class="ttname"><a href="struct___py_g_object___functions.html#aa1061a25517a0174ea2f4cae1ad421de">_PyGObject_Functions::unblock_threads</a></div><div class="ttdeci">PyGThreadBlockFunc unblock_threads</div><div class="ttdef"><b>Definition:</b> <a href="pygobject_8h_source.html#l00175">pygobject.h:175</a></div></div>
<div class="ttc" id="struct___py_g_object___functions_html_af9303ea3630404a9859b38d693fdd449"><div class="ttname"><a href="struct___py_g_object___functions.html#af9303ea3630404a9859b38d693fdd449">_PyGObject_Functions::boxed_type</a></div><div class="ttdeci">PyTypeObject * boxed_type</div><div class="ttdef"><b>Definition:</b> <a href="pygobject_8h_source.html#l00149">pygobject.h:149</a></div></div>
<div class="ttc" id="struct_py_g_pointer_html_aa7372c41b1e65d1c8f46bcddf727c1b4"><div class="ttname"><a href="struct_py_g_pointer.html#aa7372c41b1e65d1c8f46bcddf727c1b4">PyGPointer::pointer</a></div><div class="ttdeci">PyObject_HEAD gpointer pointer</div><div class="ttdef"><b>Definition:</b> <a href="pygobject_8h_source.html#l00097">pygobject.h:97</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="pygobject_8h.html">pygobject.h</a></li>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
  </ul>
</div>
</body>
</html>