2
0
mirror of https://github.com/boostorg/python.git synced 2026-01-26 06:42:27 +00:00

Compare commits

..

2 Commits

Author SHA1 Message Date
Eric Niebler
d7ad8d9547 really screwy merge trancking behavior, starting over
[SVN r44394]
2008-04-14 05:45:24 +00:00
Eric Niebler
cfede0ab0e post-review proto version
[SVN r44061]
2008-04-05 18:00:00 +00:00
7 changed files with 27 additions and 45 deletions

View File

@@ -158,8 +158,8 @@ all the parts of your Python installation. If it isn't, consider
<p>If you're still having trouble, Someone on one of the following
mailing lists may be able to help:</p>
<ul class="simple">
<li>The <a class="reference external" href="http://www.boost.org/community/groups.html#jamboost">Boost.Build mailing list</a> for issues related to Boost.Build</li>
<li>The Python <a class="reference external" href="http://www.boost.org/community/groups.html#cplussig">C++ Sig</a> for issues specifically related to Boost.Python</li>
<li>The <a class="reference external" href="http://www.boost.org/more/mailing_lists.htm#jamboost">Boost.Build mailing list</a> for issues related to Boost.Build</li>
<li>The Python <a class="reference external" href="http://www.boost.org/more/mailing_lists.htm#cplussig">C++ Sig</a> for issues specifically related to Boost.Python</li>
</ul>
</div>
<div class="section" id="in-case-everything-seemed-to-work">

View File

@@ -11,7 +11,7 @@
:alt: Boost C++ Libraries:
:class: boost-logo
__ ../index.html
__ ../index.htm
.. section-numbering::
@@ -177,8 +177,8 @@ mailing lists may be able to help:
* The `Boost.Build mailing list`__ for issues related to Boost.Build
* The Python `C++ Sig`__ for issues specifically related to Boost.Python
__ http://www.boost.org/community/groups.html#jamboost
__ http://www.boost.org/community/groups.html#cplussig
__ http://www.boost.org/more/mailing_lists.htm#jamboost
__ http://www.boost.org/more/mailing_lists.htm#cplussig
In Case Everything Seemed to Work
---------------------------------

View File

@@ -47,7 +47,7 @@
&nbsp;</dt>
<dt><b><a href=
"http://www.boost.org/community/groups.html#cplussig">The Python
"http://www.boost.org/more/mailing_lists.htm#cplussig">The Python
C++-sig</a></b> mailing list is a forum for discussing Python/C++
interoperability, and Boost.Python in particular. Post your
Boost.Python questions here.<br>

View File

