Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r76574 - sandbox/SOC/2011/checks/boost/checks
From: pierre.talbot.6114_at_[hidden]
Date: 2012-01-18 08:32:27


Author: trademark
Date: 2012-01-18 08:32:25 EST (Wed, 18 Jan 2012)
New Revision: 76574
URL: http://svn.boost.org/trac/boost/changeset/76574

Log:
Translation only depend on the value, not anymore on the position (responsability left to the function filter_value_with_pos). Correct inclusion error of iteration_sense.hpp
Text files modified:
   sandbox/SOC/2011/checks/boost/checks/amex.hpp | 1 +
   sandbox/SOC/2011/checks/boost/checks/basic_check_algorithm.hpp | 15 +++++++--------
   sandbox/SOC/2011/checks/boost/checks/basic_checks.hpp | 7 ++++---
   sandbox/SOC/2011/checks/boost/checks/ean.hpp | 1 +
   sandbox/SOC/2011/checks/boost/checks/isbn.hpp | 1 +
   sandbox/SOC/2011/checks/boost/checks/luhn.hpp | 1 +
   sandbox/SOC/2011/checks/boost/checks/mastercard.hpp | 5 +++--
   sandbox/SOC/2011/checks/boost/checks/modulus11.hpp | 20 ++++++++++++--------
   sandbox/SOC/2011/checks/boost/checks/upc.hpp | 7 ++++---
   sandbox/SOC/2011/checks/boost/checks/verhoeff.hpp | 8 ++++----
   sandbox/SOC/2011/checks/boost/checks/visa.hpp | 5 +++--
   11 files changed, 41 insertions(+), 30 deletions(-)

Modified: sandbox/SOC/2011/checks/boost/checks/amex.hpp
==============================================================================
--- sandbox/SOC/2011/checks/boost/checks/amex.hpp (original)
+++ sandbox/SOC/2011/checks/boost/checks/amex.hpp 2012-01-18 08:32:25 EST (Wed, 18 Jan 2012)
@@ -20,6 +20,7 @@
 
 #include <boost/range/rbegin.hpp>
 #include <boost/range/rend.hpp>
+#include <boost/range/iterator_range.hpp>
 
 /*!
   \brief This macro defines the size of a American Express card number (15).

Modified: sandbox/SOC/2011/checks/boost/checks/basic_check_algorithm.hpp
==============================================================================
--- sandbox/SOC/2011/checks/boost/checks/basic_check_algorithm.hpp (original)
+++ sandbox/SOC/2011/checks/boost/checks/basic_check_algorithm.hpp 2012-01-18 08:32:25 EST (Wed, 18 Jan 2012)
@@ -21,7 +21,6 @@
 
 #include <boost/lexical_cast.hpp>
 #include <boost/checks/translation_exception.hpp>
-#include <boost/checks/iteration_sense.hpp>
 
 namespace boost{
   namespace checks{
@@ -47,17 +46,17 @@
     \returns the translation of the current value in the range [0..9].
 */
   template <typename value>
