From 6ded8b9ad6ed6e179c3bbabf3698d57eddb27b1e Mon Sep 17 00:00:00 2001 From: Ronald Garcia Date: Mon, 11 Aug 2003 19:24:03 +0000 Subject: [PATCH] Initial revision. [SVN r19536] --- shared_iterator_test.cpp | 53 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 shared_iterator_test.cpp diff --git a/shared_iterator_test.cpp b/shared_iterator_test.cpp new file mode 100644 index 0000000..80dfdbf --- /dev/null +++ b/shared_iterator_test.cpp @@ -0,0 +1,53 @@ +// (C) Copyright Ronald Garcia 2003. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +#include "boost/shared_container_iterator.hpp" +#include "boost/shared_ptr.hpp" +#include +#include + +struct resource { + static int count; + resource() { ++count; } + resource(resource const&) { ++count; } + ~resource() { --count; } +}; +int resource::count = 0; + +typedef std::vector resources_t; + +typedef boost::shared_container_iterator< resources_t > iterator; + + +void set_range(iterator& i, iterator& end) { + + boost::shared_ptr< resources_t > objs(new resources_t()); + + for (int j = 0; j != 6; ++j) + objs->push_back(resource()); + + i = iterator(objs->begin(),objs); + end = iterator(objs->end(),objs); + assert(resource::count == 6); +} + + +int main() { + + assert(resource::count == 0); + + { + iterator i; + { + iterator end; + set_range(i,end); + assert(resource::count == 6); + } + assert(resource::count == 6); + } + assert(resource::count == 0); + + return 0; +}