$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r76059 - in trunk: boost libs/crc
From: dwalker07_at_[hidden]
Date: 2011-12-19 00:20:42
Author: dlwalker
Date: 2011-12-19 00:20:39 EST (Mon, 19 Dec 2011)
New Revision: 76059
URL: http://svn.boost.org/trac/boost/changeset/76059
Log:
Folded both versions of boost::augmented_crc into a single one with a defaulted trailing argument; updated a web link.
Text files modified: 
   trunk/boost/crc.hpp     |    29 ++--------------------                  
   trunk/libs/crc/crc.html |    51 ++++++++++++++++++--------------------- 
   2 files changed, 27 insertions(+), 53 deletions(-)
Modified: trunk/boost/crc.hpp
==============================================================================
--- trunk/boost/crc.hpp	(original)
+++ trunk/boost/crc.hpp	2011-12-19 00:20:39 EST (Mon, 19 Dec 2011)
@@ -86,12 +86,7 @@
 
 template < std::size_t Bits, BOOST_CRC_PARM_TYPE TruncPoly >
     typename uint_t<Bits>::fast  augmented_crc( void const *buffer,
-     std::size_t byte_count, typename uint_t<Bits>::fast initial_remainder
-     BOOST_ACRC_DUMMY_PARM_TYPE );
-
-template < std::size_t Bits, BOOST_CRC_PARM_TYPE TruncPoly >
-    typename uint_t<Bits>::fast  augmented_crc( void const *buffer,
-     std::size_t byte_count
+     std::size_t byte_count, typename uint_t<Bits>::fast initial_remainder = 0u
      BOOST_ACRC_DUMMY_PARM_TYPE );
 
 typedef crc_optimal<16, 0x8005, 0, 0, true, true>         crc_16_type;
@@ -888,7 +883,7 @@
 }
 
 
-//  Augmented-message CRC computation function definitions  ------------------//
+//  Augmented-message CRC computation function definition  -------------------//
 
 template < std::size_t Bits, BOOST_CRC_PARM_TYPE TruncPoly >
 typename uint_t<Bits>::fast
@@ -896,7 +891,7 @@
 (
     void const *                 buffer,
     std::size_t                  byte_count,
-    typename uint_t<Bits>::fast  initial_remainder
+    typename uint_t<Bits>::fast  initial_remainder  // = 0u
     BOOST_ACRC_DUMMY_INIT
 )
 {
@@ -922,24 +917,6 @@
     return rem & detail::low_bits_mask_c<Bits>::value;
 }
 
-template < std::size_t Bits, BOOST_CRC_PARM_TYPE TruncPoly >
-inline
-typename uint_t<Bits>::fast
-augmented_crc
-(
-    void const *  buffer,
-    std::size_t   byte_count
-    BOOST_ACRC_DUMMY_INIT
-)
-{
-   // The last function argument has its type specified so the other version of
-   // augmented_crc will be called.  If the cast wasn't in place, and the
-   // BOOST_ACRC_DUMMY_INIT added a third argument (for a workaround), the "0"
-   // would match as that third argument, leading to infinite recursion.
-   return augmented_crc<Bits, TruncPoly>( buffer, byte_count,
-    static_cast<typename uint_t<Bits>::fast>(0) );
-}
-
 
 }  // namespace boost
 
Modified: trunk/libs/crc/crc.html
==============================================================================
--- trunk/libs/crc/crc.html	(original)
+++ trunk/libs/crc/crc.html	2011-12-19 00:20:39 EST (Mon, 19 Dec 2011)
@@ -32,7 +32,7 @@
         <li>Optimized CRC Computer</li>
         <li>Computer Usage</li>
         <li>CRC Function</li>
-	<li>Augmented-CRC Functions</li>
+	<li>Augmented-CRC Function</li>
         <li>Pre-Defined CRC Samples</li>
         <li>References</li>
         <li>Credits
@@ -69,11 +69,7 @@
 template < std::size_t Bits, <em>impl_def</em> TruncPoly >
     typename uint_t<Bits>::fast  augmented_crc( void const *buffer,
      std::size_t byte_count,
-     typename uint_t<Bits>::fast initial_remainder );
-
-template < std::size_t Bits, <em>impl_def</em> TruncPoly >
-    typename uint_t<Bits>::fast  augmented_crc( void const *buffer,
-     std::size_t byte_count );
+     typename uint_t<Bits>::fast initial_remainder = 0u );
 
 typedef crc_optimal<16, 0x8005, 0, 0, true, true>         crc_16_type;
 typedef crc_optimal<16, 0x1021, 0xFFFF, 0, false, false>  crc_ccitt_type;
@@ -118,8 +114,8 @@
 <p>See <cite><a href="http://www.ross.net/crc/crcpaper.html">A
 Painless Guide to CRC Error Detection Algorithms</a></cite> for complete
 information.  A clearer guide is at the <a