@@ -93,7 +93,7 @@ who had to use a different tool.
We will skip over the details. Our objective will be to simply create
the hello world module and run it in Python. For a complete reference to
building Boost.Python, check out: [@/libs/python/doc/building.html
building Boost.Python, check out: [@../../../building.html
building.html]. After this brief ['bjam] tutorial, we should have built
the DLLs and run a python program using the extension.
@@ -118,7 +118,7 @@ platforms. The complete list of Bjam executables can be found
[h2 Let's Jam!]
__jam__
[@/libs/python/example/tutorial/Jamroot Here] is our minimalist Jamroot
[@../../../../example/tutorial/Jamroot Here] is our minimalist Jamroot
file. Simply copy the file and tweak [^use-project boost] to where your
boost root directory is and your OK.
@@ -463,7 +463,7 @@ functions so that a Python override may be called:
};
Notice too that in addition to inheriting from `Base`, we also multiply-
inherited `wrapper<Base>` (See [@/libs/python/doc/v2/wrapper.html Wrapper]). The
inherited `wrapper<Base>` (See [@../../../v2/wrapper.html Wrapper]). The
`wrapper` template makes the job of wrapping classes that are meant to
overridden in Python, easier.
@@ -495,7 +495,7 @@ Methods correspond roughly to C++'s [*member functions]]
[section Virtual Functions with Default Implementations]
We've seen in the previous section how classes with pure virtual functions are
wrapped using Boost.Python's [@/libs/python/doc/v2/wrapper.html class wrapper]
wrapped using Boost.Python's [@../../../v2/wrapper.html class wrapper]
facilities. If we wish to wrap [*non]-pure-virtual functions instead, the
mechanism is a bit different.
@@ -812,7 +812,7 @@ or more policies can be composed by chaining. Here's the general syntax:
policy3<args...> > >
Here is the list of predefined call policies. A complete reference detailing
these can be found [@/libs/python/doc/v2/reference.html#models_of_call_policies here].
these can be found [@../../../v2/reference.html#models_of_call_policies here].
* [*with_custodian_and_ward]: Ties lifetimes of the arguments
* [*with_custodian_and_ward_postcall]: Ties lifetimes of the arguments and results
@@ -970,7 +970,7 @@ fourth macro argument). The thin wrappers are all enclosed in a class named
.def("wack_em", &george::wack_em, george_overloads());
See the [@/libs/python/doc/v2/overloads.html#BOOST_PYTHON_FUNCTION_OVERLOADS-spec overloads reference]
See the [@../../../v2/overloads.html#BOOST_PYTHON_FUNCTION_OVERLOADS-spec overloads reference]
for details.
[h2 init and optional]
@@ -1267,7 +1267,7 @@ associated with the C++ type passed as its first parameter.
The scope is a class that has an associated global Python object which
controls the Python namespace in which new extension classes and wrapped
functions will be defined as attributes. Details can be found
[@/libs/python/doc/v2/scope.html here].]
[@../../../v2/scope.html here].]
You can access those values in Python as
@@ -1328,7 +1328,7 @@ in Boost's [^/libs/python/build/bin-stage] subdirectory. On Windows, the
variants are called [^boost_python.lib] (for release builds) and
[^boost_python_debug.lib] (for debugging). If you can't find the libraries,
you probably haven't built Boost.Python yet. See
[@/libs/python/doc/building.html Building and Testing] on how to do this.
[@../../../building.html Building and Testing] on how to do this.
Python's library can be found in the [^/libs] subdirectory of
your Python directory. On Windows it is called pythonXY.lib where X.Y is
@@ -1381,13 +1381,13 @@ interpreter. This may be fixed in a future version of boost.python.]
[section Using the interpreter]
As you probably already know, objects in Python are reference-counted.
Naturally, the [^PyObject]s of the Python\/C API are also reference-counted.
Naturally, the [^PyObject]s of the Python/C API are also reference-counted.
There is a difference however. While the reference-counting is fully
automatic in Python, the Python\/C API requires you to do it
automatic in Python, the Python/C API requires you to do it
[@http://www.python.org/doc/current/api/refcounts.html by hand]. This is
messy and especially hard to get right in the presence of C++ exceptions.
Fortunately Boost.Python provides the [@/libs/python/doc/v2/handle.html handle] and
[@/libs/python/doc/v2/object.html object] class templates to automate the process.
Fortunately Boost.Python provides the [@../../../v2/handle.html handle] and
[@../../../v2/object.html object] class templates to automate the process.
[h2 Running Python code]
@@ -1450,7 +1450,7 @@ which returns the result directly:
[h2 Exception handling]
If an exception occurs in the evaluation of the python expression,
[@/libs/python/doc/v2/errors.html#error_already_set-spec error_already_set] is thrown:
[@../../../v2/errors.html#error_already_set-spec error_already_set] is thrown:
try
{
@@ -1954,13 +1954,13 @@ This method is recommended too if you are developing the C++ library and
exporting it to Python at the same time: changes in a class will only demand
the compilation of a single cpp, instead of the entire wrapper code.
[note If you're exporting your classes with [@/libs/python/doc/pyste/index.html Pyste],
[note If you're exporting your classes with [@../../../../pyste/index.html Pyste],
take a look at the [^--multiple] option, that generates the wrappers in
various files as demonstrated here.]
[note This method is useful too if you are getting the error message
['"fatal error C1204:Compiler limit:internal structure overflow"] when compiling
a large source file, as explained in the [@/libs/python/doc/v2/faq.html#c1204 FAQ].]
a large source file, as explained in the [@../../../v2/faq.html#c1204 FAQ].]
[endsect]
[endsect] [/ General Techniques]

View File

@@ -11,8 +11,8 @@
<a href="doc/html/index.html">link</a> &nbsp;<hr>
<p>© Copyright Beman Dawes, 2001</p>
<p>Distributed under the Boost Software License, Version 1.0. (See
accompanying file <a href="../../../../LICENSE_1_0.txt">
accompanying file <a href="../../../LICENSE_1_0.txt">
LICENSE_1_0.txt</a> or copy at
<a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</p>
</body>
</html>
</html>

View File

@@ -7,12 +7,9 @@
#ifndef PY_CONTAINER_UTILS_JDG20038_HPP
# define PY_CONTAINER_UTILS_JDG20038_HPP
# include <utility>
# include <boost/foreach.hpp>
# include <boost/python/object.hpp>
# include <boost/python/handle.hpp>
# include <boost/python/extract.hpp>
# include <boost/python/stl_iterator.hpp>
namespace boost { namespace python { namespace container_utils {
@@ -22,13 +19,11 @@ namespace boost { namespace python { namespace container_utils {
{
typedef typename Container::value_type data_type;
// l must be iterable
BOOST_FOREACH(object elem,
std::make_pair(
boost::python::stl_input_iterator<object>(l),
boost::python::stl_input_iterator<object>()
))
// l must be a list or some container
for (int i = 0; i < l.attr("__len__")(); i++)
{
object elem(l[i]);
extract<data_type const&> x(elem);
// try if elem is an exact data_type type
if (x.check())

View File

@@ -321,19 +321,6 @@ e
>>> print_xvec(v)
[ a b c d e f g h i j ]
#####################################################################
# extend using a generator expression
#####################################################################
>>> v[:] = ['a','b','c','d','e'] # reset again
>>> def generator():
... addlist = ['f','g','h','i','j']
... for i in addlist:
... if i != 'g':
... yield i
>>> v.extend(generator())
>>> print_xvec(v)
[ a b c d e f h i j ]
#####################################################################
# vector of strings
#####################################################################