|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r54567 - in sandbox/cloneable: boost/cloneable libs/cloneable/doc libs/cloneable/doc/html libs/cloneable/doc/html/cloneable libs/cloneable/doc/html/images libs/cloneable/doc/html/index
From: christian.schladetsch_at_[hidden]
Date: 2009-07-01 16:34:05
Author: cschladetsch
Date: 2009-07-01 16:34:04 EDT (Wed, 01 Jul 2009)
New Revision: 54567
URL: http://svn.boost.org/trac/boost/changeset/54567
Log:
updated dox, added images
Added:
sandbox/cloneable/libs/cloneable/doc/html/images/
sandbox/cloneable/libs/cloneable/doc/html/images/alert.png (contents, props changed)
sandbox/cloneable/libs/cloneable/doc/html/images/blank.png (contents, props changed)
sandbox/cloneable/libs/cloneable/doc/html/images/boost.png (contents, props changed)
sandbox/cloneable/libs/cloneable/doc/html/images/caution.png (contents, props changed)
sandbox/cloneable/libs/cloneable/doc/html/images/draft.png (contents, props changed)
sandbox/cloneable/libs/cloneable/doc/html/images/home.png (contents, props changed)
sandbox/cloneable/libs/cloneable/doc/html/images/important.png (contents, props changed)
sandbox/cloneable/libs/cloneable/doc/html/images/next.png (contents, props changed)
sandbox/cloneable/libs/cloneable/doc/html/images/next_disabled.png (contents, props changed)
sandbox/cloneable/libs/cloneable/doc/html/images/note.png (contents, props changed)
sandbox/cloneable/libs/cloneable/doc/html/images/prev.png (contents, props changed)
sandbox/cloneable/libs/cloneable/doc/html/images/prev_disabled.png (contents, props changed)
sandbox/cloneable/libs/cloneable/doc/html/images/smiley.png (contents, props changed)
sandbox/cloneable/libs/cloneable/doc/html/images/tip.png (contents, props changed)
sandbox/cloneable/libs/cloneable/doc/html/images/toc-blank.png (contents, props changed)
sandbox/cloneable/libs/cloneable/doc/html/images/toc-minus.png (contents, props changed)
sandbox/cloneable/libs/cloneable/doc/html/images/toc-plus.png (contents, props changed)
sandbox/cloneable/libs/cloneable/doc/html/images/up.png (contents, props changed)
sandbox/cloneable/libs/cloneable/doc/html/images/up_disabled.png (contents, props changed)
sandbox/cloneable/libs/cloneable/doc/html/images/warning.png (contents, props changed)
Text files modified:
sandbox/cloneable/boost/cloneable/adaptor.hpp | 19 ++++++++++++
sandbox/cloneable/libs/cloneable/doc/html/cloneable/containers.html | 4 +-
sandbox/cloneable/libs/cloneable/doc/html/cloneable/tests.html | 4 +-
sandbox/cloneable/libs/cloneable/doc/html/cloneable/tutorial.html | 34 ++++++++++++---------
sandbox/cloneable/libs/cloneable/doc/html/index.html | 62 ++++++++++++++++++++-------------------
sandbox/cloneable/libs/cloneable/doc/html/index/s04.html | 6 +-
sandbox/cloneable/libs/cloneable/doc/html/index/s05.html | 10 +++---
sandbox/cloneable/libs/cloneable/doc/introduction.xml | 35 ++++++++++++----------
sandbox/cloneable/libs/cloneable/doc/tutorial.xml | 14 +++++---
9 files changed, 111 insertions(+), 77 deletions(-)
Modified: sandbox/cloneable/boost/cloneable/adaptor.hpp
==============================================================================
--- sandbox/cloneable/boost/cloneable/adaptor.hpp (original)
+++ sandbox/cloneable/boost/cloneable/adaptor.hpp 2009-07-01 16:34:04 EDT (Wed, 01 Jul 2009)
@@ -33,6 +33,25 @@
}
};
+ /// an adaptor for an existing class T, making it cloneable
+ template <class T, class D, class Base>
+ struct adaptor_base : T, base<adaptor<T, Base>, Base>
+ {
+ adaptor_base() { }
+
+ template <class A0>
+ adaptor_base(A0 a0) : T(a0)
+ {
+ }
+ template <class A0, class A1>
+ adaptor_base(A0 a0, A1 a1) : T(a0, a1)
+ {
+ }
+ template <class A0, class A1, class A2>
+ adaptor_base(A0 a0, A1 a1, A2 a2) : T(a0, a1, a2)
+ {
+ }
+ };
} // namespace cloneable
} // namespace boost
Modified: sandbox/cloneable/libs/cloneable/doc/html/cloneable/containers.html
==============================================================================
--- sandbox/cloneable/libs/cloneable/doc/html/cloneable/containers.html (original)
+++ sandbox/cloneable/libs/cloneable/doc/html/cloneable/containers.html 2009-07-01 16:34:04 EDT (Wed, 01 Jul 2009)
@@ -25,10 +25,10 @@
<div class="section" title="Heterogenous Containers">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="cloneable.containers"></a>Heterogenous Containers</h2></div></div></div>
-<div class="toc"><dl><dt><span class="section">Overview</span></dt></dl></div>
+<div class="toc"><dl><dt><span class="section">Overview</span></dt></dl></div>
<div class="section" title="Overview">
<div class="titlepage"><div><div><h3 class="title">
-<a name="id641274"></a>Overview</h3></div></div></div>
+<a name="id687714"></a>Overview</h3></div></div></div>
<p>This tutorial demonstrates the use of the <span class="emphasis"><em>heterogenous</em></span> container system provided in the Cloneable library.
</p>
</div>
Modified: sandbox/cloneable/libs/cloneable/doc/html/cloneable/tests.html
==============================================================================
--- sandbox/cloneable/libs/cloneable/doc/html/cloneable/tests.html (original)
+++ sandbox/cloneable/libs/cloneable/doc/html/cloneable/tests.html 2009-07-01 16:34:04 EDT (Wed, 01 Jul 2009)
@@ -24,10 +24,10 @@
<div class="section" title="Testsuite">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="cloneable.tests"></a>Testsuite</h2></div></div></div>
-<div class="toc"><dl><dt><span class="section">Acceptance tests</span></dt></dl></div>
+<div class="toc"><dl><dt><span class="section">Acceptance tests</span></dt></dl></div>
<div class="section" title="Acceptance tests">
<div class="titlepage"><div><div><h3 class="title">
-<a name="id641349"></a>Acceptance tests</h3></div></div></div>
+<a name="id687789"></a>Acceptance tests</h3></div></div></div>
<div class="informaltable"><table class="table">
<colgroup>
<col>
Modified: sandbox/cloneable/libs/cloneable/doc/html/cloneable/tutorial.html
==============================================================================
--- sandbox/cloneable/libs/cloneable/doc/html/cloneable/tutorial.html (original)
+++ sandbox/cloneable/libs/cloneable/doc/html/cloneable/tutorial.html 2009-07-01 16:34:04 EDT (Wed, 01 Jul 2009)
@@ -26,15 +26,16 @@
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="cloneable.tutorial"></a>Tutorial</h2></div></div></div>
<div class="toc"><dl>
-<dt><span class="section">Overview</span></dt>
-<dt><span class="section">Basic Cloning</span></dt>
-<dt><span class="section">Simple Hierarchical Cloning</span></dt>
-<dt><span class="section">Using External Types</span></dt>
-<dt><span class="section">Customising the Cloning Process</span></dt>
+<dt><span class="section">Overview</span></dt>
+<dt><span class="section">Basic Cloning</span></dt>
+<dt><span class="section">Simple Hierarchical Cloning</span></dt>
+<dt><span class="section">Using External Types</span></dt>
+<dt><span class="section">Customising the Cloning Process</span></dt>
+<dt><span class="section">Using Custom Allocators</span></dt>
</dl></div>
<div class="section" title="Overview">
<div class="titlepage"><div><div><h3 class="title">
-<a name="id641104"></a>Overview</h3></div></div></div>
+<a name="id687528"></a>Overview</h3></div></div></div>
<p>This tutorial progresses through the basic usage of the library,
demonstrating how to make a new Cloneable type, how to make
an exsiting, external type Cloneable, and how to deal with
@@ -42,7 +43,7 @@
</div>
<div class="section" title="Basic Cloning">
<div class="titlepage"><div><div><h3 class="title">
-<a name="id641115"></a>Basic Cloning</h3></div></div></div>
+<a name="id687539"></a>Basic Cloning</h3></div></div></div>
<p>
The following is a very quick introduction to Boost.Cloneable:
</p>
@@ -62,12 +63,12 @@
}
</pre>
<p>
- Here we have made a class and derived from <code class="computeroutput">cloneable::base</code>, passing the type of thing to clone as a type parameter. This is the Curiously Recurring Template Pattern, or CRTP. Because we didn't supply a base type to use, we were given the default base type. Although it is fine to use the default base class, we shall see that in general it is better to provide our own base classes as this gives us much flexibility when it comes to associative containers and resource management. But we'll get to that later. For now, let's move on to some slightly less trivial examples.
+ Here we have made a class and derived from <code class="computeroutput">cloneable::base</code>, passing the type of thing to clone as a type parameter. Because we didn't supply a base type to use, we were given <code class="computeroutput">default_base_type</code>. Although it is fine to use this default base class, we shall see that in general it is better to provide our own base classes as this gives us much flexibility when it comes to associative containers and resource management. But we'll get to that later. For now, let's move on to some slightly less trivial examples.
</p>
</div>
<div class="section" title="Simple Hierarchical Cloning">
<div class="titlepage"><div><div><h3 class="title">
-<a name="id641138"></a>Simple Hierarchical Cloning</h3></div></div></div>
+<a name="id687567"></a>Simple Hierarchical Cloning</h3></div></div></div>
<pre class="programlisting">
#include <string>
#include <boost/cloneable.hpp>
@@ -159,17 +160,16 @@
</div>
<div class="section" title="Using External Types">
<div class="titlepage"><div><div><h3 class="title">
-<a name="id641216"></a>Using External Types</h3></div></div></div>
+<a name="id687645"></a>Using External Types</h3></div></div></div>
<p>
Quite often we find ourselves using classes that are defined in an external library. These are not open to be changed, but we would still like them to be Cloneable. To address this issue, we can use the <code class="computeroutput">cloneable::adaptor<Type,Base></code> structure:
-
</p>
<pre class="programlisting">
class External { }; // cannot be modified
class MyBase { virtual ~MyBase() { } };
-class MyExternal : cloneable::adaptor<External, MyBase> { };
+typedef cloneable::adaptor<External, MyBase> MyExternal;
int main()
{
@@ -179,12 +179,12 @@
}
</pre>
<p>
-The only difference is that we use cloneable::adaptor<> mixin template as the base, rather than cloneable::base<>.
+Alternatively of course, we could just make a new structure which either derives from or encapsulates the external class. This will be necessary if you wish to pass construction arguments to the external type, or provide a custom clone method for it.
</p>
</div>
<div class="section" title="Customising the Cloning Process">
<div class="titlepage"><div><div><h3 class="title">
-<a name="id641238"></a>Customising the Cloning Process</h3></div></div></div>
+<a name="id687668"></a>Customising the Cloning Process</h3></div></div></div>
<p>
So far, we have been making clones using the default cloning process. This uses the copy-constructor of the given type to generate the clone. However, quite often we will want to have greater control over this process, and sometimes we don't want to or cannot use a copy constructor at all.
</p>
@@ -206,6 +206,12 @@
<p>
</p>
</div>
+<div class="section" title="Using Custom Allocators">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="id687694"></a>Using Custom Allocators</h3></div></div></div>
+<p>
+ </p>
+</div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"><p><small>Last revised: , at </small></p></td>
Added: sandbox/cloneable/libs/cloneable/doc/html/images/alert.png
==============================================================================
Binary file. No diff available.
Added: sandbox/cloneable/libs/cloneable/doc/html/images/blank.png
==============================================================================
Binary file. No diff available.
Added: sandbox/cloneable/libs/cloneable/doc/html/images/boost.png
==============================================================================
Binary file. No diff available.
Added: sandbox/cloneable/libs/cloneable/doc/html/images/caution.png
==============================================================================
Binary file. No diff available.
Added: sandbox/cloneable/libs/cloneable/doc/html/images/draft.png
==============================================================================
Binary file. No diff available.
Added: sandbox/cloneable/libs/cloneable/doc/html/images/home.png
==============================================================================
Binary file. No diff available.
Added: sandbox/cloneable/libs/cloneable/doc/html/images/important.png
==============================================================================
Binary file. No diff available.
Added: sandbox/cloneable/libs/cloneable/doc/html/images/next.png
==============================================================================
Binary file. No diff available.
Added: sandbox/cloneable/libs/cloneable/doc/html/images/next_disabled.png
==============================================================================
Binary file. No diff available.
Added: sandbox/cloneable/libs/cloneable/doc/html/images/note.png
==============================================================================
Binary file. No diff available.
Added: sandbox/cloneable/libs/cloneable/doc/html/images/prev.png
==============================================================================
Binary file. No diff available.
Added: sandbox/cloneable/libs/cloneable/doc/html/images/prev_disabled.png
==============================================================================
Binary file. No diff available.
Added: sandbox/cloneable/libs/cloneable/doc/html/images/smiley.png
==============================================================================
Binary file. No diff available.
Added: sandbox/cloneable/libs/cloneable/doc/html/images/tip.png
==============================================================================
Binary file. No diff available.
Added: sandbox/cloneable/libs/cloneable/doc/html/images/toc-blank.png
==============================================================================
Binary file. No diff available.
Added: sandbox/cloneable/libs/cloneable/doc/html/images/toc-minus.png
==============================================================================
Binary file. No diff available.
Added: sandbox/cloneable/libs/cloneable/doc/html/images/toc-plus.png
==============================================================================
Binary file. No diff available.
Added: sandbox/cloneable/libs/cloneable/doc/html/images/up.png
==============================================================================
Binary file. No diff available.
Added: sandbox/cloneable/libs/cloneable/doc/html/images/up_disabled.png
==============================================================================
Binary file. No diff available.
Added: sandbox/cloneable/libs/cloneable/doc/html/images/warning.png
==============================================================================
Binary file. No diff available.
Modified: sandbox/cloneable/libs/cloneable/doc/html/index.html
==============================================================================
--- sandbox/cloneable/libs/cloneable/doc/html/index.html (original)
+++ sandbox/cloneable/libs/cloneable/doc/html/index.html 2009-07-01 16:34:04 EDT (Wed, 01 Jul 2009)
@@ -30,7 +30,7 @@
</div></div>
<div><p class="copyright">Copyright © 2009 Christian Schladetsch</p></div>
<div><div class="legalnotice" title="Legal Notice">
-<a name="id641056"></a><p>Use, modification and distribution is subject to the Boost
+<a name="id687462"></a><p>Use, modification and distribution is subject to the Boost
Software License, Version 1.0. (See accompanying file
<code class="filename">LICENSE_1_0.txt</code> or copy at http://www.boost.org/LICENSE_1_0.txt)</p>
</div></div>
@@ -38,52 +38,54 @@
<div class="toc">
<p><b>Table of Contents</b></p>
<dl>
-<dt><span class="section">Introduction</span></dt>
+<dt><span class="section">Introduction</span></dt>
<dt><span class="section">Tutorial</span></dt>
<dd><dl>
-<dt><span class="section">Overview</span></dt>
-<dt><span class="section">Basic Cloning</span></dt>
-<dt><span class="section">Simple Hierarchical Cloning</span></dt>
-<dt><span class="section">Using External Types</span></dt>
-<dt><span class="section">Customising the Cloning Process</span></dt>
+<dt><span class="section">Overview</span></dt>
+<dt><span class="section">Basic Cloning</span></dt>
+<dt><span class="section">Simple Hierarchical Cloning</span></dt>
+<dt><span class="section">Using External Types</span></dt>
+<dt><span class="section">Customising the Cloning Process</span></dt>
+<dt><span class="section">Using Custom Allocators</span></dt>
</dl></dd>
<dt><span class="section">Heterogenous Containers</span></dt>
-<dd><dl><dt><span class="section">Overview</span></dt></dl></dd>
+<dd><dl><dt><span class="section">Overview</span></dt></dl></dd>
<dt><span class="section">Frequently Asked Questions</span></dt>
<dt><span class="section">Design Overview</span></dt>
<dd><dl>
-<dt><span class="section">Class Hierachy</span></dt>
-<dt><span class="section">Abstract Allocator</span></dt>
+<dt><span class="section">Class Hierachy</span></dt>
+<dt><span class="section">Abstract Allocator</span></dt>
</dl></dd>
<dt><span class="section">Testsuite</span></dt>
-<dd><dl><dt><span class="section">Acceptance tests</span></dt></dl></dd>
+<dd><dl><dt><span class="section">Acceptance tests</span></dt></dl></dd>
</dl>
</div>
<div class="section" title="Introduction">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="id641076"></a>Introduction</h2></div></div></div>
+<a name="id687483"></a>Introduction</h2></div></div></div>
+<p>
+The <span class="emphasis"><em>Boost.Cloneable</em></span> library provides a means for creating,
+duplicating, and querying instances of object types that are specified in class hierarchies, and a set of containers* for those objects.
+</p>
<p>
-The Boost.Cloneable library provides a means for creating
-and duplicating instances of objects that are defined
-in a class hierarchy.
Cloneable objects can create clones of derived types from base types,
-can do so given any general allocator, and support multiple clone type targets.
-Cloneable objects can be used in containers-of-pointers, producing a 'heterogenous' container system with emplace semantics, also contained in this library.
+can do so given any STL-compliant allocator, and support multiple clone type targets.
+</p>
+<p>
+The user of the libray is able to override the default cloning process,
+ and may supply custom allocators. Cloneable types can derive from other cloneable
+types, in which case the user can specify which subobject type to duplicate or create when
+making a new clone or new object from an existing instance.
+</p>
+<p>
+You can use Boost.Cloneable with existing, external types without modification to those types by using the supplied <span class="emphasis"><em>adaptor</em></span> mechanism. Boost.Cloneable also supports types that are not default-constructable.
+</p>
+<p>
+There is a fundamental requirement that a common base class type is shared for each type in a given class hierarchy. The user can supply their own base classes, or sensible defaults are
+generated.
</p>
<p>
-Cloneable types are able to override the default cloning process, which
-uses copy construction. Cloneable types can derive from other cloneable
-types, in which case the user of the class can specify which
-subobject to duplicate when making a new clone or new object.
-Via an 'adaptor' mechanism, existing classes which cannot be
-modified are able to be used by Boost.Cloneable, and types
-that are not default-constructible are supported.
-</p>
-<p>
-While there is a requirement that Cloneable types must either
-derive from a mixin template, or use the Cloneable adaptor,
-the user is able to specify which base class to use for
-each class hierarchy in the application.
+* Cloneable objects can be used in containers-of-pointers (based on a modified Boost.PtrContainer implementation), producing a 'heterogenous' container system with value semantics for comparison and copying, and emplace semantics for insertion. These containers are currently a part of the proposal as well, however it is intended that they eventually form a distinct library. This proposal will focus mostly on the single-object aspect of the system.
</p>
</div>
</div>
Modified: sandbox/cloneable/libs/cloneable/doc/html/index/s04.html
==============================================================================
--- sandbox/cloneable/libs/cloneable/doc/html/index/s04.html (original)
+++ sandbox/cloneable/libs/cloneable/doc/html/index/s04.html 2009-07-01 16:34:04 EDT (Wed, 01 Jul 2009)
@@ -24,9 +24,9 @@
</div>
<div class="section" title="Frequently Asked Questions">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="id641291"></a>Frequently Asked Questions</h2></div></div></div>
+<a name="id687731"></a>Frequently Asked Questions</h2></div></div></div>
<div class="qandaset" title="Frequently Asked Questions">
-<a name="id641298"></a><dl><dt>1. <a href="s04.html#id641301">Question?
+<a name="id687738"></a><dl><dt>1. <a href="s04.html#id687741">Question?
</a>
</dt></dl>
<table border="0" width="100%" summary="Q and A Set">
@@ -35,7 +35,7 @@
<tbody>
<tr class="question" title="1.">
<td align="left" valign="top">
-<a name="id641301"></a><a name="id641303"></a><p><b>1.</b></p>
+<a name="id687741"></a><a name="id687743"></a><p><b>1.</b></p>
</td>
<td align="left" valign="top"><p>Question?
</p></td>
Modified: sandbox/cloneable/libs/cloneable/doc/html/index/s05.html
==============================================================================
--- sandbox/cloneable/libs/cloneable/doc/html/index/s05.html (original)
+++ sandbox/cloneable/libs/cloneable/doc/html/index/s05.html 2009-07-01 16:34:04 EDT (Wed, 01 Jul 2009)
@@ -24,15 +24,15 @@
</div>
<div class="section" title="Design Overview">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="id641321"></a>Design Overview</h2></div></div></div>
+<a name="id687761"></a>Design Overview</h2></div></div></div>
<div class="toc"><dl>
-<dt><span class="section">Class Hierachy</span></dt>
-<dt><span class="section">Abstract Allocator</span></dt>
+<dt><span class="section">Class Hierachy</span></dt>
+<dt><span class="section">Abstract Allocator</span></dt>
</dl></div>
<div class="section" title="Class Hierachy"><div class="titlepage"><div><div><h3 class="title">
-<a name="id641328"></a>Class Hierachy</h3></div></div></div></div>
+<a name="id687768"></a>Class Hierachy</h3></div></div></div></div>
<div class="section" title="Abstract Allocator"><div class="titlepage"><div><div><h3 class="title">
-<a name="id641336"></a>Abstract Allocator</h3></div></div></div></div>
+<a name="id687776"></a>Abstract Allocator</h3></div></div></div></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"><p><small>Last revised: , at </small></p></td>
Modified: sandbox/cloneable/libs/cloneable/doc/introduction.xml
==============================================================================
--- sandbox/cloneable/libs/cloneable/doc/introduction.xml (original)
+++ sandbox/cloneable/libs/cloneable/doc/introduction.xml 2009-07-01 16:34:04 EDT (Wed, 01 Jul 2009)
@@ -5,29 +5,32 @@
<title>Introduction</title>
<para>
-The Boost.Cloneable library provides a means for creating
-and duplicating instances of objects that are defined
-in a class hierarchy.
+The <emphasis>Boost.Cloneable</emphasis> library provides a means for creating,
+duplicating, and querying instances of object types that are specified in class hierarchies, and a set of containers* for those objects.
+</para>
+
+<para>
Cloneable objects can create clones of derived types from base types,
-can do so given any general allocator, and support multiple clone type targets.
-Cloneable objects can be used in containers-of-pointers, producing a 'heterogenous' container system with emplace semantics, also contained in this library.
+can do so given any STL-compliant allocator, and support multiple clone type targets.
+</para>
+
+<para>
+The user of the libray is able to override the default cloning process,
+ and may supply custom allocators. Cloneable types can derive from other cloneable
+types, in which case the user can specify which subobject type to duplicate or create when
+making a new clone or new object from an existing instance.
</para>
<para>
-Cloneable types are able to override the default cloning process, which
-uses copy construction. Cloneable types can derive from other cloneable
-types, in which case the user of the class can specify which
-subobject to duplicate when making a new clone or new object.
-Via an 'adaptor' mechanism, existing classes which cannot be
-modified are able to be used by Boost.Cloneable, and types
-that are not default-constructible are supported.
+You can use Boost.Cloneable with existing, external types without modification to those types by using the supplied <emphasis>adaptor</emphasis> mechanism. Boost.Cloneable also supports types that are not default-constructable.
</para>
<para>
-While there is a requirement that Cloneable types must either
-derive from a mixin template, or use the Cloneable adaptor,
-the user is able to specify which base class to use for
-each class hierarchy in the application.
+There is a fundamental requirement that a common base class type is shared for each type in a given class hierarchy. The user can supply their own base classes, or sensible defaults are
+generated.
</para>
+<para>
+* Cloneable objects can be used in containers-of-pointers (based on a modified Boost.PtrContainer implementation), producing a 'heterogenous' container system with value semantics for comparison and copying, and emplace semantics for insertion. These containers are currently a part of the proposal as well, however it is intended that they eventually form a distinct library. This proposal will focus mostly on the single-object aspect of the system.
+</para>
</section>
Modified: sandbox/cloneable/libs/cloneable/doc/tutorial.xml
==============================================================================
--- sandbox/cloneable/libs/cloneable/doc/tutorial.xml (original)
+++ sandbox/cloneable/libs/cloneable/doc/tutorial.xml 2009-07-01 16:34:04 EDT (Wed, 01 Jul 2009)
@@ -3,7 +3,6 @@
"http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
<section last-revision="$Date:$" id="cloneable.tutorial">
<title>Tutorial</title>
-
<using-namespace name="boost"/>
<using-namespace name="boost::cloneable"/>
<using-class name="boost::signalN"/>
@@ -36,7 +35,7 @@
}
</programlisting>
<para>
- Here we have made a class and derived from <code>cloneable::base</code>, passing the type of thing to clone as a type parameter. This is the Curiously Recurring Template Pattern, or CRTP. Because we didn't supply a base type to use, we were given the default base type. Although it is fine to use the default base class, we shall see that in general it is better to provide our own base classes as this gives us much flexibility when it comes to associative containers and resource management. But we'll get to that later. For now, let's move on to some slightly less trivial examples.
+ Here we have made a class and derived from <code>cloneable::base</code>, passing the type of thing to clone as a type parameter. Because we didn't supply a base type to use, we were given <code>default_base_type</code>. Although it is fine to use this default base class, we shall see that in general it is better to provide our own base classes as this gives us much flexibility when it comes to associative containers and resource management. But we'll get to that later. For now, let's move on to some slightly less trivial examples.
</para>
</section>
<section><title>Simple Hierarchical Cloning</title>
@@ -133,14 +132,13 @@
<section><title>Using External Types</title>
<para>
Quite often we find ourselves using classes that are defined in an external library. These are not open to be changed, but we would still like them to be Cloneable. To address this issue, we can use the <code>cloneable::adaptor<Type,Base></code> structure:
-
</para>
<programlisting>
class External { }; // cannot be modified
class MyBase { virtual ~MyBase() { } };
-class MyExternal : cloneable::adaptor<External, MyBase> { };
+typedef cloneable::adaptor<External, MyBase> MyExternal;
int main()
{
@@ -150,7 +148,7 @@
}
</programlisting>
<para>
-The only difference is that we use cloneable::adaptor<> mixin template as the base, rather than cloneable::base<>.
+Alternatively of course, we could just make a new structure which either derives from or encapsulates the external class. This will be necessary if you wish to pass construction arguments to the external type, or provide a custom clone method for it.
</para>
</section>
<section><title>Customising the Cloning Process</title>
@@ -175,5 +173,11 @@
<para>
</para>
</section>
+<section>
+ <title>Using Custom Allocators</title>
+ <para>
+ </para>
+
+</section>
</section>
Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk