From 48fffd7a7bb5fe96179f435ef26bd147f83e541b Mon Sep 17 00:00:00 2001 From: Dave Abrahams Date: Thu, 3 Oct 2002 13:09:24 +0000 Subject: [PATCH] doc update [SVN r15667] --- doc/v2/pointee.html | 116 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 doc/v2/pointee.html diff --git a/doc/v2/pointee.html b/doc/v2/pointee.html new file mode 100644 index 00000000..a5387da4 --- /dev/null +++ b/doc/v2/pointee.html @@ -0,0 +1,116 @@ + + + + + + Boost.Python - <boost/python/pointee.hpp> + + + +
+

+

+ +
+

Boost.Python

+ +

Header <boost/python/pointee.hpp>

+
+
+ +

Contents

+ +
+
Introduction + +
Classes + +
+
+
Class Templatepointee + +
+
+
Class Template + pointee synopsis +
+
+ +
Example +
+
+ +

Introduction

+ +

<boost/python/pointee.hpp> introduces a + traits metafunction + template pointee<T> which can be used to extract the "pointed-to" type from the type of a pointer or smart pointer. + +

Classes

+ +

Class Template pointee<class T>

+ +

pointee<T> is used by the class_<...> + template to deduce the type being held when a pointer or smart + pointer type is used as its HeldType argument. + +

Class Template + pointee synopsis

+
+namespace boost { namespace python
+{
+   template <class T> struct pointee
+   {
+      typedef T::element_type type;
+   };
+
+   // specialization for pointers
+   template <T> struct pointee<T*>
+   {
+      typedef T type;
+   };
+}
+
+ + +

Example

+ +Given a 3rd-party smart pointer type +smart_pointer<T>, one might partially specialize +pointee<smart_pointer<T> > so that it can be +used as the HeldType for a class wrapper: + +
+#include <boost/python/pointee.hpp>
+#include <boost/python/class.hpp>
+#include <third_party_lib.hpp>
+
+namespace boost { namespace python
+{
+  template <class T> struct pointee<smart_pointer<T> >
+  {
+     typedef T type;
+  };
+}}
+
+BOOST_PYTHON_MODULE(pointee_demo)
+{
+   class_<third_party_class, smart_pointer<third_party_class> >("third_party_class")
+      .def(...)
+      ...
+      ;
+}
+
+ +

Revised + + 03 October, 2002 + + + +

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