GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — boost/python, libs/python: all changes from trunk merged into branche… · ssam18/python@e80224b

File tree

Expand file treeCollapse file tree
Open diff view settings
Filter options
  • doc
    • tutorial/doc
      • html
        • index.html
        • python
          • embedding.html
          • exception.html
          • exposing.html
          • functions.html
          • hello.html
          • iterators.html
          • object.html
          • techniques.html
      • tutorial.qbk
    • v2
      • object.html
  • example/tutorial
    • Jamroot
  • include/boost/python
    • call.hpp
    • call_method.hpp
    • converter
      • rvalue_from_python_data.hpp
      • shared_ptr_from_python.hpp
    • data_members.hpp
    • detail
      • decorated_type_id.hpp
      • result.hpp
      • target.hpp
    • object_core.hpp
    • object_protocol.hpp
    • object_slices.hpp
    • object
      • class_metadata.hpp
      • make_holder.hpp
      • pointer_holder.hpp
      • value_holder.hpp
    • signature.hpp
  • src
    • converter
      • builtin_converters.cpp
    • dict.cpp
    • exec.cpp
    • list.cpp
    • long.cpp
    • object
      • class.cpp
      • enum.cpp
      • function.cpp
      • function_doc_signature.cpp
      • inheritance.cpp
      • life_support.cpp
      • stl_iterator.cpp
    • str.cpp
    • tuple.cpp
  • test
    • CMakeLists.txt
    • Jamfile.v2
    • andreas_beyer.cpp
    • back_reference.cpp
    • callbacks.cpp
    • complicated.hpp
    • enable_shared_from_this.cpp
    • enable_shared_from_this.py
    • enum.cpp
    • enum.py
    • exec.cpp
    • m1.cpp
    • object.cpp
    • object.py
    • pickle1.cpp
    • pickle2.cpp
    • pickle3.cpp
    • pickle4.cpp
    • slice.cpp
    • staticmethod.cpp
    • stl_iterator.py
    • test_builtin_converters.cpp
    • test_builtin_converters.py
    • test_class.hpp
    • test_overload_resolution.cpp
    • test_pointer_adoption.cpp
    • virtual_functions.cpp

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Dismiss banner
Expand file treeCollapse file tree
Open diff view settings
Collapse file

‎doc/tutorial/doc/html/index.html‎

