|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r50407 - in sandbox/SOC/2006/tree/trunk: . boost/tree boost/tree/detail/algorithm libs/tree/test
From: ockham_at_[hidden]
Date: 2008-12-29 16:31:18
Author: bernhard.reiter
Date: 2008-12-29 16:31:17 EST (Mon, 29 Dec 2008)
New Revision: 50407
URL: http://svn.boost.org/trac/boost/changeset/50407
Log:
Start refactoring concepts.
Text files modified:
sandbox/SOC/2006/tree/trunk/TODO | 3 +
sandbox/SOC/2006/tree/trunk/boost/tree/algorithm.hpp | 15 +++++-
sandbox/SOC/2006/tree/trunk/boost/tree/cursor_archetypes.hpp | 5 +
sandbox/SOC/2006/tree/trunk/boost/tree/cursor_concepts.hpp | 75 ++++++++++++++++++++---------------
sandbox/SOC/2006/tree/trunk/boost/tree/detail/algorithm/inorder.hpp | 26 ++++++------
sandbox/SOC/2006/tree/trunk/boost/tree/detail/algorithm/iterative.hpp | 12 ++--
sandbox/SOC/2006/tree/trunk/boost/tree/detail/algorithm/postorder.hpp | 18 ++++----
sandbox/SOC/2006/tree/trunk/boost/tree/detail/algorithm/preorder.hpp | 18 ++++----
sandbox/SOC/2006/tree/trunk/boost/tree/forest_tree.hpp | 4
sandbox/SOC/2006/tree/trunk/boost/tree/iterator.hpp | 6 +-
sandbox/SOC/2006/tree/trunk/libs/tree/test/algorithm_concepts_test.cpp | 83 ++++++++++++++++-----------------------
11 files changed, 137 insertions(+), 128 deletions(-)
Modified: sandbox/SOC/2006/tree/trunk/TODO
==============================================================================
--- sandbox/SOC/2006/tree/trunk/TODO (original)
+++ sandbox/SOC/2006/tree/trunk/TODO 2008-12-29 16:31:17 EST (Mon, 29 Dec 2008)
@@ -14,6 +14,7 @@
[section TODO]
General:
+* Improve cursor_archetype. Currently, there's trouble eg with constructors.
* Remove a cursor's cursor, const_cursor, iterator and const_iterator typedefs?
The latter two only make sense in a range algorithm context, where they might actually be
useful. (The former two are just aliases for completeness' sake.)
@@ -179,6 +180,8 @@
Documentation:
+* Make docs more coherent. If we're using doxygen for API documentation, don't
+ duplicate that information via quickbook!
* Include examples output (requires some Jamfile tweaking)!
* Add a tree visualisation of the documentation structure (as some kind of frontispiece)
to the docs!
Modified: sandbox/SOC/2006/tree/trunk/boost/tree/algorithm.hpp
==============================================================================
--- sandbox/SOC/2006/tree/trunk/boost/tree/algorithm.hpp (original)
+++ sandbox/SOC/2006/tree/trunk/boost/tree/algorithm.hpp 2008-12-29 16:31:17 EST (Mon, 29 Dec 2008)
@@ -82,8 +82,12 @@
return c;
}
-template <class AscendingCursor>
-typename AscendingCursor::size_type index(AscendingCursor const& cur)
+template <class Cursor>
+BOOST_CONCEPT_REQUIRES(
+ ((Descendor<Cursor>))
+ ((Ascendor<Cursor>)),
+ (typename Cursor::size_type)) // return type
+index(Cursor const& cur)
{
return std::distance(cur.parent().begin(), cur);
}
@@ -96,8 +100,13 @@
c.to_end();
}
+
template <class BinaryCursor>
-void to_forest_parent(BinaryCursor& c)
+BOOST_CONCEPT_REQUIRES(
+ ((Descendor<BinaryCursor>))
+ ((Ascendor<BinaryCursor>)),
+ (void)) // return type
+to_forest_parent(BinaryCursor& c)
{
while (index(c))
c.to_parent();
Modified: sandbox/SOC/2006/tree/trunk/boost/tree/cursor_archetypes.hpp
==============================================================================
--- sandbox/SOC/2006/tree/trunk/boost/tree/cursor_archetypes.hpp (original)
+++ sandbox/SOC/2006/tree/trunk/boost/tree/cursor_archetypes.hpp 2008-12-29 16:31:17 EST (Mon, 29 Dec 2008)
@@ -62,6 +62,7 @@
// Ideally derive from ascendor_archetype.
// The problem: begin() and end() return the wrong type!
+// FIXME: constructors etc
template <
class Value
, class AccessCategory
@@ -75,7 +76,7 @@
//, public descendor_archetype
{
private:
- typedef class cursor_archetype<Value
+ typedef cursor_archetype<Value
, AccessCategory
, HorizontalTraversal
, descending_vertical_traversal_tag> self_type;
@@ -104,7 +105,7 @@
//, public ascendor_archetype
{
private:
- typedef class cursor_archetype<Value
+ typedef cursor_archetype<Value
, AccessCategory
, HorizontalTraversal
, ascending_vertical_traversal_tag> self_type;
Modified: sandbox/SOC/2006/tree/trunk/boost/tree/cursor_concepts.hpp
==============================================================================
--- sandbox/SOC/2006/tree/trunk/boost/tree/cursor_concepts.hpp (original)
+++ sandbox/SOC/2006/tree/trunk/boost/tree/cursor_concepts.hpp 2008-12-29 16:31:17 EST (Mon, 29 Dec 2008)
@@ -17,68 +17,79 @@
namespace boost_concepts {
-// TODO: Adapt concept requirements for algorithms according to archetypes!
-
-
-// Even split up into two types: one with only to_begin() and to_end(), and
-// one with also begin() and end() ?
-// I think we're lacking some requirements imposed on the return types of these
-// member functions, but that might overlap with iterator requirements.
+/**
+ * @brief Descendor concept
+ * Note that the existence of begin() and end() member functions follows quite
+ * naturally from the existence of to_begin() and to_end(), plus
+ * CopyConstructibility of X, which is quite a natural requirement for
+ * cursors.
+ */
template <class X>
struct Descendor
{
public:
BOOST_CONCEPT_USAGE(Descendor)
{
- d.to_begin();
- d.begin();
- d.to_end();
- d.end();
+ X& rb = d.to_begin();
+ rb.to_begin(); // Avoid compiler warning about unused variable
+
+ X b = d.begin();
+
+ X& re = d.to_end();
+ re.to_end(); // Avoid compiler warning about unused variable
+
+ X e = d.end();
+
+ bool m = b.empty();
+ m = false; // Avoid compiler warning about unused variable
}
private:
X d;
-
};
-template <class X>
-struct DescendingCursor
- : Descendor<X>, LvalueIterator<X>
-{
-};
-// Derive from DescendingCursor or not?
-// See eg Knuth 2.3.3, p 353.
+/**
+ * @brief Ascendor concept
+ * Note that the existence of a parent() member function follows quite
+ * naturally from the existence of to_parent(), plus
+ * CopyConstructibility of X, which is quite a natural requirement for
+ * cursors.
+ *
+ * Ascendor is not derived from Descendor, as there is no obviuos requirement
+ * for it, so these things are best kept separate. For a use case of an
+ * Ascendor-but-not-Descendor, see eg Knuth 2.3.3, (page 353)
+ */
template <class X>
struct Ascendor
{
public:
BOOST_CONCEPT_USAGE(Ascendor)
{
- a.to_parent();
- a.parent();
+ X& rp = a.to_parent();
+ rp.to_parent(); // Avoid compiler warning about unused variable
+
+ X p = a.parent();
}
private:
X a;
};
+/**
+ * @brief RootTracker concept
+ * Keeps track of a (subtree) root.
+ */
template <class X>
-struct AscendingCursor
- : Ascendor<X>, LvalueIterator<X>
-{
-};
-
-template <class X>
-struct RootTrackingCursor
- : AscendingCursor<X>
+struct RootTracker
+ : Ascendor<X>
{
- BOOST_CONCEPT_USAGE(RootTrackingCursor)
+ BOOST_CONCEPT_USAGE(RootTracker)
{
- b = r.is_root();
+ bool b = r.is_root();
+ b = false; // Avoid compiler warning about unused variable
}
private:
X r;
- bool b;
};
} // namespace boost_concepts
Modified: sandbox/SOC/2006/tree/trunk/boost/tree/detail/algorithm/inorder.hpp
==============================================================================
--- sandbox/SOC/2006/tree/trunk/boost/tree/detail/algorithm/inorder.hpp (original)
+++ sandbox/SOC/2006/tree/trunk/boost/tree/detail/algorithm/inorder.hpp 2008-12-29 16:31:17 EST (Mon, 29 Dec 2008)
@@ -40,8 +40,8 @@
template <class MultiwayCursor>
inline
BOOST_CONCEPT_REQUIRES(
- ((DescendingCursor<MultiwayCursor>))
- ((RootTrackingCursor<MultiwayCursor>)),
+ ((Descendor<MultiwayCursor>))
+ ((RootTracker<MultiwayCursor>)),
(void)) // return type
forward(inorder, MultiwayCursor& c)
{
@@ -62,8 +62,8 @@
template <class MultiwayCursor>
inline
BOOST_CONCEPT_REQUIRES(
- ((DescendingCursor<MultiwayCursor>))
- ((RootTrackingCursor<MultiwayCursor>)),
+ ((Descendor<MultiwayCursor>))
+ ((RootTracker<MultiwayCursor>)),
(void)) // return type
back(inorder, MultiwayCursor& c)
{
@@ -87,7 +87,7 @@
*/
template <class Cursor>
BOOST_CONCEPT_REQUIRES(
- ((DescendingCursor<Cursor>)),
+ ((Descendor<Cursor>)),
(void)) // return type
to_first(inorder, Cursor& c)
{
@@ -117,7 +117,7 @@
*/
template <class MultiwayCursor, class Op>
BOOST_CONCEPT_REQUIRES(
- ((DescendingCursor<MultiwayCursor>)),
+ ((Descendor<MultiwayCursor>)),
(void)) // return type
for_each_recursive(inorder, MultiwayCursor s, Op& f)
{
@@ -147,7 +147,7 @@
*/
template <class MultiwayCursor, class Op>
BOOST_CONCEPT_REQUIRES(
- ((DescendingCursor<MultiwayCursor>)),
+ ((Descendor<MultiwayCursor>)),
(Op)) // return type
for_each(inorder, MultiwayCursor s, Op f, descending_vertical_traversal_tag)
{
@@ -180,8 +180,8 @@
*/
template <class InCursor, class OutCursor, class Op>
BOOST_CONCEPT_REQUIRES(
- ((DescendingCursor<InCursor>))
- ((DescendingCursor<OutCursor>))
+ ((Descendor<InCursor>))
+ ((Descendor<OutCursor>))
/*((UnaryFunction<Op>))*/,
(OutCursor)) // return type
transform(inorder, InCursor s, OutCursor t, Op op, descending_vertical_traversal_tag)
@@ -220,7 +220,7 @@
//[ lower_bound
template <class MultiwayCursor, class T>
BOOST_CONCEPT_REQUIRES(
- ((DescendingCursor<MultiwayCursor>)),
+ ((Descendor<MultiwayCursor>)),
(MultiwayCursor)) // return type
lower_bound(MultiwayCursor x, T const& val)
//]
@@ -248,7 +248,7 @@
//[ lower_bound_cmp
template <class MultiwayCursor, class T, class Cmp>
BOOST_CONCEPT_REQUIRES(
- ((DescendingCursor<MultiwayCursor>))
+ ((Descendor<MultiwayCursor>))
/*((LessThanComparable<Cmp>))*/, // Problem with balanced_tree
(MultiwayCursor)) // return type
lower_bound(MultiwayCursor x, T const& val, Cmp cmp)
@@ -276,7 +276,7 @@
//[ upper_bound
template <class MultiwayCursor, class T>
BOOST_CONCEPT_REQUIRES(
- ((DescendingCursor<MultiwayCursor>)),
+ ((Descendor<MultiwayCursor>)),
(MultiwayCursor)) // return type
upper_bound(MultiwayCursor x, T const& val)
//]
@@ -304,7 +304,7 @@
//[ upper_bound_cmp
template <class MultiwayCursor, class T, class Cmp>
BOOST_CONCEPT_REQUIRES(
- ((DescendingCursor<MultiwayCursor>))
+ ((Descendor<MultiwayCursor>))
((LessThanComparable<Cmp>)),
(MultiwayCursor)) // return type
upper_bound(MultiwayCursor x, T const& val, Cmp cmp)
Modified: sandbox/SOC/2006/tree/trunk/boost/tree/detail/algorithm/iterative.hpp
==============================================================================
--- sandbox/SOC/2006/tree/trunk/boost/tree/detail/algorithm/iterative.hpp (original)
+++ sandbox/SOC/2006/tree/trunk/boost/tree/detail/algorithm/iterative.hpp 2008-12-29 16:31:17 EST (Mon, 29 Dec 2008)
@@ -29,8 +29,8 @@
template <class Order, class Cursor, class Op>
BOOST_CONCEPT_REQUIRES(
- ((DescendingCursor<Cursor>))
- ((AscendingCursor<Cursor>)),
+ ((Descendor<Cursor>))
+ ((Ascendor<Cursor>)),
(Op)) // return type
for_each(Order, Cursor is, Op f, ascending_vertical_traversal_tag)
{
@@ -47,10 +47,10 @@
template <class Order, class InCursor, class OutCursor, class Op>
BOOST_CONCEPT_REQUIRES(
- ((DescendingCursor<InCursor>))
- ((AscendingCursor<InCursor>))
- ((DescendingCursor<OutCursor>))
- ((AscendingCursor<OutCursor>)),
+ ((Descendor<InCursor>))
+ ((Ascendor<InCursor>))
+ ((Descendor<OutCursor>))
+ ((Ascendor<OutCursor>)),
(OutCursor)) // return type
transform (Order, InCursor is, OutCursor t, Op op
, ascending_vertical_traversal_tag)
Modified: sandbox/SOC/2006/tree/trunk/boost/tree/detail/algorithm/postorder.hpp
==============================================================================
--- sandbox/SOC/2006/tree/trunk/boost/tree/detail/algorithm/postorder.hpp (original)
+++ sandbox/SOC/2006/tree/trunk/boost/tree/detail/algorithm/postorder.hpp 2008-12-29 16:31:17 EST (Mon, 29 Dec 2008)
@@ -37,8 +37,8 @@
template <class Cursor>
inline
BOOST_CONCEPT_REQUIRES(
- ((DescendingCursor<Cursor>))
- ((RootTrackingCursor<Cursor>)),
+ ((Descendor<Cursor>))
+ ((RootTracker<Cursor>)),
(void)) // return type
forward(postorder, Cursor& c)
{
@@ -71,8 +71,8 @@
template <class Cursor>
inline
BOOST_CONCEPT_REQUIRES(
- ((DescendingCursor<Cursor>))
- ((RootTrackingCursor<Cursor>)),
+ ((Descendor<Cursor>))
+ ((RootTracker<Cursor>)),
(void)) // return type
back(postorder, Cursor& c)
{
@@ -110,7 +110,7 @@
*/
template <class Cursor>
BOOST_CONCEPT_REQUIRES(
- ((DescendingCursor<Cursor>)),
+ ((Descendor<Cursor>)),
(void)) // return type
to_first(postorder, Cursor& c)
{
@@ -147,7 +147,7 @@
*/
template <class Cursor, class Op>
BOOST_CONCEPT_REQUIRES(
- ((DescendingCursor<Cursor>)),
+ ((Descendor<Cursor>)),
(void)) // return type
for_each_recursive(postorder, Cursor s, Op& f)
{
@@ -175,7 +175,7 @@
*/
template <class Cursor, class Op>
BOOST_CONCEPT_REQUIRES(
- ((DescendingCursor<Cursor>)),
+ ((Descendor<Cursor>)),
(Op)) // return type
for_each(postorder, Cursor s, Op f, descending_vertical_traversal_tag)
{
@@ -208,8 +208,8 @@
*/
template <class InCursor, class OutCursor, class Op>
BOOST_CONCEPT_REQUIRES(
- ((DescendingCursor<InCursor>))
- ((DescendingCursor<OutCursor>)),
+ ((Descendor<InCursor>))
+ ((Descendor<OutCursor>)),
(OutCursor)) // return type
transform(postorder, InCursor s, OutCursor t, Op op, descending_vertical_traversal_tag)
{
Modified: sandbox/SOC/2006/tree/trunk/boost/tree/detail/algorithm/preorder.hpp
==============================================================================
--- sandbox/SOC/2006/tree/trunk/boost/tree/detail/algorithm/preorder.hpp (original)
+++ sandbox/SOC/2006/tree/trunk/boost/tree/detail/algorithm/preorder.hpp 2008-12-29 16:31:17 EST (Mon, 29 Dec 2008)
@@ -37,8 +37,8 @@
template <typename Cursor>
inline
BOOST_CONCEPT_REQUIRES(
- ((DescendingCursor<Cursor>))
- ((RootTrackingCursor<Cursor>)),
+ ((Descendor<Cursor>))
+ ((RootTracker<Cursor>)),
(void)) // return type
forward(preorder, Cursor& c)
{
@@ -78,8 +78,8 @@
template <class Cursor>
inline
BOOST_CONCEPT_REQUIRES(
- ((DescendingCursor<Cursor>))
- ((RootTrackingCursor<Cursor>)),
+ ((Descendor<Cursor>))
+ ((RootTracker<Cursor>)),
(void)) // return type
back(preorder, Cursor& c)
{
@@ -113,7 +113,7 @@
*/
template <class Cursor>
BOOST_CONCEPT_REQUIRES(
- ((DescendingCursor<Cursor>)),
+ ((Descendor<Cursor>)),
(void)) // return type
to_first(preorder, Cursor& c)
{
@@ -142,7 +142,7 @@
*/
template <class Cursor, class Op>
BOOST_CONCEPT_REQUIRES(
- ((DescendingCursor<Cursor>)),
+ ((Descendor<Cursor>)),
(void)) // return type
for_each_recursive(preorder, Cursor s, Op& f)
{
@@ -170,7 +170,7 @@
*/
template <class Cursor, class Op>
BOOST_CONCEPT_REQUIRES(
- ((DescendingCursor<Cursor>)),
+ ((Descendor<Cursor>)),
(Op)) // return type
for_each(preorder, Cursor s, Op f, descending_vertical_traversal_tag)
{
@@ -205,8 +205,8 @@
*/
template <class InCursor, class OutCursor, class Op>
BOOST_CONCEPT_REQUIRES(
- ((DescendingCursor<InCursor>))
- ((DescendingCursor<OutCursor>)),
+ ((Descendor<InCursor>))
+ ((Descendor<OutCursor>)),
(OutCursor)) // return type
transform(preorder, InCursor s, OutCursor t, Op op, descending_vertical_traversal_tag)
{
Modified: sandbox/SOC/2006/tree/trunk/boost/tree/forest_tree.hpp
==============================================================================
--- sandbox/SOC/2006/tree/trunk/boost/tree/forest_tree.hpp (original)
+++ sandbox/SOC/2006/tree/trunk/boost/tree/forest_tree.hpp 2008-12-29 16:31:17 EST (Mon, 29 Dec 2008)
@@ -37,8 +37,8 @@
class forest_tree {
BOOST_CONCEPT_ASSERT((DefaultConstructible<T>));
-BOOST_CONCEPT_ASSERT((DescendingCursor< typename binary_tree<T>::cursor >));
-BOOST_CONCEPT_ASSERT((DescendingCursor< typename binary_tree<T>::const_cursor >));
+BOOST_CONCEPT_ASSERT((Descendor< typename binary_tree<T>::cursor >));
+BOOST_CONCEPT_ASSERT((Descendor< typename binary_tree<T>::const_cursor >));
//BOOST_CONCEPT_ASSERT((SameType<T, typename Hierarchy::value_type>));
// Is there a SameType concept in BCCL?
Modified: sandbox/SOC/2006/tree/trunk/boost/tree/iterator.hpp
==============================================================================
--- sandbox/SOC/2006/tree/trunk/boost/tree/iterator.hpp (original)
+++ sandbox/SOC/2006/tree/trunk/boost/tree/iterator.hpp 2008-12-29 16:31:17 EST (Mon, 29 Dec 2008)
@@ -43,7 +43,7 @@
, boost::use_default
, typename Order::iterator_category
> {
-BOOST_CONCEPT_ASSERT((RootTrackingCursor<Cursor>));
+BOOST_CONCEPT_ASSERT((RootTracker<Cursor>));
private:
struct enabler {};
@@ -92,7 +92,7 @@
*/
template <class Order, class Cursor>
BOOST_CONCEPT_REQUIRES(
- ((AscendingCursor<Cursor>)),
+ ((Ascendor<Cursor>)),
(iterator< Order, root_tracking_cursor<Cursor> >)) // return type
//iterator< Order, root_tracking_cursor<Cursor> >
begin(Order, Cursor c)
@@ -110,7 +110,7 @@
*/
template <class Order, class Cursor>
BOOST_CONCEPT_REQUIRES(
- ((AscendingCursor<Cursor>)),
+ ((Ascendor<Cursor>)),
(iterator< Order, root_tracking_cursor<Cursor> >)) // return type
//iterator<Order, root_tracking_cursor<Cursor> >
end(Order, Cursor c)
Modified: sandbox/SOC/2006/tree/trunk/libs/tree/test/algorithm_concepts_test.cpp
==============================================================================
--- sandbox/SOC/2006/tree/trunk/libs/tree/test/algorithm_concepts_test.cpp (original)
+++ sandbox/SOC/2006/tree/trunk/libs/tree/test/algorithm_concepts_test.cpp 2008-12-29 16:31:17 EST (Mon, 29 Dec 2008)
@@ -27,7 +27,7 @@
boost::detail::dummy_constructor dummy_cons;
cursor_archetype< boost::null_archetype<>
, boost::iterator_archetypes::readable_lvalue_iterator_t // Really lvalue?
- , boost::forward_traversal_tag
+ , boost::forward_traversal_tag // Lesser requirement!
, boost::tree::descending_vertical_traversal_tag
> c;
boost::unary_function_archetype< boost::null_archetype<> , boost::null_archetype<> >
@@ -36,54 +36,39 @@
boost::tree::for_each(Order(), c, f);
}
-//BOOST_AUTO_TEST_CASE_TEMPLATE( test_std_copy, Order, orders )
-//{
-// boost::detail::dummy_constructor dummy_cons;
-// boost::iterator_archetype< boost::null_archetype<>
-// , boost::iterator_archetypes::readable_lvalue_iterator_t // Really lvalue?
-// , boost::forward_traversal_tag
-// > i;
-// boost::iterator_archetype< boost::null_archetype<>
-// , boost::iterator_archetypes::writable_iterator_t // Really lvalue?
-// , boost::forward_traversal_tag
-// > o(dummy_cons);
-//
-// std::copy(i, i, o);
-//}
-
-//BOOST_AUTO_TEST_CASE_TEMPLATE( test_copy, Order, orders )
-//{
-// cursor_archetype< boost::null_archetype<>
-// , boost::iterator_archetypes::readable_iterator_t // Really lvalue?
-// , boost::forward_traversal_tag
-// , boost::tree::descending_vertical_traversal_tag
-// > i;
-// cursor_archetype< boost::assignable_archetype<>
-// , boost::iterator_archetypes::writable_iterator_t // Really lvalue?
-// , boost::forward_traversal_tag
-// , boost::tree::descending_vertical_traversal_tag
-// > o;
-//
-// boost::tree::copy(Order(), i, o);
-//}
+BOOST_AUTO_TEST_CASE_TEMPLATE( test_copy, Order, orders )
+{
+ cursor_archetype< int // Really int?
+ , boost::iterator_archetypes::readable_iterator_t
+ , boost::forward_traversal_tag
+ , boost::tree::descending_vertical_traversal_tag
+ > i;
+ cursor_archetype< int // Really int?
+ , boost::iterator_archetypes::writable_iterator_t
+ , boost::forward_traversal_tag
+ , boost::tree::descending_vertical_traversal_tag
+ > o;
+
+ o = boost::tree::copy(Order(), i, o);
+}
-//BOOST_AUTO_TEST_CASE_TEMPLATE( test_transform, Order, orders )
-//{
-// boost::detail::dummy_constructor dummy_cons;
-// cursor_archetype< boost::null_archetype<>
-// , boost::iterator_archetypes::readable_lvalue_iterator_t // Really lvalue?
-// , boost::forward_traversal_tag
-// , boost::tree::descending_vertical_traversal_tag
-// > i;
-// cursor_archetype< boost::assignable_archetype<>
-// , boost::iterator_archetypes::writable_lvalue_iterator_t // Really lvalue?
-// , boost::forward_traversal_tag
-// , boost::tree::descending_vertical_traversal_tag
-// > o;
-// boost::unary_function_archetype< boost::null_archetype<> , boost::null_archetype<> >
-// f(dummy_cons);
-//
-// boost::tree::transform(Order(), i, o, f);
-//}
+BOOST_AUTO_TEST_CASE_TEMPLATE( test_transform, Order, orders )
+{
+ boost::detail::dummy_constructor dummy_cons;
+ cursor_archetype< int // Really int?
+ , boost::iterator_archetypes::readable_iterator_t
+ , boost::forward_traversal_tag
+ , boost::tree::descending_vertical_traversal_tag
+ > i;
+ cursor_archetype< int // Really int?
+ , boost::iterator_archetypes::writable_iterator_t
+ , boost::forward_traversal_tag
+ , boost::tree::descending_vertical_traversal_tag
+ > o;
+ boost::unary_function_archetype< int , int > // Really int?
+ f(dummy_cons);
+
+ o = boost::tree::transform(Order(), i, o, f);
+}
BOOST_AUTO_TEST_SUITE_END()
\ No newline at end of file
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