Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r74242 - in sandbox/SOC/2011/checks/libs/checks/doc/html/checks: . checks checks/errors checks/modulus checks/tutorial
From: pbristow_at_[hidden]
Date: 2011-09-05 13:49:26


Author: pbristow
Date: 2011-09-05 13:49:22 EDT (Mon, 05 Sep 2011)
New Revision: 74242
URL: http://svn.boost.org/trac/boost/changeset/74242

Log:
Added folder of html for sections
Added:
   sandbox/SOC/2011/checks/libs/checks/doc/html/checks/ (props changed)
   sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/ (props changed)
   sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks.html (contents, props changed)
   sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/acks.html (contents, props changed)
   sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/algorithm.html (contents, props changed)
   sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/conventions.html (contents, props changed)
   sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/errors/ (props changed)
   sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/errors.html (contents, props changed)
   sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/errors/alteration.html (contents, props changed)
   sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/errors/length.html (contents, props changed)
   sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/errors/phonetic.html (contents, props changed)
   sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/errors/shift.html (contents, props changed)
   sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/errors/transposition.html (contents, props changed)
   sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/faqs.html (contents, props changed)
   sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/history.html (contents, props changed)
   sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/modulus/ (props changed)
   sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/modulus.html (contents, props changed)
   sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/modulus/luhn.html (contents, props changed)
   sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/modulus/mod10.html (contents, props changed)
   sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/modulus/mod11.html (contents, props changed)
   sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/modulus/summary.html (contents, props changed)
   sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/preface.html (contents, props changed)
   sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/rationale.html (contents, props changed)
   sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/refs.html (contents, props changed)
   sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/status.html (contents, props changed)
   sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/tutorial/ (props changed)
   sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/tutorial.html (contents, props changed)
   sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/tutorial/extending_the_library.html (contents, props changed)
   sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/tutorial/start.html (contents, props changed)
   sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/version_id.html (contents, props changed)

