$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r64121 - in sandbox/SOC/2010/bit_masks: boost/integer/bitfield_tuple boost/integer/detail/bft lib/integer/test/bft_testing
From: bbartmanboost_at_[hidden]
Date: 2010-07-18 08:23:51
Author: bbartman
Date: 2010-07-18 08:23:49 EDT (Sun, 18 Jul 2010)
New Revision: 64121
URL: http://svn.boost.org/trac/boost/changeset/64121
Log:
working on testing and implementing the pointer member parsing
Text files modified: 
   sandbox/SOC/2010/bit_masks/boost/integer/bitfield_tuple/pointer.hpp                    |     9 +++++++--                               
   sandbox/SOC/2010/bit_masks/boost/integer/detail/bft/pointer_parsing_meta_functions.hpp |    11 +++++++++++                             
   sandbox/SOC/2010/bit_masks/lib/integer/test/bft_testing/pointer_member_test.cpp        |     8 ++++++++                                
   3 files changed, 26 insertions(+), 2 deletions(-)
Modified: sandbox/SOC/2010/bit_masks/boost/integer/bitfield_tuple/pointer.hpp
==============================================================================
--- sandbox/SOC/2010/bit_masks/boost/integer/bitfield_tuple/pointer.hpp	(original)
+++ sandbox/SOC/2010/bit_masks/boost/integer/bitfield_tuple/pointer.hpp	2010-07-18 08:23:49 EDT (Sun, 18 Jul 2010)
@@ -7,7 +7,9 @@
 #ifndef BOOST_POINTER_MEMBER_FIELD_HPP
 #define BOOST_POINTER_MEMBER_FIELD_HPP
 #include <cstddef>
-
+#include <boost/integer/detail/bft/pointer_parsing_meta_functions.hpp>
+#include <boost/integer/high_bits_mask.hpp>
+#include <boost/integer/bit_width.hpp>
 
 
 namespace boost {
@@ -24,7 +26,10 @@
 template <
     typename ReturnType,
     typename Name,
-    typename Mask
+    typename Mask = high_bits_mask<
+        typename ::boost::detail::pointer_member::get_mask_type<ReturnType>::type,
+        bit_width< typename ::boost::detail::pointer_member::get_mask_type<ReturnType>::type >::value - 2
+    >
 >
 struct pointer;
 
Modified: sandbox/SOC/2010/bit_masks/boost/integer/detail/bft/pointer_parsing_meta_functions.hpp
==============================================================================
--- sandbox/SOC/2010/bit_masks/boost/integer/detail/bft/pointer_parsing_meta_functions.hpp	(original)
+++ sandbox/SOC/2010/bit_masks/boost/integer/detail/bft/pointer_parsing_meta_functions.hpp	2010-07-18 08:23:49 EDT (Sun, 18 Jul 2010)
@@ -7,16 +7,27 @@
 #ifndef BOOST_BITFIELD_TUPLE_POINTER_PARSING_HELPERS_HPP
 #define BOOST_BITFIELD_TUPLE_POINTER_PARSING_HELPERS_HPP
 
+#include <boost/cstdint.hpp>
 #include <boost/integer/bits_mask.hpp>
 #include <cstddef>
 #include <boost/mpl/size_t.hpp>
 #include <boost/type_traits/make_unsigned.hpp>
+#include <boost/mpl/if.hpp>
 
 /** This file contains metafunctions which are used to do complex operations
  *  on the Mask provided by the user.
  */
 namespace boost { namespace detail { namespace pointer_member {
 
+template <typename T>
+struct get_mask_type {
+    typedef typename mpl::if_c<
+        bit_width<std::size_t>::value < bit_width<T*>::value,
+        uint64_t,
+        uint32_t
+    >::type                 type;
+};
+
 
 
 // this is ugly but I would like it for organizational purposes.
Modified: sandbox/SOC/2010/bit_masks/lib/integer/test/bft_testing/pointer_member_test.cpp
==============================================================================
--- sandbox/SOC/2010/bit_masks/lib/integer/test/bft_testing/pointer_member_test.cpp	(original)
+++ sandbox/SOC/2010/bit_masks/lib/integer/test/bft_testing/pointer_member_test.cpp	2010-07-18 08:23:49 EDT (Sun, 18 Jul 2010)
@@ -6,6 +6,14 @@
 #include <boost/integer/bitfield_tuple.hpp>
 #include <boost/detail/lightweight_test.hpp>
 #include <boost/type_traits/is_same.hpp>
+using namespace boost;
+using namespace boost::bitfields;
+struct rd;
+
+typedef bitfield_tuple<pointer<int, rd> > test_type;
+
 int main() {
+    test_type t;
+    
     return 0;
 }