-href="http://www.netrino.com/Connecting/2000-01/">Easier Said Than
-Done</a> web page.</p>
+href="http://www.netrino.com/Embedded-Systems/How-To/CRC-Calculation-C-Code">CRC
+Implementation Code in C</a> web page.</p>
 
 <h3><a name="parameters">CRC Parameters</a></h3>
 
@@ -432,21 +428,17 @@
 optimized CRC computer (see above).  In fact,
 such a computer is used to implement this function.</p>
 
-<h2><a name="a_crc_func">Augmented-CRC Functions</a></h2>
+<h2><a name="a_crc_func">Augmented-CRC Function</a></h2>
 
 <blockquote><pre>template < std::size_t Bits, <em>impl_def</em> TruncPoly >
 typename boost::uint_t<Bits>::fast
 boost::augmented_crc( void const *buffer, std::size_t byte_count,
- typename boost::uint_t<Bits>::fast initial_remainder );
-
-template < std::size_t Bits, <em>impl_def</em> TruncPoly >
-typename boost::uint_t<Bits>::fast
-boost::augmented_crc( void const *buffer, std::size_t byte_count );
+ typename boost::uint_t<Bits>::fast initial_remainder = 0u );
 </pre></blockquote>
 
 <p>All the other CRC-computing function or class templates work assuming
 that the division steps start immediately on the first message bits. 
-The two <code>boost::augmented_crc</code> function templates have a
+The <code>boost::augmented_crc</code> function template has a
 different division order.  Instead of combining (<i>via</i> bitwise
 exclusive-or) the current message bit with the highest bit of a separate
 remainder, these templates shift a new message bit into the low bit of a
@@ -456,15 +448,15 @@
 CRC can only be extracted after feeding enough zero bits (the same count
 as the register size) after the message bits.</p>
 
-<p>The template parameters of both versions of the function template are
+<p>The template parameters of the function template are
 the CRC's bit size (<code>Bits</code>) and the truncated polynominal
-(<code>TruncPoly</code>).  The version of the function template that
-takes two arguments calls the three-argument version with the
-<var>initial_remainder</var> parameter filled as zero.  Both versions
-work on the data block starting at the address <var>buffer</var> for
-<var>byte_count</var> bytes.</p>
+(<code>TruncPoly</code>).  The function parameters are the starting address of
+the data block to be worked on (<var>buffer</var>), the number of bytes in that
+data block (<var>byte_count</var>), and the incoming value of the remainder
+(<var>initial_remainder</var>).  That last parameter defaults to zero if it is
+ommitted.</p>
 
-<p>These function templates are useful if the bytes of the CRC directly
+<p>This function template is useful if the bytes of the CRC directly
 follow the message's bytes.  First, set the bytes of where the CRC will
 go to zero.  Then use <code>augmented_crc</code> over the augmented
 message, <i>i.e.</i> the message bytes and the appended CRC bytes.  Then
@@ -576,12 +568,14 @@
         <dt>Michael Barr (<a
                 href="mailto:mbarr_at_[hidden]">mbarr_at_[hidden]</a>)
         <dd>Wrote <a
-		href="http://www.netrino.com/Connecting/2000-01/">Easier Said
-		Than Done</a>, a less-confusing guide to implementing CRC
+		href="http://www.netrino.com/Embedded-Systems/How-To/CRC-Calculation-C-Code">CRC 
+		Implementation Code in C</a>, a less-confusing guide to implementing CRC
                 algorithms.  (Originally published as "Slow and Steady
                 Never Lost the Race" in the January 2000 issue of <cite><a
                 href="http://www.embedded.com/">Embedded Systems
-		Programming</a></cite>, pages 37–46.)
+		Programming</a></cite>, pages 37–46.  The web version used to be
+		known as <cite><a href="http://www.netrino.com/Connecting/2000-01/">Easier
+		Said Than Done</a></cite>.)
 
         <dt>Daryle Walker
         <dd>Started the library and contributed the theoretical and optimal
@@ -615,6 +609,9 @@
 <h3><a name="history">History</a></h3>
 
 <dl>
+	<dt>18 Dec 2011, Daryle Walker
+	<dd>Folded the two versions of <code>boost::augmented_crc</code> together.
+
         <dt>15 Jun 2003, Daryle Walker
         <dd>Added example program.
 
@@ -624,9 +621,9 @@
 
 <hr>
 
-<p>Revised: 15 June 2003</p>
+<p>Revised: 18 December 2011</p>
 
-<p>Copyright 2001, 2003 Daryle Walker.  Use, modification, and distribution
+<p>Copyright 2001, 2003, 2011 Daryle Walker. Use, modification, and distribution
 are subject to the Boost Software License, Version 1.0.  (See accompanying
 file LICENSE_1_0.txt or a copy at
 <http://www.boost.org/LICENSE_1_0.txt>.)</p>