From f79dc1c2e78fe98ffaa27084760166368dfa20a5 Mon Sep 17 00:00:00 2001
From: Dave Abrahams The The Class
- scopescope class has an associated global Python object
- which controls the Python namespace in which new extension classes and
- wrapped functions will be defined as attributes. Default-constructing a
- new scope object binds that object to the associated Python
- object. Constructing a is associated with , andscope class has an associated global Python
+ object which controls the Python namespace in which new extension
+ classes and wrapped functions will be defined as
+ attributes. Default-constructing a new scope object
+ binds it to the associated global Python object. Constructing a
+ scope object with an argument changes the associated
+ global Python object to the one held by the argument, until the
+ lifetime of the scope object ends, at which time the
+ associated global Python object reverts to what it was before the
+ scope object was constructed.Class
From a06540e4719edc8d1deee1f5acdb32865cb35af5 Mon Sep 17 00:00:00 2001
From: Joel de Guzman scope
synopsis
The astute reader might have noticed that the extract<T>
-facility in fact solves mutable copying problem:
dict d = extract<dict>(x.attr("__dict__"));
d['whatever'] = 3; #modifies x.__dict__ !
From 1d5fb9798136c625127a818c3f0de496e2c0e996 Mon Sep 17 00:00:00 2001
From: Joel de Guzman
Date: Thu, 10 Oct 2002 07:13:17 +0000
Subject: [PATCH 3/9] Tutorial updates
[SVN r15840]
---
doc/tutorial/doc/basic_interface.html | 10 +-
doc/tutorial/doc/building_hello_world.html | 17 ++-
doc/tutorial/doc/call_policies.html | 2 +-
.../class_operators_special_functions.html | 18 +++-
doc/tutorial/doc/class_virtual_functions.html | 6 +-
doc/tutorial/doc/derived_object_types.html | 2 +-
doc/tutorial/doc/enums.html | 95 +++++++++++++++++
doc/tutorial/doc/extracting_c___objects.html | 6 +-
doc/tutorial/doc/iterators.html | 8 +-
doc/tutorial/doc/object_interface.html | 2 +-
doc/tutorial/doc/quickstart.txt | 100 ++++++++++++++----
doc/tutorial/index.html | 5 +
12 files changed, 227 insertions(+), 44 deletions(-)
create mode 100644 doc/tutorial/doc/enums.html
diff --git a/doc/tutorial/doc/basic_interface.html b/doc/tutorial/doc/basic_interface.html
index cb4a28f4..a9326c80 100644
--- a/doc/tutorial/doc/basic_interface.html
+++ b/doc/tutorial/doc/basic_interface.html
@@ -32,11 +32,11 @@ Class object wraps PyObject*. All the intricacies of dealing w
To illustrate, this Python code snippet:
- def f(x, f):
+ def f(x, y):
if (y == 'foo'):
x[3:7] = 'bar'
else:
- x.items += f(3, x)
+ x.items += y(3, x)
return x
def getfunc():
@@ -45,11 +45,11 @@ To illustrate, this Python code snippet:
Can be rewritten in C++ using Boost.Python facilities this way:
- object f(object x, object f) {
- if (f == "foo")
+ object f(object x, object y) {
+ if (y == "foo")
x.slice(3,7) = "bar";
else
- x.attr("items") += f(3, x);
+ x.attr("items") += y(3, x);
return x;
}
object getfunc() {
diff --git a/doc/tutorial/doc/building_hello_world.html b/doc/tutorial/doc/building_hello_world.html
index 8595ea56..297757ea 100644
--- a/doc/tutorial/doc/building_hello_world.html
+++ b/doc/tutorial/doc/building_hello_world.html
@@ -29,6 +29,17 @@ Now the first thing you'd want to do is to build the Hello World module and
try it for yourself in Python. In this section, we shall outline the steps
necessary to achieve that. We shall use the build tool that comes bundled
with every boost distribution: bjam.
+
+
+
+
Building without bjam
+
+Besides bjam, there are of course other ways to get your module built.
+What's written here should not be taken as "the one and only way".
+There are of course other build tools apart from bjam.
+
+
+
We shall 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
@@ -47,11 +58,13 @@ The hello.cpp file is our C++ hello world example. The Jamfile
minimalist bjam script that builds the DLLs for us.
Before anything else, you should have the bjam executable in your boost
-directory. Pre-built Boost.Jam executables are available for most
+directory or somewhere in your path such that bjam can be executed in
+the command line. Pre-built Boost.Jam executables are available for most
platforms. For example, a pre-built Microsoft Windows bjam executable can
be downloaded
here.
-The complete list of bjam pre-built executables can be found
+The complete list of bjam pre-built
+executables can be found
here.
Lets Jam!

diff --git a/doc/tutorial/doc/call_policies.html b/doc/tutorial/doc/call_policies.html
index 194097df..4f836700 100644
--- a/doc/tutorial/doc/call_policies.html
+++ b/doc/tutorial/doc/call_policies.html
@@ -131,7 +131,7 @@ first argument. In short: "return an internal reference X& own
Informs Boost.Python that the lifetime of the argument indicated by ward
(i.e. the 2nd argument: Z* z) is dependent on the lifetime of the
-argument indicated by custodian (i.e. the 1st argument: Z* z).
+argument indicated by custodian (i.e. the 1st argument: Y& y).
It is also important to note that we have defined two policies above. Two
or more policies can be composed by chaining. Here's the general syntax:
diff --git a/doc/tutorial/doc/class_operators_special_functions.html b/doc/tutorial/doc/class_operators_special_functions.html
index 74a952a2..ca7f6c0b 100644
--- a/doc/tutorial/doc/class_operators_special_functions.html
+++ b/doc/tutorial/doc/class_operators_special_functions.html
@@ -25,7 +25,7 @@
Python Operators
-C is well known for the abundance of oparators. C++ extends this to the
+C is well known for the abundance of operators. C++ extends this to the
extremes by allowing operator overloading. Boost.Python takes advantage of
this and makes it easy to wrap C++ operator-powered classes.
@@ -76,14 +76,22 @@ that correspond to these Python special functions. Example:
ostream& operator<<(ostream&,Rational);
class_<Rational>()
- .def(float_(self)) // __float__
- .def(pow(self)) // __pow__
- .def(abs(self)) // __abs__
- .def(str(self)) // __str__
+ .def(float_(self)) // __float__
+ .def(pow(self, other<Rational>)) // __pow__
+ .def(abs(self)) // __abs__
+ .def(str(self)) // __str__
;
Need we say more?
+
+
+
+
What is the business of operator<< .def(str(self))?
+Well, the method str requires the operator<< to do its work (i.e.
+operator<< is used by the method defined by def(str(self)).
+
+

diff --git a/doc/tutorial/doc/class_virtual_functions.html b/doc/tutorial/doc/class_virtual_functions.html
index 72c3fe3d..6116678a 100644
--- a/doc/tutorial/doc/class_virtual_functions.html
+++ b/doc/tutorial/doc/class_virtual_functions.html
@@ -137,14 +137,14 @@ Calling derived.f():
Will yield the expected result. Finally, calling calling the free function
call_f with derived as argument:
- >>> call_f(derived())
+ >>> call_f(derived)
42
Will also yield the expected result.
Here's what's happening:
-- call_f(derived()) is called in Python
- This corresponds to def("call_f", call_f);. Boost.Python dispatches this call.
- int call_f(Base& b) { return b.f(); } accepts the call.
- The overridden virtual function f of BaseWrap is called.
- call_method<int>(self, "f"); dispatches the call back to Python.
- def f(self): return 42 is finally called.
+
- call_f(derived) is called in Python
- This corresponds to def("call_f", call_f);. Boost.Python dispatches this call.
- int call_f(Base& b) { return b.f(); } accepts the call.
- The overridden virtual function f of BaseWrap is called.
- call_method<int>(self, "f"); dispatches the call back to Python.
- def f(self): return 42 is finally called.
Rewind back to our Base class, if its member function f was not
declared as pure virtual:
@@ -207,7 +207,7 @@ Calling call_f, passing in a base object:
Calling call_f, passing in a derived object:
- >>> call_f(derived())
+ >>> call_f(derived)
42
diff --git a/doc/tutorial/doc/derived_object_types.html b/doc/tutorial/doc/derived_object_types.html
index 303774f7..54ffccb3 100644
--- a/doc/tutorial/doc/derived_object_types.html
+++ b/doc/tutorial/doc/derived_object_types.html
@@ -27,7 +27,7 @@
Boost.Python comes with a set of derived object types corresponding to
that of Python's:
-- list
- dict
- tuple
- str
- long_
+
- list
- dict
- tuple
- str
- long_
- enum
These derived object types act like real Python types. For instance:
str(1) ==> "1"
diff --git a/doc/tutorial/doc/enums.html b/doc/tutorial/doc/enums.html
new file mode 100644
index 00000000..7626c948
--- /dev/null
+++ b/doc/tutorial/doc/enums.html
@@ -0,0 +1,95 @@
+
+
+
+Enums
+
+
+
+
+
+
+
+
+
+
+ Enums
+
+
+
+
+
+
+ 
+ 
+ 
+
+
+
+Boost.Python has a nifty facility to capture and wrap C++ enums. While
+Python has no enum type, we'll often want to expose our C++ enums to
+Python as an int while taking care of the proper conversions from
+Python's dynamic typing to C++'s strong static typing (in C++, ints cannot
+be implicitly converted to enums). Boost.Python's enum facility makes this
+easy. To illustrate, given a C++ enum:
+
+ enum choice { red, blue };
+
+
+the construct:
+
+ enum_<choice>("choice")
+ .value("red", red)
+ .value("blue", blue)
+ ;
+
+
+can be used to expose it to Python. The new enum type is created in the
+current scope(), which is usually the current module. The snippet above
+creates a Python class derived from Python's int type which is
+associated with the C++ type passed as its first parameter.
+
+
+
+
what is a scope?
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
+here
+
+
+
+You can access those values in Python as
+
+ >>> my_module.choice.red
+ my_module.choice.red
+
+
+where my_module is the module where the enum is declared. You can create a
+new scope around a class:
+
+ scope in_X(class_<X>("X")
+ .def( ... )
+ .def( ... )
+ );
+
+ // Expose X::nested as X.nested
+ enum_<X::nested>("nested")
+ .value("red", red)
+ .value("blue", blue)
+ ;
+
+
+
+ 
+ 
+ 
+
+
+
+
Copyright © 2002 David Abrahams
Copyright © 2002 Joel de Guzman
+Permission to copy, use, modify, sell and distribute this document
+ is granted provided this copyright notice appears in all copies. This document
+ is provided "as is" without express or implied warranty, and with
+ no claim as to its suitability for any purpose.
+
+
diff --git a/doc/tutorial/doc/extracting_c___objects.html b/doc/tutorial/doc/extracting_c___objects.html
index a6ba5444..36b8bf85 100644
--- a/doc/tutorial/doc/extracting_c___objects.html
+++ b/doc/tutorial/doc/extracting_c___objects.html
@@ -4,7 +4,7 @@
Extracting C++ objects
-
+
@@ -21,7 +21,7 @@


- 
+ 
@@ -66,7 +66,7 @@ facility in fact solves the mutable copying problem:


- 
+ 
diff --git a/doc/tutorial/doc/iterators.html b/doc/tutorial/doc/iterators.html
index 7e4282cb..00e8dc44 100644
--- a/doc/tutorial/doc/iterators.html
+++ b/doc/tutorial/doc/iterators.html
@@ -3,7 +3,7 @@
Iterators
-
+
@@ -20,7 +20,7 @@

- 
+ 

@@ -34,7 +34,7 @@ iterators, but these are two very different beasts.
- 1 category (forward)
- 1 operation category (next())
- Raises StopIteration exception at end
The typical Python iteration protocol: for y in x... is as follows:
- iter iter = x.__iter__() #get iterator
+ iter = x.__iter__() #get iterator
try:
while 1:
y = iter.next() #get each item
@@ -87,7 +87,7 @@ Now, our C++ Wrapper:

- 
+ 

diff --git a/doc/tutorial/doc/object_interface.html b/doc/tutorial/doc/object_interface.html
index 2279a60c..d18a40bb 100644
--- a/doc/tutorial/doc/object_interface.html
+++ b/doc/tutorial/doc/object_interface.html
@@ -26,7 +26,7 @@
Python is dynamically typed, unlike C++ which is statically typed. Python
-variables may hold an integers, a float, list, dict, tuple, str, long etc.,
+variables may hold an integer, a float, list, dict, tuple, str, long etc.,
among other things. In the viewpoint of Boost.Python and C++, these
Pythonic variables are just instances of class object. We shall see in
this chapter how to deal with Python objects.
diff --git a/doc/tutorial/doc/quickstart.txt b/doc/tutorial/doc/quickstart.txt
index a8176ec1..8541612a 100644
--- a/doc/tutorial/doc/quickstart.txt
+++ b/doc/tutorial/doc/quickstart.txt
@@ -57,6 +57,13 @@ try it for yourself in Python. In this section, we shall outline the steps
necessary to achieve that. We shall use the build tool that comes bundled
with every boost distribution: [*bjam].
+[blurb __detail__ [*Building without bjam][br][br]
+
+Besides bjam, there are of course other ways to get your module built.
+What's written here should not be taken as "the one and only way".
+There are of course other build tools apart from [^bjam].
+]
+
We shall 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: [@../../building.html building.html].
@@ -82,10 +89,12 @@ The [^hello.cpp] file is our C++ hello world example. The [^Jamfile] is a
minimalist ['bjam] script that builds the DLLs for us.
Before anything else, you should have the bjam executable in your boost
-directory. Pre-built Boost.Jam executables are available for most
+directory or somewhere in your path such that [^bjam] can be executed in
+the command line. Pre-built Boost.Jam executables are available for most
platforms. For example, a pre-built Microsoft Windows bjam executable can
be downloaded [@http://boost.sourceforge.net/jam-executables/bin.ntx86/bjam.zip here].
-The complete list of bjam pre-built executables can be found [@../../../../../tools/build/index.html#Jam here].
+The complete list of bjam pre-built
+executables can be found [@../../../../../tools/build/index.html#Jam here].
[h2 Lets Jam!]
[$theme/jam.png]
@@ -540,14 +549,14 @@ Calling [^derived.f()]:
Will yield the expected result. Finally, calling calling the free function
[^call_f] with [^derived] as argument:
- >>> call_f(derived())
+ >>> call_f(derived)
42
Will also yield the expected result.
Here's what's happening:
-# [^call_f(derived())] is called in Python
+# [^call_f(derived)] is called in Python
# This corresponds to [^def("call_f", call_f);]. Boost.Python dispatches this call.
# [^int call_f(Base& b) { return b.f(); }] accepts the call.
# The overridden virtual function [^f] of [^BaseWrap] is called.
@@ -609,14 +618,14 @@ Calling [^call_f], passing in a [^base] object:
Calling [^call_f], passing in a [^derived] object:
- >>> call_f(derived())
+ >>> call_f(derived)
42
[page:1 Class Operators/Special Functions]
[h2 Python Operators]
-C is well known for the abundance of oparators. C++ extends this to the
+C is well known for the abundance of operators. C++ extends this to the
extremes by allowing operator overloading. Boost.Python takes advantage of
this and makes it easy to wrap C++ operator-powered classes.
@@ -667,14 +676,18 @@ that correspond to these Python ['special functions]. Example:
ostream& operator<<(ostream&,Rational);
class_()
- .def(float_(self)) // __float__
- .def(pow(self)) // __pow__
- .def(abs(self)) // __abs__
- .def(str(self)) // __str__
+ .def(float_(self)) // __float__
+ .def(pow(self, other)) // __pow__
+ .def(abs(self)) // __abs__
+ .def(str(self)) // __str__
;
Need we say more?
+[blurb __detail__ What is the business of [^operator<<] [^.def(str(self))]?
+Well, the method [^str] requires the [^operator<<] to do its work (i.e.
+[^operator<<] is used by the method defined by def(str(self)).]
+
[page Functions]
In this chapter, we'll look at Boost.Python powered functions in closer
@@ -827,7 +840,7 @@ first argument. In short: "return an internal reference [^X&] owned by the
Informs Boost.Python that the lifetime of the argument indicated by ward
(i.e. the 2nd argument: [^Z* z]) is dependent on the lifetime of the
-argument indicated by custodian (i.e. the 1st argument: [^Z* z]).
+argument indicated by custodian (i.e. the 1st argument: [^Y& y]).
It is also important to note that we have defined two policies above. Two
or more policies can be composed by chaining. Here's the general syntax:
@@ -928,7 +941,7 @@ Notice the use of [^init<...>] and [^optional<...>] to signify the default
[page Object Interface]
Python is dynamically typed, unlike C++ which is statically typed. Python
-variables may hold an integers, a float, list, dict, tuple, str, long etc.,
+variables may hold an integer, a float, list, dict, tuple, str, long etc.,
among other things. In the viewpoint of Boost.Python and C++, these
Pythonic variables are just instances of class [^object]. We shall see in
this chapter how to deal with Python objects.
@@ -949,11 +962,11 @@ Class [^object] wraps [^PyObject*]. All the intricacies of dealing with
To illustrate, this Python code snippet:
- def f(x, f):
+ def f(x, y):
if (y == 'foo'):
x[3:7] = 'bar'
else:
- x.items += f(3, x)
+ x.items += y(3, x)
return x
def getfunc():
@@ -961,11 +974,11 @@ To illustrate, this Python code snippet:
Can be rewritten in C++ using Boost.Python facilities this way:
- object f(object x, object f) {
- if (f == "foo")
+ object f(object x, object y) {
+ if (y == "foo")
x.slice(3,7) = "bar";
else
- x.attr("items") += f(3, x);
+ x.attr("items") += y(3, x);
return x;
}
object getfunc() {
@@ -986,6 +999,7 @@ that of Python's:
* tuple
* str
* long_
+* enum
These derived [^object] types act like real Python types. For instance:
@@ -1084,11 +1098,59 @@ test for extractibility:
Vec2& v = x(); ...
__tip__ The astute reader might have noticed that the [^extract]
-facility in fact solves mutable copying problem:
+facility in fact solves the mutable copying problem:
dict d = extract(x.attr("__dict__"));
d['whatever'] = 3; # modifies x.__dict__ !
+
+[page:1 Enums]
+
+Boost.Python has a nifty facility to capture and wrap C++ enums. While
+Python has no [^enum] type, we'll often want to expose our C++ enums to
+Python as an [^int] while taking care of the proper conversions from
+Python's dynamic typing to C++'s strong static typing (in C++, ints cannot
+be implicitly converted to enums). Boost.Python's enum facility makes this
+easy. To illustrate, given a C++ enum:
+
+ enum choice { red, blue };
+
+the construct:
+
+ enum_("choice")
+ .value("red", red)
+ .value("blue", blue)
+ ;
+
+can be used to expose it to Python. The new enum type is created in the
+current [^scope()], which is usually the current module. The snippet above
+creates a Python class derived from Python's [^int] type which is
+associated with the C++ type passed as its first parameter.
+
+[blurb __detail__ [*what is a scope?][br][br] 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 [@../../v2/scope.html here]]
+
+You can access those values in Python as
+
+ >>> my_module.choice.red
+ my_module.choice.red
+
+where my_module is the module where the enum is declared. You can create a
+new scope around a class:
+
+ scope in_X(class_("X")
+ .def( ... )
+ .def( ... )
+ );
+
+ // Expose X::nested as X.nested
+ enum_("nested")
+ .value("red", red)
+ .value("blue", blue)
+ ;
+
[page Iterators]
In C++, and STL in particular, we see iterators everywhere. Python also has
@@ -1108,7 +1170,7 @@ iterators, but these are two very different beasts.
The typical Python iteration protocol: [^[*for y in x...]] is as follows:
- iter iter = x.__iter__() # get iterator
+ iter = x.__iter__() # get iterator
try:
while 1:
y = iter.next() # get each item
diff --git a/doc/tutorial/index.html b/doc/tutorial/index.html
index 14554d97..4e1333da 100644
--- a/doc/tutorial/index.html
+++ b/doc/tutorial/index.html
@@ -100,6 +100,11 @@
Extracting C++ objects
+
+
+ Enums
+
+
Iterators
From 51264c30cc4d1944f716bca085106cdc7ea43c8b Mon Sep 17 00:00:00 2001
From: Joel de Guzman
Date: Thu, 10 Oct 2002 07:18:22 +0000
Subject: [PATCH 4/9] Typo...
[SVN r15841]
---
doc/tutorial/doc/enums.html | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/doc/tutorial/doc/enums.html b/doc/tutorial/doc/enums.html
index 7626c948..78263303 100644
--- a/doc/tutorial/doc/enums.html
+++ b/doc/tutorial/doc/enums.html
@@ -43,7 +43,7 @@ the construct:
;
-can be used to expose it to Python. The new enum type is created in the
+can be used to expose to Python. The new enum type is created in the
current scope(), which is usually the current module. The snippet above
creates a Python class derived from Python's int type which is
associated with the C++ type passed as its first parameter.
From df8c8f025c510d90ce96ee2c8854e1cadb74cc71 Mon Sep 17 00:00:00 2001
From: Joel de Guzman
Date: Thu, 10 Oct 2002 07:21:33 +0000
Subject: [PATCH 5/9] tweak
[SVN r15842]
---
doc/tutorial/doc/enums.html | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/doc/tutorial/doc/enums.html b/doc/tutorial/doc/enums.html
index 78263303..c42f1820 100644
--- a/doc/tutorial/doc/enums.html
+++ b/doc/tutorial/doc/enums.html
@@ -3,7 +3,7 @@
Enums
-
+
@@ -20,17 +20,17 @@

- 
+ 

Boost.Python has a nifty facility to capture and wrap C++ enums. While
Python has no enum type, we'll often want to expose our C++ enums to
-Python as an int while taking care of the proper conversions from
-Python's dynamic typing to C++'s strong static typing (in C++, ints cannot
-be implicitly converted to enums). Boost.Python's enum facility makes this
-easy. To illustrate, given a C++ enum:
+Python as an int. Boost.Python's enum facility makes this easy while
+taking care of the proper conversions from Python's dynamic typing to C++'s
+strong static typing (in C++, ints cannot be implicitly converted to
+enums). To illustrate, given a C++ enum:
enum choice { red, blue };
@@ -43,7 +43,7 @@ the construct:
;
-can be used to expose to Python. The new enum type is created in the
+can be used to expose it Python. The new enum type is created in the
current scope(), which is usually the current module. The snippet above
creates a Python class derived from Python's int type which is
associated with the C++ type passed as its first parameter.
@@ -81,7 +81,7 @@ new scope around a class:

- 
+ 

From 7d9770762cb5a755b65878d476a1b1df92377cf1 Mon Sep 17 00:00:00 2001
From: Joel de Guzman
Date: Thu, 10 Oct 2002 07:27:10 +0000
Subject: [PATCH 6/9] more minor tweaks
[SVN r15843]
---
doc/tutorial/doc/enums.html | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/doc/tutorial/doc/enums.html b/doc/tutorial/doc/enums.html
index c42f1820..7eec613e 100644
--- a/doc/tutorial/doc/enums.html
+++ b/doc/tutorial/doc/enums.html
@@ -43,7 +43,7 @@ the construct:
;
-can be used to expose it Python. The new enum type is created in the
+can be used to expose to Python. The new enum type is created in the
current scope(), which is usually the current module. The snippet above
creates a Python class derived from Python's int type which is
associated with the C++ type passed as its first parameter.
@@ -54,7 +54,7 @@ associated with the C++ type passed as its first parameter.
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
-here
+here.
@@ -64,8 +64,8 @@ You can access those values in Python as
my_module.choice.red
-where my_module is the module where the enum is declared. You can create a
-new scope around a class:
+where my_module is the module where the enum is declared. You can also
+create a new scope around a class:
scope in_X(class_<X>("X")
.def( ... )
From 6bb7c2d7b30531cc61fee391cb0fcb6d6ea936d4 Mon Sep 17 00:00:00 2001
From: Joel de Guzman
Date: Thu, 10 Oct 2002 07:28:03 +0000
Subject: [PATCH 7/9] minor tweaks
[SVN r15844]
---
doc/tutorial/doc/quickstart.txt | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/doc/tutorial/doc/quickstart.txt b/doc/tutorial/doc/quickstart.txt
index 8541612a..2c1116cb 100644
--- a/doc/tutorial/doc/quickstart.txt
+++ b/doc/tutorial/doc/quickstart.txt
@@ -1108,10 +1108,10 @@ facility in fact solves the mutable copying problem:
Boost.Python has a nifty facility to capture and wrap C++ enums. While
Python has no [^enum] type, we'll often want to expose our C++ enums to
-Python as an [^int] while taking care of the proper conversions from
-Python's dynamic typing to C++'s strong static typing (in C++, ints cannot
-be implicitly converted to enums). Boost.Python's enum facility makes this
-easy. To illustrate, given a C++ enum:
+Python as an [^int]. Boost.Python's enum facility makes this easy while
+taking care of the proper conversions from Python's dynamic typing to C++'s
+strong static typing (in C++, ints cannot be implicitly converted to
+enums). To illustrate, given a C++ enum:
enum choice { red, blue };
@@ -1122,7 +1122,7 @@ the construct:
.value("blue", blue)
;
-can be used to expose it to Python. The new enum type is created in the
+can be used to expose to Python. The new enum type is created in the
current [^scope()], which is usually the current module. The snippet above
creates a Python class derived from Python's [^int] type which is
associated with the C++ type passed as its first parameter.
@@ -1130,15 +1130,15 @@ associated with the C++ type passed as its first parameter.
[blurb __detail__ [*what is a scope?][br][br] 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 [@../../v2/scope.html here]]
+attributes. Details can be found [@../../v2/scope.html here].]
You can access those values in Python as
>>> my_module.choice.red
my_module.choice.red
-where my_module is the module where the enum is declared. You can create a
-new scope around a class:
+where my_module is the module where the enum is declared. You can also
+create a new scope around a class:
scope in_X(class_("X")
.def( ... )
From 87b011e7e842feb26368c554aed3262a8fba5f5f Mon Sep 17 00:00:00 2001
From: Joel de Guzman
Date: Thu, 10 Oct 2002 07:31:08 +0000
Subject: [PATCH 8/9] Python V1 Archive (tested)
[SVN r15845]
---
build/Attic/python_v1.zip | Bin 0 -> 236665 bytes
build/python_v1.zip | Bin 0 -> 236665 bytes
2 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 build/Attic/python_v1.zip
create mode 100644 build/python_v1.zip
diff --git a/build/Attic/python_v1.zip b/build/Attic/python_v1.zip
new file mode 100644
index 0000000000000000000000000000000000000000..0377a07bb35337fd47e14de78bc55819015567fd
GIT binary patch
literal 236665
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