1<html> 2<head> 3<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 4<title>Chapter 7. Utility and Infrastructure</title> 5<link rel="stylesheet" href="../boostbook.css" type="text/css"> 6<meta name="generator" content="DocBook XSL Stylesheets V1.79.1"> 7<link rel="home" href="index.html" title="Boost.Python Reference Manual"> 8<link rel="up" href="index.html" title="Boost.Python Reference Manual"> 9<link rel="prev" href="embedding/boost_python_import_hpp.html" title="boost/python/import.hpp"> 10<link rel="next" href="utility_and_infrastructure/boost_python_instance_holder_hpp.html" title="boost/python/instance_holder.hpp"> 11</head> 12<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> 13<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="" width="" height="" src="../images/boost.png"></td></tr></table> 14<hr> 15<div class="spirit-nav"> 16<a accesskey="p" href="embedding/boost_python_import_hpp.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="utility_and_infrastructure/boost_python_instance_holder_hpp.html"><img src="../images/next.png" alt="Next"></a> 17</div> 18<div class="chapter"> 19<div class="titlepage"><div><div><h1 class="title"> 20<a name="utility_and_infrastructure"></a>Chapter 7. Utility and Infrastructure</h1></div></div></div> 21<div class="toc"> 22<p><b>Table of Contents</b></p> 23<dl class="toc"> 24<dt><span class="section"><a href="utility_and_infrastructure.html#utility_and_infrastructure.boost_python_has_back_reference_">boost/python/has_back_reference.hpp</a></span></dt> 25<dd><dl> 26<dt><span class="section"><a href="utility_and_infrastructure.html#utility_and_infrastructure.boost_python_has_back_reference_.introduction">Introduction</a></span></dt> 27<dt><span class="section"><a href="utility_and_infrastructure.html#utility_and_infrastructure.boost_python_has_back_reference_.class_template_has_back_referenc">Class 28 template <code class="computeroutput"><span class="identifier">has_back_reference</span></code></a></span></dt> 29<dt><span class="section"><a href="utility_and_infrastructure.html#utility_and_infrastructure.boost_python_has_back_reference_.examples">Examples</a></span></dt> 30</dl></dd> 31<dt><span class="section"><a href="utility_and_infrastructure/boost_python_instance_holder_hpp.html">boost/python/instance_holder.hpp</a></span></dt> 32<dd><dl> 33<dt><span class="section"><a href="utility_and_infrastructure/boost_python_instance_holder_hpp.html#utility_and_infrastructure.boost_python_instance_holder_hpp.introduction">Introduction</a></span></dt> 34<dt><span class="section"><a href="utility_and_infrastructure/boost_python_instance_holder_hpp.html#utility_and_infrastructure.boost_python_instance_holder_hpp.class_template_instance_holder">Class 35 template <code class="computeroutput"><span class="identifier">instance_holder</span></code></a></span></dt> 36<dt><span class="section"><a href="utility_and_infrastructure/boost_python_instance_holder_hpp.html#utility_and_infrastructure.boost_python_instance_holder_hpp.examples">Examples</a></span></dt> 37</dl></dd> 38<dt><span class="section"><a href="utility_and_infrastructure/boost_python_pointee_hpp.html">boost/python/pointee.hpp</a></span></dt> 39<dd><dl> 40<dt><span class="section"><a href="utility_and_infrastructure/boost_python_pointee_hpp.html#utility_and_infrastructure.boost_python_pointee_hpp.introduction">Introduction</a></span></dt> 41<dt><span class="section"><a href="utility_and_infrastructure/boost_python_pointee_hpp.html#utility_and_infrastructure.boost_python_pointee_hpp.class_template_pointee">Class 42 template <code class="computeroutput"><span class="identifier">pointee</span></code></a></span></dt> 43<dt><span class="section"><a href="utility_and_infrastructure/boost_python_pointee_hpp.html#utility_and_infrastructure.boost_python_pointee_hpp.examples">Examples</a></span></dt> 44</dl></dd> 45<dt><span class="section"><a href="utility_and_infrastructure/boost_python_handle_hpp.html">boost/python/handle.hpp</a></span></dt> 46<dd><dl> 47<dt><span class="section"><a href="utility_and_infrastructure/boost_python_handle_hpp.html#utility_and_infrastructure.boost_python_handle_hpp.introduction">Introduction</a></span></dt> 48<dt><span class="section"><a href="utility_and_infrastructure/boost_python_handle_hpp.html#utility_and_infrastructure.boost_python_handle_hpp.class_template_handle">Class 49 template <code class="computeroutput"><span class="identifier">handle</span></code></a></span></dt> 50<dt><span class="section"><a href="utility_and_infrastructure/boost_python_handle_hpp.html#utility_and_infrastructure.boost_python_handle_hpp.function_borrowed">Function 51 <code class="computeroutput"><span class="identifier">borrowed</span></code></a></span></dt> 52<dt><span class="section"><a href="utility_and_infrastructure/boost_python_handle_hpp.html#utility_and_infrastructure.boost_python_handle_hpp.function_allow_null">Function 53 <code class="computeroutput"><span class="identifier">allow_null</span></code></a></span></dt> 54</dl></dd> 55<dt><span class="section"><a href="utility_and_infrastructure/boost_python_type_id_hpp.html">boost/python/type_id.hpp</a></span></dt> 56<dd><dl> 57<dt><span class="section"><a href="utility_and_infrastructure/boost_python_type_id_hpp.html#utility_and_infrastructure.boost_python_type_id_hpp.introduction">Introduction</a></span></dt> 58<dt><span class="section"><a href="utility_and_infrastructure/boost_python_type_id_hpp.html#utility_and_infrastructure.boost_python_type_id_hpp.class_template_type_info">Class 59 template <code class="computeroutput"><span class="identifier">type_info</span></code></a></span></dt> 60<dt><span class="section"><a href="utility_and_infrastructure/boost_python_type_id_hpp.html#utility_and_infrastructure.boost_python_type_id_hpp.functions">Functions</a></span></dt> 61<dt><span class="section"><a href="utility_and_infrastructure/boost_python_type_id_hpp.html#utility_and_infrastructure.boost_python_type_id_hpp.example">Example</a></span></dt> 62</dl></dd> 63<dt><span class="section"><a href="utility_and_infrastructure/boost_python_ssize_t_hpp.html">boost/python/ssize_t.hpp</a></span></dt> 64<dd><dl> 65<dt><span class="section"><a href="utility_and_infrastructure/boost_python_ssize_t_hpp.html#utility_and_infrastructure.boost_python_ssize_t_hpp.introduction">Introduction</a></span></dt> 66<dt><span class="section"><a href="utility_and_infrastructure/boost_python_ssize_t_hpp.html#utility_and_infrastructure.boost_python_ssize_t_hpp.typedefs">Typedefs</a></span></dt> 67<dt><span class="section"><a href="utility_and_infrastructure/boost_python_ssize_t_hpp.html#utility_and_infrastructure.boost_python_ssize_t_hpp.constants">Constants</a></span></dt> 68</dl></dd> 69</dl> 70</div> 71<div class="section"> 72<div class="titlepage"><div><div><h2 class="title" style="clear: both"> 73<a name="utility_and_infrastructure.boost_python_has_back_reference_"></a><a class="link" href="utility_and_infrastructure.html#utility_and_infrastructure.boost_python_has_back_reference_" title="boost/python/has_back_reference.hpp">boost/python/has_back_reference.hpp</a> 74</h2></div></div></div> 75<div class="toc"><dl class="toc"> 76<dt><span class="section"><a href="utility_and_infrastructure.html#utility_and_infrastructure.boost_python_has_back_reference_.introduction">Introduction</a></span></dt> 77<dt><span class="section"><a href="utility_and_infrastructure.html#utility_and_infrastructure.boost_python_has_back_reference_.class_template_has_back_referenc">Class 78 template <code class="computeroutput"><span class="identifier">has_back_reference</span></code></a></span></dt> 79<dt><span class="section"><a href="utility_and_infrastructure.html#utility_and_infrastructure.boost_python_has_back_reference_.examples">Examples</a></span></dt> 80</dl></div> 81<div class="section"> 82<div class="titlepage"><div><div><h3 class="title"> 83<a name="utility_and_infrastructure.boost_python_has_back_reference_.introduction"></a><a class="link" href="utility_and_infrastructure.html#utility_and_infrastructure.boost_python_has_back_reference_.introduction" title="Introduction">Introduction</a> 84</h3></div></div></div> 85<p> 86 <boost/python/has_back_reference.hpp> defines the predicate metafunction 87 <code class="computeroutput"><span class="identifier">has_back_reference</span><span class="special"><></span></code>, 88 which can be specialized by the user to indicate that a wrapped class instance 89 holds a <code class="computeroutput"><span class="identifier">PyObject</span><span class="special">*</span></code> 90 corresponding to a Python object. 91 </p> 92</div> 93<div class="section"> 94<div class="titlepage"><div><div><h3 class="title"> 95<a name="utility_and_infrastructure.boost_python_has_back_reference_.class_template_has_back_referenc"></a><a class="link" href="utility_and_infrastructure.html#utility_and_infrastructure.boost_python_has_back_reference_.class_template_has_back_referenc" title="Class template has_back_reference">Class 96 template <code class="computeroutput"><span class="identifier">has_back_reference</span></code></a> 97</h3></div></div></div> 98<p> 99 A unary metafunction whose value is true iff its argument is a <code class="computeroutput"><span class="identifier">pointer_wrapper</span><span class="special"><></span></code>. 100 </p> 101<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">python</span> 102<span class="special">{</span> 103 <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">WrappedClass</span><span class="special">></span> <span class="keyword">class</span> <span class="identifier">has_back_reference</span> 104 <span class="special">{</span> 105 <span class="keyword">typedef</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span> <span class="identifier">type</span><span class="special">;</span> 106 <span class="special">};</span> 107<span class="special">}}</span> 108</pre> 109<p> 110 A metafunction that is inspected by Boost.Python to determine how wrapped 111 classes can be constructed. 112 </p> 113<p> 114 <code class="computeroutput"><span class="identifier">type</span><span class="special">::</span><span class="identifier">value</span></code> is an integral constant convertible 115 to bool of unspecified type. Specializations may substitute a true-valued 116 integral constant wrapper for type iff for each invocation of <code class="computeroutput"><span class="identifier">class_</span><span class="special"><</span><span class="identifier">WrappedClass</span><span class="special">>::</span><span class="identifier">def</span><span class="special">(</span><span class="identifier">init</span><span class="special"><</span> <span class="identifier">type</span><span class="special">-</span><span class="identifier">sequence</span><span class="special">...>())</span></code> 117 and the implicitly wrapped copy constructor (unless it is noncopyable), 118 there exists a corresponding constructor <code class="computeroutput"><span class="identifier">WrappedClass</span><span class="special">::</span><span class="identifier">WrappedClass</span><span class="special">(</span><span class="identifier">PyObject</span><span class="special">*,</span> <span class="identifier">type</span><span class="special">-</span><span class="identifier">sequence</span><span class="special">...)</span></code>. If such a specialization exists, the 119 WrappedClass constructors will be called with a "back reference" 120 pointer to the corresponding Python object whenever they are invoked from 121 Python. The easiest way to provide this nested type is to derive the specialization 122 from <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code>. 123 </p> 124</div> 125<div class="section"> 126<div class="titlepage"><div><div><h3 class="title"> 127<a name="utility_and_infrastructure.boost_python_has_back_reference_.examples"></a><a class="link" href="utility_and_infrastructure.html#utility_and_infrastructure.boost_python_has_back_reference_.examples" title="Examples">Examples</a> 128</h3></div></div></div> 129<p> 130 In C++: 131 </p> 132<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">python</span><span class="special">/</span><span class="keyword">class</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> 133<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">python</span><span class="special">/</span><span class="identifier">module</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> 134<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">python</span><span class="special">/</span><span class="identifier">has_back_reference</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> 135<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">python</span><span class="special">/</span><span class="identifier">handle</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> 136<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">shared_ptr</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> 137 138<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">python</span><span class="special">;</span> 139<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">shared_ptr</span><span class="special">;</span> 140 141<span class="keyword">struct</span> <span class="identifier">X</span> 142<span class="special">{</span> 143 <span class="identifier">X</span><span class="special">(</span><span class="identifier">PyObject</span><span class="special">*</span> <span class="identifier">self</span><span class="special">)</span> <span class="special">:</span> <span class="identifier">m_self</span><span class="special">(</span><span class="identifier">self</span><span class="special">),</span> <span class="identifier">m_x</span><span class="special">(</span><span class="number">0</span><span class="special">)</span> <span class="special">{}</span> 144 <span class="identifier">X</span><span class="special">(</span><span class="identifier">PyObject</span><span class="special">*</span> <span class="identifier">self</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">x</span><span class="special">)</span> <span class="special">:</span> <span class="identifier">m_self</span><span class="special">(</span><span class="identifier">self</span><span class="special">),</span> <span class="identifier">m_x</span><span class="special">(</span><span class="identifier">x</span><span class="special">)</span> <span class="special">{}</span> 145 <span class="identifier">X</span><span class="special">(</span><span class="identifier">PyObject</span><span class="special">*</span> <span class="identifier">self</span><span class="special">,</span> <span class="identifier">X</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">other</span><span class="special">)</span> <span class="special">:</span> <span class="identifier">m_self</span><span class="special">(</span><span class="identifier">self</span><span class="special">),</span> <span class="identifier">m_x</span><span class="special">(</span><span class="identifier">other</span><span class="special">.</span><span class="identifier">m_x</span><span class="special">)</span> <span class="special">{}</span> 146 147 <span class="identifier">handle</span><span class="special"><></span> <span class="identifier">self</span><span class="special">()</span> <span class="special">{</span> <span class="keyword">return</span> <span class="identifier">handle</span><span class="special"><>(</span><span class="identifier">borrowed</span><span class="special">(</span><span class="identifier">m_self</span><span class="special">));</span> <span class="special">}</span> 148 <span class="keyword">int</span> <span class="identifier">get</span><span class="special">()</span> <span class="special">{</span> <span class="keyword">return</span> <span class="identifier">m_x</span><span class="special">;</span> <span class="special">}</span> 149 <span class="keyword">void</span> <span class="identifier">set</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">x</span><span class="special">)</span> <span class="special">{</span> <span class="identifier">m_x</span> <span class="special">=</span> <span class="identifier">x</span><span class="special">;</span> <span class="special">}</span> 150 151 <span class="identifier">PyObject</span><span class="special">*</span> <span class="identifier">m_self</span><span class="special">;</span> 152 <span class="keyword">int</span> <span class="identifier">m_x</span><span class="special">;</span> 153<span class="special">};</span> 154 155<span class="comment">// specialize has_back_reference for X</span> 156<span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">python</span> 157<span class="special">{</span> 158 <span class="keyword">template</span> <span class="special"><></span> 159 <span class="keyword">struct</span> <span class="identifier">has_back_reference</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> 160 <span class="special">:</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span> 161 <span class="special">{};</span> 162<span class="special">}}</span> 163 164<span class="keyword">struct</span> <span class="identifier">Y</span> 165<span class="special">{</span> 166 <span class="identifier">Y</span><span class="special">()</span> <span class="special">:</span> <span class="identifier">m_x</span><span class="special">(</span><span class="number">0</span><span class="special">)</span> <span class="special">{}</span> 167 <span class="identifier">Y</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">x</span><span class="special">)</span> <span class="special">:</span> <span class="identifier">m_x</span><span class="special">(</span><span class="identifier">x</span><span class="special">)</span> <span class="special">{}</span> 168 <span class="keyword">int</span> <span class="identifier">get</span><span class="special">()</span> <span class="special">{</span> <span class="keyword">return</span> <span class="identifier">m_x</span><span class="special">;</span> <span class="special">}</span> 169 <span class="keyword">void</span> <span class="identifier">set</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">x</span><span class="special">)</span> <span class="special">{</span> <span class="identifier">m_x</span> <span class="special">=</span> <span class="identifier">x</span><span class="special">;</span> <span class="special">}</span> 170 171 <span class="keyword">int</span> <span class="identifier">m_x</span><span class="special">;</span> 172<span class="special">};</span> 173 174<span class="identifier">shared_ptr</span><span class="special"><</span><span class="identifier">Y</span><span class="special">></span> 175<span class="identifier">Y_self</span><span class="special">(</span><span class="identifier">shared_ptr</span><span class="special"><</span><span class="identifier">Y</span><span class="special">></span> <span class="identifier">self</span><span class="special">)</span> <span class="special">{</span> <span class="keyword">return</span> <span class="identifier">self</span><span class="special">;</span> <span class="special">}</span> 176 177<span class="identifier">BOOST_PYTHON_MODULE</span><span class="special">(</span><span class="identifier">back_references</span><span class="special">)</span> 178<span class="special">{</span> 179 <span class="identifier">class_</span><span class="special"><</span><span class="identifier">X</span><span class="special">>(</span><span class="string">"X"</span><span class="special">)</span> 180 <span class="special">.</span><span class="identifier">def</span><span class="special">(</span><span class="identifier">init</span><span class="special"><</span><span class="keyword">int</span><span class="special">>())</span> 181 <span class="special">.</span><span class="identifier">def</span><span class="special">(</span><span class="string">"self"</span><span class="special">,</span> <span class="special">&</span><span class="identifier">X</span><span class="special">::</span><span class="identifier">self</span><span class="special">)</span> 182 <span class="special">.</span><span class="identifier">def</span><span class="special">(</span><span class="string">"get"</span><span class="special">,</span> <span class="special">&</span><span class="identifier">X</span><span class="special">::</span><span class="identifier">get</span><span class="special">)</span> 183 <span class="special">.</span><span class="identifier">def</span><span class="special">(</span><span class="string">"set"</span><span class="special">,</span> <span class="special">&</span><span class="identifier">X</span><span class="special">::</span><span class="identifier">set</span><span class="special">)</span> 184 <span class="special">;</span> 185 186 <span class="identifier">class_</span><span class="special"><</span><span class="identifier">Y</span><span class="special">,</span> <span class="identifier">shared_ptr</span><span class="special"><</span><span class="identifier">Y</span><span class="special">></span> <span class="special">>(</span><span class="string">"Y"</span><span class="special">)</span> 187 <span class="special">.</span><span class="identifier">def</span><span class="special">(</span><span class="identifier">init</span><span class="special"><</span><span class="keyword">int</span><span class="special">>())</span> 188 <span class="special">.</span><span class="identifier">def</span><span class="special">(</span><span class="string">"get"</span><span class="special">,</span> <span class="special">&</span><span class="identifier">Y</span><span class="special">::</span><span class="identifier">get</span><span class="special">)</span> 189 <span class="special">.</span><span class="identifier">def</span><span class="special">(</span><span class="string">"set"</span><span class="special">,</span> <span class="special">&</span><span class="identifier">Y</span><span class="special">::</span><span class="identifier">set</span><span class="special">)</span> 190 <span class="special">.</span><span class="identifier">def</span><span class="special">(</span><span class="string">"self"</span><span class="special">,</span> <span class="identifier">Y_self</span><span class="special">)</span> 191 <span class="special">;</span> 192<span class="special">}</span> 193</pre> 194<p> 195 The following Python session illustrates that x.self() returns the same 196 Python object on which it is invoked, while y.self() must create a new 197 Python object which refers to the same Y instance. 198 </p> 199<p> 200 In Python: 201 </p> 202<pre class="programlisting"><span class="special">>>></span> <span class="identifier">from</span> <span class="identifier">back_references</span> <span class="identifier">import</span> <span class="special">*</span> 203<span class="special">>>></span> <span class="identifier">x</span> <span class="special">=</span> <span class="identifier">X</span><span class="special">(</span><span class="number">1</span><span class="special">)</span> 204<span class="special">>>></span> <span class="identifier">x2</span> <span class="special">=</span> <span class="identifier">x</span><span class="special">.</span><span class="identifier">self</span><span class="special">()</span> 205<span class="special">>>></span> <span class="identifier">x2</span> <span class="identifier">is</span> <span class="identifier">x</span> 206<span class="number">1</span> 207<span class="special">>>></span> <span class="special">(</span><span class="identifier">x</span><span class="special">.</span><span class="identifier">get</span><span class="special">(),</span> <span class="identifier">x2</span><span class="special">.</span><span class="identifier">get</span><span class="special">())</span> 208<span class="special">(</span><span class="number">1</span><span class="special">,</span> <span class="number">1</span><span class="special">)</span> 209<span class="special">>>></span> <span class="identifier">x</span><span class="special">.</span><span class="identifier">set</span><span class="special">(</span><span class="number">10</span><span class="special">)</span> 210<span class="special">>>></span> <span class="special">(</span><span class="identifier">x</span><span class="special">.</span><span class="identifier">get</span><span class="special">(),</span> <span class="identifier">x2</span><span class="special">.</span><span class="identifier">get</span><span class="special">())</span> 211<span class="special">(</span><span class="number">10</span><span class="special">,</span> <span class="number">10</span><span class="special">)</span> 212<span class="special">>>></span> 213<span class="special">>>></span> 214<span class="special">>>></span> <span class="identifier">y</span> <span class="special">=</span> <span class="identifier">Y</span><span class="special">(</span><span class="number">2</span><span class="special">)</span> 215<span class="special">>>></span> <span class="identifier">y2</span> <span class="special">=</span> <span class="identifier">y</span><span class="special">.</span><span class="identifier">self</span><span class="special">()</span> 216<span class="special">>>></span> <span class="identifier">y2</span> <span class="identifier">is</span> <span class="identifier">y</span> 217<span class="number">0</span> 218<span class="special">>>></span> <span class="special">(</span><span class="identifier">y</span><span class="special">.</span><span class="identifier">get</span><span class="special">(),</span> <span class="identifier">y2</span><span class="special">.</span><span class="identifier">get</span><span class="special">())</span> 219<span class="special">(</span><span class="number">2</span><span class="special">,</span> <span class="number">2</span><span class="special">)</span> 220<span class="special">>>></span> <span class="identifier">y</span><span class="special">.</span><span class="identifier">set</span><span class="special">(</span><span class="number">20</span><span class="special">)</span> 221<span class="special">>>></span> <span class="special">(</span><span class="identifier">y</span><span class="special">.</span><span class="identifier">get</span><span class="special">(),</span> <span class="identifier">y2</span><span class="special">.</span><span class="identifier">get</span><span class="special">())</span> 222<span class="special">(</span><span class="number">20</span><span class="special">,</span> <span class="number">20</span><span class="special">)</span> 223</pre> 224</div> 225</div> 226</div> 227<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> 228<td align="left"></td> 229<td align="right"><div class="copyright-footer">Copyright © 2002-2005, 2015 David Abrahams, Stefan Seefeld<p> 230 Distributed under the Boost Software License, Version 1.0. (See accompanying 231 file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a> 232 </p> 233</div></td> 234</tr></table> 235<hr> 236<div class="spirit-nav"> 237<a accesskey="p" href="embedding/boost_python_import_hpp.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="utility_and_infrastructure/boost_python_instance_holder_hpp.html"><img src="../images/next.png" alt="Next"></a> 238</div> 239</body> 240</html> 241