Copy file name to clipboardExpand all lines: doc/tutorial/doc/html/index.html
+9-12Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@
1010
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
1111
<table cellpadding="2" width="100%"><tr>
1212
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
13-
<td align="center"><a href="../../../../../../index.htm">Home</a></td>
13+
<td align="center"><a href="../../../../../../index.html">Home</a></td>
1414
<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
15-
<td align="center"><a href="../../../../../../people/people.htm">People</a></td>
16-
<td align="center"><a href="../../../../../../more/faq.htm">FAQ</a></td>
15+
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
16+
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
1717
<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
1818
</tr></table>
1919
<hr>
@@ -31,7 +31,7 @@
3131
<div><p class="copyright">Copyright © 2002-2005 Joel
3232
de Guzman, David Abrahams</p></div>
3333
<div><div class="legalnotice">
34-
<a name="id455921"></a><p>
34+
<a name="id457106"></a><p>
3535
Distributed under the Boost Software License, Version 1.0. (See accompanying
3636
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">
3737
http://www.boost.org/LICENSE_1_0.txt </a>)
@@ -94,24 +94,22 @@
9494
(IDL).
9595
</p>
9696
<a name="quickstart.hello_world"></a><h2>
97-
<a name="id385276"></a>
97+
<a name="id386707"></a>
9898
Hello World
9999
</h2>
100100
<p>
101101
Following C/C++ tradition, let's start with the "hello, world". A
102102
C++ Function:
103103
</p>
104-
<pre class="programlisting">
105-
<span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">greet</span><span class="special">()</span>
104+
<pre class="programlisting"><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">greet</span><span class="special">()</span>
106105
<span class="special">{</span>
107106
<span class="keyword">return</span> <span class="string">"hello, world"</span><span class="special">;</span>
108107
<span class="special">}</span>
109108
</pre>
110109
<p>
111110
can be exposed to Python by writing a Boost.Python wrapper:
112111
</p>
113-
<pre class="programlisting">
114-
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">python</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
112+
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">python</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
115113

116114
<span class="identifier">BOOST_PYTHON_MODULE</span><span class="special">(</span><span class="identifier">hello_ext</span><span class="special">)</span>
117115
<span class="special">{</span>
@@ -125,8 +123,7 @@
125123
</p>
126124
<p>
127125
</p>
128-
<pre class="programlisting">
129-
<span class="special">&gt;&gt;&gt;</span> <span class="keyword">import</span> <span class="identifier">hello_ext</span>
126+
<pre class="programlisting"><span class="special">&gt;&gt;&gt;</span> <span class="keyword">import</span> <span class="identifier">hello_ext</span>
130127
<span class="special">&gt;&gt;&gt;</span> <span class="keyword">print</span> <span class="identifier">hello</span><span class="special">.</span><span class="identifier">greet</span><span class="special">()</span>
131128
<span class="identifier">hello</span><span class="special">,</span> <span class="identifier">world</span>
132129
</pre>
@@ -145,7 +142,7 @@
145142
</div>
146143
</div>
147144
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
148-
<td align="left"><p><small>Last revised: March 24, 2008 at 23:09:39 GMT</small></p></td>
145+
<td align="left"><p><small>Last revised: November 22, 2008 at 03:24:11 GMT</small></p></td>
149146
<td align="right"><div class="copyright-footer"></div></td>
150147
</tr></table>
151148
<hr>
Collapse file

‎doc/tutorial/doc/html/python/embedding.html‎

Copy file name to clipboardExpand all lines: doc/tutorial/doc/html/python/embedding.html
+22-29Lines changed: 22 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@
1212
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
1313
<table cellpadding="2" width="100%"><tr>
1414
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
15-
<td align="center"><a href="../../../../../../../index.htm">Home</a></td>
15+
<td align="center"><a href="../../../../../../../index.html">Home</a></td>
1616
<td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
17-
<td align="center"><a href="../../../../../../../people/people.htm">People</a></td>
18-
<td align="center"><a href="../../../../../../../more/faq.htm">FAQ</a></td>
17+
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
18+
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
1919
<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
2020
</tr></table>
2121
<hr>
@@ -40,7 +40,7 @@
4040
Python/C API at all. So stay tuned... <span class="inlinemediaobject"><img src="../images/smiley.png" alt="smiley"></span>
4141
</p>
4242
<a name="embedding.building_embedded_programs"></a><h2>
43-
<a name="id471330"></a>
43+
<a name="id472330"></a>
4444
Building embedded programs
4545
</h2>
4646
<p>
@@ -82,7 +82,7 @@
8282
&lt;find-library&gt;$(PYTHON_EMBEDDED_LIBRARY) ;
8383
</pre>
8484
<a name="embedding.getting_started"></a><h2>
85-
<a name="id471435"></a>
85+
<a name="id472435"></a>
8686
Getting started
8787
</h2>
8888
<p>
@@ -130,23 +130,22 @@
130130
<a name="python.using_the_interpreter"></a>Using the interpreter</h3></div></div></div>
131131
<p>
132132
As you probably already know, objects in Python are reference-counted. Naturally,
133-
the <tt class="literal">PyObject</tt>s of the Python/C API are also reference-counted.
133+
the <tt class="literal">PyObject</tt>s of the Python C API are also reference-counted.
134134
There is a difference however. While the reference-counting is fully automatic
135-
in Python, the Python<span class="emphasis"><em>C API requires you to do it [@http:</em></span>/www.python.org/doc/current/api/refcounts.html
136-
by hand]. This is messy and especially hard to get right in the presence
135+
in Python, the Python C API requires you to do it <a href="http://www.python.org/doc/current/c-api/refcounting.html" target="_top">by
136+
hand</a>. This is messy and especially hard to get right in the presence
137137
of C++ exceptions. Fortunately Boost.Python provides the <a href="../../../../v2/handle.html" target="_top">handle</a>
138138
and <a href="../../../../v2/object.html" target="_top">object</a> class templates to
139139
automate the process.
140140
</p>
141141
<a name="using_the_interpreter.running_python_code"></a><h2>
142-
<a name="id471598"></a>
142+
<a name="id472601"></a>
143143
Running Python code
144144
</h2>
145145
<p>
146146
Boost.python provides three related functions to run Python code from C++.
147147
</p>
148-
<pre class="programlisting">
149-
<span class="identifier">object</span> <span class="identifier">eval</span><span class="special">(</span><span class="identifier">str</span> <span class="identifier">expression</span><span class="special">,</span> <span class="identifier">object</span> <span class="identifier">globals</span> <span class="special">=</span> <span class="identifier">object</span><span class="special">(),</span> <span class="identifier">object</span> <span class="identifier">locals</span> <span class="special">=</span> <span class="identifier">object</span><span class="special">())</span>
148+
<pre class="programlisting"><span class="identifier">object</span> <span class="identifier">eval</span><span class="special">(</span><span class="identifier">str</span> <span class="identifier">expression</span><span class="special">,</span> <span class="identifier">object</span> <span class="identifier">globals</span> <span class="special">=</span> <span class="identifier">object</span><span class="special">(),</span> <span class="identifier">object</span> <span class="identifier">locals</span> <span class="special">=</span> <span class="identifier">object</span><span class="special">())</span>
150149
<span class="identifier">object</span> <span class="identifier">exec</span><span class="special">(</span><span class="identifier">str</span> <span class="identifier">code</span><span class="special">,</span> <span class="identifier">object</span> <span class="identifier">globals</span> <span class="special">=</span> <span class="identifier">object</span><span class="special">(),</span> <span class="identifier">object</span> <span class="identifier">locals</span> <span class="special">=</span> <span class="identifier">object</span><span class="special">())</span>
151150
<span class="identifier">object</span> <span class="identifier">exec_file</span><span class="special">(</span><span class="identifier">str</span> <span class="identifier">filename</span><span class="special">,</span> <span class="identifier">object</span> <span class="identifier">globals</span> <span class="special">=</span> <span class="identifier">object</span><span class="special">(),</span> <span class="identifier">object</span> <span class="identifier">locals</span> <span class="special">=</span> <span class="identifier">object</span><span class="special">())</span>
152151
</pre>
@@ -165,8 +164,7 @@
165164
<p>
166165
Boost.python provides a function to import a module:
167166
</p>
168-
<pre class="programlisting">
169-
<span class="identifier">object</span> <span class="identifier">import</span><span class="special">(</span><span class="identifier">str</span> <span class="identifier">name</span><span class="special">)</span>
167+
<pre class="programlisting"><span class="identifier">object</span> <span class="identifier">import</span><span class="special">(</span><span class="identifier">str</span> <span class="identifier">name</span><span class="special">)</span>
170168
</pre>
171169
<p>
172170
import imports a python module (potentially loading it into the running process
@@ -176,8 +174,7 @@
176174
Let's import the <tt class="literal"><span class="underline">_main</span>_</tt>
177175
module and run some Python code in its namespace:
178176
</p>
179-
<pre class="programlisting">
180-
<span class="identifier">object</span> <span class="identifier">main_module</span> <span class="special">=</span> <span class="identifier">import</span><span class="special">(</span><span class="string">"__main__"</span><span class="special">);</span>
177+
<pre class="programlisting"><span class="identifier">object</span> <span class="identifier">main_module</span> <span class="special">=</span> <span class="identifier">import</span><span class="special">(</span><span class="string">"__main__"</span><span class="special">);</span>
181178
<span class="identifier">object</span> <span class="identifier">main_namespace</span> <span class="special">=</span> <span class="identifier">main_module</span><span class="special">.</span><span class="identifier">attr</span><span class="special">(</span><span class="string">"__dict__"</span><span class="special">);</span>
182179

183180
<span class="identifier">object</span> <span class="identifier">ignored</span> <span class="special">=</span> <span class="identifier">exec</span><span class="special">(</span><span class="string">"hello = file('hello.txt', 'w')\n"</span>
@@ -190,7 +187,7 @@
190187
a phrase that is well-known in programming circles.
191188
</p>
192189
<a name="using_the_interpreter.manipulating_python_objects"></a><h2>
193-
<a name="id472186"></a>
190+
<a name="id473185"></a>
194191
Manipulating Python objects
195192
</h2>
196193
<p>
@@ -200,8 +197,7 @@
200197
derivatives. We've already seen that they can be constructed from a <tt class="literal">handle</tt>.
201198
The following examples should further illustrate this fact:
202199
</p>
203-
<pre class="programlisting">
204-
<span class="identifier">object</span> <span class="identifier">main_module</span> <span class="special">=</span> <span class="identifier">import</span><span class="special">(</span><span class="string">"__main__"</span><span class="special">);</span>
200+
<pre class="programlisting"><span class="identifier">object</span> <span class="identifier">main_module</span> <span class="special">=</span> <span class="identifier">import</span><span class="special">(</span><span class="string">"__main__"</span><span class="special">);</span>
205201
<span class="identifier">object</span> <span class="identifier">main_namespace</span> <span class="special">=</span> <span class="identifier">main_module</span><span class="special">.</span><span class="identifier">attr</span><span class="special">(</span><span class="string">"__dict__"</span><span class="special">);</span>
206202
<span class="identifier">object</span> <span class="identifier">ignored</span> <span class="special">=</span> <span class="identifier">exec</span><span class="special">(</span><span class="string">"result = 5 ** 2"</span><span class="special">,</span> <span class="identifier">main_namespace</span><span class="special">);</span>
207203
<span class="keyword">int</span> <span class="identifier">five_squared</span> <span class="special">=</span> <span class="identifier">extract</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;(</span><span class="identifier">main_namespace</span><span class="special">[</span><span class="string">"result"</span><span class="special">]);</span>
@@ -212,20 +208,18 @@
212208
this variable from the dictionary. Another way to achieve the same result
213209
is to use eval instead, which returns the result directly:
214210
</p>
215-
<pre class="programlisting">
216-
<span class="identifier">object</span> <span class="identifier">result</span> <span class="special">=</span> <span class="identifier">eval</span><span class="special">(</span><span class="string">"5 ** 2"</span><span class="special">);</span>
211+
<pre class="programlisting"><span class="identifier">object</span> <span class="identifier">result</span> <span class="special">=</span> <span class="identifier">eval</span><span class="special">(</span><span class="string">"5 ** 2"</span><span class="special">);</span>
217212
<span class="keyword">int</span> <span class="identifier">five_squared</span> <span class="special">=</span> <span class="identifier">extract</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;(</span><span class="identifier">result</span><span class="special">);</span>
218213
</pre>
219214
<a name="using_the_interpreter.exception_handling"></a><h2>
220-
<a name="id472558"></a>
215+
<a name="id473554"></a>
221216
Exception handling
222217
</h2>
223218
<p>
224219
If an exception occurs in the evaluation of the python expression, <a href="../../../../v2/errors.html#error_already_set-spec" target="_top">error_already_set</a>
225220
is thrown:
226221
</p>
227-
<pre class="programlisting">
228-
<span class="keyword">try</span>
222+
<pre class="programlisting"><span class="keyword">try</span>
229223
<span class="special">{</span>
230224
<span class="identifier">object</span> <span class="identifier">result</span> <span class="special">=</span> <span class="identifier">eval</span><span class="special">(</span><span class="string">"5/0"</span><span class="special">);</span>
231225
<span class="comment">// execution will never get here:
@@ -240,14 +234,13 @@
240234
The <tt class="literal">error_already_set</tt> exception class doesn't carry any
241235
information in itself. To find out more about the Python exception that occurred,
242236
you need to use the <a href="http://www.python.org/doc/api/exceptionHandling.html" target="_top">exception
243-
handling functions</a> of the Python<span class="emphasis"><em>C API in your catch-statement.
244-
This can be as simple as calling [@http:</em></span>/www.python.org/doc/api/exceptionHandling.html#l2h-70
245-
PyErr_Print()] to print the exception's traceback to the console, or comparing
246-
the type of the exception with those of the <a href="http://www.python.org/doc/api/standardExceptions.html" target="_top">standard
237+
handling functions</a> of the Python C API in your catch-statement. This
238+
can be as simple as calling <a href="http://www.python.org/doc/api/exceptionHandling.html#l2h-70" target="_top">PyErr_Print()</a>
239+
to print the exception's traceback to the console, or comparing the type
240+
of the exception with those of the <a href="http://www.python.org/doc/api/standardExceptions.html" target="_top">standard
247241
exceptions</a>:
248242
</p>
249-
<pre class="programlisting">
250-
<span class="keyword">catch</span><span class="special">(</span><span class="identifier">error_already_set</span> <span class="keyword">const</span> <span class="special">&amp;)</span>
243+
<pre class="programlisting"><span class="keyword">catch</span><span class="special">(</span><span class="identifier">error_already_set</span> <span class="keyword">const</span> <span class="special">&amp;)</span>
251244
<span class="special">{</span>
252245
<span class="keyword">if</span> <span class="special">(</span><span class="identifier">PyErr_ExceptionMatches</span><span class="special">(</span><span class="identifier">PyExc_ZeroDivisionError</span><span class="special">))</span>
253246
<span class="special">{</span>
Collapse file

‎doc/tutorial/doc/html/python/exception.html‎

Copy file name to clipboardExpand all lines: doc/tutorial/doc/html/python/exception.html
+5-7Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@
1212
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
1313
<table cellpadding="2" width="100%"><tr>
1414
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
15-
<td align="center"><a href="../../../../../../../index.htm">Home</a></td>
15+
<td align="center"><a href="../../../../../../../index.html">Home</a></td>
1616
<td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
17-
<td align="center"><a href="../../../../../../../people/people.htm">People</a></td>
18-
<td align="center"><a href="../../../../../../../more/faq.htm">FAQ</a></td>
17+
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
18+
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
1919
<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
2020
</tr></table>
2121
<hr>
@@ -30,14 +30,12 @@
3030
is the point where C++ meets Python. Boost.Python provides a default exception
3131
handler that translates selected standard exceptions, then gives up:
3232
</p>
33-
<pre class="programlisting">
34-
<span class="keyword">raise</span> <span class="identifier">RuntimeError</span><span class="special">,</span> <span class="string">'unidentifiable C++ Exception'</span>
33+
<pre class="programlisting"><span class="keyword">raise</span> <span class="identifier">RuntimeError</span><span class="special">,</span> <span class="string">'unidentifiable C++ Exception'</span>
3534
</pre>
3635
<p>
3736
Users may provide custom translation. Here's an example:
3837
</p>
39-
<pre class="programlisting">
40-
<span class="identifier">struct</span> <span class="identifier">PodBayDoorException</span><span class="special">;</span>
38+
<pre class="programlisting"><span class="identifier">struct</span> <span class="identifier">PodBayDoorException</span><span class="special">;</span>
4139
<span class="identifier">void</span> <span class="identifier">translator</span><span class="special">(</span><span class="identifier">PodBayDoorException</span> <span class="identifier">const</span><span class="special">&amp;</span> <span class="identifier">x</span><span class="special">)</span> <span class="special">{</span>
4240
<span class="identifier">PyErr_SetString</span><span class="special">(</span><span class="identifier">PyExc_UserWarning</span><span class="special">,</span> <span class="string">"I'm sorry Dave..."</span><span class="special">);</span>
4341
<span class="special">}</span>

0 commit comments

Comments
0 (0)
You are visitor 01402520 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.