- static int translate_to_valid_value(const value &current_value, const unsigned int valid_value_counter)
+ static int translate_to_valid_value(const value &current_value)
   {
     int valid_value = 0;
     try{
- valid_value = boost::lexical_cast<int>( current_value ) ;
- if( valid_value > 9)
- throw boost::checks::translation_exception() ;
- }catch( boost::bad_lexical_cast ){
- throw boost::checks::translation_exception() ;
+ valid_value = boost::lexical_cast<int>(current_value);
+ if(valid_value > 9)
+ throw boost::checks::translation_exception();
+ }catch(boost::bad_lexical_cast){
+ throw boost::checks::translation_exception();
     }
- return valid_value ;
+ return valid_value;
   }
 
   /*!

Modified: sandbox/SOC/2011/checks/boost/checks/basic_checks.hpp
==============================================================================
--- sandbox/SOC/2011/checks/boost/checks/basic_checks.hpp (original)
+++ sandbox/SOC/2011/checks/boost/checks/basic_checks.hpp 2012-01-18 08:32:25 EST (Wed, 18 Jan 2012)
@@ -44,11 +44,12 @@
   int checksum = 0;
   for(; seq_begin != seq_end && !size_contract::reach_one_past_the_end(valid_value_counter); ++seq_begin)
   {
- try{
- int current_valid_value = algorithm::translate_to_valid_value(*seq_begin, valid_value_counter);
+ try
+ {
+ int current_valid_value = algorithm::translate_to_valid_value(*seq_begin);
       algorithm::filter_valid_value_with_pos(current_valid_value, valid_value_counter);
       algorithm::operate_on_valid_value(current_valid_value, valid_value_counter, checksum);
- ++valid_value_counter ;
+ ++valid_value_counter;
     }
     catch(boost::checks::translation_exception){
     }

Modified: sandbox/SOC/2011/checks/boost/checks/ean.hpp
==============================================================================
--- sandbox/SOC/2011/checks/boost/checks/ean.hpp (original)
+++ sandbox/SOC/2011/checks/boost/checks/ean.hpp 2012-01-18 08:32:25 EST (Wed, 18 Jan 2012)
@@ -22,6 +22,7 @@
 
 #include <boost/range/rbegin.hpp>
 #include <boost/range/rend.hpp>
+#include <boost/range/iterator_range.hpp>
 
 /*!
   \brief This macro defines the size of an EAN-13 (13).

Modified: sandbox/SOC/2011/checks/boost/checks/isbn.hpp
==============================================================================
--- sandbox/SOC/2011/checks/boost/checks/isbn.hpp (original)
+++ sandbox/SOC/2011/checks/boost/checks/isbn.hpp 2012-01-18 08:32:25 EST (Wed, 18 Jan 2012)
@@ -23,6 +23,7 @@
 
 #include <boost/range/rbegin.hpp>
 #include <boost/range/rend.hpp>
+#include <boost/range/iterator_range.hpp>
 
 /*!
   \brief This macro defines the size of an ISBN-10.

Modified: sandbox/SOC/2011/checks/boost/checks/luhn.hpp
==============================================================================
--- sandbox/SOC/2011/checks/boost/checks/luhn.hpp (original)
+++ sandbox/SOC/2011/checks/boost/checks/luhn.hpp 2012-01-18 08:32:25 EST (Wed, 18 Jan 2012)
@@ -20,6 +20,7 @@
 
 #include <boost/range/rbegin.hpp>
 #include <boost/range/rend.hpp>
+#include <boost/range/iterator_range.hpp>
 
 namespace boost {
     namespace checks{

Modified: sandbox/SOC/2011/checks/boost/checks/mastercard.hpp
==============================================================================
--- sandbox/SOC/2011/checks/boost/checks/mastercard.hpp (original)
+++ sandbox/SOC/2011/checks/boost/checks/mastercard.hpp 2012-01-18 08:32:25 EST (Wed, 18 Jan 2012)
@@ -16,10 +16,11 @@
     #pragma once
 #endif
 
-#include <boost/checks/luhn.hpp>
-
 #include <boost/range/rbegin.hpp>
 #include <boost/range/rend.hpp>
+#include <boost/range/iterator_range.hpp>
+
+#include <boost/checks/luhn.hpp>
 
 /*!
   \brief This macro defines the size of a Mastercard number.

Modified: sandbox/SOC/2011/checks/boost/checks/modulus11.hpp
==============================================================================
--- sandbox/SOC/2011/checks/boost/checks/modulus11.hpp (original)
+++ sandbox/SOC/2011/checks/boost/checks/modulus11.hpp 2012-01-18 08:32:25 EST (Wed, 18 Jan 2012)
@@ -16,16 +16,15 @@
     #pragma once
 #endif
 
+#include <boost/range/rbegin.hpp>
+#include <boost/range/rend.hpp>
+#include <boost/range/iterator_range.hpp>
 #include <boost/lexical_cast.hpp>
 #include <boost/checks/translation_exception.hpp>
 #include <boost/checks/weight.hpp>
 #include <boost/checks/basic_checks.hpp>
 #include <boost/checks/weighted_sum.hpp>
 
-#include <boost/range/rbegin.hpp>
-#include <boost/range/rend.hpp>
-
-
 namespace boost{
   namespace checks{
 
@@ -54,7 +53,7 @@
     \returns the translation of the current value in the range [0..10].
 */
   template <typename value>