Added: sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks.html 2011-09-05 13:49:22 EDT (Mon, 05 Sep 2011)
@@ -0,0 +1,76 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Checks</title>
+<link rel="stylesheet" href=".././boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../index.html" title="Checks">
+<link rel="up" href="../index.html" title="Checks">
+<link rel="prev" href="../index.html" title="Checks">
+<link rel="next" href="checks/preface.html" title="Preface">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="" width="180" height="90" src=".././images/proposed_for_boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../index.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="checks/preface.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="checks.checks"></a><a class="link" href="checks.html" title="Checks">Checks</a>
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section">Preface</span></dt>
+<dt><span class="section">Status</span></dt>
+<dt><span class="section">Document Conventions</span></dt>
+<dt><span class="section">Tutorial</span></dt>
+<dd><dl>
+<dt><span class="section">Starting with Checks</span></dt>
+<dt><span class="section"><a href="checks/tutorial/extending_the_library.html">Extending
+ the library</a></span></dt>
+</dl></dd>
+<dt><span class="section">Common check algorithms</span></dt>
+<dt><span class="section">Type of errors</span></dt>
+<dd><dl>
+<dt><span class="section">Alteration</span></dt>
+<dt><span class="section">Transposition</span></dt>
+<dt><span class="section">Length</span></dt>
+<dt><span class="section">Shift</span></dt>
+<dt><span class="section">Phonetic</span></dt>
+</dl></dd>
+<dt><span class="section">Modular sum algorithms</span></dt>
+<dd><dl>
+<dt><span class="section">Luhn algorithm</span></dt>
+<dt><span class="section">Modulus 10 algorithm</span></dt>
+<dt><span class="section">Modulus 11 algorithm</span></dt>
+<dt><span class="section">Summary of Algorithms</span></dt>
+</dl></dd>
+<dt><span class="section">Acknowledgements</span></dt>
+<dt><span class="section">FAQs</span></dt>
+<dt><span class="section">References</span></dt>
+<dt><span class="section">Rationale</span></dt>
+<dt><span class="section">History</span></dt>
+<dt><span class="section">Version Info</span></dt>
+</dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2011 Pierre Talbot<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../index.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="checks/preface.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/acks.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/acks.html 2011-09-05 13:49:22 EDT (Mon, 05 Sep 2011)
@@ -0,0 +1,52 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Acknowledgements</title>
+<link rel="stylesheet" href="../.././boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../index.html" title="Checks">
+<link rel="up" href="../checks.html" title="Checks">
+<link rel="prev" href="modulus/summary.html" title="Summary of Algorithms">
+<link rel="next" href="faqs.html" title="FAQs">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="" width="180" height="90" src="../.././images/proposed_for_boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="modulus/summary.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../checks.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="faqs.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="checks.checks.acks"></a><a class="link" href="acks.html" title="Acknowledgements">Acknowledgements</a>
+</h3></div></div></div>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ Thanks to Paul A. Bristow who is the mentor of this Google Summber of
+ Code project for his infinite patience and his wise advice.
+ </li>
+<li>
+ Thanks for Google for funding this Google Summber of Code 2011 project.
+ </li>
+</ul></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2011 Pierre Talbot<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="modulus/summary.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../checks.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="faqs.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/algorithm.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/algorithm.html 2011-09-05 13:49:22 EDT (Mon, 05 Sep 2011)
@@ -0,0 +1,140 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Common check algorithms</title>
+<link rel="stylesheet" href="../.././boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../index.html" title="Checks">
+<link rel="up" href="../checks.html" title="Checks">
+<link rel="prev" href="tutorial/extending_the_library.html" title="Extending the library">
+<link rel="next" href="errors.html" title="Type of errors">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="" width="180" height="90" src="../.././images/proposed_for_boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="tutorial/extending_the_library.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../checks.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="errors.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="checks.checks.algorithm"></a><a class="link" href="algorithm.html" title="Common check algorithms">Common check algorithms</a>
+</h3></div></div></div>
+<p>
+ This section will discuss the objectives of the algorithms used in Boost.Checks.
+ A check algorithm is firstly designed to:
+ </p>
+<div class="orderedlist"><ol type="1">
+<li>
+ Catch the most errors as possible that a human (or machine) can make.
+ </li>
+<li>
+ Minimize the cost of the check digit for fast computation.
+ </li>
+<li>
+ Minimize the size (or number) of the check digit(s).
+ </li>
+</ol></div>
+<p>
+ We cannot have our cake and eat it, that's why we often choose between the
+ size or the efficiency. Critical numbers, for example, the <a href="http://en.wikipedia.org/wiki/International_Bank_Account_Number" target="_top">International
+ Bank Account Number (IBAN)</a>, use two check digits.
+ </p>
+<p>
+ The main difference with these algorithms (and the other checksum algorithms
+ such as CRC or cryptographic hashes) is that we don't analyse the binary
+ content of the number of the lexical values meaning, so "123" is
+ equivalent to <em class="replaceable"><code>123</code></em>.
+ </p>
+<div class="table">
+<a name="checks.checks.algorithm.summary"></a><p class="title"><b>Table&#160;2.&#160;Error catching summary</b></p>
+<div class="table-contents"><table class="table" summary="Error catching summary">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ </th>
+<th>
+ <p>
+ 1 Alteration
+ </p>
+ </th>
+<th>
+ <p>
+ 2 Alterations
+ </p>
+ </th>
+<th>
+ <p>
+ Twin transpositions
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Luhn
+ </p>
+ </td>
+<td>
+ <p>
+ 18/18 (100%)
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ 88/90 (97.78%)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Verhoeff
+ </p>
+ </td>
+<td>
+ <p>
+ 18/18 (100%)
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ 90/90 (100%)
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break">
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2011 Pierre Talbot<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="tutorial/extending_the_library.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../checks.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="errors.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/conventions.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/conventions.html 2011-09-05 13:49:22 EDT (Mon, 05 Sep 2011)
@@ -0,0 +1,157 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Document Conventions</title>
+<link rel="stylesheet" href="../.././boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../index.html" title="Checks">
+<link rel="up" href="../checks.html" title="Checks">
+<link rel="prev" href="status.html" title="Status">
+<link rel="next" href="tutorial.html" title="Tutorial">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="" width="180" height="90" src="../.././images/proposed_for_boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="status.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../checks.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="tutorial.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="checks.checks.conventions"></a><a class="link" href="conventions.html" title="Document Conventions">Document Conventions</a>
+</h3></div></div></div>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ <span class="bold"><strong>Tutorials</strong></span> are listed in the <span class="emphasis"><em>Table
+ of Contents</em></span> and include many examples that should help you
+ get started quickly.
+ </li>
+<li>
+ <span class="bold"><strong>Source code</strong></span> of the many <span class="emphasis"><em>Examples</em></span>
+ will often be your quickest starting point.
+ </li>
+<li>
+ <span class="bold"><strong>Reference section</strong></span> prepared using Doxygen
+ will provide the function and class signatures, but there is also an
+ <span class="emphasis"><em>index</em></span> of these.
+ </li>
+<li>
+ The main <span class="emphasis"><em>index</em></span> will also help, especially if you
+ know a word describing what it does, without needing to know the exact
+ name chosen for the function.
+ </li>
+</ul></div>
+<p>
+ This documentation makes use of the following naming and formatting conventions.
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ C++ Code is in <code class="computeroutput"><span class="identifier">fixed</span> <span class="identifier">width</span> <span class="identifier">font</span></code>
+ and is syntax-highlighted in color.
+ </li>
+<li>
+ Other code is in <code class="literal">teletype fixed-width font</code>.
+ </li>
+<li>
+ Replaceable text that you will need to supply is in <em class="replaceable"><code>italics</code></em>.
+ </li>
+<li>
+ If a name refers to a free function, it is specified like this: <code class="computeroutput"><span class="identifier">free_function</span><span class="special">()</span></code>;
+ that is, it is in <em class="replaceable"><code>code font</code></em> and its name is
+ followed by <code class="computeroutput"><span class="special">()</span></code> to indicate
+ that it is a free function.
+ </li>
+<li>
+ If a name refers to a class template, it is specified like this: <code class="computeroutput"><span class="identifier">class_template</span><span class="special">&lt;&gt;</span></code>;
+ that is, it is in code font and its name is followed by <code class="computeroutput"><span class="special">&lt;&gt;</span></code> to indicate that it is a class
+ template.
+ </li>
+<li>
+ If a name refers to a function-like macro, it is specified like this:
+ <code class="computeroutput"><span class="identifier">MACRO</span><span class="special">()</span></code>;
+ that is, it is uppercase in code font and its name is followed by <code class="computeroutput"><span class="special">()</span></code> to indicate that it is a function-like
+ macro. Object-like macros appear without the trailing <code class="computeroutput"><span class="special">()</span></code>.
+ </li>
+<li>
+ Names that refer to <span class="emphasis"><em>concepts</em></span> in the generic programming
+ sense are specified in CamelCase.
+ </li>
+<li>
+ Many code snippets assume an implicit namespace, for example, <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span></code>
+ or <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">checks</span></code>.
+ </li>
+<li>
+ If you have a feature request, or if it appears that the implementation
+ is in error, please check the TODO section first, as well as the rationale
+ section.
+ </li>
+</ul></div>
+<p>
+ If you do not find your idea/complaint, please reach the author either through
+ the Boost development list, or email the author(s) direct .
+ </p>
+<a name="checks.checks.conventions.admonishments"></a><h5>
+<a name="checks.checks.conventions.admonishments-heading"></a>
+ <a class="link" href="conventions.html#checks.checks.conventions.admonishments">Admonishments</a>
+ </h5>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ In addition, notes such as this one specify non-essential information that
+ provides additional background or rationale.
+ </p></td></tr>
+</table></div>
+<div class="tip"><table border="0" summary="Tip">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="../../images/tip.png"></td>
+<th align="left">Tip</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ These blocks contain information that you may find helpful while coding.
+ </p></td></tr>
+</table></div>
+<div class="important"><table border="0" summary="Important">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../images/important.png"></td>
+<th align="left">Important</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ These contain information that is imperative to understanding a concept.
+ Failure to follow suggestions in these blocks will probably result in undesired
+ behavior. Read all of these you find.
+ </p></td></tr>
+</table></div>
+<div class="warning"><table border="0" summary="Warning">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="../../images/warning.png"></td>
+<th align="left">Warning</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ Failure to heed this will lead to incorrect, and very likely undesired,
+ results.
+ </p></td></tr>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2011 Pierre Talbot<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="status.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../checks.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="tutorial.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/errors.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/errors.html 2011-09-05 13:49:22 EDT (Mon, 05 Sep 2011)
@@ -0,0 +1,54 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Type of errors</title>
+<link rel="stylesheet" href="../.././boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../index.html" title="Checks">
+<link rel="up" href="../checks.html" title="Checks">
+<link rel="prev" href="algorithm.html" title="Common check algorithms">
+<link rel="next" href="errors/alteration.html" title="Alteration">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="" width="180" height="90" src="../.././images/proposed_for_boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="algorithm.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../checks.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="errors/alteration.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="checks.checks.errors"></a><a class="link" href="errors.html" title="Type of errors">Type of errors</a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section">Alteration</span></dt>
+<dt><span class="section">Transposition</span></dt>
+<dt><span class="section">Length</span></dt>
+<dt><span class="section">Shift</span></dt>
+<dt><span class="section">Phonetic</span></dt>
+</dl></div>
+<p>
+ This section will describe some common errors that an user or a device can
+ make.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2011 Pierre Talbot<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="algorithm.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../checks.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="errors/alteration.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/errors/alteration.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/errors/alteration.html 2011-09-05 13:49:22 EDT (Mon, 05 Sep 2011)
@@ -0,0 +1,63 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Alteration</title>
+<link rel="stylesheet" href="../../.././boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../../index.html" title="Checks">
+<link rel="up" href="../errors.html" title="Type of errors">
+<link rel="prev" href="../errors.html" title="Type of errors">
+<link rel="next" href="transposition.html" title="Transposition">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="" width="180" height="90" src="../../.././images/proposed_for_boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../errors.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../errors.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="transposition.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="checks.checks.errors.alteration"></a><a class="link" href="alteration.html" title="Alteration">Alteration</a>
+</h4></div></div></div>
+<a name="checks.checks.errors.alteration.single_error"></a><h6>
+<a name="checks.checks.errors.alteration.single_error-heading"></a>
+ <a class="link" href="alteration.html#checks.checks.errors.alteration.single_error">Single error</a>
+ </h6>
+<p>
+ If the digits are added, an alteration of one digit will always render
+ a different sum and therefore the check digit.
+ </p>
+<a name="checks.checks.errors.alteration.multiple_error"></a><h6>
+<a name="checks.checks.errors.alteration.multiple_error-heading"></a>
+ <a class="link" href="alteration.html#checks.checks.errors.alteration.multiple_error">Multiple
+ error</a>
+ </h6>
+<p>
+ If more than one digit is altered, a simple sum can't ensure that the check
+ digit will be different. In fact it depends on the compensation of the
+ altered digits. For example : 1 + 2 + 3 = 6. If we alter 2 digits, the
+ sum could become : 2 + 2 + 2 = 6. The result is equal because 1 + 3 = 2
+ + 2, the digits altered are compensated.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2011 Pierre Talbot<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../errors.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../errors.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="transposition.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/errors/length.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/errors/length.html 2011-09-05 13:49:22 EDT (Mon, 05 Sep 2011)
@@ -0,0 +1,49 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Length</title>
+<link rel="stylesheet" href="../../.././boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../../index.html" title="Checks">
+<link rel="up" href="../errors.html" title="Type of errors">
+<link rel="prev" href="transposition.html" title="Transposition">
+<link rel="next" href="shift.html" title="Shift">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="" width="180" height="90" src="../../.././images/proposed_for_boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="transposition.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../errors.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="shift.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="checks.checks.errors.length"></a><a class="link" href="length.html" title="Length">Length</a>
+</h4></div></div></div>
+<p>
+ The length is not often a problem because many codes and numbers have a
+ fixed length. But if the user do not specify the size, an error could be
+ uncaught if the check digit of the new sequence of digit is equal to the
+ last digit of this sequence.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2011 Pierre Talbot<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="transposition.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../errors.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="shift.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/errors/phonetic.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/errors/phonetic.html 2011-09-05 13:49:22 EDT (Mon, 05 Sep 2011)
@@ -0,0 +1,41 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Phonetic</title>
+<link rel="stylesheet" href="../../.././boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../../index.html" title="Checks">
+<link rel="up" href="../errors.html" title="Type of errors">
+<link rel="prev" href="shift.html" title="Shift">
+<link rel="next" href="../modulus.html" title="Modular sum algorithms">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="" width="180" height="90" src="../../.././images/proposed_for_boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="shift.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../errors.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="../modulus.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title">
+<a name="checks.checks.errors.phonetic"></a><a class="link" href="phonetic.html" title="Phonetic">Phonetic</a>
+</h4></div></div></div></div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2011 Pierre Talbot<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="shift.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../errors.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="../modulus.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/errors/shift.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/errors/shift.html 2011-09-05 13:49:22 EDT (Mon, 05 Sep 2011)
@@ -0,0 +1,41 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Shift</title>
+<link rel="stylesheet" href="../../.././boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../../index.html" title="Checks">
+<link rel="up" href="../errors.html" title="Type of errors">
+<link rel="prev" href="length.html" title="Length">
+<link rel="next" href="phonetic.html" title="Phonetic">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="" width="180" height="90" src="../../.././images/proposed_for_boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="length.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../errors.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="phonetic.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title">
+<a name="checks.checks.errors.shift"></a><a class="link" href="shift.html" title="Shift">Shift</a>
+</h4></div></div></div></div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2011 Pierre Talbot<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="length.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../errors.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="phonetic.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/errors/transposition.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/errors/transposition.html 2011-09-05 13:49:22 EDT (Mon, 05 Sep 2011)
@@ -0,0 +1,59 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Transposition</title>
+<link rel="stylesheet" href="../../.././boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../../index.html" title="Checks">
+<link rel="up" href="../errors.html" title="Type of errors">
+<link rel="prev" href="alteration.html" title="Alteration">
+<link rel="next" href="length.html" title="Length">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="" width="180" height="90" src="../../.././images/proposed_for_boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="alteration.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../errors.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="length.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="checks.checks.errors.transposition"></a><a class="link" href="transposition.html" title="Transposition">Transposition</a>
+</h4></div></div></div>
+<p>
+ A transposition on a simple sum is impossible to detect because the addition
+ is commutative, the order is not important. A solution is to associate
+ the position of a digit with a weight.
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ A transposition error is only caught if the two digits transposed have
+ a different weight and if their values with their weight or the weight
+ of the other digit are not the same.
+ </p></td></tr>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2011 Pierre Talbot<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="alteration.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../errors.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="length.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/faqs.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/faqs.html 2011-09-05 13:49:22 EDT (Mon, 05 Sep 2011)
@@ -0,0 +1,51 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>FAQs</title>
+<link rel="stylesheet" href="../.././boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../index.html" title="Checks">
+<link rel="up" href="../checks.html" title="Checks">
+<link rel="prev" href="acks.html" title="Acknowledgements">
+<link rel="next" href="refs.html" title="References">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="" width="180" height="90" src="../.././images/proposed_for_boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="acks.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../checks.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="refs.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="checks.checks.faqs"></a><a class="link" href="faqs.html" title="FAQs">FAQs</a>
+</h3></div></div></div>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ Why are checks needed?
+ </li>
+<li>
+ How many alterations to the strings are detected (or undetected)?
+ </li>
+</ul></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2011 Pierre Talbot<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="acks.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../checks.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="refs.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/history.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/history.html 2011-09-05 13:49:22 EDT (Mon, 05 Sep 2011)
@@ -0,0 +1,52 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>History</title>
+<link rel="stylesheet" href="../.././boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../index.html" title="Checks">
+<link rel="up" href="../checks.html" title="Checks">
+<link rel="prev" href="rationale.html" title="Rationale">
+<link rel="next" href="version_id.html" title="Version Info">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="" width="180" height="90" src="../.././images/proposed_for_boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="rationale.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../checks.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="version_id.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="checks.checks.history"></a><a class="link" href="history.html" title="History">History</a>
+</h3></div></div></div>
+<div class="orderedlist"><ol type="1">
+<li>
+ Project started by Pierre Talbot June 2011 as a Google Summer of Code
+ Project.
+ </li>
+<li>
+ First release in Boost Sandbox for public comment Aug 2011.
+ </li>
+</ol></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2011 Pierre Talbot<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="rationale.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../checks.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="version_id.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/modulus.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/modulus.html 2011-09-05 13:49:22 EDT (Mon, 05 Sep 2011)
@@ -0,0 +1,74 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Modular sum algorithms</title>
+<link rel="stylesheet" href="../.././boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../index.html" title="Checks">
+<link rel="up" href="../checks.html" title="Checks">
+<link rel="prev" href="errors/phonetic.html" title="Phonetic">
+<link rel="next" href="modulus/luhn.html" title="Luhn algorithm">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="" width="180" height="90" src="../.././images/proposed_for_boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="errors/phonetic.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../checks.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="modulus/luhn.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="checks.checks.modulus"></a><a class="link" href="modulus.html" title="Modular sum algorithms">Modular sum algorithms</a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section">Luhn algorithm</span></dt>
+<dt><span class="section">Modulus 10 algorithm</span></dt>
+<dt><span class="section">Modulus 11 algorithm</span></dt>
+<dt><span class="section">Summary of Algorithms</span></dt>
+</dl></div>
+<p>
+ A <span class="emphasis"><em>modular sum algorithm</em></span> computes the sum of a sequence
+ of digits modulus some number. The number obtained is called the <span class="emphasis"><em>check
+ digit</em></span>; in many codes it is appended as the last digit (or letter).
+ This simplistic algorithm detects any <span class="emphasis"><em>alteration</em></span> of
+ one single digit but doesn't detect a simple <span class="emphasis"><em>transposition</em></span>
+ or two (or more) digits if the check digit is not transposed. This is why
+ even the most basic algorithms introduce the notion of <span class="emphasis"><em>weight</em></span>.
+ The weight is the contribution of a number to the final sum. The following
+ algorithms presented are the base of many, many codes and numbers in worldwide
+ use. We could describe a number and its check digit calculation with three
+ characteristics : length, weight and the modulus. So we could design a generic
+ function - but we won't - it wouldn't be efficient and would be unnecessarily
+ complicated. The next parts will present three different algorithms for which
+ we have choose to design this implementation.
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ We may add other algorithms later.
+ </p></td></tr>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2011 Pierre Talbot<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="errors/phonetic.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../checks.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="modulus/luhn.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/modulus/luhn.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/modulus/luhn.html 2011-09-05 13:49:22 EDT (Mon, 05 Sep 2011)
@@ -0,0 +1,88 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Luhn algorithm</title>
+<link rel="stylesheet" href="../../.././boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../../index.html" title="Checks">
+<link rel="up" href="../modulus.html" title="Modular sum algorithms">
+<link rel="prev" href="../modulus.html" title="Modular sum algorithms">
+<link rel="next" href="mod10.html" title="Modulus 10 algorithm">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="" width="180" height="90" src="../../.././images/proposed_for_boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../modulus.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../modulus.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="mod10.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="checks.checks.modulus.luhn"></a><a class="link" href="luhn.html" title="Luhn algorithm">Luhn algorithm</a>
+</h4></div></div></div>
+<a name="checks.checks.modulus.luhn.description"></a><h6>
+<a name="checks.checks.modulus.luhn.description-heading"></a>
+ <a class="link" href="luhn.html#checks.checks.modulus.luhn.description">Description</a>
+ </h6>
+<p>
+ The Luhn algorithm is used with a lot of codes and numbers: the most well-known
+ usage is the verification of the <span class="emphasis"><em>credit card numbers</em></span>
+ It produces a check digit from a sequence with an unlimited length. The
+ weight pattern used is from the rightmost digit (the check digit) doubling
+ the value of every second digit. It applies a modulus 10 on the sum, so
+ the range of the check digit is from 0 to 9.
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ When a digit is doubled, we subtract 9 from the result if it exceeds
+ 9
+ </p></td></tr>
+</table></div>
+<a name="checks.checks.modulus.luhn.errors"></a><h6>
+<a name="checks.checks.modulus.luhn.errors-heading"></a>
+ <a class="link" href="luhn.html#checks.checks.modulus.luhn.errors">Errors</a>
+ </h6>
+<p>
+ <span class="bold"><strong>Alterations</strong></span> of any one digit are all caught.
+ The alterations of more than one digit are not all caught. All <span class="bold"><strong>transpositions</strong></span> on digits with different weight are
+ caught, but the sequence "90" or "09" is not because:
+ </p>
+<p>
+
+</p>
+<pre class="programlisting">9*2 = 18 and 18-9 = 9
+9 * 2 = 9 * 1
+0 * 2 = 0 * 1
+</pre>
+<p>
+ </p>
+<p>
+ The two digits have the same value if they are doubled or not. Because
+ Luhn alternates a weight of 1 and 2, any transpositions of digits with
+ the same weight are not caught.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2011 Pierre Talbot<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../modulus.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../modulus.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="mod10.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/modulus/mod10.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/modulus/mod10.html 2011-09-05 13:49:22 EDT (Mon, 05 Sep 2011)
@@ -0,0 +1,54 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Modulus 10 algorithm</title>
+<link rel="stylesheet" href="../../.././boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../../index.html" title="Checks">
+<link rel="up" href="../modulus.html" title="Modular sum algorithms">
+<link rel="prev" href="luhn.html" title="Luhn algorithm">
+<link rel="next" href="mod11.html" title="Modulus 11 algorithm">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="" width="180" height="90" src="../../.././images/proposed_for_boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="luhn.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../modulus.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="mod11.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="checks.checks.modulus.mod10"></a><a class="link" href="mod10.html" title="Modulus 10 algorithm">Modulus 10 algorithm</a>
+</h4></div></div></div>
+<a name="checks.checks.modulus.mod10.description"></a><h6>
+<a name="checks.checks.modulus.mod10.description-heading"></a>
+ <a class="link" href="mod10.html#checks.checks.modulus.mod10.description">Description</a>
+ </h6>
+<p>
+ This algorithm use a modulus 10 as the Luhn algorithm but use a custom
+ weight pattern. The sum is made without subtraction if the multiplication
+ of a digit exceeds 9. The custom weight pattern may be useful for many
+ codes and numbers that aren't implemented in the high level library. The
+ user can easily craft his own check function with this weight pattern.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2011 Pierre Talbot<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="luhn.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../modulus.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="mod11.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/modulus/mod11.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/modulus/mod11.html 2011-09-05 13:49:22 EDT (Mon, 05 Sep 2011)
@@ -0,0 +1,52 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Modulus 11 algorithm</title>
+<link rel="stylesheet" href="../../.././boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../../index.html" title="Checks">
+<link rel="up" href="../modulus.html" title="Modular sum algorithms">
+<link rel="prev" href="mod10.html" title="Modulus 10 algorithm">
+<link rel="next" href="summary.html" title="Summary of Algorithms">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="" width="180" height="90" src="../../.././images/proposed_for_boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="mod10.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../modulus.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="summary.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="checks.checks.modulus.mod11"></a><a class="link" href="mod11.html" title="Modulus 11 algorithm">Modulus 11 algorithm</a>
+</h4></div></div></div>
+<p>
+ The modulus 11 algorithm use a modulus of 11, so we have 11 possible check
+ digits. The ten first characters are the figures from 0 to 9, the eleventh
+ is a special character choose by the designer of the number. It is typically
+ 'X' or 'x'. The weight of a digit is related to its position. The weight
+ of the first character is equal to the total length of the number (with
+ the check digit included). The weight decreases by one for the second position,
+ one again for the third, etc.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2011 Pierre Talbot<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="mod10.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../modulus.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="summary.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/modulus/summary.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/modulus/summary.html 2011-09-05 13:49:22 EDT (Mon, 05 Sep 2011)
@@ -0,0 +1,177 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Summary of Algorithms</title>
+<link rel="stylesheet" href="../../.././boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../../index.html" title="Checks">
+<link rel="up" href="../modulus.html" title="Modular sum algorithms">
+<link rel="prev" href="mod11.html" title="Modulus 11 algorithm">
+<link rel="next" href="../acks.html" title="Acknowledgements">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="" width="180" height="90" src="../../.././images/proposed_for_boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="mod11.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../modulus.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="../acks.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="checks.checks.modulus.summary"></a><a class="link" href="summary.html" title="Summary of Algorithms">Summary of Algorithms</a>
+</h4></div></div></div>
+<p>
+ Here a summary of the different algorithms studied.
+ </p>
+<div class="table">
+<a name="checks.checks.modulus.summary.id"></a><p class="title"><b>Table&#160;3.&#160;Summary of the modular sum algorithms</b></p>
+<div class="table-contents"><table class="table" summary="Summary of the modular sum algorithms">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Algorithm
+ </p>
+ </th>
+<th>
+ <p>
+ Modulus
+ </p>
+ </th>
+<th>
+ <p>
+ Weight pattern
+ </p>
+ </th>
+<th>
+ <p>
+ check digit range
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Luhn
+ </p>
+ </td>
+<td>
+ <p>
+ 10
+ </p>
+ </td>
+<td>
+ <p>
+ ... 2 1 2 1
+ </p>
+ </td>
+<td>
+ <p>
+ 0..9
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Modulus 10
+ </p>
+ </td>
+<td>
+ <p>
+ 10
+ </p>
+ </td>
+<td>
+ <p>
+ custom
+ </p>
+ </td>
+<td>
+ <p>
+ 0..9
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Modulus 11
+ </p>
+ </td>
+<td>
+ <p>
+ 11
+ </p>
+ </td>
+<td>
+ <p>
+ ... 2 1 10 ... 4 3 2 1
+ </p>
+ </td>
+<td>
+ <p>
+ 0..9 + 'X'
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Modulus 97
+ </p>
+ </td>
+<td>
+ <p>
+ 97
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Verhoeff
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ </td>
+<td>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break">
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2011 Pierre Talbot<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="mod11.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../modulus.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="../acks.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/preface.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/preface.html 2011-09-05 13:49:22 EDT (Mon, 05 Sep 2011)
@@ -0,0 +1,100 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Preface</title>
+<link rel="stylesheet" href="../.././boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../index.html" title="Checks">
+<link rel="up" href="../checks.html" title="Checks">
+<link rel="prev" href="../checks.html" title="Checks">
+<link rel="next" href="status.html" title="Status">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="" width="180" height="90" src="../.././images/proposed_for_boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../checks.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../checks.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="status.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="checks.checks.preface"></a><a class="link" href="preface.html" title="Preface">Preface</a>
+</h3></div></div></div>
+<p>
+ Checks are required on alphanumeric identifiers in numerous domains such
+ as the distribution chain (product bar codes), banking (bank account, credit
+ cards, fidelity cards, ...) and many others. These codes and numbers are
+ often typed, copied or scanned by humans or machines; and both make errors.
+ We need a way to detect errors and this is why check digits have been designed.
+ </p>
+<p>
+ A check digit aims to control the validity of a alphanumeric string and catch
+ the as many changes as possible. (<a class="link" href="errors.html" title="Type of errors">types
+ of error</a> discuss possible alterations and the efficiency of their
+ detection).
+ </p>
+<p>
+ This library provides a collection of functions for validating and creating
+ check digits.
+ </p>
+<p>
+ Scott McMurray has identifed four fairly distinct types of check:
+ </p>
+<div class="orderedlist"><ol type="1">
+<li>
+ ISBN/ISSN/UPC/EAN/VISA/etc, for catching human-entry errors.
+ </li>
+<li>
+ hash functions as in hash tables, which only care about distribution.
+ </li>
+<li>
+ checksums like CRC32, for catching data transmission errors.
+ </li>
+<li>
+ and cryptographic hash functions, the only ones useful against malicious
+ adversaries.
+ </li>
+</ol></div>
+<p>
+ The functions in this Boost.Checks library are primarily for the first category
+ : catching human-entry errors (though it obviously also provides against
+ a mis-scan or mis-transmit by a device like a bar code or card reader.)
+ </p>
+<p>
+ This library supports four families of check : Modulus 10, Modulus 11, Modulus
+ 97-10 and Verhoeff. A lot of other check systems are inherited from these
+ families.
+ </p>
+<p>
+ The following diagram shows the hierarchy used in Boost.Checks:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../.././images/checks/check_hierarchy.png" alt="check_hierarchy"></span>
+ </p>
+<p>
+ Numerous check algorithms are in use worldwide, and this is why this library
+ is designed to help you to cater for less common checks, and even to create
+ your own check systems. If you are interested, see <a class="link" href="tutorial/extending_the_library.html" title="Extending the library">extending
+ the library</a>.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2011 Pierre Talbot<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../checks.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../checks.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="status.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/rationale.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/rationale.html 2011-09-05 13:49:22 EDT (Mon, 05 Sep 2011)
@@ -0,0 +1,117 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Rationale</title>
+<link rel="stylesheet" href="../.././boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../index.html" title="Checks">
+<link rel="up" href="../checks.html" title="Checks">
+<link rel="prev" href="refs.html" title="References">
+<link rel="next" href="history.html" title="History">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="" width="180" height="90" src="../.././images/proposed_for_boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="refs.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../checks.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="history.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="checks.checks.rationale"></a><a class="link" href="rationale.html" title="Rationale">Rationale</a>
+</h3></div></div></div>
+<p>
+ This section records the rationale and compromises for some design decisions.
+ </p>
+<a name="checks.checks.rationale.scope_of_the_project"></a><h5>
+<a name="checks.checks.rationale.scope_of_the_project-heading"></a>
+ <a class="link" href="rationale.html#checks.checks.rationale.scope_of_the_project">Scope of the
+ project</a>
+ </h5>
+<div class="itemizedlist"><ul type="disc"><li>
+ Scott McMurray has identifed four fairly distinct types of check:
+ <div class="orderedlist"><ol type="1">
+<li>
+ ISBN/ISSN/UPC/EAN/VISA/etc, for catching human-entry errors.
+ </li>
+<li>
+ hash functions as in hash tables, which only care about distribution.
+ </li>
+<li>
+ checksums like CRC32, for catching data transmission errors.
+ </li>
+<li>
+ and cryptographic hash functions, the only ones useful against
+ malicious adversaries.
+ </li>
+</ol></div>
+ </li></ul></div>
+<p>
+ This project is directed first at the first class. Others might be the subject
+ of future additions or other libraries.
+ </p>
+<a name="checks.checks.rationale.function_parameter"></a><h5>
+<a name="checks.checks.rationale.function_parameter-heading"></a>
+ <a class="link" href="rationale.html#checks.checks.rationale.function_parameter">Function parameter</a>
+ </h5>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ For more flexibility, this library uses the range concept. So you can
+ use old C-array or std::string,...
+ </li>
+<li>
+ If there is only one check digit in the number, this check digit is returned
+ in the same raw type than in the range sequence.
+ </li>
+<li>
+ If there is more than one check digit, an extra parameter is required.
+ This must be an OutputIterator, the function returns an iterator at one
+ pass the end of the check digit stored into this iterator.
+ </li>
+</ul></div>
+<a name="checks.checks.rationale.use_of_template_parameters_to_pass_size_and_weights"></a><h5>
+<a name="checks.checks.rationale.use_of_template_parameters_to_pass_size_and_weights-heading"></a>
+ <a class="link" href="rationale.html#checks.checks.rationale.use_of_template_parameters_to_pass_size_and_weights">Use
+ of template parameters to pass size and weights</a>
+ </h5>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ This feature means that much of the commonality between the various check
+ systems can be implemented in one place and reused.
+ </li>
+<li>
+ It also makes it possible to implement other check systems (of which
+ there are very many in use worldwide) and to devise new ones without
+ writing new code.
+ </li>
+</ul></div>
+<a name="checks.checks.rationale.performance"></a><h5>
+<a name="checks.checks.rationale.performance-heading"></a>
+ <a class="link" href="rationale.html#checks.checks.rationale.performance">Performance</a>
+ </h5>
+<div class="itemizedlist"><ul type="disc"><li>
+ Performance is not a major objective, but all the current algorithms
+ are implemented with a <span class="emphasis"><em>O(n)</em></span> complexity, where <span class="emphasis"><em>n</em></span>
+ is the number of digits or characters.
+ </li></ul></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2011 Pierre Talbot<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="refs.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../checks.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="history.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/refs.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/refs.html 2011-09-05 13:49:22 EDT (Mon, 05 Sep 2011)
@@ -0,0 +1,56 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>References</title>
+<link rel="stylesheet" href="../.././boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../index.html" title="Checks">
+<link rel="up" href="../checks.html" title="Checks">
+<link rel="prev" href="faqs.html" title="FAQs">
+<link rel="next" href="rationale.html" title="Rationale">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="" width="180" height="90" src="../.././images/proposed_for_boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="faqs.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../checks.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="rationale.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="checks.checks.refs"></a><a class="link" href="refs.html" title="References">References</a>
+</h3></div></div></div>
+<div class="orderedlist"><ol type="1">
+<li>
+ <a href="http://en.wikipedia.org/wiki/Routing_transit_number" target="_top">Routing
+ transit number (RTN)</a>
+ </li>
+<li>
+ <a href="http://en.wikipedia.org/wiki/Vehicle_identification_number" target="_top">Vehicle
+ Identification Number (VIN)</a>
+ </li>
+<li>
+ Code 39
+ </li>
+</ol></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2011 Pierre Talbot<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="faqs.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../checks.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="rationale.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/status.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/status.html 2011-09-05 13:49:22 EDT (Mon, 05 Sep 2011)
@@ -0,0 +1,80 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Status</title>
+<link rel="stylesheet" href="../.././boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../index.html" title="Checks">
+<link rel="up" href="../checks.html" title="Checks">
+<link rel="prev" href="preface.html" title="Preface">
+<link rel="next" href="conventions.html" title="Document Conventions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="" width="180" height="90" src="../.././images/proposed_for_boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="preface.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../checks.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="conventions.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="checks.checks.status"></a><a class="link" href="status.html" title="Status">Status</a>
+</h3></div></div></div>
+<div class="important"><table border="0" summary="Important">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../images/important.png"></td>
+<th align="left">Important</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+ This is not (yet) an official Boost library. It was a <a href="http://code.google.com/soc/2011/boost/about.html" target="_top">Google
+ Summer of Code project (2011)</a> whose mentor organization was Boost.
+ It remains a library under construction, the code is quite functional,
+ but interfaces, library structure, and names may still be changed without
+ notice. The current version is available at
+ </p>
+<p>
+ <span class="bold"><strong>https://svn.boost.org/svn/boost/sandbox/SOC/2011/checks/libs/checks/doc/pdf/checks.pdf
+ PDF documentation.</strong></span>
+ </p>
+<p>
+ <span class="bold"><strong>https://svn.boost.org/svn/boost/sandbox/SOC/2011/checks/libs/checks/doc/html/index.html
+ HTML documentation.</strong></span>
+ </p>
+<p>
+ <span class="bold"><strong>https://svn.boost.org/svn/boost/sandbox/SOC/2011/checks/boost/checks/boost/
+ Boost Sandbox checks source code.</strong></span>
+ </p>
+</td></tr>
+</table></div>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ Comments and suggestions (even bugs!) to Pierre Talbot pierre.talbot.6114
+ (at) herslibramont (dot) be
+ </p></td></tr>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2011 Pierre Talbot<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="preface.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../checks.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="conventions.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/tutorial.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/tutorial.html 2011-09-05 13:49:22 EDT (Mon, 05 Sep 2011)
@@ -0,0 +1,59 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Tutorial</title>
+<link rel="stylesheet" href="../.././boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../index.html" title="Checks">
+<link rel="up" href="../checks.html" title="Checks">
+<link rel="prev" href="conventions.html" title="Document Conventions">
+<link rel="next" href="tutorial/start.html" title="Starting with Checks">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="" width="180" height="90" src="../.././images/proposed_for_boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="conventions.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../checks.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="tutorial/start.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="checks.checks.tutorial"></a><a class="link" href="tutorial.html" title="Tutorial">Tutorial</a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section">Starting with Checks</span></dt>
+<dt><span class="section"><a href="tutorial/extending_the_library.html">Extending
+ the library</a></span></dt>
+</dl></div>
+<p>
+ In this section, we will quickly learn to use this library. But most important
+ is the following quote of Lao Tseu :
+ </p>
+<p>
+ &#8220;<span class="quote">Give a Man a Fish, Feed Him For a Day. Teach a Man to Fish, Feed Him
+ For a Lifetime.</span>&#8221;
+ </p>
+<p>
+ So we'll also learn to extend this library and create your own check functions.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2011 Pierre Talbot<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="conventions.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../checks.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="tutorial/start.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/tutorial/extending_the_library.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/tutorial/extending_the_library.html 2011-09-05 13:49:22 EDT (Mon, 05 Sep 2011)
@@ -0,0 +1,634 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Extending the library</title>
+<link rel="stylesheet" href="../../.././boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../../index.html" title="Checks">
+<link rel="up" href="../tutorial.html" title="Tutorial">
+<link rel="prev" href="start.html" title="Starting with Checks">
+<link rel="next" href="../algorithm.html" title="Common check algorithms">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="" width="180" height="90" src="../../.././images/proposed_for_boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="start.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorial.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="../algorithm.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="checks.checks.tutorial.extending_the_library"></a><a class="link" href="extending_the_library.html" title="Extending the library">Extending
+ the library</a>
+</h4></div></div></div>
+<p>
+ The re-usability of this library is an important feature. In fact, we can't
+ code every existing check systems, this is why we will learn how to extend
+ this library to cater for existing check systems not yet provided, and
+ even to create your own check system.
+ </p>
+<a name="checks.checks.tutorial.extending_the_library.example_with_the_routing_transit_number"></a><h6>
+<a name="checks.checks.tutorial.extending_the_library.example_with_the_routing_transit_number-heading"></a>
+ <a class="link" href="extending_the_library.html#checks.checks.tutorial.extending_the_library.example_with_the_routing_transit_number">Example
+ with the Routing transit number</a>
+ </h6>
+<p>
+ We will show how to extend this library with the <a href="http://en.wikipedia.org/wiki/Routing_transit_number" target="_top">Routing
+ transit number (RTN)</a>. The first thing to do is to read the check
+ digit calculation procedure. So we can notice few points:
+ </p>
+<div class="orderedlist"><ol type="1">
+<li>
+ It is a weighted sum and the weight sequence is: 3,7,1.
+ </li>
+<li>
+ It is using a modulus 10.
+ </li>
+<li>
+ The size of the RTN is 9.
+ </li>
+</ol></div>
+<p>
+ We can create the rtn.hpp file.
+ </p>
+<p>
+ The library supports the weighted sum and the modulus 10 algorithm, so
+ the work will be easy. We can run through the number from right to left
+ or left to right (sense) depending on the weight sequence. We will begin
+ with the leftmost digit because it is more "readable" (at least
+ for Latin language uers).
+ </p>
+<p>
+ We need these include files.
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">checks</span><span class="special">/</span><span class="identifier">modulus10</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">checks</span><span class="special">/</span><span class="identifier">basic_checks</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+</pre>
+<p>
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">RTN_SIZE</span> <span class="number">9</span>
+<span class="preprocessor">#define</span> <span class="identifier">RTN_SIZE_WITHOUT_CHECKDIGIT</span> <span class="number">8</span>
+
+<span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">checks</span><span class="special">::</span><span class="identifier">weight</span><span class="special">&lt;</span><span class="number">3</span><span class="special">,</span><span class="number">7</span><span class="special">,</span><span class="number">1</span><span class="special">&gt;</span> <span class="identifier">rtn_weight</span> <span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">checks</span><span class="special">::</span><span class="identifier">leftmost</span> <span class="identifier">rtn_sense</span> <span class="special">;</span>
+</pre>
+<p>
+ </p>
+<p>
+ We must put the weights and the sense together into an algorithm type:
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">checks</span><span class="special">::</span><span class="identifier">modulus10_algorithm</span> <span class="special">&lt;</span> <span class="identifier">rtn_weight</span><span class="special">,</span> <span class="identifier">rtn_sense</span><span class="special">,</span> <span class="number">0</span><span class="special">&gt;</span> <span class="identifier">rtn_check_algorithm</span> <span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">checks</span><span class="special">::</span><span class="identifier">modulus10_algorithm</span> <span class="special">&lt;</span> <span class="identifier">rtn_weight</span><span class="special">,</span> <span class="identifier">rtn_sense</span><span class="special">,</span> <span class="number">0</span><span class="special">&gt;</span> <span class="identifier">rtn_compute_algorithm</span> <span class="special">;</span>
+</pre>
+<p>
+ </p>
+<p>
+ As the hard part is already done, we can build our check functions now:
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">check_range</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="identifier">check_rtn</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">check_range</span><span class="special">&amp;</span> <span class="identifier">check_seq</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">checks</span><span class="special">::</span><span class="identifier">check_sequence</span><span class="special">&lt;</span><span class="identifier">rtn_check_algorithm</span><span class="special">,</span> <span class="identifier">RTN_SIZE</span><span class="special">&gt;</span> <span class="special">(</span> <span class="identifier">check_seq</span> <span class="special">)</span> <span class="special">;</span>
+<span class="special">}</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">check_range</span><span class="special">&gt;</span>
+<span class="keyword">typename</span> <span class="identifier">rtn_compute_algorithm</span><span class="special">::</span><span class="identifier">checkdigit</span><span class="special">&lt;</span><span class="identifier">check_range</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">compute_rtn</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">check_range</span><span class="special">&amp;</span> <span class="identifier">check_seq</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">checks</span><span class="special">::</span><span class="identifier">compute_checkdigit</span><span class="special">&lt;</span><span class="identifier">rtn_compute_algorithm</span><span class="special">,</span> <span class="identifier">RTN_SIZE_WITHOUT_CHECKDIGIT</span><span class="special">&gt;</span> <span class="special">(</span> <span class="identifier">check_seq</span> <span class="special">)</span> <span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<p>
+ And that's all!
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">checks</span><span class="special">::</span><span class="identifier">compute_checkdigit</span></code> and <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">checks</span><span class="special">::</span><span class="identifier">check_sequence</span></code> are both defined in
+ basic_checks.hpp
+ </p></td></tr>
+</table></div>
+<p>
+ We can code a RTN sample in the file checks_tutorial.cpp:
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">rtn_number</span> <span class="special">=</span> <span class="string">"111000025"</span> <span class="special">;</span>
+<span class="keyword">if</span> <span class="special">(</span> <span class="identifier">check_rtn</span> <span class="special">(</span> <span class="identifier">rtn_number</span> <span class="special">)</span> <span class="special">)</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"The Routing Transit Number: "</span> <span class="special">&lt;&lt;</span> <span class="identifier">rtn_number</span> <span class="special">&lt;&lt;</span> <span class="string">" is valid."</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span> <span class="special">;</span>
+<span class="identifier">rtn_number</span> <span class="special">=</span> <span class="string">"11100002"</span><span class="special">;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"The check digit of the number: "</span> <span class="special">&lt;&lt;</span> <span class="identifier">rtn_number</span> <span class="special">&lt;&lt;</span> <span class="string">" is "</span> <span class="special">&lt;&lt;</span> <span class="identifier">compute_rtn</span> <span class="special">(</span><span class="identifier">rtn_number</span> <span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="string">"."</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span> <span class="special">;</span>
+</pre>
+<p>
+ </p>
+<p>
+ and the output is:
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="identifier">The</span> <span class="identifier">Routing</span> <span class="identifier">Transit</span> <span class="identifier">Number</span><span class="special">:</span> <span class="number">111000025</span> <span class="identifier">is</span> <span class="identifier">valid</span><span class="special">.</span>
+<span class="identifier">The</span> <span class="identifier">check</span> <span class="identifier">digit</span> <span class="identifier">of</span> <span class="identifier">the</span> <span class="identifier">number</span><span class="special">:</span> <span class="number">11100002</span> <span class="identifier">is</span> <span class="number">5.</span>
+
+</pre>
+<p>
+ </p>
+<a name="checks.checks.tutorial.extending_the_library.example_with_the_vehicle_identification_number__vin_"></a><h6>
+<a name="checks.checks.tutorial.extending_the_library.example_with_the_vehicle_identification_number__vin_-heading"></a>
+ <a class="link" href="extending_the_library.html#checks.checks.tutorial.extending_the_library.example_with_the_vehicle_identification_number__vin_">Example
+ with the Vehicle Identification Number (VIN)</a>
+ </h6>
+<p>
+ This second example is quite more complex because the <a href="http://en.wikipedia.org/wiki/Vehicle_identification_number" target="_top">Vehicle
+ Identification Number (VIN)</a> is not a default implemented check
+ algorithm. Like for the <a href="http://en.wikipedia.org/wiki/Routing_transit_number" target="_top">Routing
+ transit number (RTN)</a>, we must read the documentation first, and
+ then we can extract a few elements:
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ The number contains letters that must be translated to compute or check
+ the check digit.
+ </li>
+<li>
+ The check digit is not at the end of the number. It's at the 9th position,
+ in the midst of the number.
+ </li>
+<li>
+ The letters Q, I, or O are not valid (presumably to avoid confusion
+ with digits 0 and 1).
+ </li>
+<li>
+ This uses a custom modulus 11 algorithm, so the check digit range is
+ [0..9, X]
+ </li>
+</ul></div>
+<p>
+ The library already has support for modulus 11 algorithm in the header:
+
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">checks</span><span class="special">/</span><span class="identifier">modulus11</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></pre>
+<p>
+ </p>
+<p>
+ We create the vin.hpp file.
+ Step by step, let's now complete this file.
+ </p>
+<div class="orderedlist"><ol type="1">
+<li>
+ The weight sequence is : 2,3,4,5,6,7,8,9,10.
+ </li>
+<li>
+ We run through the sequence from right to left.
+ </li>
+</ol></div>
+<p>
+ We create the types associated with these two observations:
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">checks</span><span class="special">/</span><span class="identifier">modulus11</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">checks</span><span class="special">/</span><span class="identifier">basic_checks</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="preprocessor">#define</span> <span class="identifier">VIN_SIZE</span> <span class="number">17</span>
+<span class="preprocessor">#define</span> <span class="identifier">VIN_SIZE_WITHOUT_CHECKDIGIT</span> <span class="number">16</span>
+<span class="preprocessor">#define</span> <span class="identifier">VIN_CHECKDIGIT_POS</span> <span class="number">8</span>
+
+<span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">checks</span><span class="special">::</span><span class="identifier">weight</span><span class="special">&lt;</span><span class="number">2</span><span class="special">,</span><span class="number">3</span><span class="special">,</span><span class="number">4</span><span class="special">,</span><span class="number">5</span><span class="special">,</span><span class="number">6</span><span class="special">,</span><span class="number">7</span><span class="special">,</span><span class="number">8</span><span class="special">,</span><span class="number">9</span><span class="special">,</span><span class="number">10</span><span class="special">&gt;</span> <span class="identifier">vin_weight</span> <span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">checks</span><span class="special">::</span><span class="identifier">rightmost</span> <span class="identifier">vin_sense</span> <span class="special">;</span>
+</pre>
+<p>
+ </p>
+<p>
+ We will now attack the harder part of the work: we need to build the adapted
+ structure. To create our own algorithm, first we need to declare the structure
+ with inheritance:
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">unsigned</span> <span class="keyword">int</span> <span class="identifier">number_of_virtual_value_skipped</span> <span class="special">=</span> <span class="number">0</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">vin_algorithm</span> <span class="special">:</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">checks</span><span class="special">::</span><span class="identifier">modulus11_algorithm</span><span class="special">&lt;</span><span class="identifier">vin_weight</span><span class="special">,</span> <span class="identifier">vin_sense</span><span class="special">,</span> <span class="identifier">number_of_virtual_value_skipped</span><span class="special">&gt;</span>
+</pre>
+<p>
+ </p>
+<p>
+ The classic modulus 11 algorithm doesn't permit the translation of letters
+ (only the 'x' if it's the check digit). But the VIN number uses nearly
+ the full latin alphabet (they omitted O, Q, and I to avoid confusion with
+ numerals 1 and 0). We choose to launch the std::invalid_argument exception
+ (that has the effect of stopping the algorithm) if one of these letter
+ is encountered. The other letters must be transformed using this table:
+ </p>
+<div class="table">
+<a name="checks.checks.tutorial.extending_the_library.id"></a><p class="title"><b>Table&#160;1.&#160;Letter to digit VIN conversion table</b></p>
+<div class="table-contents"><table class="table" summary="Letter to digit VIN conversion table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Conversion value
+ </p>
+ </th>
+<th>
+ <p>
+ 1
+ </p>
+ </th>
+<th>
+ <p>
+ 2
+ </p>
+ </th>
+<th>
+ <p>
+ 3
+ </p>
+ </th>
+<th>
+ <p>
+ 4
+ </p>
+ </th>
+<th>
+ <p>
+ 5
+ </p>
+ </th>
+<th>
+ <p>
+ 6
+ </p>
+ </th>
+<th>
+ <p>
+ 7
+ </p>
+ </th>
+<th>
+ <p>
+ 8
+ </p>
+ </th>
+<th>
+ <p>
+ 9
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ </td>
+<td>
+ <p>
+ A (1)
+ </p>
+ </td>
+<td>
+ <p>
+ B (2)
+ </p>
+ </td>
+<td>
+ <p>
+ C (3)
+ </p>
+ </td>
+<td>
+ <p>
+ D (4)
+ </p>
+ </td>
+<td>
+ <p>
+ E (5)
+ </p>
+ </td>
+<td>
+ <p>
+ F (6)
+ </p>
+ </td>
+<td>
+ <p>
+ G (7)
+ </p>
+ </td>
+<td>
+ <p>
+ H (8)
+ </p>
+ </td>
+<td>
+ <p>
+ I (N/A)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ </td>
+<td>
+ <p>
+ J (10)
+ </p>
+ </td>
+<td>
+ <p>
+ K (11)
+ </p>
+ </td>
+<td>
+ <p>
+ L (12)
+ </p>
+ </td>
+<td>
+ <p>
+ M (13)
+ </p>
+ </td>
+<td>
+ <p>
+ N (14)
+ </p>
+ </td>
+<td>
+ <p>
+ O (N/A)
+ </p>
+ </td>
+<td>
+ <p>
+ P (16)
+ </p>
+ </td>
+<td>
+ <p>
+ Q (N/A)
+ </p>
+ </td>
+<td>
+ <p>
+ R (18)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ S (19)
+ </p>
+ </td>
+<td>
+ <p>
+ T (20)
+ </p>
+ </td>
+<td>
+ <p>
+ U (21)
+ </p>
+ </td>
+<td>
+ <p>
+ V (22)
+ </p>
+ </td>
+<td>
+ <p>
+ W (23)
+ </p>
+ </td>
+<td>
+ <p>
+ X (24)
+ </p>
+ </td>
+<td>
+ <p>
+ Y (25)
+ </p>
+ </td>
+<td>
+ <p>
+ Z (26)
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><p>
+ We need to find an algorithm that converts a letter into its conversion
+ value, the following function does the job:
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="identifier">X</span> <span class="special">=</span> <span class="identifier">X</span> <span class="special">%</span> <span class="number">10</span> <span class="special">+</span> <span class="identifier">X</span><span class="special">/</span><span class="number">10</span> <span class="special">+</span> <span class="special">((</span><span class="identifier">X</span> <span class="special">&gt;</span> <span class="number">18</span><span class="special">)</span> <span class="special">?</span> <span class="number">1</span> <span class="special">:</span> <span class="number">0</span><span class="special">).</span>
+</pre>
+<p>
+ </p>
+<p>
+ Also the check digit can only be in the range [0..9,X], so we choose to
+ launch the std::invalid_argument exception if another letter is read. With
+ the check digit, and following the modulus 11 algorithm, if the check digit
+ is equal to X, the integer value is 10. But this algorithm is different
+ and we must subtract the check digit from 11.
+ </p>
+<p>
+ Let's see the code now:
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">value</span><span class="special">&gt;</span>
+<span class="keyword">static</span> <span class="keyword">int</span> <span class="identifier">translate_to_valid_value</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">value</span> <span class="special">&amp;</span><span class="identifier">current_value</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">unsigned</span> <span class="keyword">int</span> <span class="identifier">valid_value_counter</span> <span class="special">)</span>
+<span class="special">{</span>
+ <span class="keyword">int</span> <span class="identifier">valid_value</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
+ <span class="keyword">try</span>
+ <span class="special">{</span>
+ <span class="identifier">valid_value</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">lexical_cast</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;(</span> <span class="identifier">current_value</span> <span class="special">)</span> <span class="special">;</span>
+ <span class="special">}</span>
+ <span class="keyword">catch</span><span class="special">(</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">bad_lexical_cast</span> <span class="special">)</span>
+ <span class="special">{</span>
+ <span class="comment">// Transform the value to be between 1 and 26.</span>
+ <span class="keyword">if</span><span class="special">(</span> <span class="identifier">current_value</span> <span class="special">&gt;=</span> <span class="char">'a'</span> <span class="special">&amp;&amp;</span> <span class="identifier">current_value</span> <span class="special">&lt;=</span> <span class="char">'z'</span> <span class="special">)</span>
+ <span class="identifier">valid_value</span> <span class="special">=</span> <span class="identifier">current_value</span> <span class="special">-</span> <span class="char">'a'</span> <span class="special">+</span> <span class="number">1</span> <span class="special">;</span>
+ <span class="keyword">else</span> <span class="keyword">if</span><span class="special">(</span> <span class="identifier">current_value</span> <span class="special">&gt;=</span> <span class="char">'A'</span> <span class="special">&amp;&amp;</span> <span class="identifier">current_value</span> <span class="special">&lt;=</span> <span class="char">'Z'</span> <span class="special">)</span>
+ <span class="identifier">valid_value</span> <span class="special">=</span> <span class="identifier">current_value</span> <span class="special">-</span> <span class="char">'A'</span> <span class="special">+</span> <span class="number">1</span> <span class="special">;</span>
+ <span class="keyword">else</span>
+ <span class="keyword">throw</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">checks</span><span class="special">::</span><span class="identifier">translation_exception</span><span class="special">()</span> <span class="special">;</span>
+
+ <span class="keyword">if</span> <span class="special">(</span> <span class="identifier">valid_value</span> <span class="special">==</span> <span class="number">9</span> <span class="special">||</span> <span class="identifier">valid_value</span> <span class="special">==</span> <span class="number">15</span> <span class="special">||</span> <span class="identifier">valid_value</span> <span class="special">==</span> <span class="number">17</span><span class="special">)</span>
+ <span class="keyword">throw</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">invalid_argument</span><span class="special">(</span> <span class="string">"The letter I, O and Q are not allowed."</span> <span class="special">);</span>
+
+ <span class="keyword">if</span> <span class="special">(</span> <span class="identifier">valid_value_counter</span> <span class="special">==</span> <span class="identifier">VIN_CHECKDIGIT_POS</span> <span class="special">&amp;&amp;</span> <span class="identifier">number_of_virtual_value_skipped</span> <span class="special">==</span> <span class="number">0</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="keyword">if</span> <span class="special">(</span> <span class="identifier">valid_value</span> <span class="special">!=</span> <span class="number">24</span> <span class="special">)</span>
+ <span class="keyword">throw</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">invalid_argument</span><span class="special">(</span> <span class="string">"The check digit should be a digit or X or x."</span> <span class="special">);</span>
+ <span class="keyword">else</span>
+ <span class="identifier">valid_value</span> <span class="special">=</span> <span class="number">10</span> <span class="special">;</span>
+ <span class="identifier">valid_value</span> <span class="special">=</span> <span class="number">11</span> <span class="special">-</span> <span class="identifier">valid_value</span> <span class="special">;</span>
+ <span class="special">}</span>
+ <span class="keyword">else</span>
+ <span class="identifier">valid_value</span> <span class="special">=</span> <span class="identifier">valid_value</span> <span class="special">%</span> <span class="number">10</span> <span class="special">+</span> <span class="identifier">valid_value</span> <span class="special">/</span> <span class="number">10</span> <span class="special">+</span> <span class="special">(</span><span class="identifier">valid_value</span> <span class="special">&gt;</span> <span class="number">18</span><span class="special">)</span> <span class="special">;</span>
+ <span class="special">}</span>
+ <span class="keyword">if</span><span class="special">(</span> <span class="identifier">valid_value</span> <span class="special">&gt;</span> <span class="number">10</span><span class="special">)</span>
+ <span class="keyword">throw</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">checks</span><span class="special">::</span><span class="identifier">translation_exception</span><span class="special">()</span> <span class="special">;</span>
+
+ <span class="keyword">return</span> <span class="identifier">valid_value</span> <span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<p>
+ The operation function is partially copied from the function <code class="computeroutput"><span class="identifier">operate_on_valid_value</span></code> in the file weighted_sum.hpp.
+ We need to control the fact that the check digit is in the midst of the
+ number. If there is a check digit into the sequence, we mustn't apply a
+ weight, and we must avoid shift of the full weight sequence for the future
+ iteration.
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">operate_on_valid_value</span><span class="special">(</span> <span class="keyword">const</span> <span class="keyword">int</span> <span class="identifier">current_valid_value</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">unsigned</span> <span class="keyword">int</span> <span class="identifier">valid_value_counter</span><span class="special">,</span> <span class="keyword">int</span> <span class="special">&amp;</span><span class="identifier">checksum</span> <span class="special">)</span>
+<span class="special">{</span>
+ <span class="keyword">if</span><span class="special">(</span> <span class="identifier">number_of_virtual_value_skipped</span> <span class="special">==</span> <span class="number">0</span> <span class="special">&amp;&amp;</span> <span class="identifier">valid_value_counter</span> <span class="special">==</span> <span class="identifier">VIN_CHECKDIGIT_POS</span> <span class="special">)</span>
+ <span class="identifier">checksum</span> <span class="special">+=</span> <span class="identifier">current_valid_value</span> <span class="special">;</span>
+ <span class="keyword">else</span>
+ <span class="special">{</span>
+ <span class="keyword">unsigned</span> <span class="keyword">int</span> <span class="identifier">weight_position</span> <span class="special">=</span> <span class="identifier">valid_value_counter</span> <span class="special">-</span> <span class="special">(</span><span class="identifier">number_of_virtual_value_skipped</span> <span class="special">==</span> <span class="number">0</span> <span class="special">&amp;&amp;</span> <span class="identifier">valid_value_counter</span> <span class="special">&gt;</span> <span class="identifier">VIN_CHECKDIGIT_POS</span><span class="special">)</span> <span class="special">;</span>
+ <span class="keyword">int</span> <span class="identifier">current_weight</span> <span class="special">=</span> <span class="identifier">vin_weight</span><span class="special">::</span><span class="identifier">weight_associated_with_pos</span><span class="special">(</span> <span class="identifier">weight_position</span> <span class="special">)</span> <span class="special">;</span>
+ <span class="identifier">checksum</span> <span class="special">+=</span> <span class="identifier">current_valid_value</span> <span class="special">*</span> <span class="identifier">current_weight</span> <span class="special">;</span>
+ <span class="special">}</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<p>
+ Finally the calculation of the check digit is different from the classic
+ modulus 11 algorithm, so we need to re-implement it:
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">checkdigit</span><span class="special">&gt;</span>
+<span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">checkdigit</span> <span class="identifier">compute_checkdigit</span><span class="special">(</span> <span class="keyword">int</span> <span class="identifier">checksum</span> <span class="special">)</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">checks</span><span class="special">::</span><span class="identifier">modulus11_algorithm</span><span class="special">&lt;</span><span class="identifier">vin_weight</span><span class="special">,</span> <span class="identifier">vin_sense</span><span class="special">,</span> <span class="identifier">number_of_virtual_value_skipped</span><span class="special">&gt;</span> <span class="identifier">mod11</span> <span class="special">;</span>
+ <span class="keyword">return</span> <span class="identifier">mod11</span><span class="special">::</span><span class="identifier">translate_checkdigit</span><span class="special">&lt;</span><span class="identifier">checkdigit</span><span class="special">&gt;(</span><span class="identifier">checksum</span> <span class="special">%</span> <span class="number">11</span><span class="special">)</span> <span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<p>
+ We can now write the VIN type algorithm:
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">vin_algorithm</span> <span class="special">&lt;</span><span class="number">0</span><span class="special">&gt;</span> <span class="identifier">vin_check_algorithm</span> <span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">vin_algorithm</span> <span class="special">&lt;</span><span class="number">1</span><span class="special">&gt;</span> <span class="identifier">vin_compute_algorithm</span> <span class="special">;</span>
+</pre>
+<p>
+ </p>
+<p>
+ And write the functions:
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">check_range</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="identifier">check_vin</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">check_range</span><span class="special">&amp;</span> <span class="identifier">check_seq</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">checks</span><span class="special">::</span><span class="identifier">check_sequence</span><span class="special">&lt;</span><span class="identifier">vin_check_algorithm</span><span class="special">,</span> <span class="identifier">VIN_SIZE</span><span class="special">&gt;</span> <span class="special">(</span> <span class="identifier">check_seq</span> <span class="special">)</span> <span class="special">;</span>
+<span class="special">}</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">check_range</span><span class="special">&gt;</span>
+<span class="keyword">typename</span> <span class="identifier">vin_compute_algorithm</span><span class="special">::</span><span class="identifier">checkdigit</span><span class="special">&lt;</span><span class="identifier">check_range</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">compute_vin</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">check_range</span><span class="special">&amp;</span> <span class="identifier">check_seq</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">checks</span><span class="special">::</span><span class="identifier">compute_checkdigit</span><span class="special">&lt;</span><span class="identifier">vin_compute_algorithm</span><span class="special">,</span> <span class="identifier">VIN_SIZE_WITHOUT_CHECKDIGIT</span><span class="special">&gt;</span> <span class="special">(</span> <span class="identifier">check_seq</span> <span class="special">)</span> <span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ This algorithm doesn't support full integer array that are not pre-computed
+ (Example: (A) 10 -&gt; 1 ; (M) 13 -&gt; 4). It can be an exercise for
+ the reader.
+ </p></td></tr>
+</table></div>
+<p>
+ Some basic examples are coded in the file checks_tutorial.cpp:
+ </p>
+<p>
+ [vin_example]
+ </p>
+<p>
+ that provides the following output:
+ </p>
+<p>
+ [vin_example_output]
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2011 Pierre Talbot<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="start.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorial.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="../algorithm.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/tutorial/start.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/tutorial/start.html 2011-09-05 13:49:22 EDT (Mon, 05 Sep 2011)
@@ -0,0 +1,280 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Starting with Checks</title>
+<link rel="stylesheet" href="../../.././boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../../index.html" title="Checks">
+<link rel="up" href="../tutorial.html" title="Tutorial">
+<link rel="prev" href="../tutorial.html" title="Tutorial">
+<link rel="next" href="extending_the_library.html" title="Extending the library">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="" width="180" height="90" src="../../.././images/proposed_for_boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../tutorial.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorial.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="extending_the_library.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="checks.checks.tutorial.start"></a><a class="link" href="start.html" title="Starting with Checks">Starting with Checks</a>
+</h4></div></div></div>
+<p>
+ There are two main functions for each check system.
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ to validate a sequence: <code class="computeroutput"><span class="identifier">check_</span><span class="special">&lt;</span><span class="identifier">number</span><span class="special">&gt;</span></code>.
+ </li>
+<li>
+ to provides a check digit for a sequence: <code class="computeroutput"><span class="identifier">compute_</span><span class="special">&lt;</span><span class="identifier">number</span><span class="special">&gt;</span></code>.
+ </li>
+</ul></div>
+<p>
+ All the examples of this section are in the file checks_examples.cpp.
+ </p>
+<a name="checks.checks.tutorial.start.credit_card_numbers_check"></a><h6>
+<a name="checks.checks.tutorial.start.credit_card_numbers_check-heading"></a>
+ <a class="link" href="start.html#checks.checks.tutorial.start.credit_card_numbers_check">Credit
+ card numbers check</a>
+ </h6>
+<p>
+ We will start with some credit card numbers checking.
+ </p>
+<p>
+ Please first include these headers:
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">checks</span><span class="special">/</span><span class="identifier">visa</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">checks</span><span class="special">/</span><span class="identifier">amex</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">checks</span><span class="special">/</span><span class="identifier">mastercard</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+</pre>
+<p>
+ </p>
+<p>
+ Three credit card checks are implemented: <a href="http://en.wikipedia.org/wiki/Visa_credit_card" target="_top">Visa
+ credit card</a>, <a href="http://en.wikipedia.org/wiki/Mastercard" target="_top">Mastercard
+ credit card</a>, and American Express. The following examples show
+ us how to compute and check numbers:
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">visa_credit_card_number</span> <span class="special">=</span> <span class="string">"4000 0807 0620 0007"</span> <span class="special">;</span>
+<span class="keyword">if</span><span class="special">(</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">checks</span><span class="special">::</span><span class="identifier">check_visa</span><span class="special">(</span> <span class="identifier">visa_credit_card_number</span> <span class="special">)</span> <span class="special">)</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"The VISA credit card number : "</span> <span class="special">&lt;&lt;</span> <span class="identifier">visa_credit_card_number</span> <span class="special">&lt;&lt;</span> <span class="string">" is valid."</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span> <span class="special">;</span>
+
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">amex_credit_card_number</span> <span class="special">=</span> <span class="string">"3458 2531 9273 09"</span> <span class="special">;</span>
+<span class="keyword">char</span> <span class="identifier">amex_checkdigit</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">checks</span><span class="special">::</span><span class="identifier">compute_amex</span><span class="special">(</span> <span class="identifier">amex_credit_card_number</span> <span class="special">)</span> <span class="special">;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"The check digit of the American Express number : "</span> <span class="special">&lt;&lt;</span> <span class="identifier">amex_credit_card_number</span> <span class="special">&lt;&lt;</span> <span class="string">" is "</span> <span class="special">&lt;&lt;</span> <span class="identifier">amex_checkdigit</span> <span class="special">&lt;&lt;</span> <span class="string">"."</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span> <span class="special">;</span>
+
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">mastercard_credit_card_number</span> <span class="special">=</span> <span class="string">"5320 1274 8562 157"</span> <span class="special">;</span>
+<span class="identifier">mastercard_credit_card_number</span> <span class="special">+=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">checks</span><span class="special">::</span><span class="identifier">compute_mastercard</span><span class="special">(</span> <span class="identifier">mastercard_credit_card_number</span> <span class="special">);</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"This is a valid Mastercard number : "</span> <span class="special">&lt;&lt;</span> <span class="identifier">mastercard_credit_card_number</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span> <span class="special">;</span>
+
+</pre>
+<p>
+ </p>
+<p>
+ This provides the output:
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="identifier">The</span> <span class="identifier">VISA</span> <span class="identifier">credit</span> <span class="identifier">card</span> <span class="identifier">number</span> <span class="special">:</span> <span class="number">4000</span> <span class="number">0807</span> <span class="number">0620</span> <span class="number">0007</span> <span class="identifier">is</span> <span class="identifier">valid</span><span class="special">.</span>
+<span class="identifier">The</span> <span class="identifier">check</span> <span class="identifier">digit</span> <span class="identifier">of</span> <span class="identifier">the</span> <span class="identifier">American</span> <span class="identifier">Express</span> <span class="identifier">number</span> <span class="special">:</span> <span class="number">3458</span> <span class="number">2531</span> <span class="number">9273</span> <span class="number">09</span> <span class="identifier">is</span> <span class="number">4.</span>
+<span class="identifier">This</span> <span class="identifier">is</span> <span class="identifier">a</span> <span class="identifier">valid</span> <span class="identifier">Mastercard</span> <span class="identifier">number</span> <span class="special">:</span> <span class="number">5320</span> <span class="number">1274</span> <span class="number">8562</span> <span class="number">1570</span>
+
+</pre>
+<p>
+ </p>
+<a name="checks.checks.tutorial.start.multi_check_digits"></a><h6>
+<a name="checks.checks.tutorial.start.multi_check_digits-heading"></a>
+ <a class="link" href="start.html#checks.checks.tutorial.start.multi_check_digits">Multi check
+ digits</a>
+ </h6>
+<p>
+ Some checks use two check digits, for example, the mod97-10 algorithm used
+ to calculate the check digits of the <a href="http://en.wikipedia.org/wiki/International_Bank_Account_Number" target="_top">International
+ Bank Account Number (IBAN)</a>.
+ </p>
+<p>
+ We add an extra parameter to retrieve the two check digits. The include
+ file is:
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">checks</span><span class="special">/</span><span class="identifier">modulus97</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+</pre>
+<p>
+ </p>
+<p>
+ and the next example shows us how to use this function:
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">mod97_10_number</span> <span class="special">=</span> <span class="string">"1234567890123456789"</span> <span class="special">;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">mod97_10_checkdigits</span> <span class="special">=</span> <span class="string">" "</span> <span class="special">;</span>
+<span class="identifier">boost</span><span class="special">::</span><span class="identifier">checks</span><span class="special">::</span><span class="identifier">compute_mod97_10</span> <span class="special">(</span> <span class="identifier">mod97_10_number</span> <span class="special">,</span> <span class="identifier">mod97_10_checkdigits</span><span class="special">.</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">)</span> <span class="special">;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"The number : "</span> <span class="special">&lt;&lt;</span> <span class="identifier">mod97_10_number</span> <span class="special">&lt;&lt;</span> <span class="string">" have the check digits : "</span> <span class="special">&lt;&lt;</span> <span class="identifier">mod97_10_checkdigits</span> <span class="special">&lt;&lt;</span> <span class="string">"."</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span> <span class="special">;</span>
+
+<span class="identifier">mod97_10_number</span> <span class="special">=</span> <span class="string">"85212547851652 "</span> <span class="special">;</span>
+<span class="identifier">boost</span><span class="special">::</span><span class="identifier">checks</span><span class="special">::</span><span class="identifier">compute_mod97_10</span> <span class="special">(</span> <span class="identifier">mod97_10_number</span> <span class="special">,</span> <span class="identifier">mod97_10_number</span><span class="special">.</span><span class="identifier">end</span><span class="special">()</span> <span class="special">-</span> <span class="number">2</span><span class="special">);</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"A complete mod97-10 number : "</span> <span class="special">&lt;&lt;</span> <span class="identifier">mod97_10_number</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span> <span class="special">;</span>
+
+</pre>
+<p>
+ </p>
+<p>
+ which provides the output:
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="identifier">The</span> <span class="identifier">number</span> <span class="special">:</span> <span class="number">1234567890123456789</span> <span class="identifier">have</span> <span class="identifier">the</span> <span class="identifier">check</span> <span class="identifier">digits</span> <span class="special">:</span> <span class="number">68.</span>
+<span class="identifier">A</span> <span class="identifier">complete</span> <span class="identifier">mod97</span><span class="special">-</span><span class="number">10</span> <span class="identifier">number</span> <span class="special">:</span> <span class="number">8521254785165211</span>
+
+</pre>
+<p>
+ </p>
+<a name="checks.checks.tutorial.start.catching_errors"></a><h6>
+<a name="checks.checks.tutorial.start.catching_errors-heading"></a>
+ <a class="link" href="start.html#checks.checks.tutorial.start.catching_errors">Catching errors</a>
+ </h6>
+<p>
+ We will now see how the library reacts with simple errors. The first error
+ is that the number of characters (size of sequence) doesn't fit the requirements.
+ The second error shows that some number must respect pattern, here the
+ three first digit of an ISBN-13 must be "978" or "979".
+ An exception is throwed if any one of these errors are encountered. We
+ will use the <a href="http://en.wikipedia.org/wiki/European_Article_Number" target="_top">International
+ Article Number (EAN)</a> and <a href="http://en.wikipedia.org/wiki/Isbn" target="_top">International
+ Standard Book Number (ISBN)</a> headers:
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">checks</span><span class="special">/</span><span class="identifier">ean</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+</pre>
+<p>
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">checks</span><span class="special">/</span><span class="identifier">isbn</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+</pre>
+<p>
+ </p>
+<p>
+ Two examples of number error:
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">ean13_number</span> <span class="special">=</span> <span class="string">"540011301748"</span> <span class="special">;</span> <span class="comment">// Incorrect size.</span>
+<span class="keyword">try</span>
+<span class="special">{</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">checks</span><span class="special">::</span><span class="identifier">check_ean13</span> <span class="special">(</span> <span class="identifier">ean13_number</span> <span class="special">)</span> <span class="special">;</span>
+<span class="special">}</span>
+<span class="keyword">catch</span> <span class="special">(</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">invalid_argument</span> <span class="identifier">e</span> <span class="special">)</span>
+<span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">e</span><span class="special">.</span><span class="identifier">what</span><span class="special">()</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span> <span class="special">;</span>
+<span class="special">}</span>
+
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">isbn13_number</span> <span class="special">=</span> <span class="string">"977-0321227256"</span> <span class="special">;</span> <span class="comment">// Third digit altered.</span>
+<span class="keyword">try</span>
+<span class="special">{</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">checks</span><span class="special">::</span><span class="identifier">check_isbn13</span><span class="special">(</span> <span class="identifier">isbn13_number</span> <span class="special">);</span>
+<span class="special">}</span>
+<span class="keyword">catch</span> <span class="special">(</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">invalid_argument</span> <span class="identifier">e</span> <span class="special">)</span>
+<span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">e</span><span class="special">.</span><span class="identifier">what</span><span class="special">()</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span> <span class="special">;</span>
+<span class="special">}</span>
+
+</pre>
+<p>
+ </p>
+<p>
+ The output shows us the detailed message the exception provides:
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="identifier">Too</span> <span class="identifier">few</span> <span class="keyword">or</span> <span class="identifier">too</span> <span class="identifier">much</span> <span class="identifier">valid</span> <span class="identifier">values</span> <span class="identifier">in</span> <span class="identifier">the</span> <span class="identifier">sequence</span><span class="special">.</span>
+<span class="identifier">The</span> <span class="identifier">third</span> <span class="identifier">digit</span> <span class="identifier">should</span> <span class="identifier">be</span> <span class="number">8</span> <span class="keyword">or</span> <span class="number">9.</span>
+
+</pre>
+<p>
+ </p>
+<a name="checks.checks.tutorial.start.and_with_integer_array"></a><h6>
+<a name="checks.checks.tutorial.start.and_with_integer_array-heading"></a>
+ <a class="link" href="start.html#checks.checks.tutorial.start.and_with_integer_array">And
+ with integer array</a>
+ </h6>
+<p>
+ The C-arrays of integers are also supported. In the other examples, we
+ check "number" but with an ASCII code, we can use integer value
+ as well. The following will show us the result of the computation of two
+ same numbers but in different format. We'll use the header:
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">checks</span><span class="special">/</span><span class="identifier">isbn</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+</pre>
+<p>
+ </p>
+<p>
+ And the examples:
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">isbn10_number</span> <span class="special">=</span> <span class="string">"020163371"</span> <span class="special">;</span> <span class="comment">// More Effective C++: 35 New Ways to Improve Your Programs and Designs, Scott Meyers.</span>
+<span class="keyword">int</span> <span class="identifier">isbn10_integer_number</span><span class="special">[]</span> <span class="special">=</span> <span class="special">{</span><span class="number">0</span><span class="special">,</span><span class="number">2</span><span class="special">,</span><span class="number">0</span><span class="special">,</span><span class="number">1</span><span class="special">,</span><span class="number">6</span><span class="special">,</span><span class="number">3</span><span class="special">,</span><span class="number">3</span><span class="special">,</span><span class="number">7</span><span class="special">,</span><span class="number">1</span><span class="special">}</span> <span class="special">;</span>
+
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"ISBN10 : "</span> <span class="special">&lt;&lt;</span> <span class="identifier">isbn10_number</span> <span class="special">&lt;&lt;</span> <span class="string">". Check digit : "</span> <span class="special">&lt;&lt;</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">checks</span><span class="special">::</span><span class="identifier">compute_isbn10</span><span class="special">(</span> <span class="identifier">isbn10_number</span> <span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span> <span class="special">;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"ISBN10 integer version. Check digit : "</span> <span class="special">&lt;&lt;</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">checks</span><span class="special">::</span><span class="identifier">compute_isbn10</span><span class="special">(</span> <span class="identifier">isbn10_integer_number</span> <span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span> <span class="special">;</span>
+
+</pre>
+<p>
+ </p>
+<p>
+ As you can see in the output, the "X" check digit is represented
+ by its integer value (10) with the integer C-array:
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="identifier">ISBN10</span> <span class="special">:</span> <span class="number">020163371</span><span class="special">.</span> <span class="identifier">Check</span> <span class="identifier">digit</span> <span class="special">:</span> <span class="identifier">X</span>
+<span class="identifier">ISBN10</span> <span class="identifier">integer</span> <span class="identifier">version</span><span class="special">.</span> <span class="identifier">Check</span> <span class="identifier">digit</span> <span class="special">:</span> <span class="number">10</span>
+
+</pre>
+<p>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2011 Pierre Talbot<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../tutorial.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorial.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="extending_the_library.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/version_id.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2011/checks/libs/checks/doc/html/checks/checks/version_id.html 2011-09-05 13:49:22 EDT (Mon, 05 Sep 2011)
@@ -0,0 +1,56 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Version Info</title>
+<link rel="stylesheet" href="../.././boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../index.html" title="Checks">
+<link rel="up" href="../checks.html" title="Checks">
+<link rel="prev" href="history.html" title="History">
+<link rel="next" href="../../checks_reference.html" title="Checks Reference">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="" width="180" height="90" src="../.././images/proposed_for_boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="history.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../checks.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../../checks_reference.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="checks.checks.version_id"></a><a class="link" href="version_id.html" title="Version Info">Version Info</a>
+</h3></div></div></div>
+<p>
+ Last edit to Quickbook file checks.qbk was at 03:18:56 PM on 2011-Sep-05.
+ </p>
+<div class="warning"><table border="0" summary="Warning">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="../../images/warning.png"></td>
+<th align="left">Warning</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ Home page "Last revised" is GMT, not local time. Last edit date
+ is local time.
+ </p></td></tr>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2011 Pierre Talbot<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="history.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../checks.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../../checks_reference.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>


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