Boost logo

Boost-Commit :

From: matias.capeletto_at_[hidden]
Date: 2008-02-14 13:08:19


Author: matias
Date: 2008-02-14 13:08:16 EST (Thu, 14 Feb 2008)
New Revision: 43251
URL: http://svn.boost.org/trac/boost/changeset/43251

Log:
conversion docs fixes
Added:
   trunk/libs/numeric/conversion/doc/Jamfile.v2 (contents, props changed)
   trunk/libs/numeric/conversion/doc/html/images/
      - copied from r43227, /trunk/libs/optional/doc/html/images/
Removed:
   trunk/libs/numeric/conversion/doc/bounds.html
   trunk/libs/numeric/conversion/doc/conversion_traits.html
   trunk/libs/numeric/conversion/doc/converter.html
   trunk/libs/numeric/conversion/doc/converter_policies.html
   trunk/libs/numeric/conversion/doc/definitions.html
   trunk/libs/numeric/conversion/doc/html/images/callouts/1.png
   trunk/libs/numeric/conversion/doc/html/images/callouts/10.png
   trunk/libs/numeric/conversion/doc/html/images/callouts/11.png
   trunk/libs/numeric/conversion/doc/html/images/callouts/12.png
   trunk/libs/numeric/conversion/doc/html/images/callouts/13.png
   trunk/libs/numeric/conversion/doc/html/images/callouts/14.png
   trunk/libs/numeric/conversion/doc/html/images/callouts/15.png
   trunk/libs/numeric/conversion/doc/html/images/callouts/2.png
   trunk/libs/numeric/conversion/doc/html/images/callouts/3.png
   trunk/libs/numeric/conversion/doc/html/images/callouts/4.png
   trunk/libs/numeric/conversion/doc/html/images/callouts/5.png
   trunk/libs/numeric/conversion/doc/html/images/callouts/6.png
   trunk/libs/numeric/conversion/doc/html/images/callouts/7.png
   trunk/libs/numeric/conversion/doc/html/images/callouts/8.png
   trunk/libs/numeric/conversion/doc/html/images/callouts/9.png
   trunk/libs/numeric/conversion/doc/html/images/caution.png
   trunk/libs/numeric/conversion/doc/html/images/home.png
   trunk/libs/numeric/conversion/doc/html/images/important.png
   trunk/libs/numeric/conversion/doc/html/images/next.png
   trunk/libs/numeric/conversion/doc/html/images/note.png
   trunk/libs/numeric/conversion/doc/html/images/prev.png
   trunk/libs/numeric/conversion/doc/html/images/tip.png
   trunk/libs/numeric/conversion/doc/html/images/up.png
   trunk/libs/numeric/conversion/doc/html/images/warning.png
   trunk/libs/numeric/conversion/doc/index.html
   trunk/libs/numeric/conversion/doc/numeric_cast.html
   trunk/libs/numeric/conversion/doc/requirements.html
Text files modified:
   trunk/libs/numeric/conversion/doc/html/boost_numericconversion/bounds___traits_class.html | 28 ++++---
   trunk/libs/numeric/conversion/doc/html/boost_numericconversion/conversion_traits___traits_class.html | 44 +++-------
   trunk/libs/numeric/conversion/doc/html/boost_numericconversion/converter___function_object.html | 28 ++++---
   trunk/libs/numeric/conversion/doc/html/boost_numericconversion/definitions.html | 157 +++++++++++++++++++--------------------
   trunk/libs/numeric/conversion/doc/html/boost_numericconversion/improved_numeric_cast__.html | 26 +++--
   trunk/libs/numeric/conversion/doc/html/boost_numericconversion/numeric_converter_policy_classes.html | 80 +++++++++-----------
   trunk/libs/numeric/conversion/doc/html/boost_numericconversion/type_requirements_and_user_defined_types_support.html | 30 ++++---
   trunk/libs/numeric/conversion/doc/html/index.html | 26 +++---
   trunk/libs/numeric/conversion/doc/html/numeric_conversion/bibliography.html | 26 +++--
   trunk/libs/numeric/conversion/doc/html/numeric_conversion/history_and_acknowledgments.html | 30 ++++---
   10 files changed, 237 insertions(+), 238 deletions(-)

Added: trunk/libs/numeric/conversion/doc/Jamfile.v2
==============================================================================
--- (empty file)
+++ trunk/libs/numeric/conversion/doc/Jamfile.v2 2008-02-14 13:08:16 EST (Thu, 14 Feb 2008)
@@ -0,0 +1,30 @@
+# Boost.Numeric/Conversion
+#
+# Copyright (c) 2004-2007 Fernando Luis Cacciola Carballal
+#
+# 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)
+
+
+# Quickbook
+# -----------------------------------------------------------------------------
+
+import quickbook ;
+
+xml conversion
+ :
+ conversion.qbk
+ ;
+
+boostbook standalone
+ :
+ conversion
+ :
+ <xsl:param>boost.root=../../../../..
+ <xsl:param>boost.libraries=../../../../libraries.htm
+ <xsl:param>toc.max.depth=2
+ <xsl:param>toc.section.depth=2
+ <xsl:param>chunk.section.depth=1
+ ;
+

Deleted: trunk/libs/numeric/conversion/doc/bounds.html
==============================================================================
--- trunk/libs/numeric/conversion/doc/bounds.html 2008-02-14 13:08:16 EST (Thu, 14 Feb 2008)
+++ (empty file)
@@ -1,109 +0,0 @@
-<HTML>
- <HEAD>
- <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
- <LINK REL="stylesheet" TYPE="text/css" HREF="../../../../boost.css">
- <TITLE>Boost Numeric Conversion Library - Bounds</TITLE>
- </HEAD>
- <BODY BGCOLOR="#FFFFFF" TEXT="#000000">
- <TABLE BORDER="0" CELLPADDING="7" CELLSPACING="0" WIDTH="100%"
- SUMMARY="header">
- <TR>
- <TH VALIGN="top" WIDTH="300">
- <H3><A HREF="../../../../index.htm"><IMG HEIGHT="86" WIDTH="277"
- ALT="C++ Boost" SRC="../../../../boost.png" BORDER="0"></A></H3> </TH>
- <TH VALIGN="top">
- <H1 ALIGN="center">Boost Numeric Conversion Library</H1>
-
- <H1>Header <A
- HREF="../../../../boost/numeric/conversion/bounds.hpp">boost/numeric/conversion/bounds.hpp</A></H1>
- </TH>
- </TR>
- </TABLE><HR>
- <H2>Contents</H2>
- <UL>
- <LI>Introduction</LI>
- <LI>template class bounds<N></LI>
- <LI>Examples</LI>
- <!--<LI>Implementation</LI>-->
- <!--<LI>Portability</LI>-->
- </UL> <HR>
- <H2><A NAME="introduction">Introduction</A></H2>
- <P>To determine the ranges of numeric types with std:: numeric_limits
- [18.2.1], different syntax have to be used depending on numeric type.
- Specifically, numeric_limits&lt;T&gt;::min() for integral types returns the
- minimum finite value, whereas for floating point types it returns the minimum
- positive normalized value. The difference in semantics makes client code
- unnecessarily complex and error prone. <BR> <BR>
- boost::numeric::bounds&lt;&gt; provides a consistent interface for retrieving
- the maximum finite value, the minimum finite value and the minimum positive
- normalized value (0 for integral types) for numeric types. The selection of
- implementation is performed at compile time, so there is no runtime overhead.
- <BR>
- <BR> </P> <HR>
- <H2><A NAME="bounds"><CODE>traits class bounds&lt;N&gt;</CODE></A></H2>
- <BLOCKQUOTE>
-
- <PRE>template&lt;class N&gt;
-struct bounds
-{
- static N lowest () { return <i>implementation_defined</i>; }
- static N highest () { return <i>implementation_defined</i>; }
- static N smallest() { return <i>implementation_defined</i>; }
-};</PRE>
- </BLOCKQUOTE>
- <H3>Members</H3>
- <PRE>lowest()</PRE>
- <P>Returns the minimum finite value, equivalent to
- numeric_limits&lt;T&gt;::min() when T is an integral type, and to
- -numeric_limits&lt;T&gt;::max() when T is a floating point type. </P>
- <PRE>highest()</PRE>
- <P>Returns the maximum finite value, equivalent to
- numeric_limits&lt;T&gt;::max(). </P>
- <PRE>smallest()</PRE>
-
-<P>Returns the smallest positive normalized value for floating point types with
- denormalization, or returns 0 for integral types. <BR>
- <BR>
- </P> <HR>
- <H2><A NAME="examples">Examples</A></H2>
-
-<P>The following example demonstrates the use of numeric::bounds&lt;&gt; and the
- equivalent code using numeric_limits: </P>
-
-<BLOCKQUOTE>
- <PRE>#include &lt;iostream&gt;
-
-#include &lt;boost/numeric/conversion/bounds.hpp&gt;
-#include &lt;boost/limits.hpp&gt;
-
-int main() {
-
- std::cout &lt;&lt; "numeric::bounds versus numeric_limits example.\n";
-
- std::cout &lt;&lt; "The maximum value for float:\n";
- std::cout &lt;&lt; boost::numeric::bounds&lt;float&gt;::highest() &lt;&lt; "\n";
- std::cout &lt;&lt; std::numeric_limits&lt;float&gt;::max() &lt;&lt; "\n";
-
- std::cout &lt;&lt; "The minimum value for float:\n";
- std::cout &lt;&lt; boost::numeric::bounds&lt;float&gt;::lowest() &lt;&lt; "\n";
- std::cout &lt;&lt; -std::numeric_limits&lt;float&gt;::max() &lt;&lt; "\n";
-
- std::cout &lt;&lt; "The smallest positive value for float:\n";
- std::cout &lt;&lt; boost::numeric::bounds&lt;float&gt;::smallest() &lt;&lt; "\n";
- std::cout &lt;&lt; std::numeric_limits&lt;float&gt;::min() &lt;&lt; "\n";
-
- return 0;
-}</PRE>
- </BLOCKQUOTE>
-
-<hr>
-<P>Back to Numeric Conversion library index</P>
-<HR>
-<P>Revised 23 June 2004</P>
-<p>© Copyright Fernando Luis Cacciola Carballal, 2004</p>
-<p> Use, modification, and distribution are subject to the Boost Software
-License, Version 1.0. (See accompanying file <a href="../../../../LICENSE_1_0.txt">
-LICENSE_1_0.txt</a> or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">
-www.boost.org/LICENSE_1_0.txt</a>)</p>
-</BODY>
-</HTML>
\ No newline at end of file

