Mercurial > hg > vamp-build-and-test
diff DEPENDENCIES/generic/include/boost/shared_container_iterator.hpp @ 16:2665513ce2d3
Add boost headers
author | Chris Cannam |
---|---|
date | Tue, 05 Aug 2014 11:11:38 +0100 |
parents | |
children | c530137014c0 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DEPENDENCIES/generic/include/boost/shared_container_iterator.hpp Tue Aug 05 11:11:38 2014 +0100 @@ -0,0 +1,62 @@ +// (C) Copyright Ronald Garcia 2002. 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. + +// See http://www.boost.org/libs/utility/shared_container_iterator.html for documentation. + +#ifndef SHARED_CONTAINER_ITERATOR_RG08102002_HPP +#define SHARED_CONTAINER_ITERATOR_RG08102002_HPP + +#include "boost/iterator_adaptors.hpp" +#include "boost/shared_ptr.hpp" +#include <utility> + +namespace boost { + +template <typename Container> +class shared_container_iterator : public iterator_adaptor< + shared_container_iterator<Container>, + typename Container::iterator> { + + typedef iterator_adaptor< + shared_container_iterator<Container>, + typename Container::iterator> super_t; + + typedef typename Container::iterator iterator_t; + typedef boost::shared_ptr<Container> container_ref_t; + + container_ref_t container_ref; +public: + shared_container_iterator() { } + + shared_container_iterator(iterator_t const& x,container_ref_t const& c) : + super_t(x), container_ref(c) { } + + +}; + +template <typename Container> +shared_container_iterator<Container> +make_shared_container_iterator(typename Container::iterator iter, + boost::shared_ptr<Container> const& container) { + typedef shared_container_iterator<Container> iterator; + return iterator(iter,container); +} + + + +template <typename Container> +std::pair< + shared_container_iterator<Container>, + shared_container_iterator<Container> > +make_shared_container_range(boost::shared_ptr<Container> const& container) { + return + std::make_pair( + make_shared_container_iterator(container->begin(),container), + make_shared_container_iterator(container->end(),container)); +} + + +} // namespace boost +#endif // SHARED_CONTAINER_ITERATOR_RG08102002_HPP