Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r62647 - in sandbox/SOC/2010/bit_masks/boost/integer: . details
From: bbartmanboost_at_[hidden]
Date: 2010-06-09 07:20:30


Author: bbartman
Date: 2010-06-09 07:20:29 EDT (Wed, 09 Jun 2010)
New Revision: 62647
URL: http://svn.boost.org/trac/boost/changeset/62647

Log:
added additional preconditions and documentation to the bitfield_tupe code and supporitng types
Text files modified:
   sandbox/SOC/2010/bit_masks/boost/integer/bitfield_tuple.hpp | 43 +++++++++++++++++----------------------
   sandbox/SOC/2010/bit_masks/boost/integer/details/member.hpp | 6 ++++
   2 files changed, 24 insertions(+), 25 deletions(-)

Modified: sandbox/SOC/2010/bit_masks/boost/integer/bitfield_tuple.hpp
==============================================================================
--- sandbox/SOC/2010/bit_masks/boost/integer/bitfield_tuple.hpp (original)
+++ sandbox/SOC/2010/bit_masks/boost/integer/bitfield_tuple.hpp 2010-06-09 07:20:29 EDT (Wed, 09 Jun 2010)
@@ -45,33 +45,17 @@
 
 
 
-/** Default case for managing template parameters. */
+/** This is the empty which prevents the user from supply things which are
+ * not enclosed within either a member template or a storage template.
+ * This enforces a domain requirement on the template parameters of
+ * bitfield_tuple.
+ */
 template < typename Param,
             typename StoragePolicy,
             typename FieldVector,
             typename Offset
->
-struct bft_impl_;
-#if 0
-{
- typedef Param param;
- typedef FieldVector field_vector;
- typedef StoragePolicy storage_policy;
- typedef Offset offset;
+> struct bft_impl_;
 
- typedef bft_impl_<param,storage_policy,field_vector,offset> type;
-
- template <typename NextParam>
- struct process {
- typedef typename bft_impl_<
- NextParam,
- storage_policy,
- field_vector,
- offset
- >::type type;
- };
-};
-#endif
 
 /** Specialization over mpl::void_. */
 template < typename StoragePolicy,
@@ -97,7 +81,11 @@
     };
 };
 
-/** Specilization for storage type. */
+/** Specilization for storage type.
+ * Preconditions enforced on this function :
+ * For now its going to be documented but not enforeced.
+ * Do NOT set the storage type more then once!
+ */
 template < typename StorageType,
             typename AllocationPolicy,
             typename StoragePolicy,
@@ -134,7 +122,14 @@
     };
 };
 
-/** Specilization for member. */
+/** Specilization for member.
+ * Documented and enforced preconditions
+ * 1. The user must not supply the same name for more then 1 parameter
+ * (This may result in additional overhead during compile time ).
+ * Currently not enforced, will take more time then I have at the moment.
+ */
+
+// TODO: Implement Precondition 1 listed above!
 template < typename StoragePolicy,
             typename FieldVector,
             typename Offset,

Modified: sandbox/SOC/2010/bit_masks/boost/integer/details/member.hpp
==============================================================================
--- sandbox/SOC/2010/bit_masks/boost/integer/details/member.hpp (original)
+++ sandbox/SOC/2010/bit_masks/boost/integer/details/member.hpp 2010-06-09 07:20:29 EDT (Wed, 09 Jun 2010)
@@ -8,6 +8,7 @@
 #define BOOST_MEMBER_FIELD_HPP
 #include <cstddef>
 #include <boost/type_traits.hpp>
+#include <boost/static_assert.hpp>
 
 namespace boost {
 
@@ -16,10 +17,13 @@
  * specifically to associate a group of parameters to gather within a type
  * and make it easier for the data structure to figure out what to do with
  * those parameter.
+ *
+ * Documented and enforced preconditions
+ * The width of a field must not be 0.
  */
-
 template <typename ReturnType, typename Name, std::size_t FieldWidth>
 struct member {
+ BOOST_STATIC_ASSERT(( FieldWidth != 0 ));
     typedef ReturnType return_type;
     typedef Name name_type;
     BOOST_STATIC_CONSTANT(std::size_t, field_width = FieldWidth);


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