- static int translate_to_valid_value(const value &current_value, unsigned int valid_value_counter)
+ static int translate_to_valid_value(const value &current_value)
   {
     int valid_value = 0;
     try
@@ -63,15 +62,20 @@
     }
     catch(boost::bad_lexical_cast)
     {
- if((valid_value_counter + number_of_virtual_value_skipped == 1)&&(current_value == 'x' || current_value == 'X'))
+ if(current_value == 'x' || current_value == 'X')
         valid_value = 10;
       else
         throw boost::checks::translation_exception();
     }
- if(valid_value > 10 ||(valid_value == 10 &&(valid_value_counter + number_of_virtual_value_skipped == 1)))
- throw boost::checks::translation_exception();
     return valid_value;
   }
+/* pre: value must be valid */
+ static void filter_valid_value_with_pos(unsigned int value, unsigned int value_position)
+ {
+ // Must be the last digit if the value == 10. (reverse traversal).
+ if(value > 10 || (value == 10 && (value_position + number_of_virtual_value_skipped > 0)))
+ throw std::invalid_argument("The character X must be the last");
+ }
 
   /*!
     \brief Validate a checksum with a simple modulus 11.

Modified: sandbox/SOC/2011/checks/boost/checks/upc.hpp
==============================================================================
--- sandbox/SOC/2011/checks/boost/checks/upc.hpp (original)
+++ sandbox/SOC/2011/checks/boost/checks/upc.hpp 2012-01-18 08:32:25 EST (Wed, 18 Jan 2012)
@@ -16,13 +16,14 @@
     #pragma once
 #endif
 
+#include <boost/range/rbegin.hpp>
+#include <boost/range/rend.hpp>
+#include <boost/range/iterator_range.hpp>
+
 #include <boost/checks/weight.hpp>
 #include <boost/checks/basic_checks.hpp>
 #include <boost/checks/modulus10.hpp>
 
-#include <boost/range/rbegin.hpp>
-#include <boost/range/rend.hpp>
-
 /*!
   \brief This macro defines the size of an UPC-A.
 */

Modified: sandbox/SOC/2011/checks/boost/checks/verhoeff.hpp
==============================================================================
--- sandbox/SOC/2011/checks/boost/checks/verhoeff.hpp (original)
+++ sandbox/SOC/2011/checks/boost/checks/verhoeff.hpp 2012-01-18 08:32:25 EST (Wed, 18 Jan 2012)
@@ -17,15 +17,15 @@
     #pragma once
 #endif
 
-#include <boost/lexical_cast.hpp>
+#include <boost/range/rbegin.hpp>
+#include <boost/range/rend.hpp>
+#include <boost/range/iterator_range.hpp>
+
 #include <boost/checks/translation_exception.hpp>
 #include <boost/checks/weight.hpp>
 #include <boost/checks/basic_checks.hpp>
 #include <boost/checks/basic_check_algorithm.hpp>
 
-#include <boost/range/rbegin.hpp>
-#include <boost/range/rend.hpp>
-
 namespace boost {
     namespace checks{
 

Modified: sandbox/SOC/2011/checks/boost/checks/visa.hpp
==============================================================================
--- sandbox/SOC/2011/checks/boost/checks/visa.hpp (original)
+++ sandbox/SOC/2011/checks/boost/checks/visa.hpp 2012-01-18 08:32:25 EST (Wed, 18 Jan 2012)
@@ -16,10 +16,11 @@
     #pragma once
 #endif
 
-#include <boost/checks/luhn.hpp>
-
 #include <boost/range/rbegin.hpp>
 #include <boost/range/rend.hpp>
+#include <boost/range/iterator_range.hpp>
+
+#include <boost/checks/luhn.hpp>
 
 /*!
   \brief This macro defines the size of a Visa number.


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