Deleted: trunk/libs/numeric/conversion/doc/conversion_traits.html
==============================================================================
--- trunk/libs/numeric/conversion/doc/conversion_traits.html 2008-02-14 13:08:16 EST (Thu, 14 Feb 2008)
+++ (empty file)
@@ -1,337 +0,0 @@
-<HTML>
- <HEAD>
- <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
- <LINK REL="stylesheet" TYPE="text/css" HREF="../../../../boost.css">
- <TITLE>Boost Numeric Conversion Library - Conversion Traits</TITLE>
- </HEAD>
- <BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000ff" VLINK="#800080">
- <TABLE BORDER="0" CELLPADDING="7" CELLSPACING="0" WIDTH="100%"
- SUMMARY="header">
- <TR>
- <TH VALIGN="top" WIDTH="300">
- <H3><A HREF="../../../../index.htm"><IMG HEIGHT="86" WIDTH="277"
- ALT="C++ Boost" SRC="../../../../boost.png" BORDER="0"></A></H3> </TH>
- <TH VALIGN="top">
- <H1 ALIGN="center">Boost Numeric Conversion Library</H1>
-
- <H1>Header <A
- HREF="../../../../boost/numeric/conversion/conversion_traits.hpp">boost/numeric/conversion/conversion_traits.hpp</A></H1>
- </TH>
- </TR>
- </TABLE> <HR>
- <H2>Contents</H2>
- <DL CLASS="page-index">
- <DT>Types</DT>
- </DL>
- <UL>
-
- <LI>enumeration boost::numeric::int_float_mixture_enum;</LI>
- <LI>enumeration boost::numeric::sign_mixture_enum;</LI>
- <LI>enumeration boost::numeric::udt_builtin_mixture_enum;</LI>
- <LI>template class boost::numeric::int_float_mixture<T,S></LI>
- <LI>template class boost::numeric::sign_mixture<T,S></LI>
- <LI>template class boost::numeric::udt_builtin_mixture<T,S></LI>
- <LI>template class boost::numeric::is_subranged<T,S></LI>
- <LI>template class boost::numeric::conversion_traits<T,S></LI>
- </UL>
- <DL><DT>Example(s)</DT></DL>
- <HR>
-
-<H2><A NAME="types"></A>Types</H2>
-
-<H2><CODE><A NAME="ncm">enumeration int_float_mixture</A>_enum</CODE></H2>
-
-<PRE>namespace boost { namespace numeric {
-
- enum int_float_mixture_enum
- {
- integral_to_integral
- ,integral_to_float
- ,float_to_integral
- ,float_to_float
- } ;
-
-} } // namespace boost::numeric
-</PRE>
-
-<H2><CODE><A NAME="ncsm">enumeration sign_mixture</A>_enum</CODE></H2>
-
-<PRE>namespace boost { namespace numeric {
-
-enum sign_mixture_enum
- {
- unsigned_to_unsigned
- ,signed_to_signed
- ,signed_to_unsigned
- ,unsigned_to_signed
- } ;
-
-} } // namespace boost::numeric</PRE>
-
-<H2><CODE><A NAME="ncum">enumeration udt_builtin_mixture</A>_enum</CODE></H2>
-
-<PRE>namespace boost { namespace numeric {
-
- enum udt_builtin_mixture_enum
- {
- builtin_to_builtin
- ,builtin_to_udt
- ,udt_to_builtin
- ,udt_to_udt
- } ;
-
-} } // namespace boost::numeric</PRE>
-
-<hr>
-
-<H2><A NAME="ifm"><CODE>template class int_float_mixture&lt;&gt;</CODE></A></H2>
-
-<PRE>namespace boost { namespace numeric {
-
- template &lt;class T, class S&gt;
- struct int_float_mixture : mpl::integral_c&lt;int_float_mixture_enum, <i>impl-def-value</i>&gt; {} ;
-
-} } // namespace boost::numeric
-</PRE>
-<p>Classifying <code>S</code> and <code>T</code> as either <code>integral</code>
-or <code>float</code>, this MPL's Integral Constant
-indicates the combination of these attributes. <br>
-Its <code>::value</code> is of enumeration type boost::numeric::int_float_mixture_enum
-</p>
-
-<hr>
-
-<H2><A NAME="sm"><CODE>template class sign_mixture&lt;&gt;</CODE></A></H2>
-
-<PRE>namespace boost { namespace numeric {
-
- template &lt;class T, class S&gt;
- struct sign_mixture : mpl::integral_c&lt;sign_mixture_enum, <i>impl-def-value</i>&gt; {} ;
-
-} } // namespace boost::numeric
-</PRE>
-<p>Classifying <code>S</code> and <code>T</code> as either <code>signed</code>
-or <code>unsigned</code>, this MPL's Integral Constant
-indicates the combination of these attributes. <br>
-Its <code>::value</code> is of enumeration type boost::numeric::sign_mixture_enum
-</p>
-
-<hr>
-
-<H2><A NAME="ubm"><CODE>template class udt_builtin_mixture&lt;&gt;</CODE></A></H2>
-
-<PRE>namespace boost { namespace numeric {
-
- template &lt;class T, class S&gt;
- struct udt_builtin_mixture : mpl::integral_c&lt;udt_builtin__mixture_enum, <i>impl-def-value</i>&gt; {} ;
-
-} } // namespace boost::numeric
-</PRE>
-<p>Classifying <code>S</code> and <code>T</code> as either <code>user-defined</code>
-or <code>builtin</code>, this MPL's Integral Constant
-indicates the combination of these attributes. <br>
-Its <code>::value</code> is of enumeration type boost::numeric::udt_builtin_mixture_enum
-</p>
-
-<hr>
-
-<H2><A NAME="isr"><CODE>template class is_subranged&lt;&gt;</CODE></A></H2>
-
-<PRE>namespace boost { namespace numeric {
-
- template &lt;class T, class S&gt;
- struct is_subranged : mpl::bool_&lt;<i>impl-def-value</i>&gt; {} ;
-
-} } // namespace boost::numeric
-</PRE>
-<p>Indicates if the range of the target type T is a subset of the range of the source type S.
-That is: if there are some source values which fall out of the Target type's range.<br>
-It is a boolean MPL's Integral Constant..<br>
-It does not indicate if
-a <i>particular</i> conversion is effectively out of range; it indicates that
-some conversion <i>might be</i> out of range because not all the source values
-are representable as Target type.</p>
-
-<hr>
-
-<H2><A NAME="nct"><CODE>template class conversion_traits&lt;&gt;</CODE></A></H2>
-
-<PRE>namespace boost { namespace numeric {
-
-
- template &lt;class T, class S&gt;
- struct conversion_traits
- {
- mpl::integral_c&lt;int_float_mixture_enum , ...&gt; int_float_mixture ;
- mpl::integral_c&lt;sign_mixture_enum , ...&gt; sign_mixture;
- mpl::integral_c&lt;udt_builtin_mixture_enum, ...&gt; udt_builtin_mixture ;
-
- mpl::bool_&lt;...&gt; subranged ;
- mpl::bool_&lt;...&gt; trivial ;
-
- typedef T target_type ;
- typedef S source_type ;
- typedef ... argument_type ;
- typedef ... result_type ;
- typedef ... supertype ;
- typedef ... subtype ;
- } ;
-
-} } // namespace numeric, namespace boost
-</PRE>
-<BLOCKQUOTE>
-
- <P>This traits class indicates some properties of a <i>numeric conversion direction</i>:
- from a source type <code>S</code> to a target type <code>T</code>. It does not indicate the properties of
- a <i>specific</i> conversion, but of the conversion <i>direction</i>. See
- Definitions for details.<br>
- </P>
-
- <P>The traits class provides the following
- MPL's Integral Constants
- of enumeration type. They express the <i>combination</i> of certain attributes of the Source and
- Target types (thus they are call <i>mixture</i>):</P>
- <TABLE BORDER="1">
- <TR>
- <TD>&nbsp;<CODE><B>int_float_mixture</B></CODE>&nbsp;</TD>
-
- <TD>
- <P>Same as given by the traits class int_float_mixture</P>
- </TD>
- </TR>
- <TR>
- <TD>&nbsp;<CODE><B>sign_mixture</B></CODE>&nbsp;</TD>
-
- <TD>
- <P>Same as given by the traits class sign_mixture</P>
- </TD>
- </TR>
- <TR>
- <TD>&nbsp;<CODE><B>udt_builtin_mixture</B></CODE>&nbsp;</TD>
-
- <TD>
- <P>Same as given by the traits class udt_builtin_mixture</P>
- </TD>
- </TR>
- </TABLE>
-
- <P>The traits class provides the following
- MPL's Integral Constants
- of boolean type which indicates indirectly the relation between the Source and Target
- <i>ranges</i>
- (see Definitions for details).</P>
- <TABLE BORDER="1">
- <TR>
- <TD>&nbsp;<CODE> <B>subranged</B></CODE>&nbsp;</TD>
-
- <TD>
- <P>Same as given by is_subranged</P>
- </TD>
- </TR>
- <TR>
- <TD>&nbsp;<CODE> <B>trivial</B></CODE>&nbsp;</TD>
-
- <TD>
- <P>Indicates if both Source and Target, <u>without cv-qualifications</u>, are
- the same type.<br>
- Its <code>::value</code> is of boolean type.</P>
- </TD>
- </TR>
- </TABLE>
-
- <P>The traits class provides the following types. They are the Source and Target
- types classified and qualified for different purposes.</P>
-
- <TABLE BORDER="1" width="720">
- <TR>
- <TD>&nbsp;<CODE><B>target_type</B></CODE>&nbsp;</TD>
- <TD>
-
- <P>The template parameter <CODE>T</CODE><EM> without cv-qualifications</EM></P>
- </TD>
- </TR>
- <TR>
- <TD>&nbsp;<CODE><B>source_type</B></CODE>&nbsp;</TD>
- <TD>
-
- <P>The template parameter <CODE>S</CODE><EM> without cv-qualifications</EM></P>
- </TD>
- </TR>
- <TR>
- <TD>&nbsp;<CODE><B>argument_type</B></CODE>&nbsp;</TD>
- <TD>
- <P>This type is either <CODE>source_type</CODE> or <CODE>source_type
-const&amp;</CODE>. <BR> It represents the <I>optimal</I> argument type for the
- converter member functions.<BR>
- If <CODE>S</CODE> is a built-in type, this is <CODE>source_type</CODE>,
- otherwise, this is <CODE>source_type const&amp;</CODE>. </P>
- </TD>
- </TR>
- <TR>
- <TD>&nbsp;<CODE><B>result_type</B></CODE></TD>
- <TD>
- <P>This type is either <CODE>target_type</CODE> or <CODE>target_type
-const&amp;</CODE> <BR> It represents the return type of the
- converter member functions.<BR>
- If <CODE>T==S</CODE>, it is <CODE>target_type const&amp;</CODE>, otherwise,
- it is <CODE>target_type</CODE>.</P>
- </TD>
- </TR>
- <TR>
-
- <TD height="37">&nbsp;<CODE><B>supertype</B></CODE></TD>
-
- <TD height="37">
- <P>If the conversion is <CODE>subranged</CODE>, it is <CODE>source_type</CODE>,
- otherwise, it is <CODE>target_type</CODE></P>
- </TD>
- </TR>
- <TR>
- <TD>&nbsp;<CODE><B>subtype</B></CODE></TD>
- <TD height="37">
- <P>If the conversion is <CODE>subranged</CODE>, it is <CODE>target_type</CODE>,
- otherwise, it is <CODE>source_type</CODE></P>
- </TD>
- </TR>
- </TABLE> </BLOCKQUOTE> <HR>
-
-<H2><A NAME="examples">Examples</A></H2>
-<BLOCKQUOTE>
- <PRE>#include &lt;cassert&gt;
-#include &lt;typeinfo&gt;
-#include &lt;boost/numeric/conversion/conversion_traits.hpp&gt;
-
-int main()
-{
-
- // A trivial conversion.
- typedef boost::numeric::conversion_traits&lt;short,short&gt; Short2Short_Traits ;
- assert ( Short2Short_Traits::trivial::value ) ;
-
- // A subranged conversion.
- typedef boost::numeric::conversion_traits&lt;double,unsigned int&gt; UInt2Double_Traits ;
- assert ( UInt2Double_Traits::int_float_mixture::value == boost::numeric::integral_to_float ) ;
- assert ( UInt2Double_Traits::sign_mixture::value == boost::numeric::unsigned_to_signed ) ;
- assert ( !UInt2Double_Traits::subranged::value ) ;
- assert ( typeid(UInt2Double_Traits::supertype) == typeid(double) ) ;
- assert ( typeid(UInt2Double_Traits::subtype) == typeid(unsigned int) ) ;
-
- // A doubly subranged conversion.
- assert ( (boost::numeric::conversion_traits&lt;short, unsigned short&gt;::subranged::value) );
- assert ( (boost::numeric::conversion_traits&lt;unsigned short, short&gt;::subranged::value) );
-
- return 0;
-}
-</PRE>
- </BLOCKQUOTE>
-<HR>
-<P>Back to Numeric Conversion library index</P>
-<HR>
-<P>Revised 16 May 2005</P>
-<p>© Copyright Fernando Luis Cacciola Carballal, 2004</p>
-<p> Use, modification, and distribution are subject to the Boost Software
-License, Version 1.0. (See accompanying file <a href="../../../../LICENSE_1_0.txt">
-LICENSE_1_0.txt</a> or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">
-www.boost.org/LICENSE_1_0.txt</a>)</p>
-</BODY>
-</HTML>
\ No newline at end of file

Deleted: trunk/libs/numeric/conversion/doc/converter.html
==============================================================================
--- trunk/libs/numeric/conversion/doc/converter.html 2008-02-14 13:08:16 EST (Thu, 14 Feb 2008)
+++ (empty file)
@@ -1,279 +0,0 @@
-<HTML>
-
-<HEAD>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<LINK REL="stylesheet" TYPE="text/css" HREF="../../../../boost.css">
-<TITLE>Boost Numeric Conversion Library - Policy-based Converter</TITLE>
-</HEAD>
-
-<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000ff" VLINK="#800080">
-<TABLE BORDER="0" CELLPADDING="7" CELLSPACING="0" WIDTH="100%"
- SUMMARY="header">
-<TR>
-<TD VALIGN="top" WIDTH="300"> <H3><A HREF="http://www.boost.org"><IMG
-HEIGHT="86" WIDTH="277" ALT="C++ Boost" SRC="../../../../boost.png"
-BORDER="0"></A> </H3>
-</TD>
-<TD VALIGN="top"> <H1 ALIGN="center">Boost Numeric Conversion Library</H1>
- <H1>Header <A
-HREF="../../../../boost/numeric/conversion/converter.hpp">boost/numeric/conversion/converter.hpp</A></H1>
-</TD>
-</TR>
-</TABLE>
-<HR>
-<H2>Contents</H2>
-<DT>Synopsis</DT>
-<DT>User Defined Types support</DT>
-<DT>Range Checking Logic</DT>
-<DT>Examples</DT>
-
-<HR>
-<H2><A NAME="synopsis">Synopsis</A></H2>
-<PRE>namespace boost { namespace numeric {
-
-
-template&lt;class T,
- class S,
- class Traits, = conversion_traits&lt;T,S&gt;
- class OverflowHandler = def_overflow_handler,
- class Float2IntRounder = Trunc&lt; typename Traits::source_type &gt;,
- class RawConverter = raw_converter&lt;Traits&gt;,
- class UserRangeChecker = UseInternalRangeChecker
- &gt;
-struct converter
-{
- typedef Traits traits ;
-
- typedef typename Traits::source_type source_type ;
- typedef typename Traits::argument_type argument_type ;
- typedef typename Traits::result_type result_type ;
-
- static result_type convert ( argument_type s ) ;
-
- result_type operator() ( argument_type s ) const ;
-
- // Internal member functions:
-
- static range_check_result out_of_range ( argument_type s ) ;
- static void validate_range ( argument_type s ) ;
- static result_type low_level_convert ( argument_type s ) ;
- static source_type nearbyint ( argument_type s ) ;
-
-} ;
-
-} } // namespace numeric, boost
-</PRE>
-
-<P><code>boost::numeric::converter&lt;&gt;</code> is a
-Unary Function Object
-encapsulating the code to perform a numeric conversion with the direction and properties specified
- by the <CODE>Traits</CODE> template parameter. It can optionally take some
- policies
- which can be used to customize its behavior. The Traits parameter is not a policy but
- the parameter that defines the conversion.
-</P>
-<hr>
-<h2>Template parameters:</h2>
-<TABLE BORDER="1">
- <TR>
- <TD>&nbsp;T</TD>
- <TD>&nbsp;The Numeric Type which is
- the <i>Target</i> of the conversion.</TD>
- </TR>
- <TR>
- <TD>&nbsp;S</TD>
- <TD>&nbsp;The Numeric Type which is
- the <i>Source</i> of the conversion.</TD>
- </TR>
- <TR>
- <TD>&nbsp;<CODE>Traits</CODE>&nbsp;</TD>
- <TD>&nbsp;This must be a conversion traits class with the interface of
- boost::numeric::conversion_traits
- </TD>
- </TR>
- <TR>
- <TD>&nbsp;OverflowHandler&nbsp;</TD>
- <TD>&nbsp;<B>Stateless Policy</B> called to administrate the result of the
- range checking.<br>
- &nbsp;It is a <b>Function Object</b> which receives the result of <CODE>out_of_range()</CODE>
- and is called inside the <CODE>validate_range()</CODE> static member function
- exposed by the converter.</TD>
- </TR>
- <TR>
- <TD>&nbsp;Float2IntRounder&nbsp;</TD>
- <TD>&nbsp;<B>Stateless Policy</B> which specifies the rounding mode used for
- float to integral conversions.<br>
- &nbsp;It supplies the <CODE>nearbyint()</CODE> static member function exposed
- by the converter.</TD>
- </TR>
- <TR>
- <TD>&nbsp;RawConverter&nbsp;</TD>
- <TD>&nbsp;<B>Stateless Policy</B> which is used to perform the actual conversion.
- <br>
- &nbsp;It supplies the<CODE> low_level_convert()</CODE> static member function
- exposed by the converter.</TD>
- </TR>
- <TR>
- <TD>&nbsp;UserRangeChecker&nbsp;</TD>
- <TD><i>Special and Optional</i> <b>Stateless Policy</b> which can be used to override
- the internal range checking logic.<br>
- If given, supplies alternative code for the out_of_range() and validate_range()
- static member functions exposed by the converter.</TD>
- </TR>
-</TABLE>
-<br>
-<hr>
-<h2>Member functions:</h2>
-<P><CODE>static result_type converter&lt;&gt;::convert ( argument_type s ) ; //
- throw</CODE></P>
-<BLOCKQUOTE>
- <P>This static member function converts an rvalue of type source_type to an rvalue
- of type target_type.<BR>
- If the conversion requires it, it performs a range checking before the conversion
- and passes the result of the check to the overflow handler policy (the default
- policy throws an exception if out-of-range is detected)<BR>
- The implementation of this function is actually built from the policies and
- is basically as follows:</P>
- <PRE> result_type converter<>::convert ( argument_type s )
- {
- validate_range(s); // Implemented by the internal range checking logic
- // (which also calls the OverflowHandler policy)
- // or externally supplied by the UserRangeChecker policy.
-
- s = nearbyint(s); // Externally supplied by the Float2IntRounder policy.
- // NOTE: This is actually called only for float to int conversions.
-
- return low_level_convert(s); // Externally supplied by the RawConverter policy.
- }
-</PRE>
-
- <P>&quot;converter&lt;&gt;::operator() const&quot; just calls <CODE>convert()</CODE></P>
-</BLOCKQUOTE>
-<P><CODE>static range_check_result numeric_converter&lt;&gt;::out_of_range (
-argument_type s ) ;</CODE></P>
-<BLOCKQUOTE>
- <P>This internal static member function determines if the
- value 's' can be represented by the target type without overflow. <BR>
- It does not determine if the conversion is <EM>exact</EM>; that is, it does
- not detect <i>inexact</i> conversions, only <i>out-of-range</i> conversions
- (see the Definitions for further details).<BR>
- The return value is of enum type
- boost::numeric::range_check_result<BR>
- The actual code for the range checking logic is optimized for the combined
- properties of the source and target types. For example, a non-subranged conversion
- (i.e: int-&gt;float), requires no range checking, so out_of_range() returns
- cInRange directly. See the following table for more
- details.<br>
- If the user supplied a UserRangeChecker
- policy, is this policy which implements this function, so the implementation
- is user defined, although it is expected to perform the same conceptual check
- and return the appropriate result.</P>
-</BLOCKQUOTE>
-<P><CODE>static void numeric_converter&lt;&gt;::validate_range ( argument_type
-s ) ; // no throw</CODE></P>
-<BLOCKQUOTE>
- <P>This internal static member function calls <CODE>out_of_range(s)</CODE>,
- and passes the result to the <A
-HREF="converter_policies.html#oh"><CODE>OverflowHandler</CODE></A> policy class
- <BR>
- For those Target/Source combinations which don't require range checking, this
- is an <U>empty inline function</U>.<br>
- If the user supplied a UserRangeChecker
- policy, is this policy which implements this function, so the implementation
- is user defined, although it is expected to perform the same action as the
- default. In particular, it is expected to pass the result of the check to
- the overflow handler.</P>
-</BLOCKQUOTE>
-<P><CODE>static result_type numeric_converter&lt;&gt;::low_level_convert (
-argument_type s ) ;</CODE></P>
-<BLOCKQUOTE>
- <P>This internal static member function performs the actual
- conversion.<BR>
-This function is externally supplied by the <A
-HREF="converter_policies.html#rawc"><CODE>RawConverter</CODE></A> policy class.</P>
-</BLOCKQUOTE>
-<P><CODE>static source_type converter&lt;&gt;::nearbyint (
-argument_type s ) ;</CODE></P>
-<BLOCKQUOTE>
- <P>This internal static member function, which is <U>only
- used</U> for float to int conversions, returns an <I>integer value of <U>floating-point
- type</U></I> according to some rounding direction. <BR>
- This function is externally supplied by the <A
-HREF="converter_policies.html#f2i"><CODE>Float2IntRounder</CODE></A> policy class
- which encapsulates the specific rounding mode.</P>
-</BLOCKQUOTE>
-<hr>
-<P><A NAME="int"><B>Internal Member Functions</B>:</A> These static member functions
- build the actual conversion code used by <CODE>convert()</CODE>. The user does
- not have to call these if calling convert(), since convert() calls them infernally,
- but they can be called separately for specific needs.</P>
-<hr>
-<H2><A NAME="rchklogic">Range Checking Logic</A></H2>
-<P>The Following table summarizes the internal range checking logic performed
- for each combination of the properties of Source and Target.<br>
- LowestT/HighestT denotes the highest and lowest values of the Target type, respectively.<br>
- S(n) is short for &quot;static_cast&lt;S&gt;(n)&quot; (S denotes the Source
- type).<br>
- &quot;NONE&quot; indicates that for this case there is no range checking.</P>
-<Pre>&nbsp; int_to_int |--> sig_to_sig |--> subranged |--> ( s >= S(LowestT) ) && ( s <= S(HighestT) )
- | |--> not subranged |--> NONE
- |
- |--> unsig_to_unsig |--> subranged |--> ( s >= S(LowestT) ) && ( s <= S(HighestT) )
- | |--> not subranged |--> NONE
- |
- |--> sig_to_unsig |--> pos subranged |--> ( s >= S(0) ) && ( s <= S(HighestT) )
- | |--> not pos subranged |--> ( s >= S(0) )
- |
- |--> unsig_to_sig |--> subranged |--> ( s <= S(HighestT) )
- | |--> not subranged |--> NONE
-
- int_to_float |--> NONE
-
- float_to_int |--> round_to_zero |--> ( s > S(LowestT)-S(1) ) && ( s < S(HighestT)+S(1) )
- |--> round_to_even_nearest |--> ( s >= S(LowestT)-S(0.5) ) && ( s &lt; S(HighestT)+S(0.5) )
- |--> round_to_infinity |--> ( s > S(LowestT)-S(1) ) && ( s <= S(HighestT) )
- |--> round_to_neg_infinity |--> ( s >= S(LowestT) ) && ( s < S(HighestT)+S(1) )
-
- float_to_float |--> subranged |--> ( s >= S(LowestT) ) && ( s <= S(HighestT) )
- |--> not subranged |--> NONE
-
-</Pre>
-<HR>
-<H2><A NAME="examples">Examples</A></H2>
-<BLOCKQUOTE>
- <PRE> #include &lt;cassert&gt;
- #include &lt;boost/numeric/conversion/converter.hpp&gt;
-
- int main() {
-
- typedef boost::numeric::converter&lt;int,double&gt; Double2Int ;
-
- int x = Double2Int::convert(2.0);
- assert ( x == 2 );
-
- int y = Double2Int()(3.14); // As a function object.
- assert ( y == 3 ) ; // The default rounding is trunc.
-
- try
- {
- double m = boost::numeric::bounds&lt;double&gt;::highest();
- int z = Double2Int::convert(m); // By default throws positive_overflow()
- }
- catch ( boost::numeric::positive_overflow const&amp; )
- {
- }
-
- return 0;
-}</PRE>
- </BLOCKQUOTE>
-<HR>
-<P>Back to Numeric Conversion library index</P>
-<HR>
-<P>Revised 16 May 2005</P>
-<p>© Copyright Fernando Luis Cacciola Carballal, 2004</p>
-<p> Use, modification, and distribution are subject to the Boost Software
-License, Version 1.0. (See accompanying file <a href="../../../../LICENSE_1_0.txt">
-LICENSE_1_0.txt</a> or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">
-www.boost.org/LICENSE_1_0.txt</a>)</p>
-</BODY>
-</HTML>
\ No newline at end of file

