From f697d2daa17746ef6aee87c5e8317bd5d02ecc28 Mon Sep 17 00:00:00 2001 From: Dave Abrahams Date: Fri, 15 Feb 2002 18:53:55 +0000 Subject: [PATCH] *** empty log message *** [SVN r12825] --- doc/v2/copy_const_reference.html | 9 +- doc/v2/return_value_policy.html | 148 +++++++++++++++++++++++++++++++ 2 files changed, 153 insertions(+), 4 deletions(-) create mode 100644 doc/v2/return_value_policy.html diff --git a/doc/v2/copy_const_reference.html b/doc/v2/copy_const_reference.html index f80db61f..ec76fa1a 100644 --- a/doc/v2/copy_const_reference.html +++ b/doc/v2/copy_const_reference.html @@ -83,7 +83,7 @@ template <class T> struct apply

Example

-

In C++: +

C++ Module Definition

 #include <boost/python/module.hpp>
 #include <boost/python/class.hpp>
@@ -113,10 +113,11 @@ BOOST_PYTHON_MODULE_INIT(my_module)
             .def_init(args<int>())
             .def("get_bar", &Foo::get_bar
                 , return_value_policy<copy_const_reference>())
-         );
+         )
+       ;
 }
 
- In Python: +

Python Code

 >>> from my_module import *
 >>> f = Foo(3)         # create a Foo object
@@ -125,7 +126,7 @@ BOOST_PYTHON_MODULE_INIT(my_module)
 
     

Revised - 05 November, 2001 + 15 February, 2002 diff --git a/doc/v2/return_value_policy.html b/doc/v2/return_value_policy.html new file mode 100644 index 00000000..5741be8f --- /dev/null +++ b/doc/v2/return_value_policy.html @@ -0,0 +1,148 @@ + + + + + + Boost.Python - <boost/python/return_value_policy.hpp> + + + +
+

+

+ +
+

Boost.Python

+ +

Header <boost/python/return_value_policy.hpp>

+
+


+ +

Contents

+ +
+
Introduction + + +
Classes + +
+
+
Class Template return_value_policy + +
+
+ +
Class Template + return_value_policy synopsis +
+
+ + +
Example +
+
+ +

Introduction

+ + return_value_policy instantiations are simply models + of CallPolicies which are composed of a ResultConverterGenerator and optional Base CallPolicies. + +

Classes

+ +

Class template return_value_policy

+ + + + + + + +
+ return_value_policy template parameters +
Parameter + + Requirements + + Default + +
ResultConverterGenerator + + A model of ResultConverterGenerator. + +
Base + + A model of CallPolicies + + default_call_policies + +
+ +

Class template return_value_policy synopsis

+
+namespace boost { namespace python
+{
+  template <class ResultConverterGenerator, class Base = default_call_policies>
+  struct return_value_policy : Base
+  {
+      typedef ResultConverterGenerator result_converter;
+  };
+}}
+
+ +

Example

+ +

C++ Module Definition

+
+#include <boost/python/module.hpp>
+#include <boost/python/class.hpp>
+#include <boost/python/copy_const_reference.hpp>
+#include <boost/python/return_value_policy.hpp>
+
+// classes to wrap
+struct Bar { int x; }
+
+struct Foo {
+   Foo(int x) : { b.x = x; }
+   Bar const& get_bar() const { return b; }
+ private:
+   Bar b;
+};
+
+// Wrapper code
+using namespace boost::python;
+BOOST_PYTHON_MODULE_INIT(my_module)
+{
+   module m("my_module")
+      .add(
+         class_<Bar>()
+         )
+      .add(
+         class_<Foo>()
+            .def_init(args<int>())
+            .def("get_bar", &Foo::get_bar
+                , return_value_policy<copy_const_reference>())
+         )
+       ;
+}
+
+

Python Code

+
+>>> from my_module import *
+>>> f = Foo(3)         # create a Foo object
+>>> b = f.get_bar()    # make a copy of the internal Bar object
+
+ +

Revised + + 15 February, 2002 + + +

© Copyright Dave + Abrahams 2002. All Rights Reserved. +