Skip to content

Commit e80224b

Browse files
author
Ralf W. Grosse-Kunstleve
committed
boost/python, libs/python: all changes from trunk merged into branches/release (without any manual modifications)
Commands used: svn merge https://svn.boost.org/svn/boost/branches/release/boost/python https://svn.boost.org/svn/boost/trunk/boost/python /net/chevy/raid1/rwgk/boost_release/merge_attempt/boost/boost/python svn merge https://svn.boost.org/svn/boost/branches/release/libs/python https://svn.boost.org/svn/boost/trunk/libs/python /net/chevy/raid1/rwgk/boost_release/merge_attempt/boost/libs/python svn, version 1.6.4 (r38063) compiled Aug 17 2009, 13:31:03 [SVN r55629]
1 parent 03fdf5b commit e80224b

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

69 files changed

+823
-470
lines changed

doc/tutorial/doc/html/index.html

Lines 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>

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

Lines 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>

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

Lines 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)