Deleted: trunk/libs/numeric/conversion/doc/converter_policies.html
==============================================================================
--- trunk/libs/numeric/conversion/doc/converter_policies.html 2008-02-14 13:08:16 EST (Thu, 14 Feb 2008)
+++ (empty file)
@@ -1,466 +0,0 @@
-<HTML>
-
-<HEAD>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<LINK REL="stylesheet" TYPE="text/css" HREF="../../../../boost.css">
-<TITLE>Boost Numeric Conversion Library - Converter Policies</TITLE>
-</HEAD>
-
-<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000ff" VLINK="#800080">
-<TABLE BORDER="0" CELLPADDING="7" CELLSPACING="0" WIDTH="100%"
- SUMMARY="header">
-<TR>
-<TD VALIGN="top" WIDTH="300"> <H3><A HREF="http://www.boost.org"><IMG
-HEIGHT="86" WIDTH="277" ALT="C++ Boost" SRC="../../../../boost.png"
-BORDER="0"></A> </H3>
-</TD>
-<TD VALIGN="top"> <H1 ALIGN="center">Boost Numeric Conversion Library</H1>
- <H1>Header <A
-HREF="../../../../boost/numeric/conversion/converter_policies.hpp">boost/numeric/conversion/converter_policies.hpp</A></H1>
-</TD>
-</TR>
-</TABLE>
-<HR>
-<H2>Contents</H2>
-<ol>
-<LI>enumeration range_check_result </LI>
-<LI>Policy OverflowHandler
-<UL>
-<LI>class silent_overflow_handler</LI>
-<LI>class def_overflow_handler (Default Policy)</LI>
-<ul>
-<LI>class <CODE> bad_numeric_cast</CODE> (see IMPORTANT note)</LI>
-<LI>class negative_overflow</LI>
-<LI>class positive_overflow</LI>
-</ul>
-</UL>
-</LI>
-<LI>Policy FloatToIntRounder <UL>
-<LI>class Trunc<T> (Default Policy)</LI>
-<LI>class RoundEven<T></LI>
-<LI>class Ceil<T></LI>
-<LI>class Floor<T></LI>
-</UL>
-</LI>
-<LI>Policy RawConverter<UL>
- <LI>class raw_converter class (Default)</LI>
-</UL>
-</LI>
-<LI>Policy UserRangeChecker<UL>
- <LI>class UseInternalRangeChecker class (Default)</LI>
-</UL>
-</LI>
-</ol>
-
-<HR>
-<H2><A NAME="types">Types</A></H2>
-<H2><A NAME="rcr"><CODE>enum range_check_result</CODE></A></H2>
-<PRE>namespace boost { namespace numeric {
-
-
-
-
-
- enum range_check_result
-
- {
-
- cInRange ,
-
- cNegOverflow ,
-
- cPosOverflow
-
- } ;
-
-
-
-
-
-} }</PRE>
-
-<P>Defines the values returned by <CODE>boost::numeric::converter&lt;&gt;::out_of_range()</CODE>
-</P>
-<HR>
-<H2><A NAME="oh">Policy <CODE>OverflowHandler</CODE></A></H2>
-<P>This <EM>stateless</EM> non-template policy class must be a <I>function object</I>
- and is called to administrate the result of the range checking. It can throw
- an exception if overflow has been detected by the range checking as indicated
- by its argument. If it throws, is is recommended that it be <CODE>std::bad_cast</CODE>
- or derived.</P>
-<P>It must have the following interface (it does not has to be a template class):</P>
-<PRE> struct YourOverflowHandlerPolicy
-
- {
-
- void operator() ( boost::range_check_result ) ; // throw bad_cast or derived
-
- } ;
-
-</PRE>
-<P>It is called with the result of the converter's <CODE>out_of_range()</CODE>
- inside <CODE>validate_range()</CODE>.</P>
-<P>These are the two overflow handler classes provided by the
-library:</P>
-<PRE>namespace boost { namespace numeric {
-
-
-
-
-
- struct <A NAME="oh_def">def_overflow_handler</a>
-
- {
-
- void operator() ( range_check_result r ) // throw bad_numeric_conversion derived
-
- {
-
- if ( r == cNegOverflow )
-
- throw negative_overflow() ;
-
- else if ( r == cPosOverflow )
-
- throw positive_overflow() ;
-
- }
-
- } ;
-
-
-
- struct <A NAME="oh_silent">silent_overflow_handler</a>
-
- {
-
- void operator() ( range_check_result ) // no-throw
-
- {}
-
- } ;
-
-
-
-} }
-
-</PRE>
-
-<P>And these are the Exception Classes thrown by the default
-overflow handler (see IMPORTANT note)</P>
-<PRE>namespace boost { namespace numeric {
-
-
-
-
-
- class <a name="bad_numc">bad_numeric_cast</a> : public std::bad_cast
-
- {
-
- public:
-
-
-
- virtual const char *what() const // throw()
-
- { return &quot;bad numeric conversion: overflow&quot;; }
-
- };
-
-
-
- class <a name="negovr">negative_overflow</a> : public bad_numeric_cast
- {
-
- public:
-
-
-
- virtual const char *what() const // throw()
-
- { return &quot;bad numeric conversion: negative overflow&quot;; }
-
- };
-
- class <a name="posovr">positive_overflow</a> : public bad_numeric_cast
- {
-
- public:
-
-
-
- virtual const char *what() const // throw()
-
- { return &quot;bad numeric conversion: positive overflow&quot;; }
-
- };
-
-} }
-
-</PRE>
-
-<a name="x-note"><p><b>IMPORTANT RELEASE NOTE for 1.33</b></p></a>
-<blockquote>
- <p>Previous to boost version 1.33, the exception class <code>bad_numeric_cast</code> was
- named <code>bad_numeric_conversion</code>. However, in 1.33, the old function
- <code>numeric_cast&lt;&gt;</code> from <code>boost/cast.hpp</code> was completly replaced by the new
- <code>numeric_cast&lt;&gt;</code> in <code>boost/numeric/conversion/cast.hpp</code>
- (and <code>boost/cast.hpp</code> is including <code>boost/numeric/conversion/cast.hpp</code> now). That old function which
- existed in boost for quite some time used the <code>bad_numeric_cast</code> as its
- exception type so I decided to avoid backward compatibility problems by adopting it (guessing
- that the user base for the old code is wider than for the new code).</p>
-</blockquote>
-
-<HR>
-<H2><A NAME="f2i">Policy <CODE>FloatToIntRounder</CODE></A></H2>
-<P>This <EM>stateless</EM> template policy class specifies the rounding mode used
- for<U> float to integral</U> conversions. It supplies the <CODE>&quot;nearbyint()&quot;</CODE>
- static member function exposed by the converter, which means that it <U>publicly
- inherits from this policy.</U></P>
-<P>The policy must have the following interface:</P>
-<PRE> template&lt;class S&gt;
-
- struct YourFloat2IntRounderPolicy
-
- {
-
- typedef S source_type ;
-
- typedef <I>{S or S const&amp;}</I> argument_type ;
-
-
-
- static source_type nearbyint ( argument_type s ) { ... }
-
-
-
- typedef mpl::integral_c&lt;std::float_round_style,std::<i>round_...</i>&gt; round_style ;
-
- } ;
-
-</PRE>
-
-<P>These are the rounder classes provided by the library:</P>
-
-<BLOCKQUOTE>
- <P><EM>NOTE: These classes are not intended to be general purpose rounding functions
- but specific policies for converter&lt;&gt;. This is why <U>they are not function
- objects</U>.</EM></P>
- <P>(only the specific parts are shown, see the general policy form above)</P>
- <PRE>namespace boost { namespace numeric {
-
-
-
- <A NAME="trunc"></A>template&lt;class S&gt;
-
- struct Trunc
-
- {
-
- static source_type nearbyint ( argument_type s )
-
- {
-
- using std::floor ;
-
- using std::ceil ;
-
- return s >= static_cast&lt;S&gt;(0) ? floor(s) : ceil(s) ;
-
- }
-
-
-
- typedef mpl::integral_c&lt;std::float_round_style,std::round_toward_zero&gt; round_style ;
-
- } ;
-
- </PRE>
- <PRE> <A NAME="round"></A>template&lt;class S&gt;
-
- struct RoundEven
-
- {
-
- static source_type nearbyint ( argument_type s )
-
- {
-
- return <i>impl-defined-value</i> ;
-
- }
-
-
-
- typedef mpl::integral_c&lt;std::float_round_style,std::round_to_nearest&gt; round_style ;
-
- } ;
-
-</PRE>
-<PRE> <A NAME="ceil"></A>template&lt;class S&gt;
-
- struct Ceil
-
- {
-
- static source_type nearbyint ( argument_type s )
-
- {<br> using std::ceil ;<br> return ceil(s) ;<br> }
-
-
-
- typedef mpl::integral_c&lt;std::float_round_style,std::round_toward_infinity&gt; round_style ;
-
- } ;
-
-</PRE>
-<PRE> <A NAME="floor"></A>template&lt;class S&gt;
-
- struct Floor
-
- {
-
- static source_type nearbyint ( argument_type s )
-
- {<br> using std::floor ;<br> return floor(s) ;<br> }
-
-
-
- typedef mpl::integral_c&lt;std::float_round_style,std::round_toward_neg_infinity&gt; round_style ;
-
- } ;
-
-
-
-} } // namespace numeric, namespace boost</PRE>
-
-</BLOCKQUOTE>
-<H3>Math Functions used by the rounder policies</H3>
-<P>The rounder policies supplied by this header use math functions floor() and
- ceil(). The standard versions of these functions are introduced in context by
- a using directive, so in normal conditions, the standard functions will be used.
- <br>
- However, if there are other visible corresponding overloads an ambiguity could
- arise. In this case, the user can supply her own rounder policy which could,
- for instance, use a fully qualified call.<br>
- This technique allows the default rounder policies to be used directly with
- user defined types. The user only requires that suitable overloads of floor()
- and ceil() be visible. See also User Defined Numeric Types support<br>
-</P>
-<HR>
-<H2><A NAME="rawc">Policy <CODE>RawConverter</CODE></A></H2>
-<P>This <EM>stateless</EM> template policy class is used to perform the actual
- conversion from Source to Target. It supplies the <CODE>&quot;low_level_convert()&quot;</CODE>
- static member function exposed by the converter, which means that it <U>publicly
- inherits from this policy.</U></P>
-<P>The policy must have the following interface:</P>
-<PRE> template&lt;class Traits&gt;
-
- struct YourRawConverterPolicy
-
- {
-
- typedef typename Traits::result_type result_type ;
-
- typedef typename Traits::argument_type argument_type ;
-
-
-
- static result_type low_level_convert ( argument_type s ) { return <I>&lt;impl defined&gt;</I> ; }
-
- } ;
-
-</PRE>
-
-<P>This policy is mostly provided as a hook for user defined types which don't
- support <CODE>static_cast&lt;&gt;</CODE> conversions to some types</P>
-
-<P>This is the only raw converter policy class provided
-by the library:</P>
-<PRE>namespace boost { namespace numeric {
-
-
-
-
-
- template&lt;class Traits&gt;
-
- struct <A NAME="rawnumc">raw_numeric_converter</A>
-
- {
-
- typedef typename Traits::result_type result_type ;
-
- typedef typename Traits::argument_type argument_type ;
-
-
-
- static result_type low_level_convert ( argument_type s )
-
- { return static_cast&lt;result_type&gt;(s) ; }
-
- } ;
-
-
-
-}
-
-</PRE>
-
-<HR>
-<H2><A NAME="rc">Policy <CODE>UserRangeChecker</CODE></A></H2>
-<P>This <EM>stateless</EM> template policy class is used -<u>only if supplied</u>-
- to <b>override</b> the internal range checking logic.<br>
- It supplies the <CODE>&quot;validate_range()&quot;</CODE> static member function
- exposed by the converter, which means that it <U>publicly inherits from this
- policy.</U></P>
-<P>The policy must have the following interface:</P>
-<PRE> template&lt;class Traits&gt;
-
- struct YourRangeCheckerPolicy
-
- {
-
- typedef typename Traits::argument_type argument_type ;
-
-
-
- // Determines if the value 's' fits in the range of the Target type.
-
- static range_check_result out_of_range ( argument_type s ) ;
-
-
-
- // Checks whether the value 's' is out_of_range()
-
- // and passes the result of the check to the OverflowHandler policy.
-
- static void validate_range ( argument_type s )
-
- {
-
- OverflowHandler()( out_of_range(s) ) ;
-
- }
-
- } ;
-
-</PRE>
-<P>This policy is <b>only</b> provided as a hook for user defined types which
- require range checking (which is disabled by default when a UDT is involved).<br>
- The library provides a class: <A NAME="int_rc"><code>UseInternalRangeChecker{};</code></a> which
- is a <i>fake</i> RangeChecker policy used to signal the converter to use its
- internal range checking implementation.
-</P>
-<HR>
-<P>Back to Numeric Conversion library index</P>
-<HR>
-<P>Revised 23 June 2004</P>
-<p>© Copyright Fernando Luis Cacciola Carballal, 2004</p>
-<p> Use, modification, and distribution are subject to the Boost Software
-License, Version 1.0. (See accompanying file <a href="../../../../LICENSE_1_0.txt">
-LICENSE_1_0.txt</a> or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">
-www.boost.org/LICENSE_1_0.txt</a>)</p>
-</BODY>
-</HTML>
\ No newline at end of file

Deleted: trunk/libs/numeric/conversion/doc/definitions.html
==============================================================================
--- trunk/libs/numeric/conversion/doc/definitions.html 2008-02-14 13:08:16 EST (Thu, 14 Feb 2008)
+++ (empty file)
@@ -1,471 +0,0 @@
-<HTML>
- <HEAD>
- <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
- <LINK REL="stylesheet" TYPE="text/css" HREF="../../../../boost.css">
- <TITLE>Boost Numeric Conversion Library - Definitions</TITLE>
- </HEAD>
- <BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000ff" VLINK="#800080">
- <TABLE BORDER="0" CELLPADDING="7" CELLSPACING="0" WIDTH="100%"
- SUMMARY="header">
- <TR>
- <TH VALIGN="top" WIDTH="300">
- <H3><A HREF="../../../../index.htm"><IMG HEIGHT="86" WIDTH="277"
- ALT="C++ Boost" SRC="../../../../boost.png" BORDER="0"></A></H3> </TH>
- <TH VALIGN="top">
- <H1 ALIGN="center">Boost Numeric Conversion Library</H1>
- <H1 ALIGN="center">Definitions</H1>
- </TH>
- </TR>
- </TABLE>
- <HR>
- <H2>Contents</H2>
- <DL CLASS="page-index">
- <dt>Introduction</dt>
- <dt>Types and Values</dt>
- <dt>C++ Arithmetic Types</dt>
- <dt>Numeric Types</dt>
- <dt>Range and Precision</dt>
- <dt>Exact, Correctly Rounded and Out-Of-Range Representations</dt>
- <dt>Standard (numeric) Conversions</dt>
- <dt>Subranged Conversion Direction, Subtype and Supertype</dt>
- </DL>
-
-
-
-<h2><A NAME="intro">Introduction</A></h2>
-<P>This section provides definitions of terms used in the Numeric Conversion library.</p>
-<p><b>Notation:</b>
-<li><u>underlined text</u> denotes terms defined in the C++ standard.</li>
-<li><b>bold face</b> denotes terms defined here but not in the standard.</li>
-<p></p>
-
-
-
-<hr>
-<h2><A NAME="typeval">Types and Values</A></h2>
-<p>As defined by the <u>C++ Object Model</u> (&sect;1.7) the <u>storage</u> or
- memory on which a C++ program runs is a contiguous sequence of <u>bytes</u>
- where each byte is a contiguous sequence of <u>bits</u>.<br>
- An <u>object</u> is a region of storage (&sect;1.8) and has a type (&sect;3.9).<br>
- A <u>type</u> is a discrete set of values. <br>
- An object of type T has an <u>object representation</u> which is the sequence
- of bytes stored in the object (&sect;3.9/4)<br>
- An object of type T has a <u>value representation</u> which is the set of bits
- that determine the <i>value</i> of an object of that type (&sect;3.9/4). For
- <u>POD</u> types (&sect;3.9/10), this bitset is given by the object representation,
- but not all the bits in the storage need to participate in the value representation
- (except for character types): for example, some bits might be used for padding
- or there may be trap-bits.</p>
-<p>The <b>typed value</b> that is held by an object is
-the value which is determined by its value representation.<br>
-An <b>abstract value</b> (untyped) is
-the conceptual information that is represented in a type
-(i.e. the number &pi;).<br>
-The <b>intrinsic value</b> of an object is
-the binary value of the sequence of unsigned characters which form its object representation.</p>
-<p><i>Abstract values</i> can be <b>represented</b> in a given type.<br>
-To <b>represent</b> an abstract value 'V' in a type 'T'
-is to obtain a typed value 'v' which <i>corresponds</i> to the abstract value 'V'.<br>
-The operation is denoted using the 'rep()' operator, as in: <code>v=rep(V)</code>.<br>
-'v' is the <b>representation</b> of 'V' in the type 'T'.<br>
-For example, the abstract value &pi; can be represented in the type <code>'double'</code> as the
-'double value M_PI' and in the type <code>'int'</code> as the 'int value 3'</p>
-<p>Conversely, <i>typed values</i> can be <b>abstracted</b>.<br>
-To <b>abstract</b> a typed value 'v' of type 'T' is to obtain the
-abstract value 'V' whose representation in 'T' is 'v'.<br>
-The operation is denoted using the 'abt()' operator, as in: <code>V=abt(v)</code>.<br>
-'V' is the <b>abstraction</b> of 'v' of type 'T'.<br>
-Abstraction is just an abstract operation (you can't do it); but it is defined nevertheless
-because it will be used to give the definitions in the rest of this document.</p>
-
-
-
-
-<hr>
-<h2><A NAME="stdtypes">C++ Arithmetic Types</A></h2>
-<P>The C++ language defines <u>fundamental types</u> (&sect;3.9.1). The following
-subsets of the fundamental types are intended to represent <i>numbers</i>:</p>
-<li><u>signed integer types</u> (&sect;3.9.1/2):<br>
- <blockquote>
- <code>{signed char, signed short int, signed int, signed long int}</code><br>
- Can be used to represent general integer numbers (both negative and positive).
- </blockquote>
-</li>
-<li><u>unsigned integer types</u> (&sect;3.9.1/3):<br>
- <blockquote>
- <code>{unsigned char, unsigned short int, unsigned int, unsigned long int}</code><br>
- Can be used to represent positive integer numbers <u>with modulo-arithmetic</u>.<br>
- </blockquote>
-<li><u>floating-point types</u> (&sect;3.9.1/8):<br>
- <blockquote>
- <code>{float,double,long double}</code><br>
- Can be used to represent real numbers.
- </blockquote>
-</li>
-<li><u>integral or integer types</u> (&sect;3.9.1/7):<br>
- <blockquote>
- <code>{{signed integers},{unsigned integers}, bool, char and wchar_t}</code>
- </blockquote>
-</li>
-<li><u>arithmetic types</u> (&sect;3.9.1/8):<br>
- <blockquote>
- <code>{{integer types},{floating types}}</code>
- </blockquote>
-</li>
-<P>The integer types are required to have a <i>binary</i> value representation.<br>
-Additionally, the signed/unsigned integer types of the same base type (short, int or long)
-are required to have the same value representation, that is:</P>
-<pre> int i = -3 ; // suppose value representation is: 10011 (sign bit + 4 magnitude bits)
- unsigned int u = i ; // u is required to have the same 10011 as its value representation.
-</pre>
-<P>In other words, the integer types signed/unsigned X use the same value representation
-but a different <i>interpretation</i> of it; that is, their <i>typed values</i>
-might differ.<br>
-Another consequence of this is that the range for signed X is always a smaller subset
-of the range of unsigned X, as required by &sect;3.9.1/3.</P>
-<P>Note: always remember that unsigned types, unlike signed types, have modulo-arithmetic;
- that is, they do not overflow.<br>
- This means that:
- <li> Always be extra careful when mixing signed/unsigned types</li>
- <li> Use unsigned types only when you need modulo arithmetic or very very large numbers.
- Don't use unsigned types just because you intend to deal with positive values only
- (you can do this with signed types as well).</li>.
-<p></P>
-
-
-
-
-
-<hr>
-<h2><A NAME="numtypes">Numeric Types</A></h2>
-<p>This section introduces the following definitions intended to integrate arithmetic
- types with user-defined types which behave like numbers. Some definitions are
- purposely broad in order to include a vast variety of user-defined number
- types.</p>
-<p>Within this library, the term <i>number</i> refers to an abstract numeric value.</p>
-<p>A type is <b>numeric</b> if:</p>
-<li>It is an arithmetic type, or,</li>
-<li>It is a user-defined type which</li>
- <blockquote>
- <li>Represents numeric abstract values (i.e. numbers).</li>
-
- <li>Can be converted (either implicitly or explicitly) to/from at least one
- arithmetic type.</li>
- <li>Has range (possibly unbounded) and precision
- (possibly dynamic or unlimited).</li>
- <li>Provides an specialization of <code>std::numeric_limits</code>.</li>
- </blockquote>
-<p></p>
-<p>A numeric type is <b>signed</b> if the abstract values it represent include negative numbers.<br>
-A numeric type is <b>unsigned</b> if the abstract values it represent exclude negative numbers.<br>
-A numeric type is <b>modulo</b> if it has modulo-arithmetic (does not overflow).<br>
-A numeric type is <b>integer</b> if the abstract values it represent are whole numbers.<br>
-A numeric type is <b>floating</b> if the abstract values it represent are real numbers.<br>
-An <b>arithmetic value</b> is the typed value of an arithmetic type<br>
-A <b>numeric value</b> is the typed value of a numeric type</p>
-<p></p>
-<p>These definitions simply generalize the standard notions of arithmetic types
- and values by introducing a superset called <u>numeric</u>. All arithmetic types
- and values are numeric types and values, but not vice versa, since user-defined
- numeric types are not arithmetic types.</p>
-<p>The following examples clarify the differences between arithmetic and numeric types (and values):</p>
-<pre>// A numeric type which is not an arithmetic type (is user-defined)
-// and which is intended to represent integer numbers (i.e., an 'integer' numeric type)
-class MyInt
-{
- MyInt ( long long v ) ;
- long long to_builtin();
-} ;
-namespace std {
-template&lt;&gt; numeric_limits&lt;MyInt&gt; { ... } ;
-}
-
-// A 'floating' numeric type (double) which is also an arithmetic type (built-in),
-// with a float numeric value.
-double pi = M_PI ;
-
-// A 'floating' numeric type with a whole numeric value.
-// NOTE: numeric values are typed valued, hence, they are, for instance,
-// integer or floating, despite the value itself being whole or including
-// a fractional part.
-double two = 2.0 ;
-
-// An integer numeric type with an integer numeric value.
-MyInt i(1234);
-</pre>
-
-
-
-
-<hr>
-<h2><A NAME="range">Range and Precision</A></h2>
-<p>Given a number set 'N', some of its elements are representable in a numeric type 'T'.<br>
-The set of representable values of type 'T', or numeric set of 'T', is a set of numeric values
-whose elements are the representation of some <i>subset</i> of 'N'.<br>
-For example, the interval of 'int' values [INT_MIN,INT_MAX] is the set of representable values
-of type 'int', i.e. the 'int' numeric set, and corresponds to the representation of the elements
-of the interval of abstract values [abt(INT_MIN),abt(INT_MAX)] from the integer numbers.<br>
-Similarly, the interval of 'double' values [-DBL_MAX,DBL_MAX] is the 'double' numeric set,
-which corresponds to the subset of the real numbers from abt(-DBL_MAX) to abt(DBL_MAX).
-</p>
-<p>Let <b>next(x)</b> denote the lowest numeric value greater than x.<br>
-Let <b>prev(x)</b> denote the highest numeric value lower then x.</p>
-<p>Let <code><b>v=prev(next(V))</b></code> and <code><b>v=next(prev(V))</b></code> be identities that relate a numeric
-typed value 'v' with a number 'V'.</p>
-<p>An ordered pair of numeric values <i>x,y</i> s.t. <i>x&lt;y</i> are <b>consecutive</b> iff
-<code>next(x)==y</code>.</p>
-<p>The abstract distance between consecutive numeric values is usually referred
-to as a <u>Unit in the Last Place</u>, or <b>ulp</b> for short. A ulp is a quantity whose abstract
-magnitude is <i>relative</i> to the numeric values it corresponds to: If the numeric set is not evenly
-distributed, that is, if the abstract distance between consecutive numeric values varies along the set
--as is the case with the floating-point types-, the magnitude of 1ulp after the numeric value x
-might be (usually is) different from the magnitude of a 1ulp after the numeric value y for x!=y.</p>
-<p>Since numbers are inherently ordered, a <b>numeric set</b> of type 'T'
-is an ordered sequence of numeric values (of type 'T') of the form:
-</p>
-<p><code>REP(T)={l,next(l),next(next(l)),...,prev(prev(h)),prev(h),h}</code>
-</p>
-<p>where 'l' and 'h' are respectively the lowest and highest values of type 'T', called the
-<b>boundary values</b> of type T.</p>
-<p>A numeric set is discrete. It has a <b>size</b> which is the number
-of numeric values in the set, a <b>width</b> which is the abstract difference between
-the highest and lowest boundary values: [abt(h)-abt(l)], and a <b>density</b>
-which is the relation between its size and width: 'density=size/width'.<br>
-The integer types have density 1, which means that there are no unrepresentable integer numbers
-between abt(l) and abt(h) (i.e. there are no gaps). On the other hand,
-floating types have density much smaller than 1, which means that there are
-real numbers unrepresented between consecutive floating values (i.e. there are gaps).
-</p>
-<p>The interval of <u>abstract values</u> [abt(l),abt(h)] is the <b>range</b> of the type 'T',
-denoted 'R(T)'.<br>
- A range is a set of abstract values and not a set of numeric values. In other
- documents, such as the C++ standard, the word 'range' is <i>sometimes</i> used
- as synonym for 'numeric set', that is, as the ordered sequence of numeric values
- from 'l' to 'h'. In this document, however, a range is an abstract interval
- which subtends the numeric set.<br>
-For example, the sequence [-DBL_MAX,DBL_MAX] is the numeric set of the type 'double', and
-the real interval [abt(-DBL_MAX),abt(DBL_MAX)] is its range.<br>
-Notice, for instance, that the range of a floating-point type is <i>continuous</i> unlike
-its numeric set.<br>
- This definition was chosen because:
-<li>(a) The discrete set of numeric values is already given by the numeric set.</li>
-<li>(b) Abstract intervals are easier to compare and overlap since only boundary values
-need to be considered.</li><br>
-This definition allows for a concise definition of 'subranged' as given in the last section.<br>
-The width of a numeric set, as defined, is exactly equivalent to the width of a range.
-<p></p>
-<p>The <b>precision</b> of a type is given by the width or density of the numeric set.<br>
-For integer types, which have density 1, the precision is conceptually equivalent to the range
-and is determined by the number of bits used in the value representation: The higher the
-number of bits the bigger the size of the numeric set, the wider the range, and the higher
-the precision.<br>
-For floating types, which have density &lt;&lt;1, the precision is given not by the
-width of the range but by the density. In a typical implementation,
-the range is determined by the number of bits used in the exponent, and the precision by
-the number of bits used in the mantissa (giving the maximum number of significant digits
-that can be exactly represented). The higher the number of exponent bits the
-wider the range, while the higher the number of mantissa bits, the higher the precision.
-</p>
-
-
-
-
-
-
-<hr>
-<h2><A NAME="roundoff">Exact, Correctly Rounded and Out-Of-Range Representations</A></h2>
-<p>Given an abstract value 'V' and a type 'T' with its corresponding range [abt(l),abt(h)]:</p>
-<p>If <code>V &lt; abt(l)</code> or <code>V &gt; abt(h)</code>, 'V' is <b>not representable</b>
-(cannot be represented) in the type T, or, equivalently, it's representation in the type 'T'
-is <b>out of range</b>, or <b>overflows</b>.<br>
-If <code>V &lt; abt(l)</code>, the <b>overflow is negative</b>.<br>
-If <code>V &gt; abt(h)</code>, the <b>overflow is positive</b>.
-</p>
-<p>If <code>V &ge; abt(l)</code> and <code>V &le; abt(h)</code>,'V' is <b>representable</b>
-(can be represented) in the type T, or, equivalently, its representation in the type 'T'
-is in <b>in range</b>, or <b>does not overflow</b>.</p>
-<p>Notice that a numeric type, such as a C++ unsigned type, can define that any 'V' does not
-overflow by always representing not 'V' itself but the abstract value <code>U = [ V % (abt(h)+1) ]</code>,
-which is always in range.</p>
-<p>Given an abstract value 'V' represented in the type 'T' as 'v', the <b>roundoff</b> error
-of the representation is the abstract difference: (abt(v)-V).<br>
-Notice that a representation is an <i>operation</i>, hence, the roundoff error corresponds to
-the representation operation and not to the numeric value itself (i.e. numeric values do not
-have any error themselves)<br>
-If the roundoff is 0, the representation is <b>exact</b>, and 'V' is <b>exactly representable</b>
-in the type T.<br>
-If the roundoff is not 0, the representation is <b>inexact</b>, and 'V' is <b>inexactly representable</b>
-in the type T.</p>
-<p>Given an abstract value 'V' representable in a type 'T', there are always two consecutive
-numeric values of type 'T', 'prev' and 'next', such that <code>abt(prev) &le; V &le; abt(next)</code>.
-These are called the <b>adjacents</b> of 'V' in the type 'T'.<br>
-If a representation 'v' in a type 'T' -either exact or inexact-, is any of the adjacents of 'V'
-in that type, that is, if <code>v==prev or v==next</code>, the representation is
-<b>faithfully rounded</b>. If the choice between 'prev' and 'next'
-matches a given <b>rounding direction</b>, it is <b>correctly rounded</b>.<br>
-All exact representations are correctly rounded, but not all inexact representations are. In particular,
-C++ requires numeric conversions (described below) and the result of arithmetic operations
-(not covered by this document) to be correctly rounded, but batch operations propagate roundoff, thus
-final results are usually incorrectly rounded, that is, the numeric value 'r' which is the computed
-result is neither of the adjacents of the abstract value 'R' which is the theoretical result.<br>
-Because a correctly rounded representation is always one of adjacents of the abstract value being
-represented, the roundoff is guaranteed to be at most 1ulp.</p>
-<P>The following examples summarize the given definitions. Consider:</p>
-<li>A numeric type 'Int' representing integer numbers with a <i>numeric set</i>: {-2,-1,0,1,2}
-and <i>range</i>: [-2,2]</li>.
-<li>A numeric type 'Cardinal' representing integer numbers with a <i>numeric set</i>:
-{0,1,2,3,4,5,6,7,8,9} and <i>range</i>: [0,9] (no modulo-arithmetic here)</li>.
-<li>A numeric type 'Real' representing real numbers with a <i>numeric set</i>:
-{-2.0,-1.5,-1.0,-0.5,-0.0,+0.0,+0.5,+1.0,+1.5,+2.0} and <i>range</i>: [-2.0,+2.0]</li>
-<li>A numeric type 'Whole' representing real numbers with a <i>numeric set</i>:
-{-2.0,-1.0,0.0,+1.0,+2.0} and <i>range</i>: [-2.0,+2.0]</li>
-<p>First, notice that the types 'Real' and 'Whole' both represent real numbers, have the
-same range, but different precision.</p>
-<p>The integer number 1 (an abstract value) can be exactly represented in any of these types.<br>
-The integer number -1 can be exactly represented in 'Int', 'Real' and 'Whole', but cannot
-be represented in 'Cardinal', yielding negative overflow.<br>
-The real number 1.5 can be exactly represented in 'Real', and inexactly represented in the
-other types.<br>
-If 1.5 is represented as either 1 or 2 in any of the types (except Real), the
-representation is correctly rounded.<br>
- If 0.5 is represented as +1.5 in the type 'Real', it is incorrectly rounded.<br>
-(-2.0,-1.5) are the 'Real' adjacents of any real number in the interval [-2.0,-1.5],
-yet there are no 'Real' adjacents for x &lt; -2.0, nor for x &gt; +2.0.
-</p>
-
-
-
-
-<hr>
-<h2><A NAME="stdconv">Standard (numeric) Conversions</A></h2>
-<P>The C++ language defines <u>Standard Conversions</u> (&sect;4) some of which are
- conversions between arithmetic types.<br>
- These are <u>Integral promotions</u> (&sect;4.5), <u>Integral conversions</u> (&sect;4.7),
- <u>Floating point promotions</u> (&sect;4.6), <u>Floating point conversions</u> (&sect;4.8)
- and <u>Floating-integral conversions</u> (&sect;4.9).<br>
- In the sequel, integral and floating point promotions are called <b>arithmetic promotions</b>,
- and these plus integral, floating-point and floating-integral conversions are called
- <b>arithmetic conversions</b> (i.e, promotions are conversions).
-</P>
-<P>Promotions, both Integral and Floating point, are <i>value-preserving</i>, which means
-that the typed value is not changed with the conversion.</p>
-<p>In the sequel, consider a source typed value 's' of type 'S', the source abstract value 'N=abt(s)',
-a destination type 'T'; and whenever possible, a result typed value 't' of type 'T'.</p>
-<p>Integer to integer conversions are always defined:<br>
-If 'T' is unsigned, the abstract value which is effectively represented is not 'N' but
-'M=[ N % ( abt(h) + 1 ) ]', where 'h' is the highest unsigned typed value of type 'T'.<br>
-If 'T' is signed and 'N' is not directly representable, the result 't' is
-<u>implementation-defined</u>, which means that the C++ implementation is required to produce
-a value 't' even if it is totally unrelated to 's'.</p>
-<p>Floating to Floating conversions are defined only if 'N' is representable;
- if it is not, the conversion has <u>undefined behavior.</u><br>
-If 'N' is exactly representable, 't' is required to be the exact representation.<br>
-If 'N' is inexactly representable, 't' is required to be one of the two adjacents, with
-an implementation-defined choice of rounding direction; that is, the conversion is required
-to be correctly rounded.</p>
-<p>Floating to Integer conversions represent not 'N' but 'M=trunc(N)', were trunc() is to truncate: i.e.
-to remove the fractional part, if any.<br>
- If 'M' is not representable in 'T', the conversion has <u>undefined behavior</u>
- (unless 'T' is bool, see &sect;4.12).</p>
-<p>Integer to Floating conversions are always defined.<br>
-If 'N' is exactly representable, 't' is required to be the exact representation.<br>
-If 'N' is inexactly representable, 't' is required to be one of the two adjacents, with
-an implementation-defined choice of rounding direction; that is, the conversion is required
-to be correctly rounded.</p>
-
-
-
-
-
-
-<hr>
-<h2><A NAME="subranged">Subranged Conversion Direction, Subtype and Supertype</A></h2>
-<P>Given a source type 'S' and a destination type 'T', there is a <b>conversion direction</b>
-denoted: <code>'S-&gt;T'</code>.<br>
-For any two ranges the following <i>range relation</i> can be defined: A range
-'X' can be <i>entirely contained</i> in a range 'Y', in which case it is said that
-'X' is enclosed by 'Y'.<br>
- Formally: R(S) is <b>enclosed</b> by R(T) iif (R(S) intersection R(T)) == R(S).</P>
-<P>If the source type range, R(S), is <i>not enclosed</i> in the target type range, R(T);
-that is, if (R(S) &amp; R(T)) != R(S), the conversion direction is said to be <b>subranged</b>,
-which means that R(S) is not entirely contained in R(T) and therefore there is
-some portion of the source range which falls outside the target range. In other words,
-if a conversion direction S->T is subranged, there are values in S which cannot be represented
-in T because they are out of range.<br>
- Notice that for S->T, the adjective subranged applies to 'T'.</p>
-<p>Examples:<br>
-Given the following numeric types all representing real numbers:<br>
-<br>
-X with numeric set {-2.0,-1.0,0.0,+1.0,+2.0} and range [-2.0,+2.0]<br>
-Y with numeric set {-2.0,-1.5,-1.0,-0.5,0.0,+0.5,+1.0,+1.5,+2.0} and range [-2.0,+2.0]<br>
-Z with numeric set {-1.0,0.0,+1.0} and range [-1.0,+1.0]<br>
-<br>
-For:<br>
-<br>
-(a) X->Y:
- <blockquote>
- R(X) & R(Y) == R(X), then X->Y is not subranged.
- Thus, all values of type X are representable in the type Y.
- </blockquote>
-(b) Y->X:
- <blockquote>
- R(Y) & R(X) == R(Y), then Y->X is not subranged.
- Thus, all values of type Y are representable in the type X, but in this case, some values
- are <i>inexactly</i> representable (all the halves).<br>
- (note: it is to permit this case that a range is an interval of abstract values
- and not an interval of typed values)
- </blockquote>
-(b) X->Z:
- <blockquote>
- R(X) & R(Z) != R(X), then X->Z is subranged.
- Thus, some values of type X are not representable in the type Z, they fall out of range
- (-2.0 and +2.0)
- </blockquote>
-<p></p>
-<p>It is possible that R(S) is not enclosed by R(T), while neither is R(T) enclosed
-by R(S); for example, UNSIG=[0,255] is not enclosed by SIG=[-128,127]; neither is SIG
-enclosed by UNSIG.<br>
- This implies that is possible that a conversion direction is subranged both
- ways. This occurs when a mixture of signed/unsigned types are involved and indicates
- that in both directions there are values which can fall out of range.</P>
-<P>Given the range relation (subranged or not) of a conversion direction S-&gt;T,
-it is possible to classify 'S' and 'T' as <b>supertype</b> and <b>subtype</b>:<br>
-If the conversion is subranged, which means that 'T' cannot represent all possible values of type 'S',
-'S' is the supertype and 'T' the subtype; otherwise, 'T' is the supertype and 'S' the subtype.<br>
-<br>
-For example:<br>
-R(float)=[-FLT_MAX,FLT_MAX] and R(double)=[-DBL_MAX,DBL_MAX].<br>
-If FLT_MAX < DBL_MAX:<br>
-'double->float' is subranged and supertype=double, subtype=float.<br>
-'float->double' is not subranged and supertype=double, subtype=float.<br>
-Notice that while 'double->float' is subranged, 'float->double' is not,
-which yields the same supertype,subtype for both directions.<br>
-<br>
-Now consider:<br>
-R(int)=[INT_MIN,INT_MAX] and R(unsigned int)=[0,UINT_MAX].<br>
-A C++ implementation is required to have UINT_MAX > INT_MAX (&sect;3.9/3), so:<br>
-'int->unsigned' is subranged (negative values fall out of range) and supertype=int, subtype=unsigned.<br>
-'unsigned->int' is <em>also</em> subranged (high positive values fall out of range)
-and supertype=unsigned, subtype=int.<br>
-In this case, the conversion is subranged in both directions and the supertype,subtype pairs
-are not invariant (under inversion of direction). This indicates that none of the types can
-represent all the values of the other.</p>
-<p>When the supertype is the same for both 'S->T' and 'T->S', it is effectively indicating
-a type which can represent all the values of the subtype.<br>
- Consequently, if a conversion X->Y is not subranged, but the opposite (Y->X)
- is, so that the supertype is always 'Y', it is said that the direction X->Y
- is <b>correctly rounded value preserving</b>, meaning that all such conversions
- are guaranteed to produce results in range and correctly rounded (even if inexact).<br>
-For example, all integer to floating conversions are correctly rounded value preserving.
-</p>
-<HR>
-<P>Back to Numeric Conversion library index</P>
-<HR>
-<P>Revised 23 June 2004</P>
-<p>© Copyright Fernando Luis Cacciola Carballal, 2004</p>
-<p> Use, modification, and distribution are subject to the Boost Software
-License, Version 1.0. (See accompanying file <a href="../../../../LICENSE_1_0.txt">
-LICENSE_1_0.txt</a> or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">
-www.boost.org/LICENSE_1_0.txt</a>)</p>
-</body>
-</HTML>
\ No newline at end of file

Modified: trunk/libs/numeric/conversion/doc/html/boost_numericconversion/bounds___traits_class.html
==============================================================================
--- trunk/libs/numeric/conversion/doc/html/boost_numericconversion/bounds___traits_class.html (original)
+++ trunk/libs/numeric/conversion/doc/html/boost_numericconversion/bounds___traits_class.html 2008-02-14 13:08:16 EST (Thu, 14 Feb 2008)
@@ -13,17 +13,17 @@
     traits class">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table cellpadding="2" width="100%">
-<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../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>
-</table>
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../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="type_requirements_and_user_defined_types_support.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="conversion_traits___traits_class.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="type_requirements_and_user_defined_types_support.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="conversion_traits___traits_class.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
@@ -73,7 +73,7 @@
 <span class="special">};</span>
 </pre>
 <a name="boost_numericconversion.bounds___traits_class.traits_class_bounds_n_.members"></a><h5>
-<a name="id2626217"></a>
+<a name="id2626382"></a>
         <a href="bounds___traits_class.html#boost_numericconversion.bounds___traits_class.traits_class_bounds_n_.members">Members</a>
       </h5>
 <div class="blockquote"><blockquote class="blockquote">
@@ -153,11 +153,15 @@
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
 <td align="left"></td>
-<td align="right"><small>Copyright © 2004 -2007 Fernando Luis Cacciola Carballal</small></td>
+<td align="right"><div class="copyright-footer">Copyright © 2004 -2007 Fernando Luis Cacciola Carballal<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="type_requirements_and_user_defined_types_support.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="conversion_traits___traits_class.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="type_requirements_and_user_defined_types_support.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="conversion_traits___traits_class.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: trunk/libs/numeric/conversion/doc/html/boost_numericconversion/conversion_traits___traits_class.html
==============================================================================
--- trunk/libs/numeric/conversion/doc/html/boost_numericconversion/conversion_traits___traits_class.html (original)
+++ trunk/libs/numeric/conversion/doc/html/boost_numericconversion/conversion_traits___traits_class.html 2008-02-14 13:08:16 EST (Thu, 14 Feb 2008)
@@ -13,17 +13,17 @@
     Converter Policy Classes">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table cellpadding="2" width="100%">
-<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../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>
-</table>
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../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="bounds___traits_class.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="numeric_converter_policy_classes.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="bounds___traits_class.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="numeric_converter_policy_classes.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
@@ -33,24 +33,6 @@
 </h2></div></div></div>
 <div class="toc"><dl>
 <dt><span class="section">Types</span></dt>
-<dd><dl>
-<dt><span class="section"><a href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.enumeration_int_float_mixture_enum">enumeration
- int_float_mixture_enum</a></span></dt>
-<dt><span class="section"><a href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.enumeration_sign_mixture_enum">enumeration
- sign_mixture_enum</a></span></dt>
-<dt><span class="section"><a href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.enumeration_udt_builtin_mixture_enum">enumeration
- udt_builtin_mixture_enum</a></span></dt>
-<dt><span class="section"><a href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.template_class_int_float_mixture__">template
- class int_float_mixture&lt;&gt;</a></span></dt>
-<dt><span class="section"><a href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.template_class_sign_mixture__">template
- class sign_mixture&lt;&gt;</a></span></dt>
-<dt><span class="section"><a href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.template_class_udt_builtin_mixture__">template
- class udt_builtin_mixture&lt;&gt;</a></span></dt>
-<dt><span class="section"><a href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.template_class_is_subranged__">template
- class is_subranged&lt;&gt;</a></span></dt>
-<dt><span class="section"><a href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.template_class_conversion_traits__">template
- class conversion_traits&lt;&gt;</a></span></dt>
-</dl></dd>
 <dt><span class="section">Examples</span></dt>
 </dl></div>
 <div class="section" lang="en">
@@ -555,11 +537,15 @@
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
 <td align="left"></td>
-<td align="right"><small>Copyright © 2004 -2007 Fernando Luis Cacciola Carballal</small></td>
+<td align="right"><div class="copyright-footer">Copyright © 2004 -2007 Fernando Luis Cacciola Carballal<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="bounds___traits_class.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="numeric_converter_policy_classes.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="bounds___traits_class.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="numeric_converter_policy_classes.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: trunk/libs/numeric/conversion/doc/html/boost_numericconversion/converter___function_object.html
==============================================================================
--- trunk/libs/numeric/conversion/doc/html/boost_numericconversion/converter___function_object.html (original)
+++ trunk/libs/numeric/conversion/doc/html/boost_numericconversion/converter___function_object.html 2008-02-14 13:08:16 EST (Thu, 14 Feb 2008)
@@ -12,17 +12,17 @@
     Requirements and User-defined-types support">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table cellpadding="2" width="100%">
-<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../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>
-</table>
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../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="definitions.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="type_requirements_and_user_defined_types_support.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="definitions.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="type_requirements_and_user_defined_types_support.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
@@ -401,7 +401,7 @@
 <a name="numeric_conversion_converter_internal"></a><p>
       </p>
 <a name="boost_numericconversion.converter___function_object.member_functions.internal_member_functions"></a><h5>
-<a name="id2623952"></a>
+<a name="id2624118"></a>
         <a href="converter___function_object.html#boost_numericconversion.converter___function_object.member_functions.internal_member_functions">Internal
         Member Functions</a>
       </h5>
@@ -497,11 +497,15 @@
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
 <td align="left"></td>
-<td align="right"><small>Copyright © 2004 -2007 Fernando Luis Cacciola Carballal</small></td>
+<td align="right"><div class="copyright-footer">Copyright © 2004 -2007 Fernando Luis Cacciola Carballal<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="definitions.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="type_requirements_and_user_defined_types_support.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="definitions.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="type_requirements_and_user_defined_types_support.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: trunk/libs/numeric/conversion/doc/html/boost_numericconversion/definitions.html
==============================================================================
--- trunk/libs/numeric/conversion/doc/html/boost_numericconversion/definitions.html (original)
+++ trunk/libs/numeric/conversion/doc/html/boost_numericconversion/definitions.html 2008-02-14 13:08:16 EST (Thu, 14 Feb 2008)
@@ -11,17 +11,17 @@
     function object">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table cellpadding="2" width="100%">
-<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../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>
-</table>
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../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="converter___function_object.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="../index.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="converter___function_object.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
@@ -179,35 +179,42 @@
 <dl>
 <dt><span class="term"><span class="underline">signed integer
         types</span> (§3.9.1/2):</span></dt>
-<dd>
-<code class="computeroutput"><span class="special">{</span><span class="keyword">signed</span>
- <span class="keyword">char</span><span class="special">,</span>
- <span class="keyword">signed</span> <span class="keyword">short</span>
- <span class="keyword">int</span><span class="special">,</span> <span class="keyword">signed</span> <span class="keyword">int</span><span class="special">,</span> <span class="keyword">signed</span> <span class="keyword">long</span> <span class="keyword">int</span><span class="special">}</span></code> Can be used to represent general integer
- numbers (both negative and positive).
- </dd>
+<dd><p>
+ <code class="computeroutput"><span class="special">{</span><span class="keyword">signed</span>
+ <span class="keyword">char</span><span class="special">,</span>
+ <span class="keyword">signed</span> <span class="keyword">short</span>
+ <span class="keyword">int</span><span class="special">,</span>
+ <span class="keyword">signed</span> <span class="keyword">int</span><span class="special">,</span> <span class="keyword">signed</span> <span class="keyword">long</span> <span class="keyword">int</span><span class="special">}</span></code> Can be used to represent general integer
+ numbers (both negative and positive).
+ </p></dd>
 <dt><span class="term"><span class="underline">unsigned integer
         types</span> (§3.9.1/3):</span></dt>
-<dd>
-<code class="computeroutput"><span class="special">{</span><span class="keyword">unsigned</span>
- <span class="keyword">char</span><span class="special">,</span>
- <span class="keyword">unsigned</span> <span class="keyword">short</span>
- <span class="keyword">int</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="keyword">int</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="keyword">long</span> <span class="keyword">int</span><span class="special">}</span></code> Can be used to represent positive integer
- numbers with modulo-arithmetic.
- </dd>
+<dd><p>
+ <code class="computeroutput"><span class="special">{</span><span class="keyword">unsigned</span>
+ <span class="keyword">char</span><span class="special">,</span>
+ <span class="keyword">unsigned</span> <span class="keyword">short</span>
+ <span class="keyword">int</span><span class="special">,</span>
+ <span class="keyword">unsigned</span> <span class="keyword">int</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="keyword">long</span> <span class="keyword">int</span><span class="special">}</span></code> Can be used to represent positive integer
+ numbers with modulo-arithmetic.
+ </p></dd>
 <dt><span class="term"><span class="underline">floating-point
         types</span> (§3.9.1/8):</span></dt>
-<dd>
-<code class="computeroutput"><span class="special">{</span><span class="keyword">float</span><span class="special">,</span><span class="keyword">double</span><span class="special">,</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">}</span></code> Can be used to represent real numbers.
- </dd>
+<dd><p>
+ <code class="computeroutput"><span class="special">{</span><span class="keyword">float</span><span class="special">,</span><span class="keyword">double</span><span class="special">,</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">}</span></code>
+ Can be used to represent real numbers.
+ </p></dd>
 <dt><span class="term"><span class="underline">integral or
         integer types</span> (§3.9.1/7):</span></dt>
-<dd><code class="computeroutput"><span class="special">{{</span><span class="keyword">signed</span>
- <span class="identifier">integers</span><span class="special">},{</span><span class="keyword">unsigned</span> <span class="identifier">integers</span><span class="special">},</span> <span class="keyword">bool</span><span class="special">,</span> <span class="keyword">char</span> <span class="keyword">and</span> <span class="keyword">wchar_t</span><span class="special">}</span></code></dd>
+<dd><p>
+ <code class="computeroutput"><span class="special">{{</span><span class="keyword">signed</span>
+ <span class="identifier">integers</span><span class="special">},{</span><span class="keyword">unsigned</span> <span class="identifier">integers</span><span class="special">},</span> <span class="keyword">bool</span><span class="special">,</span> <span class="keyword">char</span> <span class="keyword">and</span> <span class="keyword">wchar_t</span><span class="special">}</span></code>
+ </p></dd>
 <dt><span class="term"><span class="underline">arithmetic
         types</span> (§3.9.1/8):</span></dt>
-<dd><code class="computeroutput"><span class="special">{{</span><span class="identifier">integer</span>
- <span class="identifier">types</span><span class="special">},{</span><span class="identifier">floating</span> <span class="identifier">types</span><span class="special">}}</span></code></dd>
+<dd><p>
+ <code class="computeroutput"><span class="special">{{</span><span class="identifier">integer</span>
+ <span class="identifier">types</span><span class="special">},{</span><span class="identifier">floating</span> <span class="identifier">types</span><span class="special">}}</span></code>
+ </p></dd>
 </dl>
 </div>
 <p>
@@ -234,31 +241,23 @@
       </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>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../doc/html/images/note.png"></td>
 <th align="left">Note</th>
 </tr>
 <tr><td align="left" valign="top">
 <p>
- </p>
-<p>
- Always remember that unsigned types, unlike signed types, have modulo-arithmetic;
- that is, they do not overflow. This means that:
- </p>
-<p>
- </p>
-<p>
- <span class="bold"><strong>-</strong></span> Always be extra careful when mixing
- signed/unsigned types
- </p>
-<p>
- </p>
+ Always remember that unsigned types, unlike signed types, have modulo-arithmetic;
+ that is, they do not overflow. This means that:
+ </p>
 <p>
- <span class="bold"><strong>-</strong></span> Use unsigned types only when you need
- modulo arithmetic or very very large numbers. Don't use unsigned types
- just because you intend to deal with positive values only (you can do
- this with signed types as well).
- </p>
+ <span class="bold"><strong>-</strong></span> Always be extra careful when mixing
+ signed/unsigned types
+ </p>
 <p>
+ <span class="bold"><strong>-</strong></span> Use unsigned types only when you need
+ modulo arithmetic or very very large numbers. Don't use unsigned types
+ just because you intend to deal with positive values only (you can do this
+ with signed types as well).
         </p>
 </td></tr>
 </table></div>
@@ -875,37 +874,31 @@
 <p class="title"><b></b></p>
 <dl>
 <dt><span class="term">(a) X-&gt;Y:</span></dt>
-<dd>
-<code class="computeroutput"><span class="identifier">R</span><span class="special">(</span><span class="identifier">X</span><span class="special">)</span> <span class="special">&amp;</span>
- <span class="identifier">R</span><span class="special">(</span><span class="identifier">Y</span><span class="special">)</span> <span class="special">==</span>
- <span class="identifier">R</span><span class="special">(</span><span class="identifier">X</span><span class="special">)</span></code>, then
- <code class="computeroutput"><span class="identifier">X</span><span class="special">-&gt;</span><span class="identifier">Y</span></code> is not subranged. Thus, all values
- of type <code class="computeroutput"><span class="identifier">X</span></code> are representable
- in the type <code class="computeroutput"><span class="identifier">Y</span></code>.
- </dd>
+<dd><p>
+ <code class="computeroutput"><span class="identifier">R</span><span class="special">(</span><span class="identifier">X</span><span class="special">)</span> <span class="special">&amp;</span> <span class="identifier">R</span><span class="special">(</span><span class="identifier">Y</span><span class="special">)</span> <span class="special">==</span> <span class="identifier">R</span><span class="special">(</span><span class="identifier">X</span><span class="special">)</span></code>,
+ then <code class="computeroutput"><span class="identifier">X</span><span class="special">-&gt;</span><span class="identifier">Y</span></code> is not subranged. Thus, all values
+ of type <code class="computeroutput"><span class="identifier">X</span></code> are representable
+ in the type <code class="computeroutput"><span class="identifier">Y</span></code>.
+ </p></dd>
 <dt><span class="term">(b) Y-&gt;X:</span></dt>
-<dd>
-<code class="computeroutput"><span class="identifier">R</span><span class="special">(</span><span class="identifier">Y</span><span class="special">)</span> <span class="special">&amp;</span>
- <span class="identifier">R</span><span class="special">(</span><span class="identifier">X</span><span class="special">)</span> <span class="special">==</span>
- <span class="identifier">R</span><span class="special">(</span><span class="identifier">Y</span><span class="special">)</span></code>, then
- <code class="computeroutput"><span class="identifier">Y</span><span class="special">-&gt;</span><span class="identifier">X</span></code> is not subranged. Thus, all values
- of type <code class="computeroutput"><span class="identifier">Y</span></code> are representable
- in the type <code class="computeroutput"><span class="identifier">X</span></code>, but in this
- case, some values are <span class="emphasis"><em>inexactly</em></span> representable (all
- the halves). (note: it is to permit this case that a range is an interval
- of abstract values and not an interval of typed values)
- </dd>
+<dd><p>
+ <code class="computeroutput"><span class="identifier">R</span><span class="special">(</span><span class="identifier">Y</span><span class="special">)</span> <span class="special">&amp;</span> <span class="identifier">R</span><span class="special">(</span><span class="identifier">X</span><span class="special">)</span> <span class="special">==</span> <span class="identifier">R</span><span class="special">(</span><span class="identifier">Y</span><span class="special">)</span></code>,
+ then <code class="computeroutput"><span class="identifier">Y</span><span class="special">-&gt;</span><span class="identifier">X</span></code> is not subranged. Thus, all values
+ of type <code class="computeroutput"><span class="identifier">Y</span></code> are representable
+ in the type <code class="computeroutput"><span class="identifier">X</span></code>, but in
+ this case, some values are <span class="emphasis"><em>inexactly</em></span> representable
+ (all the halves). (note: it is to permit this case that a range is an
+ interval of abstract values and not an interval of typed values)
+ </p></dd>
 <dt><span class="term">(b) X-&gt;Z:</span></dt>
-<dd>
-<code class="computeroutput"><span class="identifier">R</span><span class="special">(</span><span class="identifier">X</span><span class="special">)</span> <span class="special">&amp;</span>
- <span class="identifier">R</span><span class="special">(</span><span class="identifier">Z</span><span class="special">)</span> <span class="special">!=</span>
- <span class="identifier">R</span><span class="special">(</span><span class="identifier">X</span><span class="special">)</span></code>, then
- <code class="computeroutput"><span class="identifier">X</span><span class="special">-&gt;</span><span class="identifier">Z</span></code> is subranged. Thus, some values of
- type <code class="computeroutput"><span class="identifier">X</span></code> are not representable
- in the type <code class="computeroutput"><span class="identifier">Z</span></code>, they fall
- out of range <code class="computeroutput"><span class="special">(-</span><span class="number">2.0</span>
- <span class="keyword">and</span> <span class="special">+</span><span class="number">2.0</span><span class="special">)</span></code>.
- </dd>
+<dd><p>
+ <code class="computeroutput"><span class="identifier">R</span><span class="special">(</span><span class="identifier">X</span><span class="special">)</span> <span class="special">&amp;</span> <span class="identifier">R</span><span class="special">(</span><span class="identifier">Z</span><span class="special">)</span> <span class="special">!=</span> <span class="identifier">R</span><span class="special">(</span><span class="identifier">X</span><span class="special">)</span></code>,
+ then <code class="computeroutput"><span class="identifier">X</span><span class="special">-&gt;</span><span class="identifier">Z</span></code> is subranged. Thus, some values of
+ type <code class="computeroutput"><span class="identifier">X</span></code> are not representable
+ in the type <code class="computeroutput"><span class="identifier">Z</span></code>, they fall
+ out of range <code class="computeroutput"><span class="special">(-</span><span class="number">2.0</span>
+ <span class="keyword">and</span> <span class="special">+</span><span class="number">2.0</span><span class="special">)</span></code>.
+ </p></dd>
 </dl>
 </div>
 <p>
@@ -1007,11 +1000,15 @@
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
 <td align="left"></td>
-<td align="right"><small>Copyright © 2004 -2007 Fernando Luis Cacciola Carballal</small></td>
+<td align="right"><div class="copyright-footer">Copyright © 2004 -2007 Fernando Luis Cacciola Carballal<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="converter___function_object.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="../index.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="converter___function_object.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: trunk/libs/numeric/conversion/doc/html/boost_numericconversion/improved_numeric_cast__.html
==============================================================================
--- trunk/libs/numeric/conversion/doc/html/boost_numericconversion/improved_numeric_cast__.html (original)
+++ trunk/libs/numeric/conversion/doc/html/boost_numericconversion/improved_numeric_cast__.html 2008-02-14 13:08:16 EST (Thu, 14 Feb 2008)
@@ -13,17 +13,17 @@
     and Acknowledgments">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table cellpadding="2" width="100%">
-<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../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>
-</table>
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../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="numeric_converter_policy_classes.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="../numeric_conversion/history_and_acknowledgments.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="numeric_converter_policy_classes.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../numeric_conversion/history_and_acknowledgments.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
@@ -174,11 +174,15 @@
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
 <td align="left"></td>
-<td align="right"><small>Copyright © 2004 -2007 Fernando Luis Cacciola Carballal</small></td>
+<td align="right"><div class="copyright-footer">Copyright © 2004 -2007 Fernando Luis Cacciola Carballal<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="numeric_converter_policy_classes.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="../numeric_conversion/history_and_acknowledgments.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="numeric_converter_policy_classes.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../numeric_conversion/history_and_acknowledgments.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: trunk/libs/numeric/conversion/doc/html/boost_numericconversion/numeric_converter_policy_classes.html
==============================================================================
--- trunk/libs/numeric/conversion/doc/html/boost_numericconversion/numeric_converter_policy_classes.html (original)
+++ trunk/libs/numeric/conversion/doc/html/boost_numericconversion/numeric_converter_policy_classes.html 2008-02-14 13:08:16 EST (Thu, 14 Feb 2008)
@@ -13,17 +13,17 @@
     numeric_cast&lt;&gt;">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table cellpadding="2" width="100%">
-<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../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>
-</table>
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../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="conversion_traits___traits_class.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="improved_numeric_cast__.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="conversion_traits___traits_class.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="improved_numeric_cast__.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
@@ -165,28 +165,22 @@
       </p>
 <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>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../../../../../doc/html/images/important.png"></td>
 <th align="left">Important</th>
 </tr>
-<tr><td align="left" valign="top">
-<p>
- </p>
-<p>
- <span class="bold"><strong>RELEASE NOTE for 1.33</strong></span> Previous to boost
- version 1.33, the exception class <code class="computeroutput"><span class="identifier">bad_numeric_cast</span></code>
- was named <code class="computeroutput"><span class="identifier">bad_numeric_conversion</span></code>.
- However, in 1.33, the old function <code class="computeroutput"><span class="identifier">numeric_cast</span><span class="special">&lt;&gt;</span></code> from <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">cast</span><span class="special">.</span><span class="identifier">hpp</span></code>
- was completly replaced by the new <code class="computeroutput"><span class="identifier">numeric_cast</span><span class="special">&lt;&gt;</span></code> in <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">numeric</span><span class="special">/</span><span class="identifier">conversion</span><span class="special">/</span><span class="identifier">cast</span><span class="special">.</span><span class="identifier">hpp</span></code>
- (and <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">cast</span><span class="special">.</span><span class="identifier">hpp</span></code> is including <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">numeric</span><span class="special">/</span><span class="identifier">conversion</span><span class="special">/</span><span class="identifier">cast</span><span class="special">.</span><span class="identifier">hpp</span></code>
- now). That old function which existed in boost for quite some time used
- the <code class="computeroutput"><span class="identifier">bad_numeric_cast</span></code>
- as its exception type so I decided to avoid backward compatibility problems
- by adopting it (guessing that the user base for the old code is wider
- than for the new code).
- </p>
-<p>
- </p>
-</td></tr>
+<tr><td align="left" valign="top"><p>
+ <span class="bold"><strong>RELEASE NOTE for 1.33</strong></span> Previous to boost
+ version 1.33, the exception class <code class="computeroutput"><span class="identifier">bad_numeric_cast</span></code>
+ was named <code class="computeroutput"><span class="identifier">bad_numeric_conversion</span></code>.
+ However, in 1.33, the old function <code class="computeroutput"><span class="identifier">numeric_cast</span><span class="special">&lt;&gt;</span></code> from <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">cast</span><span class="special">.</span><span class="identifier">hpp</span></code>
+ was completly replaced by the new <code class="computeroutput"><span class="identifier">numeric_cast</span><span class="special">&lt;&gt;</span></code> in <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">numeric</span><span class="special">/</span><span class="identifier">conversion</span><span class="special">/</span><span class="identifier">cast</span><span class="special">.</span><span class="identifier">hpp</span></code>
+ (and <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">cast</span><span class="special">.</span><span class="identifier">hpp</span></code> is including <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">numeric</span><span class="special">/</span><span class="identifier">conversion</span><span class="special">/</span><span class="identifier">cast</span><span class="special">.</span><span class="identifier">hpp</span></code>
+ now). That old function which existed in boost for quite some time used
+ the <code class="computeroutput"><span class="identifier">bad_numeric_cast</span></code> as
+ its exception type so I decided to avoid backward compatibility problems
+ by adopting it (guessing that the user base for the old code is wider than
+ for the new code).
+ </p></td></tr>
 </table></div>
 </div>
 <a name="numeric_conversion_policy_float_to_int_rounder"></a><p>
@@ -226,20 +220,14 @@
       </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>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../doc/html/images/note.png"></td>
 <th align="left">Note</th>
 </tr>
-<tr><td align="left" valign="top">
-<p>
- </p>
-<p>
- These classes are not intended to be general purpose rounding functions
- but specific policies for <code class="computeroutput"><span class="identifier">converter</span><span class="special">&lt;&gt;</span></code>. This is why they are not function
- objects.
- </p>
-<p>
- </p>
-</td></tr>
+<tr><td align="left" valign="top"><p>
+ These classes are not intended to be general purpose rounding functions
+ but specific policies for <code class="computeroutput"><span class="identifier">converter</span><span class="special">&lt;&gt;</span></code>. This is why they are not function
+ objects.
+ </p></td></tr>
 </table></div>
 <pre class="programlisting">
 <span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">numeric</span> <span class="special">{</span>
@@ -299,7 +287,7 @@
 <span class="special">}</span> <span class="special">}</span> <span class="comment">// namespace numeric, namespace boost
 </span></pre>
 <a name="boost_numericconversion.numeric_converter_policy_classes.policy_float2introunder.math_functions_used_by_the_rounder_policies"></a><h5>
-<a name="id2633882"></a>
+<a name="id2634042"></a>
         <a href="numeric_converter_policy_classes.html#boost_numericconversion.numeric_converter_policy_classes.policy_float2introunder.math_functions_used_by_the_rounder_policies">Math
         Functions used by the rounder policies</a>
       </h5>
@@ -422,11 +410,15 @@
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
 <td align="left"></td>
-<td align="right"><small>Copyright © 2004 -2007 Fernando Luis Cacciola Carballal</small></td>
+<td align="right"><div class="copyright-footer">Copyright © 2004 -2007 Fernando Luis Cacciola Carballal<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="conversion_traits___traits_class.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="improved_numeric_cast__.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="conversion_traits___traits_class.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="improved_numeric_cast__.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: trunk/libs/numeric/conversion/doc/html/boost_numericconversion/type_requirements_and_user_defined_types_support.html
==============================================================================
--- trunk/libs/numeric/conversion/doc/html/boost_numericconversion/type_requirements_and_user_defined_types_support.html (original)
+++ trunk/libs/numeric/conversion/doc/html/boost_numericconversion/type_requirements_and_user_defined_types_support.html 2008-02-14 13:08:16 EST (Thu, 14 Feb 2008)
@@ -13,17 +13,17 @@
     traits class">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table cellpadding="2" width="100%">
-<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../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>
-</table>
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../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="converter___function_object.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="bounds___traits_class.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="converter___function_object.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="bounds___traits_class.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
@@ -86,7 +86,7 @@
       special semantics</a>
 </h3></div></div></div>
 <a name="boost_numericconversion.type_requirements_and_user_defined_types_support.udt_s_special_semantics.conversion_traits"></a><h5>
-<a name="id2625220"></a>
+<a name="id2625386"></a>
         <a href="type_requirements_and_user_defined_types_support.html#boost_numericconversion.type_requirements_and_user_defined_types_support.udt_s_special_semantics.conversion_traits">Conversion
         Traits</a>
       </h5>
@@ -130,7 +130,7 @@
         above.
       </p>
 <a name="boost_numericconversion.type_requirements_and_user_defined_types_support.udt_s_special_semantics.range_checking"></a><h5>
-<a name="id2625640"></a>
+<a name="id2625806"></a>
         <a href="type_requirements_and_user_defined_types_support.html#boost_numericconversion.type_requirements_and_user_defined_types_support.udt_s_special_semantics.range_checking">Range
         Checking</a>
       </h5>
@@ -183,11 +183,15 @@
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
 <td align="left"></td>
-<td align="right"><small>Copyright © 2004 -2007 Fernando Luis Cacciola Carballal</small></td>
+<td align="right"><div class="copyright-footer">Copyright © 2004 -2007 Fernando Luis Cacciola Carballal<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="converter___function_object.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="bounds___traits_class.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="converter___function_object.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="bounds___traits_class.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Deleted: /trunk/libs/optional/doc/html/images/callouts/1.png
==============================================================================
Binary file. No diff available.

Deleted: /trunk/libs/optional/doc/html/images/callouts/10.png
==============================================================================
Binary file. No diff available.

Deleted: /trunk/libs/optional/doc/html/images/callouts/11.png
==============================================================================
Binary file. No diff available.

Deleted: /trunk/libs/optional/doc/html/images/callouts/12.png
==============================================================================
Binary file. No diff available.

Deleted: /trunk/libs/optional/doc/html/images/callouts/13.png
==============================================================================
Binary file. No diff available.

Deleted: /trunk/libs/optional/doc/html/images/callouts/14.png
==============================================================================
Binary file. No diff available.

Deleted: /trunk/libs/optional/doc/html/images/callouts/15.png
==============================================================================
Binary file. No diff available.

Deleted: /trunk/libs/optional/doc/html/images/callouts/2.png
==============================================================================
Binary file. No diff available.

Deleted: /trunk/libs/optional/doc/html/images/callouts/3.png
==============================================================================
Binary file. No diff available.

Deleted: /trunk/libs/optional/doc/html/images/callouts/4.png
==============================================================================
Binary file. No diff available.

Deleted: /trunk/libs/optional/doc/html/images/callouts/5.png
==============================================================================
Binary file. No diff available.

Deleted: /trunk/libs/optional/doc/html/images/callouts/6.png
==============================================================================
Binary file. No diff available.

Deleted: /trunk/libs/optional/doc/html/images/callouts/7.png
==============================================================================
Binary file. No diff available.

Deleted: /trunk/libs/optional/doc/html/images/callouts/8.png
==============================================================================
Binary file. No diff available.

Deleted: /trunk/libs/optional/doc/html/images/callouts/9.png
==============================================================================
Binary file. No diff available.

Deleted: /trunk/libs/optional/doc/html/images/caution.png
==============================================================================
Binary file. No diff available.

Deleted: /trunk/libs/optional/doc/html/images/home.png
==============================================================================
Binary file. No diff available.

Deleted: /trunk/libs/optional/doc/html/images/important.png
==============================================================================
Binary file. No diff available.

Deleted: /trunk/libs/optional/doc/html/images/next.png
==============================================================================
Binary file. No diff available.

Deleted: /trunk/libs/optional/doc/html/images/note.png
==============================================================================
Binary file. No diff available.

Deleted: /trunk/libs/optional/doc/html/images/prev.png
==============================================================================
Binary file. No diff available.

Deleted: /trunk/libs/optional/doc/html/images/tip.png
==============================================================================
Binary file. No diff available.

Deleted: /trunk/libs/optional/doc/html/images/up.png
==============================================================================
Binary file. No diff available.

Deleted: /trunk/libs/optional/doc/html/images/warning.png
==============================================================================
Binary file. No diff available.

Modified: trunk/libs/numeric/conversion/doc/html/index.html
==============================================================================
--- trunk/libs/numeric/conversion/doc/html/index.html (original)
+++ trunk/libs/numeric/conversion/doc/html/index.html 2008-02-14 13:08:16 EST (Thu, 14 Feb 2008)
@@ -8,16 +8,16 @@
 <link rel="next" href="boost_numericconversion/definitions.html" title="Definitions">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table cellpadding="2" width="100%">
-<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../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>
-</table>
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../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="n" href="boost_numericconversion/definitions.html"><img src="images/next.png" alt="Next"></a></div>
+<div class="spirit-nav"><a accesskey="n" href="boost_numericconversion/definitions.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a></div>
 <div class="chapter" lang="en">
 <div class="titlepage"><div>
 <div><h2 class="title">
@@ -27,7 +27,7 @@
 </h3></div></div>
 <div><p class="copyright">Copyright © 2004 -2007 Fernando Luis Cacciola Carballal</p></div>
 <div><div class="legalnotice">
-<a name="id2604797"></a><p>
+<a name="id2604942"></a><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>
@@ -178,10 +178,10 @@
   </p>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"><small><p>Last revised: June 04, 2007 at 03:08:57 GMT</p></small></td>
-<td align="right"><small></small></td>
+<td align="left"><p><small>Last revised: February 12, 2008 at 22:56:38 GMT</small></p></td>
+<td align="right"><div class="copyright-footer"></div></td>
 </tr></table>
 <hr>
-<div class="spirit-nav"><a accesskey="n" href="boost_numericconversion/definitions.html"><img src="images/next.png" alt="Next"></a></div>
+<div class="spirit-nav"><a accesskey="n" href="boost_numericconversion/definitions.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a></div>
 </body>
 </html>

Modified: trunk/libs/numeric/conversion/doc/html/numeric_conversion/bibliography.html
==============================================================================
--- trunk/libs/numeric/conversion/doc/html/numeric_conversion/bibliography.html (original)
+++ trunk/libs/numeric/conversion/doc/html/numeric_conversion/bibliography.html 2008-02-14 13:08:16 EST (Thu, 14 Feb 2008)
@@ -10,17 +10,17 @@
     and Acknowledgments">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table cellpadding="2" width="100%">
-<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../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>
-</table>
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../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_and_acknowledgments.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="p" href="history_and_acknowledgments.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
@@ -73,11 +73,15 @@
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
 <td align="left"></td>
-<td align="right"><small>Copyright © 2004 -2007 Fernando Luis Cacciola Carballal</small></td>
+<td align="right"><div class="copyright-footer">Copyright © 2004 -2007 Fernando Luis Cacciola Carballal<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_and_acknowledgments.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="p" href="history_and_acknowledgments.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a>
 </div>
 </body>
 </html>

Modified: trunk/libs/numeric/conversion/doc/html/numeric_conversion/history_and_acknowledgments.html
==============================================================================
--- trunk/libs/numeric/conversion/doc/html/numeric_conversion/history_and_acknowledgments.html (original)
+++ trunk/libs/numeric/conversion/doc/html/numeric_conversion/history_and_acknowledgments.html 2008-02-14 13:08:16 EST (Thu, 14 Feb 2008)
@@ -12,17 +12,17 @@
 <link rel="next" href="bibliography.html" title="Bibliography">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table cellpadding="2" width="100%">
-<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../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>
-</table>
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../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="../boost_numericconversion/improved_numeric_cast__.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="bibliography.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="../boost_numericconversion/improved_numeric_cast__.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="bibliography.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
@@ -31,7 +31,7 @@
     and Acknowledgments</a>
 </h2></div></div></div>
 <a name="numeric_conversion.history_and_acknowledgments.pre_formal_review"></a><h4>
-<a name="id2636340"></a>
+<a name="id2636499"></a>
       <a href="history_and_acknowledgments.html#numeric_conversion.history_and_acknowledgments.pre_formal_review">Pre-formal
       review</a>
     </h4>
@@ -67,7 +67,7 @@
       </li>
 </ul></div>
 <a name="numeric_conversion.history_and_acknowledgments.post_formal_review"></a><h4>
-<a name="id2636492"></a>
+<a name="id2636651"></a>
       <a href="history_and_acknowledgments.html#numeric_conversion.history_and_acknowledgments.post_formal_review">Post-formal
       review</a>
     </h4>
@@ -85,11 +85,15 @@
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
 <td align="left"></td>
-<td align="right"><small>Copyright © 2004 -2007 Fernando Luis Cacciola Carballal</small></td>
+<td align="right"><div class="copyright-footer">Copyright © 2004 -2007 Fernando Luis Cacciola Carballal<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="../boost_numericconversion/improved_numeric_cast__.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="bibliography.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="../boost_numericconversion/improved_numeric_cast__.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="bibliography.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Deleted: trunk/libs/numeric/conversion/doc/index.html
==============================================================================
--- trunk/libs/numeric/conversion/doc/index.html 2008-02-14 13:08:16 EST (Thu, 14 Feb 2008)
+++ (empty file)
@@ -1,119 +0,0 @@
-<HTML>
- <HEAD>
- <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
- <LINK REL="stylesheet" TYPE="text/css" HREF="../../../../boost.css">
- <TITLE>Boost Numeric Conversion Library - Index</TITLE>
- </HEAD>
- <BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000ff" VLINK="#800080">
- <TABLE BORDER="0" CELLPADDING="7" CELLSPACING="0" WIDTH="100%"
- SUMMARY="header">
- <TR>
- <TH VALIGN="top" WIDTH="300">
- <H3><A HREF="../../../../index.htm"><IMG HEIGHT="86" WIDTH="277"
- ALT="C++ Boost" SRC="../../../../boost.png" BORDER="0"></A></H3> </TH>
- <TH VALIGN="top">
- <H1 ALIGN="center">Boost Numeric Conversion Library</H1> </TH>
- </TR>
- </TABLE>
- <HR>
- <table border="0" cellpadding="0" width="100%">
- <tr>
- <td width="50%" valign="top"><font size="4">This Document</font><br><br>
- &nbsp;&nbsp;&nbsp; Overview<br>
- &nbsp;&nbsp;&nbsp; History and Acknowledgments<br>
- &nbsp;&nbsp;&nbsp; Bibliography<br>
- </td>
- <td width="50%"><font size="4">Other Documents</font><br><br>
- &nbsp;&nbsp;&nbsp; Definitions<br>
- &nbsp;&nbsp;&nbsp; converter<> function object<br>
- &nbsp;&nbsp;&nbsp; Type Requirements and User-defined-types support<br>
- &nbsp;&nbsp;&nbsp; bounds<> traits class<br>
- &nbsp;&nbsp;&nbsp; conversion_traits<> traits class<br>
- &nbsp;&nbsp;&nbsp; Numeric Converter Policy Classes<br>
- &nbsp;&nbsp;&nbsp; Improved numeric_cast<><br>
- </td>
- </tr>
- </table>
-
-<hr>
-<H2><A NAME="Overview"></A>Overview</H2>
-<P>The Boost Numeric Conversion library is a collection of tools to describe and perform
-conversions between values of different numeric types.</p>
-<p>The library includes a special alternative for a subset of <code>std::numeric_limits&lt;&gt;</code>,
-the bounds<> traits class, which provides
-a consistent way to obtain the boundary values for the
-range of a numeric type.</p>
-<p>It also includes a set of trait classes which
- describes the compile-time properties of a conversion from a source to a target
- numeric type. Both arithmetic and <a href="definitions.html#numtypes">user-defined
- numeric types</a> can be used.</p>
-<p>A policy-based converter object which uses <code>conversion_traits</code>
-to select an optimized implementation is supplied.
-Such implementation uses an optimal range checking code suitable for the source/target combination.<br>
- The converter's out-of-range behavior can be customized via an OverflowHandler
- policy.<br>
-For floating-point to integral conversions, the rounding mode can be selected via
-the Float2IntRounder policy.<br>
- A custom low-level conversion routine (for UDTs for instance) can be passed
- via a RawConverter policy.<br>
- The optimized automatic range-checking logic can be overridden via a UserRangeChecker
- policy.</p>
-<hr>
-<H2><A NAME="Ack"></A>History and Acknowledgments</H2>
-<p>Pre-formal review:</p>
-<blockquote>
-<p>Kevlin Henney, with help from David Abrahams and Beman Dawes, originally contributed
-the previous version of numeric_cast&lt;&gt; which already presented the idea of a runtime range check.<br>
- Later, Eric Ford, Kevin Lynch and the author spotted some genericity problems
- with that numeric_cast&lt;&gt; which prevented it from being used in a generic
- layer of math functions.<br>
-An improved numeric_cast&lt;&gt; which properly handled all combinations of arithmetic types was presented.<br>
- David Abrahams and Beman Dawes acknowledged the need of an improved version
- of numeric_cast&lt;&gt; and supported the submission as originally laid out.
- Daryl Walker and Darin Adler made some important comments and proposed fixes
- to the original submission.</p>
- <p>Special thanks go to Björn Karlsoon who helped the author considerably. Having
- found the problems with numeric_cast&lt;&gt; himself, he revised very carefully
- the original submission and spot a subtle bug in the range checking implementation.
- He also wrote part of this documentation and proof-read and corrected other
- parts. And most importantly: the features now presented here in this library
- evolved from the original submission as a result of the useful private communications
- between Björn and the author.</p>
-</blockquote>
-<p>Post-formal review:</p>
-<p>Guillaume Melquiond spoted some documentation and code issues, particularly about rounding conversions.<br>
-The following people contributed an important review of the design, documentation and code: Kevin Lynch, Thorsten Ottosen, Paul Bristow,
-Daryle Walker, Jhon Torjo, Eric Ford, Gennadiy Rozental.
-</p>
-<hr>
-<H2><A NAME="Ref"></A>Bibliography</H2>
-<ul>
- <li>Standard Documents:
- <ol>
-<li>ISO/IEC 14882:98 (C++98 Standard)</li>
-<li>ISO/IEC 9899:1999 (C99 Standard)</li>
-<li>ISO/IEC 10967-1 (Language Independent Arithmetic (LIA), Part I, 1994)</li>
-<li>ISO/IEC 2382-1:1993 (Information Technology - Vocabulary - Part I: Fundamental Terms)</li>
-<li>ANSI/IEEE 754-1985 [and IEC 60559:1989] (Binary floating-point)</li>
-<li>ANSI/IEEE 854-1988 (Radix Independent floating-point)</li>
-<li>ANSI X3/TR-1-82 (Dictionary for Information Processing Systems)</li>
-<li>ISO/IEC JTC1/SC22/WG14/N753 C9X Revision Proposal: LIA-1 Binding: Rationale</li>
-</ol>
-</li>
-<li>Papers:
-<ol>
-<li>David Goldberg <A href="http://citeseer.ist.psu.edu/goldberg91what.html">
- What Every Computer Scientist Should Know About Floating-Point Arithmetic</A></li>
-<li>Prof. William Kahan papers on floating-point.</li>
-</ol>
-</li>
-</ul>
-<HR>
-<P>Revised 23 June 2004</P>
-<p>© Copyright Fernando Luis Cacciola Carballal, 2004</p>
-<p> Use, modification, and distribution are subject to the Boost Software
-License, Version 1.0. (See accompanying file <a href="../../../../LICENSE_1_0.txt">
-LICENSE_1_0.txt</a> or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">
-www.boost.org/LICENSE_1_0.txt</a>)</p>
-</body>
-</HTML>
\ No newline at end of file

Deleted: trunk/libs/numeric/conversion/doc/numeric_cast.html
==============================================================================
--- trunk/libs/numeric/conversion/doc/numeric_cast.html 2008-02-14 13:08:16 EST (Thu, 14 Feb 2008)
+++ (empty file)
@@ -1,134 +0,0 @@
-<HTML>
- <HEAD>
- <LINK REL="stylesheet" TYPE="text/css" HREF="../../../../boost.css">
- <TITLE>Boost Numeric Conversion Library - numeric_cast</TITLE>
- </HEAD>
- <BODY BGCOLOR="#FFFFFF" TEXT="#000000">
- <TABLE BORDER="0" CELLPADDING="7" CELLSPACING="0" WIDTH="100%"
- SUMMARY="header">
- <TR>
- <TH VALIGN="top" WIDTH="300">
- <H3><A HREF="../../../../index.htm"><IMG HEIGHT="86" WIDTH="277"
- ALT="C++ Boost" SRC="../../../../boost.png" BORDER="0"></A></H3> </TH>
- <TH VALIGN="top">
- <H1 ALIGN="center">Boost Numeric Conversion Library</H1>
- <H1>Header <A
- HREF="../../../../boost/numeric/conversion/cast.hpp">boost/numeric/conversion/cast.hpp</A></H1> </TH>
- </TR>
- </TABLE><HR>
- <H2>Contents</H2>
- <UL>
- <LI>Introduction</LI>
- <LI>numeric_cast</LI>
- <LI>Examples</LI>
- </UL> <HR>
- <H2><A NAME="introduction">Introduction</A></H2>
- <P>The lack of preservation of range makes conversions between numeric
- types error prone. This is true for both implicit conversions and explicit
- conversions (through static_cast). numeric_cast
- detects loss of range when a numeric type is converted, and throws an
- exception if the range cannot be preserved.</P>
- <P>There are several situations where conversions are unsafe: </P>
- <UL>
- <LI>Conversions from an integral type with a wider range than the target
- integral type.</LI>
- <LI> Conversions from unsigned to signed (and vice versa) integral
- types.</LI>
- <LI> Conversions from floating point types to integral types.</LI>
- </UL>
- <P>The C++ Standard does not specify the behavior when a numeric type is
- assigned a value that cannot be represented by the type, except for unsigned
- integral types [3.9.1.4], which must obey the laws of arithmetic modulo
- 2<SUP>n</SUP> (this implies that the result will be reduced modulo the number
- that is one greater than the largest value that can be represented). The fact
- that the behavior for overflow is undefined for all conversions (except the
- aforementioned unsigned to unsigned) makes any code that may produce positive
- or negative overflows exposed to portability issues.</P>
- <P>numeric_cast adheres to the rules for implicit conversions mandated by
- the C++ Standard, such as truncating floating point types when converting to
- integral types. The implementation must guarantee that for a conversion to a
- type that can hold all possible values of the source type, there will be no
- runtime overhead. <BR> <BR> </P> <HR>
- <H2><A NAME="numeric_cast"><CODE>numeric_cast</CODE></A></H2>
- <BLOCKQUOTE>
- <PRE>template&lt;typename Target, typename Source&gt; inline
-typename boost::numeric::converter&lt;Target,Source&gt;::result_type
-numeric_cast ( Source arg )
-{
- return boost::numeric::converter&lt;Target,Source&gt;::convert(arg);
-}
-</PRE> </BLOCKQUOTE>
- <P>numeric_cast returns the result of converting a value of type Source to a value of type
- Target. If out-of-range is detected, an exception is thrown (see
- bad_numeric_cast, <A
- HREF="converter_policies.html#posovr">positive_overflow</A> and
- negative_overflow). <BR> <BR> </P> <HR>
- <H2><A NAME="examples">Examples</A></H2>
- <P>The following example performs some typical conversions between numeric
- types: </P>
- <BLOCKQUOTE>
- <PRE>#include &lt;boost/numeric/conversion/cast.hpp&gt;
-#include &lt;iostream&gt;
-
-int main()
-{
- using boost::numeric_cast;
-
- using boost::numeric::bad_numeric_cast;
- using boost::numeric::positive_overflow;
- using boost::numeric::negative_overflow;
-
- try
- {
- int i=42;
- short s=numeric_cast&lt;short&gt;(i); // This conversion succeeds (is in range)
- }
- catch(negative_overflow&amp; e) {
- std::cout &lt;&lt; e.what();
- }
- catch(positive_overflow&amp; e) {
- std::cout &lt;&lt; e.what();
- }
-
- try
- {
- float f=-42.1234;
-
- // This will cause a boost::numeric::negative_overflow exception to be thrown
- unsigned int i=numeric_cast&lt;unsigned int&gt;(f);
- }
- catch(bad_numeric_cast&amp; e) {
- std::cout &lt;&lt; e.what();
- }
-
- double d= f + numeric_cast&lt;double&gt;(123); // int -> double
-
- unsigned long l=std::numeric_limits&lt;unsigned long&gt;::max();
-
- try
- {
- // This will cause a boost::numeric::positive_overflow exception to be thrown
- // NOTE: *operations* on unsigned integral types cannot cause overflow
- // but *conversions* to a signed type ARE range checked by numeric_cast.
-
- unsigned char c=numeric_cast&lt;unsigned char&gt;(l);
- }
- catch(positive_overflow&amp; e) {
- std::cout &lt;&lt; e.what();
- }
-
-
- return 0;
-}</PRE> </BLOCKQUOTE> <BR> <BR> <HR>
-<HR>
-<P>Back to Numeric Conversion library index</P>
-<HR>
-<P>Revised 20 May 2006</P>
-<p>© Copyright Boost 1999</p>
-<p>© Copyright Fernando Luis Cacciola Carballal, 1999,2004</p>
-<p> Use, modification, and distribution are subject to the Boost Software
-License, Version 1.0. (See accompanying file <a href="../../../../LICENSE_1_0.txt">
-LICENSE_1_0.txt</a> or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">
-www.boost.org/LICENSE_1_0.txt</a>)</p>
-</BODY>
-</HTML>
\ No newline at end of file

Deleted: trunk/libs/numeric/conversion/doc/requirements.html
==============================================================================
--- trunk/libs/numeric/conversion/doc/requirements.html 2008-02-14 13:08:16 EST (Thu, 14 Feb 2008)
+++ (empty file)
@@ -1,116 +0,0 @@
-<HTML>
- <HEAD>
- <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
- <LINK REL="stylesheet" TYPE="text/css" HREF="../../../../boost.css">
- <TITLE>Boost Numeric Conversion Library - Type Requirements and User-defined-types support</TITLE>
- </HEAD>
- <BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000ff" VLINK="#800080">
- <TABLE BORDER="0" CELLPADDING="7" CELLSPACING="0" WIDTH="100%"
- SUMMARY="header">
- <TR>
- <TH VALIGN="top" WIDTH="300">
- <H3><A HREF="../../../../index.htm"><IMG HEIGHT="86" WIDTH="277"
- ALT="C++ Boost" SRC="../../../../boost.png" BORDER="0"></A></H3> </TH>
- <TH VALIGN="top">
- <H1 ALIGN="center">Boost Numeric Conversion Library</H1>
- <H1 ALIGN="center">Type Requirements<br>and<br>User-defined-types support</H1>
- </TH>
- </TR>
- </TABLE> <HR>
- <H2>Contents</H2>
- <DL CLASS="page-index">
- <DT>Type Requirements</DT>
- <DT>UDT's special semantics</DT>
- <DT>Special Policies</DT>
- </DL>
-
-
- <HR>
-
-<H2><A NAME="req"></A>Type Requirements</H2>
-<P>Both arithmetic (built-in) and user-defined numeric types require proper specialization of
-<CODE>std::numeric_limits<></CODE> (that is, with (in-class) integral constants).<br>
-The library uses <CODE>std::numeric_limits&lt;T&gt;::is_specialized</CODE> to detect whether
- the type is builtin or user defined, and <CODE>std::numeric_limits&lt;T&gt;::is_integer,
- std::numeric_limits&lt;T&gt;::is_signed</CODE>
- to detect whether the type is integer or floating point; and whether it is signed/unsigned.</P>
-<P>The default Float2IntRounder policies uses unqualified calls to functions <CODE>floor()
- and ceil()</CODE>; but the standard functions are introduced in scope by a
- using directive:</P>
-<PRE>using std::floor ; return floor(s); </PRE>
-<P>Therefore, for builtin arithmetic types, the std functions will be used.
- User defined types should provide overloaded versions of these functions in
- order to use the default rounder policies. If these overloads are defined within a user namespace
- argument dependent lookup (ADL) should find them, but if your compiler has a weak ADL
- you might need to put these functions some place else or write your own rounder policy.</P>
-<P>The default Trunc&lt;&gt; rounder policy needs to determine if the source value
- is positive or not, and for this it evaluates the expression &quot;s &lt; static_cast&lt;S&gt;(0)&quot;.
- Therefore, user defined types require a visible operator &lt; in order to use
- the Trunc<> policy (the default).<br>
-</P>
-
-<HR>
-<H2><A NAME="sem"></A>UDT's special semantics</H2>
-
-<p><u>Conversion Traits</u></p>
-<p>If a User Defined Type is involved in a conversion, it is <i>assumed</i> that
- the UDT has wider range than any built-in
- type, and consequently the values of some <code>converter_traits&lt;&gt;</code>
- members are hardwired regardless of the reality. The following table summarizes
- this:</p>
-
-<li>Target=UDT and Source=built-in
- <blockquote><code>subranged=false</code><br>
- <code>supertype=Target</code><br>
- <code>subtype=Source</code></blockquote>
- </li>
-
- <li>Target=built-in and Source=UDT
- <blockquote><code>subranged=true</code><br>
- <code>supertype=Source</code><br>
- <code>subtype=Target</code></blockquote>
- </li>
-
-<li>Target=UDT and Source=UDT
- <blockquote><code>subranged=false</code><br>
- <code>supertype=Target</code><br>
- <code>subtype=Source</code></blockquote>
- </li>
-<p>The Traits member <code>udt_mixture</code> can be used to detect whether a
- UDT is involved and to infer the validity of the other members as shown above.</p>
-<p><u>Range Checking</u></p>
-<p>Because User Defined Numeric Types might have peculiar ranges (such as an unbounded
- range), this library does not attempt to supply a meaningful range checking
- logic when UDTs are involved in a conversion. Therefore, if either Target or
- Source are not built-in types, the bundled range checking of the <code>converter&lt;&gt;</code>
- function object is automatically disabled. However, it is possible to supply
- a user-defined range-checker. See Special Policies</p>
-
-<HR>
-<H2><A NAME="hooks"></A>Special Policies</H2>
-<p>There are two components of the <code>converter&lt;&gt;</code> class that might
- require special behavior if User Defined Numeric Types are involved: the Range
- Checking and the Raw Conversion.</p>
-<p>When both Target and Source are built-in types, the converter class uses an
- <i>internal</i> range checking logic which is optimized and customized for the
- combined properties of the types.<br>
- However, this internal logic is disabled when either type is User Defined. In
- this case, the user can specify an <i>external</i> range checking policy which
- will be used in place of the internal code.
- See UserRangeChecker policy for details.</p>
-<p>The converter class performs the actual conversion using a Raw Converter policy.
- The default raw converter simply performs a <code>&quot;static_cast&lt;Target&gt;(source)&quot;.</code><br>
- However, if the a UDT is involved, the static_cast might not work. In this case,
- the user can implement and pass a different raw converter policy.
- See RawConverter policy for details </p>
-<HR>
-<P>Back to Numeric Conversion library index</P>
-<HR>
-<P>Revised 23 June 2004</P>
-<p>© Copyright Fernando Luis Cacciola Carballal, 2004</p>
-<p> Use, modification, and distribution are subject to the Boost Software
-License, Version 1.0. (See accompanying file <a href="../../../../LICENSE_1_0.txt">
-LICENSE_1_0.txt</a> or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">
-www.boost.org/LICENSE_1_0.txt</a>)</p>
-</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