$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r65148 - in sandbox/SOC/2010/bit_masks/boost/integer: . detail/bitfield_vector
From: bbartmanboost_at_[hidden]
Date: 2010-08-31 09:23:50
Author: bbartman
Date: 2010-08-31 09:23:48 EDT (Tue, 31 Aug 2010)
New Revision: 65148
URL: http://svn.boost.org/trac/boost/changeset/65148
Log:
working on dispatching insert function
Added:
   sandbox/SOC/2010/bit_masks/boost/integer/bitfield_vector_fwd.hpp   (contents, props changed)
   sandbox/SOC/2010/bit_masks/boost/integer/detail/bitfield_vector/bitfield_vector_iterator_fwd.hpp   (contents, props changed)
Text files modified: 
   sandbox/SOC/2010/bit_masks/boost/integer/bitfield_vector.hpp                                    |     2                                         
   sandbox/SOC/2010/bit_masks/boost/integer/detail/bitfield_vector/bitfield_vector_member_impl.hpp |    84 ++++++++++++++++++++++++++++++++++++++++
   2 files changed, 86 insertions(+), 0 deletions(-)
Modified: sandbox/SOC/2010/bit_masks/boost/integer/bitfield_vector.hpp
==============================================================================
--- sandbox/SOC/2010/bit_masks/boost/integer/bitfield_vector.hpp	(original)
+++ sandbox/SOC/2010/bit_masks/boost/integer/bitfield_vector.hpp	2010-08-31 09:23:48 EDT (Tue, 31 Aug 2010)
@@ -740,6 +740,8 @@
 protected:
 
 
+
+
     /** allocates a chunck of memory of the correct size and then
      *  correctly fills that memory with value for each of the
      *  bitfields within it.
Added: sandbox/SOC/2010/bit_masks/boost/integer/bitfield_vector_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2010/bit_masks/boost/integer/bitfield_vector_fwd.hpp	2010-08-31 09:23:48 EDT (Tue, 31 Aug 2010)
@@ -0,0 +1,14 @@
+//  Copyright 2010 Brian Bartman.
+//  Distributed under the Boost Software License, Version 1.0.
+//  (See accompanying file LICENSE_1_0.txt or copy at 
+//  http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_BITFIELD_VECTOR_FWD_HPP
+#define BOOST_BITFIELD_VECTOR_FWD_HPP
+#include <cstddef>
+
+namespace boost {
+template <typename,std::size_t,typename> class bitfield_vector;
+
+} // end boost
+#endif
Added: sandbox/SOC/2010/bit_masks/boost/integer/detail/bitfield_vector/bitfield_vector_iterator_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2010/bit_masks/boost/integer/detail/bitfield_vector/bitfield_vector_iterator_fwd.hpp	2010-08-31 09:23:48 EDT (Tue, 31 Aug 2010)
@@ -0,0 +1,19 @@
+//  Copyright 2010 Brian Bartman.
+//  Distributed under the Boost Software License, Version 1.0.
+//  (See accompanying file LICENSE_1_0.txt or copy at 
+//  http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_BITFIELD_VECTOR_ITERATOR_FWD_HPP
+#define BOOST_BITFIELD_VECTOR_ITERATOR_FWD_HPP
+#include <cstddef>
+
+namespace boost { namespace detail {
+
+template<typename, std::size_t> class bf_vector_iterator;
+template<typename, std::size_t> class const_bf_vector_iterator;
+template<typename, std::size_t> class bf_vector_reverse_iterator;
+template<typename, std::size_t> class const_bf_vector_reverse_iterator;
+
+}} // end boost::detail
+
+#endif
Modified: sandbox/SOC/2010/bit_masks/boost/integer/detail/bitfield_vector/bitfield_vector_member_impl.hpp
==============================================================================
--- sandbox/SOC/2010/bit_masks/boost/integer/detail/bitfield_vector/bitfield_vector_member_impl.hpp	(original)
+++ sandbox/SOC/2010/bit_masks/boost/integer/detail/bitfield_vector/bitfield_vector_member_impl.hpp	2010-08-31 09:23:48 EDT (Tue, 31 Aug 2010)
@@ -20,6 +20,8 @@
 #include <climits>
 #include <limits>
 #include <boost/mpl/less.hpp>
+#include <iterator>
+#include "bitfield_vector_iterator_fwd.hpp"
 
 namespace boost { namespace detail {
 
@@ -463,6 +465,88 @@
 
 };
 
+
+/** Tags used for dispatching to the correct function and then allowing
+ *  the dispatch work in a much easier fashion.
+ */
+struct constant_time_distance;
+struct other_iterator_type;
+#if 0
+/** Tag dispatch for iterator types. */
+template <typename Iter, typename BitfieldIter, typename Visitor, typename>
+struct bitfield_vector_insert_dispatch;
+
+/** random_access Dispatch. */
+template <typename Iter, typename BitfieldIter, typename Visitor>
+struct bitfield_vector_insert_dispatch <
+    Iter,
+    BitfieldIter,
+    Visitor,
+    std::random_access_iterator_tag
+> {
+};
+
+
+/** This is an implementation for insert dispatch for bitfield_vector.
+ *  This is directly used for nothing but dispatching, overloading and using 
+ *  a visitor to do exactly what needs to be for a particular algorithm. This
+ *  will hopfully work for all of the different scenarios which occur
+ *  within bitfield_vector.
+ */
+template <typename T, typename BitfieldIter, typename Visitor>
+struct btifield_vector_insert_impl {
+};
+
+/** Partical specializations for iterators from the bitfield_vector class.
+ *  because they arn't actually bidirectional iterators, but they are classiffied
+ *  as such, although they have a constant time size.
+ */
+/** const_bf_vector_iterator<T,Width> */
+template <typename T, std::size_t Width, typename BitfieldIter, typename Visitor>
+struct btifield_vector_insert_impl <
+    bf_vector_iterator<T,Width>,
+    BitfieldIter,
+    Visitor
+> {
+};
+
+/** const_bf_vector_iterator<T,Width> */
+template <typename T, std::size_t Width, typename BitfieldIter, typename Visitor>
+struct btifield_vector_insert_impl <
+    const_bf_vector_iterator<T,Width>,
+    BitfieldIter,
+    Visitor
+> {
+};
+
+/** bf_vector_reverse_iterator<T,Width> */
+template <typename T, std::size_t Width, typename BitfieldIter, typename Visitor>
+struct btifield_vector_insert_impl <
+    bf_vector_reverse_iterator<T,Width>,
+    BitfieldIter,
+    Visitor
+> {
+};
+
+/** const_bf_vector_reverse_iterator<T,Width> */
+template <typename T, std::size_t Width, typename BitfieldIter, typename Visitor>
+struct btifield_vector_insert_impl <
+    const_bf_vector_reverse_iterator<T,Width>,
+    BitfieldIter,
+    Visitor
+> {
+};
+
+/** pointer overload */
+template <typename T, typename BitfieldIter, typename Visitor>
+struct btifield_vector_insert_impl <
+    T*,
+    BitfieldIter,
+    Visitor
+> {
+};
+#endif
+
 }} // end boost::detail