|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r63176 - in sandbox/endian_ext/libs/integer/doc: . html html/toward_boost_endian html/toward_boost_endian/appendices html/toward_boost_endian/overview html/toward_boost_endian/reference html/toward_boost_endian/users_guide html/toward_boost_integer_endian html/toward_boost_integer_endian/appendices html/toward_boost_integer_endian/examples html/toward_boost_integer_endian/overview html/toward_boost_integer_endian/reference html/toward_boost_integer_endian/users_guide
From: vicente.botet_at_[hidden]
Date: 2010-06-20 18:01:58
Author: viboes
Date: 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
New Revision: 63176
URL: http://svn.boost.org/trac/boost/changeset/63176
Log:
Update Integer.Endian.Ext doc
Added:
sandbox/endian_ext/libs/integer/doc/endian.html (contents, props changed)
sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/example.html (contents, props changed)
sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/reference/endian_domain_map_hpp.html (contents, props changed)
sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/reference/endian_native_tree_hpp.html (contents, props changed)
sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/reference/endian_shared_tree_hpp.html (contents, props changed)
sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/
sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/appendices/
sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/appendices.html (contents, props changed)
sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/appendices/acknowledgements.html (contents, props changed)
sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/appendices/appendix_e__tests.html (contents, props changed)
sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/appendices/appendix_f__tickets.html (contents, props changed)
sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/appendices/history.html (contents, props changed)
sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/appendices/implementation.html (contents, props changed)
sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/appendices/rationale.html (contents, props changed)
sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/appendices/todo.html (contents, props changed)
sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/examples/
sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/examples.html (contents, props changed)
sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/examples/_endian_aware.html (contents, props changed)
sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/examples/endian_aware.html (contents, props changed)
sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/examples/receiver_makes_right.html (contents, props changed)
sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/overview/
sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/overview.html (contents, props changed)
sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/overview/motivation.html (contents, props changed)
sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/reference/
sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/reference.html (contents, props changed)
sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/reference/alignment_hpp.html (contents, props changed)
sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/reference/binary_stream_hpp.html (contents, props changed)
sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/reference/endian_domain_map_hpp.html (contents, props changed)
sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/reference/endian_endian_hpp.html (contents, props changed)
sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/reference/integer_endian_binary_stream_hpp.html (contents, props changed)
sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/reference/integer_endian_conversion_hpp.html (contents, props changed)
sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/reference/integer_endian_hpp.html (contents, props changed)
sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/reference/integer_endian_pack_hpp.html (contents, props changed)
sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/reference/integer_endian_type_hpp.html (contents, props changed)
sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/reference/integer_endian_view_hpp.html (contents, props changed)
sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/reference/integer_endianness_hpp.html (contents, props changed)
sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/users_guide/
sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/users_guide.html (contents, props changed)
sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/users_guide/ext_references.html (contents, props changed)
sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/users_guide/getting_started.html (contents, props changed)
sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/users_guide/tutorial.html (contents, props changed)
Text files modified:
sandbox/endian_ext/libs/integer/doc/html/index.html | 96 ++-
sandbox/endian_ext/libs/integer/doc/html/standalone_HTML.manifest | 55 +-
sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/appendices.html | 2
sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/appendices/acknowledgements.html | 2
sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/appendices/appendix_e__tests.html | 27 +
sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/appendices/history.html | 50 +
sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/appendices/implementation.html | 13
sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/appendices/rationale.html | 17
sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/appendices/todo.html | 21
sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/overview.html | 25
sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/overview/motivation.html | 149 +++++
sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/reference.html | 38
sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/reference/alignment_hpp.html | 16
sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/reference/binary_stream_hpp.html | 109 ++++
sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/reference/endian_endian_hpp.html | 111 ++++
sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/reference/integer_endian_binary_stream_hpp.html | 31 +
sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/reference/integer_endian_conversion_hpp.html | 101 +++
sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/reference/integer_endian_hpp.html | 307 ++++++++----
sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/reference/integer_endian_pack_hpp.html | 12
sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/reference/integer_endian_type_hpp.html | 37 +
sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/reference/integer_endian_view_hpp.html | 10
sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/users_guide.html | 8
sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/users_guide/getting_started.html | 28
sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/users_guide/tutorial.html | 29 +
sandbox/endian_ext/libs/integer/doc/integer_endian.qbk | 997 ++++++++++++++++++++++++++++++++++-----
25 files changed, 1877 insertions(+), 414 deletions(-)
Added: sandbox/endian_ext/libs/integer/doc/endian.html
==============================================================================
--- (empty file)
+++ sandbox/endian_ext/libs/integer/doc/endian.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -0,0 +1,646 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Language" content="en-us">
+<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
+<meta name="ProgId" content="FrontPage.Editor.Document">
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<title>Boost Endian Integers</title>
+<link rel="stylesheet" type="text/css" href="../../../doc/html/minimal.css">
+</head>
+
+<body>
+
+
+<table border="0" cellpadding="5" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111">
+ <tr>
+ <td width="277">
+<a href="../../../index.html">
+<img src="../../../boost.png" alt="boost.png (6897 bytes)" align="middle" width="277" height="86" border="0"></a></td>
+ <td width="337" align="middle">
+ <font size="7">Endian Integers</font>
+ </td>
+ </tr>
+</table>
+
+<table border="0" cellpadding="5" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" bgcolor="#D7EEFF" width="100%">
+ <tr>
+ <td>Boost Home Tutorial</td>
+ </tr>
+</table>
+
+<table border="1" cellpadding="5" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" align="right">
+ <tr>
+ <td width="100%" bgcolor="#D7EEFF" align="center">
+ <i><b>Contents</b></i></td>
+ </tr>
+ <tr>
+ <td width="100%" bgcolor="#E8F5FF">
+ Introduction<br>
+ Hello endian world<br>
+ Limitations<br>
+ Feature set<br>
+ Typedefs<br>
+ Comment on naming<br>
+ Class template endian
<br>
+
+ Synopsis<br>
+ Members<br>
+ FAQ<br>
+ Binary I/O warnings and cautions<br>
+ Example<br>
+ Design<br>
+ Experience<br>
+ C++0x<br>
+ Compilation<br>
+ Acknowledgements
+ </td>
+ </tr>
+ <tr>
+ <td width="100%" bgcolor="#D7EEFF" align="center">
+ <b><i>Headers</i></b></td>
+ </tr>
+ <tr>
+ <td width="100%" bgcolor="#E8F5FF">
+ <boost/integer/endian.hpp><br>
+ <boost/integer/endian_binary_stream.hpp><br>
+ <boost/binary_stream.hpp></td>
+ </tr>
+</table>
+<h2><a name="Introduction">Introduction</a></h2>
+<p>Header
+ <boost/integer/endian.hpp> provides
+integer-like byte-holder binary types with explicit control over
+byte order, value type, size, and alignment. Typedefs provide easy-to-use names
+for common configurations.</p>
+<p>These types provide portable byte-holders for integer data, independent of
+particular computer architectures. Use cases almost always involve I/O, either via files or
+network connections. Although data portability is the primary motivation, these
+integer byte-holders may
+also be used to reduce memory use, file size, or network activity since they
+provide binary integer sizes not otherwise available.</p>
+<p>Such integer byte-holder types are traditionally called <b><i>
+endian</i></b> types. See the Wikipedia for
+a full
+exploration of <b><i>endianness</i></b>, including definitions of <i><b>big
+endian</b></i> and <i><b>little endian</b></i>.</p>
+<p>Boost endian integers provide the same full set of C++ assignment,
+arithmetic, and relational operators as C++ standard integral types, with
+the standard semantics.</p>
+<p>Unary arithmetic operators are <code>+</code>, <code>-</code>, <code>~</code>,
+<code>!</code>, prefix and postfix <code>--</code> and <code>++</code>. Binary
+arithmetic operators are <code>+</code>, <code>+=</code>, <code>-</code>, <code>
+-=</code>, <code>*</code>, <code>*=</code>, <code>/</code>, <code>/=</code>,
+<code>%/ %=</code>, <code>&</code>, <code>&=</code>, <code>|</code>, <code>|=</code>,
+<code>^</code>, <code>^=</code>, <code><<</code>, <code><<=</code>, <code>>></code>,
+<code>>>=</code>. Binary relational operators are <code>==</code>, <code>!=</code>,
+<code><</code>, <code><=</code>, <code>></code>, <code>>=</code>.</p>
+<p>Automatic conversion is provided to the underlying integer value type.</p>
+<p>Header <boost/integer/endian_binary_stream.hpp>
+provides operators <= and <code>=></code> for unformatted binary (as opposed to
+formatted character) stream insertion and extraction of endian types.</p>
+<p>Header <boost/binary_stream.hpp>
+provides operators <= and <code>=></code> for unformatted binary (as opposed to
+formatted character) stream insertion and extraction of built-in and std::string
+types.</p>
+<h2><a name="Hello-endian-world">Hello endian world</a></h2>
+<blockquote>
+ <pre>#include <boost/integer/endian.hpp>
+#include <boost/integer/endian_binary_stream.hpp>
+#include <boost/binary_stream.hpp>
+#include <iostream>
+
+using namespace boost;
+using namespace boost::integer;
+
+int main()
+{
+ int_least32_t v = 0x31323334L; // = ASCII { '1', '2', '3', '4' }
+ // value chosen to work on text stream
+ big32_t b(v);
+ little32_t l(v);
+
+ std::cout << "Hello, endian world!\n\n";
+
+ std::cout << v << ' ' << b << ' ' << l << '\n';
+ std::cout <= v <= ' ' <= b <= ' ' <= l <= '\n';
+}</pre>
+</blockquote>
+<p>On a little-endian CPU, this program outputs:</p>
+<blockquote>
+ <pre>Hello, endian world!
+
+825373492 825373492 825373492
+4321 1234 4321</pre>
+</blockquote>
+<h2><a name="Limitations">Limitations</a></h2>
+<p>Requires <code><climits></code> <code>CHAR_BIT == 8</code>. If <code>CHAR_BIT</code>
+is some other value, compilation will result in an <code>#error</code>. This
+restriction is in place because the design, implementation, testing, and
+documentation has only considered issues related to 8-bit bytes, and there have
+been no real-world use cases presented for other sizes.</p>
+<p>In C++03, <code>endian</code> does not meet the requirements for POD types
+because it has constructors, private data members, and a base class. This means
+that common use cases are relying on unspecified behavior in that the C++
+Standard does not guarantee memory layout for non-POD types. This has not been a
+problem in practice since all known C++ compilers do layout memory as if <code>
+endian</code> were a POD type. In C++0x, it will be possible to specify the
+default constructor as trivial, and private data members and base classes will
+no longer disqualify a type from being a POD. Thus under C++0x, <code>endian</code>
+will no longer be relying on unspecified behavior.</p>
+<h2><a name="Feature-set">Feature set</a></h2>
+<ul>
+ <li>Big endian| little endian | native endian byte ordering.</li>
+ <li>Signed | unsigned</li>
+ <li>Unaligned | aligned</li>
+ <li>1-8 byte (unaligned) | 2, 4, 8 byte (aligned)</li>
+ <li>Choice of integer value type</li>
+</ul>
+<h2><a name="Types">Typedefs</a></h2>
+<p>One class template is provided:</p>
+<blockquote>
+ <pre>template <endianness::enum_t E, typename T, std::size_t n_bytes,
+ alignment::enum_t A = alignment::unaligned>
+class endian;
+</pre>
+</blockquote>
+<p>Sixty typedefs, such as <code>big32_t</code>, provide convenient naming
+conventions for common use cases:</p>
+<blockquote>
+<table border="1" cellpadding="5" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="49%">
+ <tr>
+ <td width="18%" align="center"><b><i>Name</i></b></td>
+ <td width="10%" align="center"><b><i>Endianness</i></b></td>
+ <td width="10%" align="center"><b><i>Sign</i></b></td>
+ <td width="15%" align="center"><b><i>Sizes in bits (n)</i></b></td>
+ <td width="49%" align="center"><b><i>Alignment</i></b></td>
+ </tr>
+ <tr>
+ <td width="18%"><code>big</code><b><i>n</i></b><code>_t</code></td>
+ <td width="10%"><code>big</code></td>
+ <td width="10%">signed</td>
+ <td width="15%">8,16,24,32,40,48,56,64</td>
+ <td width="49%"><code>unaligned</code></td>
+ </tr>
+ <tr>
+ <td width="18%"><code>ubig</code><i><b>n</b></i><code>_t</code></td>
+ <td width="10%"><code>big</code></td>
+ <td width="10%">unsigned</td>
+ <td width="15%">8,16,24,32,40,48,56,64</td>
+ <td width="49%"><code>unaligned</code></td>
+ </tr>
+ <tr>
+ <td width="18%"><code>little</code><i><b>n</b></i><code>_t</code></td>
+ <td width="10%"><code>little</code></td>
+ <td width="10%">signed</td>
+ <td width="15%">8,16,24,32,40,48,56,64</td>
+ <td width="49%"><code>unaligned</code></td>
+ </tr>
+ <tr>
+ <td width="18%"><code>ulittle</code><i><b>n</b></i><code>_t</code></td>
+ <td width="10%"><code>little</code></td>
+ <td width="10%">unsigned</td>
+ <td width="15%">8,16,24,32,40,48,56,64</td>
+ <td width="49%"><code>unaligned</code></td>
+ </tr>
+ <tr>
+ <td width="18%"><code>native</code><i><b>n</b></i><code>_t</code></td>
+ <td width="10%"><code>native</code></td>
+ <td width="10%">signed</td>
+ <td width="15%">8,16,24,32,40,48,56,64</td>
+ <td width="49%"><code>unaligned</code></td>
+ </tr>
+ <tr>
+ <td width="18%"><code>unative</code><i><b>n</b></i><code>_t</code></td>
+ <td width="10%"><code>native</code></td>
+ <td width="10%">unsigned</td>
+ <td width="15%">8,16,24,32,40,48,56,64</td>
+ <td width="49%"><code>unaligned</code></td>
+ </tr>
+ <tr>
+ <td width="18%"><code>aligned_big</code><i><b>n</b></i><code>_t</code></td>
+ <td width="10%"><code>big</code></td>
+ <td width="10%">signed</td>
+ <td width="15%">16,32,64</td>
+ <td width="49%"><code>aligned</code></td>
+ </tr>
+ <tr>
+ <td width="18%"><code>aligned_ubig</code><i><b>n</b></i><code>_t</code></td>
+ <td width="10%"><code>big</code></td>
+ <td width="10%">unsigned</td>
+ <td width="15%">16,32,64</td>
+ <td width="49%"><code>aligned</code></td>
+ </tr>
+ <tr>
+ <td width="18%"><code>aligned_little</code><i><b>n</b></i><code>_t</code></td>
+ <td width="10%"><code>little</code></td>
+ <td width="10%">signed</td>
+ <td width="15%">16,32,64</td>
+ <td width="49%"><code>aligned</code></td>
+ </tr>
+ <tr>
+ <td width="18%"><code>aligned_ulittle</code><i><b>n</b></i><code>_t</code></td>
+ <td width="10%"><code>little</code></td>
+ <td width="10%">unsigned</td>
+ <td width="15%">16,32,64</td>
+ <td width="49%"><code>aligned</code></td>
+ </tr>
+</table>
+</blockquote>
+<p>The unaligned types do not cause compilers to insert padding bytes in classes
+and structs. This is an important characteristic that can be exploited to minimize wasted space in
+memory, files, and network transmissions. </p>
+<p><font color="#FF0000"><b><i><span style="background-color: #FFFFFF">Warning:</span></i></b></font><span style="background-color: #FFFFFF">
+Code that uses a</span>ligned types is inherently non-portable because alignment
+requirements vary between hardware architectures and because alignment may be
+affected by compiler switches or pragmas. Furthermore, aligned types
+are only available on architectures with 16, 32, and 64-bit integer types.</p>
+<p><b><i>Note:</i></b> One-byte big-endian, little-endian, and native-endian types provide identical
+functionality. All three names are provided to improve code readability and searchability.</p>
+<h3><a name="Comment-on-naming">Comment on naming</a></h3>
+<p>When first exposed to endian types, programmers often fit them into a mental model
+based on the <code><cstdint></code> types. Using that model, it is natural to
+expect a 56-bit big-endian signed integer to be named <code>int_big56_t</code>
+rather than <code>big56_t</code>.</p>
+<p>As experience using these type grows, the realization creeps in that they are
+lousy arithmetic integers - they are really byte holders that for convenience
+support arithmetic operations - and that for use in internal interfaces or
+anything more than trivial arithmetic computations it is far better to convert
+values of these endian types to traditional integer types.</p>
+<p>That seems to lead to formation of a new mental model specific to endian byte-holder types. In that model, the endianness
+is the key feature, and the integer aspect is downplayed.
+Once that mental transition is made, a name like <code>big56_t</code> is a good
+reflection of the mental model</p>
+<h2><a name="Class_template_endian">Class template <code>endian</code></a></h2>
+<p>An endian is an integer byte-holder with user-specified <a href="#endianness">
+endianness</a>, value type, size, and alignment. The
+usual operations on integers are supplied.</p>
+<h3><a name="Synopsis">Synopsis</a></h3>
+<pre>namespace boost
+{
+ namespace integer
+ {
+
+ enum class <a name="endianness">endianness</a> { big, little, native }; // scoped enum emulated on C++03
+ enum class <a name="alignment">alignment</a> { unaligned, aligned }; // scoped enum emulated on C++03
+
+ template <endianness E, typename T, std::size_t n_bits,
+ alignment A = alignment::unaligned>
+ class endian : integer_cover_operators< endian<E, T, n_bits, A>, T >
+ {
+ public:
+ typedef T value_type;
+ endian() = default; // = default replaced by {} on C++03
+ explicit endian(T v);
+ endian & operator=(T v);
+ operator T() const;
+ };
+
+ // unaligned big endian signed integer types
+ typedef endian< endianness::big, int_least8_t, 8 > big8_t;
+ typedef endian< endianness::big, int_least16_t, 16 > big16_t;
+ typedef endian< endianness::big, int_least32_t, 24 > big24_t;
+ typedef endian< endianness::big, int_least32_t, 32 > big32_t;
+ typedef endian< endianness::big, int_least64_t, 40 > big40_t;
+ typedef endian< endianness::big, int_least64_t, 48 > big48_t;
+ typedef endian< endianness::big, int_least64_t, 56 > big56_t;
+ typedef endian< endianness::big, int_least64_t, 64 > big64_t;
+
+ // unaligned big endian unsigned integer types
+ typedef endian< endianness::big, uint_least8_t, 8 > ubig8_t;
+ typedef endian< endianness::big, uint_least16_t, 16 > ubig16_t;
+ typedef endian< endianness::big, uint_least32_t, 24 > ubig24_t;
+ typedef endian< endianness::big, uint_least32_t, 32 > ubig32_t;
+ typedef endian< endianness::big, uint_least64_t, 40 > ubig40_t;
+ typedef endian< endianness::big, uint_least64_t, 48 > ubig48_t;
+ typedef endian< endianness::big, uint_least64_t, 56 > ubig56_t;
+ typedef endian< endianness::big, uint_least64_t, 64 > ubig64_t;
+
+ // unaligned little endian signed integer types
+ typedef endian< endianness::little, int_least8_t, 8 > little8_t;
+ typedef endian< endianness::little, int_least16_t, 16 > little16_t;
+ typedef endian< endianness::little, int_least32_t, 24 > little24_t;
+ typedef endian< endianness::little, int_least32_t, 32 > little32_t;
+ typedef endian< endianness::little, int_least64_t, 40 > little40_t;
+ typedef endian< endianness::little, int_least64_t, 48 > little48_t;
+ typedef endian< endianness::little, int_least64_t, 56 > little56_t;
+ typedef endian< endianness::little, int_least64_t, 64 > little64_t;
+
+ // unaligned little endian unsigned integer types
+ typedef endian< endianness::little, uint_least8_t, 8 > ulittle8_t;
+ typedef endian< endianness::little, uint_least16_t, 16 > ulittle16_t;
+ typedef endian< endianness::little, uint_least32_t, 24 > ulittle24_t;
+ typedef endian< endianness::little, uint_least32_t, 32 > ulittle32_t;
+ typedef endian< endianness::little, uint_least64_t, 40 > ulittle40_t;
+ typedef endian< endianness::little, uint_least64_t, 48 > ulittle48_t;
+ typedef endian< endianness::little, uint_least64_t, 56 > ulittle56_t;
+ typedef endian< endianness::little, uint_least64_t, 64 > ulittle64_t;
+
+ // unaligned native endian signed integer types
+ typedef endian< endianness::native, int_least8_t, 8 > native8_t;
+ typedef endian< endianness::native, int_least16_t, 16 > native16_t;
+ typedef endian< endianness::native, int_least32_t, 24 > native24_t;
+ typedef endian< endianness::native, int_least32_t, 32 > native32_t;
+ typedef endian< endianness::native, int_least64_t, 40 > native40_t;
+ typedef endian< endianness::native, int_least64_t, 48 > native48_t;
+ typedef endian< endianness::native, int_least64_t, 56 > native56_t;
+ typedef endian< endianness::native, int_least64_t, 64 > native64_t;
+
+ // unaligned native endian unsigned integer types
+ typedef endian< endianness::native, uint_least8_t, 8 > unative8_t;
+ typedef endian< endianness::native, uint_least16_t, 16 > unative16_t;
+ typedef endian< endianness::native, uint_least32_t, 24 > unative24_t;
+ typedef endian< endianness::native, uint_least32_t, 32 > unative32_t;
+ typedef endian< endianness::native, uint_least64_t, 40 > unative40_t;
+ typedef endian< endianness::native, uint_least64_t, 48 > unative48_t;
+ typedef endian< endianness::native, uint_least64_t, 56 > unative56_t;
+ typedef endian< endianness::native, uint_least64_t, 64 > unative64_t;
+
+ // These types only present if platform has exact size integers:
+
+ // aligned big endian signed integer types
+ typedef endian< endianness::big, int16_t, 16, alignment::aligned > aligned_big16_t;
+ typedef endian< endianness::big, int32_t, 32, alignment::aligned > aligned_big32_t;
+ typedef endian< endianness::big, int64_t, 64, alignment::aligned > aligned_big64_t;
+
+ // aligned big endian unsigned integer types
+ typedef endian< endianness::big, uint16_t, 16, alignment::aligned > aligned_ubig16_t;
+ typedef endian< endianness::big, uint32_t, 32, alignment::aligned > aligned_ubig32_t;
+ typedef endian< endianness::big, uint64_t, 64, alignment::aligned > aligned_ubig64_t;
+
+ // aligned little endian signed integer types
+ typedef endian< endianness::little, int16_t, 16, alignment::aligned > aligned_little2_t;
+ typedef endian< endianness::little, int32_t, 32, alignment::aligned > aligned_little4_t;
+ typedef endian< endianness::little, int64_t, 64, alignment::aligned > aligned_little8_t;
+
+ // aligned little endian unsigned integer types
+ typedef endian< endianness::little, uint16_t, 16, alignment::aligned > aligned_ulittle2_t;
+ typedef endian< endianness::little, uint32_t, 32, alignment::aligned > aligned_ulittle4_t;
+ typedef endian< endianness::little, uint64_t, 64, alignment::aligned > aligned_ulittle8_t;
+
+
+ // aligned native endian typedefs are not provided because
+ // <cstdint> types are superior for this use case
+
+ } // namespace integer
+} // namespace boost</pre>
+<h3><a name="Members">Members</a></h3>
+<p><code><a name="endian">endian</a>() = default; // C++03: endian(){}</code></p>
+<blockquote>
+<p><i>Effects:</i> Constructs an object of type <code>endian<E, T, n_bits, A></code>.</p>
+</blockquote>
+<p><code><a name="explicit-endian">explicit endian</a>(T v);</code></p>
+<blockquote>
+<p><i>Effects:</i> Constructs an object of type <code>endian<E, T, n_bits, A></code>.</p>
+<p><i>Postcondition:</i> <code>x == v,</code> where <code>x</code> is the
+constructed object.</p>
+</blockquote>
+<p><code>endian & <a name="operator-eq">operator=</a>(T v);</code></p>
+<blockquote>
+ <p><i>Postcondition:</i> <code>x == v,</code> where <code>x</code> is the
+ constructed object.</p>
+ <p><i>Returns:</i> <code>*this</code>.</p>
+</blockquote>
+<p><code><a name="operator-T">operator T</a>() const;</code></p>
+<blockquote>
+<p><i>Returns:</i> The current value stored in <code>*this</code>, converted to
+<code>value_type</code>.</p>
+</blockquote>
+<h3>Other operators</h3>
+<p>Other operators on endian objects are forwarded to the equivalent
+operator on <code>value_type</code>.</p>
+<h2><a name="FAQ">FAQ</a></h2>
+<p><b>Why bother with endian types?</b> External data portability and both speed
+and space efficiency. Availability
+of additional binary integer sizes and alignments is important in some
+applications.</p>
+<p><b>Why not just use Boost.Serialization?</b> Serialization involves a
+conversion for every object involved in I/O. Endian objects require no
+conversion or copying. They are already in the desired format for binary I/O.
+Thus they can be read or written in bulk.</p>
+<p><b>Why bother with binary I/O? Why not just use C++ Standard Library stream
+inserters and extractors?</b> Using binary rather than character representations
+can be more space efficient, with a side benefit of faster I/O. CPU time is
+minimized because conversions to and from string are eliminated.
+Furthermore, binary integers are fixed size, and so fixed-size disk records
+are possible, easing sorting and allowing direct access. Disadvantages, such as the inability to use
+text utilities on the resulting files, limit usefulness to applications where
+the
+binary I/O advantages are paramount.</p>
+<p><b>Do these types have any uses outside of I/O?</b> Probably not, except for
+native endianness which can be used for fine grained control over size and
+alignment.</p>
+<p><b>Is there is a performance hit when doing arithmetic using these types?</b> Yes, for sure,
+compared to arithmetic operations on native integer types. However, these types
+are usually be faster, and sometimes much faster, for I/O compared to stream
+inserters and extractors, or to serialization.</p>
+<p><b>Are endian types POD's?</b> Yes for C++0x. No for C++03, although several
+macros are available to force PODness in all cases.</p>
+<p><b>What are the implications endian types not being POD's of C++03?</b> They
+can't be used in unions. In theory, compilers aren't required to align or lay
+out storage in portable ways, although this problem has never been observed in a
+real compiler.</p>
+<p><b>Which is better, big-endian or little-endian?</b> Big-endian tends to be a
+bit more of an industry standard, but little-endian may be preferred for
+applications that run primarily on x86 (Intel/AMD) and other little-endian
+CPU's. The Wikipedia article
+gives more pros and cons.</p>
+<p><b>What good is <i>native </i>endianness?</b> It provides alignment and
+size guarantees not available from the built-in types. It eases generic
+programming.</p>
+<p><b>Why bother with the aligned endian types?</b> Aligned integer operations
+may be faster (20 times, in one measurement) if the endianness and alignment of
+the type matches the endianness and alignment requirements of the machine. On
+common CPU architectures, that optimization is only available for aligned types.
+That allows I/O of maximally efficient types on an application's primary
+platform, yet produces data files are portable to all platforms. The code,
+however, is
+likely to be more fragile and less portable than with the unaligned types.</p>
+<p><b>These types are really just byte-holders. Why provide the arithmetic
+operations at all?</b> Providing a full set of operations reduces program
+clutter and makes code both easier to write and to read. Consider
+incrementing a variable in a record. It is very convenient to write:</p>
+<pre wrap> ++record.foo;</pre>
+<p wrap>Rather than:</p>
+<pre wrap> int temp( record.foo);
+ ++temp;
+ record.foo = temp;</pre>
+<p wrap><b>Why do binary stream insertion and extraction use operators <= and >=
+rather than <<= and >>=?</b> <<= and >>= associate right-to-left, which is the
+opposite of << and >>, so would be very confusing and error prone. <= and >=
+associate left-to-right. </p>
+<h2><a name="Binary-I-O-cautions">Binary I/O warnings and cautions</a></h2>
+<p><font color="#FF0000"><b><i><span style="background-color: #FFFFFF">Warning:</span></i></b></font><span style="background-color: #FFFFFF"> </span> Use
+only on streams opened with filemode <code>std::ios_base::binary</code>. Thus
+unformatted binary I/O should not be with the standard streams (cout, cin, etc.)
+since they are opened in text mode. Use on text streams may produce incorrect
+results, such as insertion of unwanted characters or premature end-of-file. For
+example, on Windows 0x0D would become 0x0D, 0x0A.</p>
+<p><i><b><font color="#FF0000">Caution:</font><font color="#FFFF00"> </font></b>
+</i>When mixing formatted (i.e. operator << or >>) and unformatted (i.e.
+operator <= or >=) stream I/O, be aware that << and >> take precedence over <=
+and >=. Use parentheses to force correct order of evaluation. For example:</p>
+<blockquote>
+ <pre>my_stream << foo <= bar; // no parentheses needed
+(my_stream <= foo) << bar; // parentheses required </pre>
+</blockquote>
+<p>As a practical matter, it may be easier and safer to never mix the character
+and binary insertion or extraction operators in the same statement.</p>
+<h2><a name="Example">Example</a></h2>
+<p>The endian_example.cpp program writes a
+binary file containing four byte big-endian and little-endian integers:</p>
+<blockquote>
+ <pre>#include <iostream>
+#include <cassert>
+#include <cstdio>
+#include <boost/integer/endian.hpp>
+
+using namespace boost::integer;
+
+namespace
+{
+ // This is an extract from a very widely used GIS file format. I have no idea
+ // why a designer would mix big and little endians in the same file - but
+ // this is a real-world format and users wishing to write low level code
+ // manipulating these files have to deal with the mixed endianness.
+
+ struct header
+ {
+ big32_t file_code;
+ big32_t file_length;
+ little32_t version;
+ little32_t shape_type;
+ };
+
+ const char * filename = "test.dat";
+}
+
+int main()
+{
+ assert( sizeof( header ) == 16 ); // requirement for interoperability
+
+ header h;
+
+ h.file_code = 0x04030201;
+ h.file_length = sizeof( header );
+ h.version = -1;
+ h.shape_type = 0x04030201;
+
+ // Low-level I/O such as POSIX read/write or <cstdio> fread/fwrite is sometimes
+ // used for binary file operations when ultimate efficiency is important.
+ // Such I/O is often performed in some C++ wrapper class, but to drive home the
+ // point that endian integers are often used in fairly low-level code that
+ // does bulk I/O operations, <cstdio> fopen/fwrite is used for I/O in this example.
+
+ std::FILE * fi;
+
+ if ( !(fi = std::fopen( filename, "wb" )) ) // MUST BE BINARY
+ {
+ std::cout << "could not open " << filename << '\n';
+ return 1;
+ }
+
+ if ( std::fwrite( &h, sizeof( header ), 1, fi ) != 1 )
+ {
+ std::cout << "write failure for " << filename << '\n';
+ return 1;
+ }
+
+ std::fclose( fi );
+
+ std::cout << "created file " << filename << '\n';
+ return 0;
+}</pre>
+</blockquote>
+<p>After compiling and executing endian_example.cpp, a hex dump of <code>test.dat</code> shows:</p>
+<blockquote>
+ <pre>0403 0201 0000 0010 ffff ffff 0102 0304</pre>
+</blockquote>
+<h2><a name="Design">Design</a> considerations for Boost.Endian</h2>
+<ul>
+ <li>Must be suitable for I/O - in other words, must be memcpyable.</li>
+ <li>Must provide exactly the size and internal byte ordering specified.</li>
+ <li>Must work correctly when the internal integer representation has more bits
+ that the sum of the bits in the external byte representation. Sign extension
+ must work correctly when the internal integer representation type has more
+ bits than the sum of the bits in the external bytes. For example, using
+ a 64-bit integer internally to represent 40-bit (5 byte) numbers must work for
+ both positive and negative values.</li>
+ <li>Must work correctly (including using the same defined external
+ representation) regardless of whether a compiler treats char as signed or
+ unsigned.</li>
+ <li>Unaligned types must not cause compilers to insert padding bytes.</li>
+ <li>The implementation should supply optimizations only in very limited
+ circumstances. Experience has shown that optimizations of endian
+ integers often become pessimizations. While this may be obvious when changing
+ machines or compilers, it also happens when changing compiler switches,
+ compiler versions, or CPU models of the same architecture.</li>
+ <li>It is better software engineering if the same implementation works regardless
+ of the CPU endianness. In other words, #ifdefs should be avoided where
+ possible.</li>
+</ul>
+<h2><a name="Experience">Experience</a></h2>
+<p>Classes with similar functionality have been independently developed by
+several Boost programmers and used very successful in high-value, high-use
+applications for many years. These independently developed endian libraries
+often evolved from C libraries that were also widely used. Endian integers have proven widely useful across a wide
+range of computer architectures and applications.</p>
+<h2><a name="C++0x">C++0x</a></h2>
+<p>The availability of the C++0x
+<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2346.htm">
+Defaulted Functions</a> feature is detected automatically, and will be used if
+present to ensure that objects of <code>class endian</code> are trivial, and
+thus POD's.</p>
+<h2><a name="Compilation">Compilation</a></h2>
+<p>Boost.Endian is implemented entirely within headers, with no need to link to
+any Boost object libraries.</p>
+<p>Several macros allow user control over features:</p>
+<ul>
+ <li>BOOST_ENDIAN_NO_CTORS causes <code>class endian</code> to have no
+ constructors. The intended use is for compiling user code that must be
+ portable between compilers regardless of C++0x
+ <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2346.htm">
+ Defaulted Functions</a> support. Use of constructors will always fail, <br>
+ </li>
+ <li>BOOST_ENDIAN_FORCE_PODNESS causes BOOST_ENDIAN_NO_CTORS to be defined if
+ the compiler does not support C++0x
+ <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2346.htm">
+ Defaulted Functions</a>. This is ensures that , and so can be used in unions.
+ In C++0x, <code>class endian</code> objects are POD's even though they have
+ constructors.</li>
+</ul>
+<h2><a name="Acknowledgements">Acknowledgements</a></h2>
+<p>Original design developed by Darin Adler based on classes developed by Mark
+Borgerding. Four original class templates combined into a single <code>endian</code>
+class template by Beman Dawes, who put the library together, provided
+documentation, and added the typedefs. He also added the <code>unrolled_byte_loops</code>
+sign partial specialization to correctly extend the sign when cover integer size
+differs from endian representation size.</p>
+<p>Comments and suggestions were
+received from
+Benaka Moorthi,
+Christopher Kohlhoff,
+Cliff Green,
+Gennaro Proto,
+Jeff Flinn,
+John Maddock,
+Kim Barrett,
+Marsh Ray,
+Martin Bonner,
+Matias Capeletto,
+Rene Rivera,
+Scott McMurray,
+Sebastian Redl,
+Tomas Puverle, and
+Yuval Ronen.</p>
+<hr>
+<p>Last revised:
+<!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %B, %Y" startspan -->19 March, 2009<!--webbot bot="Timestamp" endspan i-checksum="29039" --></p>
+<p>© Copyright Beman Dawes, 2006-2009</p>
+<p>Distributed under the Boost Software License, Version 1.0. (See accompanying
+file LICENSE_1_0.txt or copy at
+www.boost.org/ LICENSE_1_0.txt)</p>
+
+</body>
+
+</html>
\ No newline at end of file
Modified: sandbox/endian_ext/libs/integer/doc/html/index.html
==============================================================================
--- sandbox/endian_ext/libs/integer/doc/html/index.html (original)
+++ sandbox/endian_ext/libs/integer/doc/html/index.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -1,11 +1,11 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
-<title>Toward Boost.Endian</title>
+<title>Toward Boost.Integer.Endian</title>
<link rel="stylesheet" href="../../../../doc/html/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
-<link rel="start" href="index.html" title="Toward Boost.Endian">
-<link rel="next" href="toward_boost_endian/overview.html" title="Overview">
+<link rel="start" href="index.html" title="Toward Boost.Integer.Endian">
+<link rel="next" href="toward_boost_integer_endian/overview.html" title="Overview">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@@ -17,12 +17,12 @@
<td align="center">More</td>
</tr></table>
<hr>
-<div class="spirit-nav"><a accesskey="n" href="toward_boost_endian/overview.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a></div>
+<div class="spirit-nav"><a accesskey="n" href="toward_boost_integer_endian/overview.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a></div>
<div class="article" lang="en">
<div class="titlepage">
<div>
<div><h2 class="title">
-<a name="toward_boost_endian"></a>Toward Boost.Endian</h2></div>
+<a name="toward_boost_integer_endian"></a>Toward Boost.Integer.Endian</h2></div>
<div><div class="authorgroup">
<div class="author"><h3 class="author">
<span class="firstname">Beman</span> <span class="surname">Dawes</span>
@@ -45,56 +45,62 @@
<div class="toc">
<p><b>Table of Contents</b></p>
<dl>
-<dt><span class="section">Overview</span></dt>
-<dd><dl><dt><span class="section">Motivation</span></dt></dl></dd>
-<dt><span class="section"> Users'Guide</span></dt>
+<dt><span class="section">Overview</span></dt>
+<dd><dl><dt><span class="section">Motivation</span></dt></dl></dd>
+<dt><span class="section"> Users'Guide</span></dt>
<dd><dl>
-<dt><span class="section"><a href="toward_boost_endian/users_guide/getting_started.html"> Getting
- Started</a></span></dt>
-<dt><span class="section">Tutorial</span></dt>
-<dt><span class="section"> References</span></dt>
+<dt><span class="section"><a href="toward_boost_integer_endian/users_guide/getting_started.html">
+ Getting Started</a></span></dt>
+<dt><span class="section">Tutorial</span></dt>
+<dt><span class="section"><a href="toward_boost_integer_endian/users_guide/ext_references.html">
+ References</a></span></dt>
</dl></dd>
-<dt><span class="section">Reference</span></dt>
+<dt><span class="section">Reference</span></dt>
<dd><dl>
-<dt><span class="section"><a href="toward_boost_endian/reference/alignment_hpp.html"> Header
- <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">alignment</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
-<dt><span class="section"><a href="toward_boost_endian/reference/endian_types_hpp.html"> Header
- <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">endian</span><span class="special">/</span><span class="identifier">types</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
-<dt><span class="section"><a href="toward_boost_endian/reference/endian_shared_tree_hpp.html">
+<dt><span class="section"><a href="toward_boost_integer_endian/reference/alignment_hpp.html">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">alignment</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="toward_boost_integer_endian/reference/integer_endianness_hpp.html">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">integer</span><span class="special">/</span><span class="identifier">endiannes</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="toward_boost_integer_endian/reference/endian_domain_map_hpp.html">
Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">endian</span><span class="special">/</span><span class="identifier">domain_map</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
-<dt><span class="section"><a href="toward_boost_endian/reference/integer_endian_pack_hpp.html">
+<dt><span class="section"><a href="toward_boost_integer_endian/reference/binary_stream_hpp.html">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">binary_stream</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="toward_boost_integer_endian/reference/integer_endian_pack_hpp.html">
Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">integer</span><span class="special">/</span><span class="identifier">endian_pack</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
-<dt><span class="section"><a href="toward_boost_endian/reference/integer_endian_hpp.html"> Header
- <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">integer</span><span class="special">/</span><span class="identifier">endian</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
-<dt><span class="section"><a href="toward_boost_endian/reference/integer_endian_binary_stream_hpp.html">
+<dt><span class="section"><a href="toward_boost_integer_endian/reference/integer_endian_hpp.html">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">integer</span><span class="special">/</span><span class="identifier">endian</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="toward_boost_integer_endian/reference/integer_endian_binary_stream_hpp.html">
Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">integer</span><span class="special">/</span><span class="identifier">endian_binary_stream</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
-<dt><span class="section"><a href="toward_boost_endian/reference/binary_stream_hpp.html"> Header
- <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">binary_stream</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
-<dt><span class="section"><a href="toward_boost_endian/reference/integer_endian_type_hpp.html">
+<dt><span class="section"><a href="toward_boost_integer_endian/reference/integer_endian_type_hpp.html">
Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">integer</span><span class="special">/</span><span class="identifier">endian_type</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
-<dt><span class="section"><a href="toward_boost_endian/reference/integer_endian_view_hpp.html">
+<dt><span class="section"><a href="toward_boost_integer_endian/reference/integer_endian_view_hpp.html">
Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">integer</span><span class="special">/</span><span class="identifier">endian_view</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
-<dt><span class="section"><a href="toward_boost_endian/reference/integer_endian_conversion_hpp.html">
+<dt><span class="section"><a href="toward_boost_integer_endian/reference/integer_endian_conversion_hpp.html">
Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">integer</span><span class="special">/</span><span class="identifier">endian_conversion</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
</dl></dd>
-<dt><span class="section">Examples</span></dt>
-<dd><dl><dt><span class="section">Endian Aware</span></dt></dl></dd>
-<dt><span class="section">Appendices</span></dt>
+<dt><span class="section">Examples</span></dt>
<dd><dl>
-<dt><span class="section"><a href="toward_boost_endian/appendices/history.html"> Appendix A:
- History</a></span></dt>
-<dt><span class="section"><a href="toward_boost_endian/appendices/rationale.html"> Appendix B:
- Rationale</a></span></dt>
-<dt><span class="section"><a href="toward_boost_endian/appendices/implementation.html"> Appendix
- C: Implementation Notes</a></span></dt>
-<dt><span class="section"><a href="toward_boost_endian/appendices/acknowledgements.html"> Appendix
- D: Acknowledgements</a></span></dt>
-<dt><span class="section"><a href="toward_boost_endian/appendices/appendix_e__tests.html">Appendix
+<dt><span class="section"><a href="toward_boost_integer_endian/examples/_endian_aware.html">
+ Endian Aware</a></span></dt>
+<dt><span class="section"><a href="toward_boost_integer_endian/examples/receiver_makes_right.html">
+ "receiver makes right"</a></span></dt>
+</dl></dd>
+<dt><span class="section">Appendices</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="toward_boost_integer_endian/appendices/history.html"> Appendix
+ A: History</a></span></dt>
+<dt><span class="section"><a href="toward_boost_integer_endian/appendices/rationale.html"> Appendix
+ B: Rationale</a></span></dt>
+<dt><span class="section"><a href="toward_boost_integer_endian/appendices/implementation.html">
+ Appendix C: Implementation Notes</a></span></dt>
+<dt><span class="section"><a href="toward_boost_integer_endian/appendices/acknowledgements.html">
+ Appendix D: Acknowledgements</a></span></dt>
+<dt><span class="section"><a href="toward_boost_integer_endian/appendices/appendix_e__tests.html">Appendix
E: Tests</a></span></dt>
-<dt><span class="section"><a href="toward_boost_endian/appendices/appendix_f__tickets.html">Appendix
+<dt><span class="section"><a href="toward_boost_integer_endian/appendices/appendix_f__tickets.html">Appendix
F: Tickets</a></span></dt>
-<dt><span class="section"><a href="toward_boost_endian/appendices/todo.html"> Appendix G: Future
- plans</a></span></dt>
+<dt><span class="section"><a href="toward_boost_integer_endian/appendices/todo.html"> Appendix
+ G: Future plans</a></span></dt>
</dl></dd>
</dl>
</div>
@@ -104,15 +110,15 @@
<th align="left">Warning</th>
</tr>
<tr><td align="left" valign="top"><p>
- Endian.Integers is not a part of the Boost libraries.
+ Integer.Endian is not a part of the Boost libraries.
</p></td></tr>
</table></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"><p><small>Last revised: June 10, 2010 at 23:25:26 GMT</small></p></td>
+<td align="left"><p><small>Last revised: June 20, 2010 at 21:56:17 GMT</small></p></td>
<td align="right"><div class="copyright-footer"></div></td>
</tr></table>
<hr>
-<div class="spirit-nav"><a accesskey="n" href="toward_boost_endian/overview.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a></div>
+<div class="spirit-nav"><a accesskey="n" href="toward_boost_integer_endian/overview.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a></div>
</body>
</html>
Modified: sandbox/endian_ext/libs/integer/doc/html/standalone_HTML.manifest
==============================================================================
--- sandbox/endian_ext/libs/integer/doc/html/standalone_HTML.manifest (original)
+++ sandbox/endian_ext/libs/integer/doc/html/standalone_HTML.manifest 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -1,28 +1,29 @@
index.html
-toward_boost_endian/overview.html
-toward_boost_endian/overview/motivation.html
-toward_boost_endian/users_guide.html
-toward_boost_endian/users_guide/getting_started.html
-toward_boost_endian/users_guide/tutorial.html
-toward_boost_endian/users_guide/ext_references.html
-toward_boost_endian/reference.html
-toward_boost_endian/reference/alignment_hpp.html
-toward_boost_endian/reference/endian_types_hpp.html
-toward_boost_endian/reference/endian_shared_tree_hpp.html
-toward_boost_endian/reference/integer_endian_pack_hpp.html
-toward_boost_endian/reference/integer_endian_hpp.html
-toward_boost_endian/reference/integer_endian_binary_stream_hpp.html
-toward_boost_endian/reference/binary_stream_hpp.html
-toward_boost_endian/reference/integer_endian_type_hpp.html
-toward_boost_endian/reference/integer_endian_view_hpp.html
-toward_boost_endian/reference/integer_endian_conversion_hpp.html
-toward_boost_endian/examples.html
-toward_boost_endian/examples/endian_aware.html
-toward_boost_endian/appendices.html
-toward_boost_endian/appendices/history.html
-toward_boost_endian/appendices/rationale.html
-toward_boost_endian/appendices/implementation.html
-toward_boost_endian/appendices/acknowledgements.html
-toward_boost_endian/appendices/appendix_e__tests.html
-toward_boost_endian/appendices/appendix_f__tickets.html
-toward_boost_endian/appendices/todo.html
+toward_boost_integer_endian/overview.html
+toward_boost_integer_endian/overview/motivation.html
+toward_boost_integer_endian/users_guide.html
+toward_boost_integer_endian/users_guide/getting_started.html
+toward_boost_integer_endian/users_guide/tutorial.html
+toward_boost_integer_endian/users_guide/ext_references.html
+toward_boost_integer_endian/reference.html
+toward_boost_integer_endian/reference/alignment_hpp.html
+toward_boost_integer_endian/reference/integer_endianness_hpp.html
+toward_boost_integer_endian/reference/endian_domain_map_hpp.html
+toward_boost_integer_endian/reference/binary_stream_hpp.html
+toward_boost_integer_endian/reference/integer_endian_pack_hpp.html
+toward_boost_integer_endian/reference/integer_endian_hpp.html
+toward_boost_integer_endian/reference/integer_endian_binary_stream_hpp.html
+toward_boost_integer_endian/reference/integer_endian_type_hpp.html
+toward_boost_integer_endian/reference/integer_endian_view_hpp.html
+toward_boost_integer_endian/reference/integer_endian_conversion_hpp.html
+toward_boost_integer_endian/examples.html
+toward_boost_integer_endian/examples/_endian_aware.html
+toward_boost_integer_endian/examples/receiver_makes_right.html
+toward_boost_integer_endian/appendices.html
+toward_boost_integer_endian/appendices/history.html
+toward_boost_integer_endian/appendices/rationale.html
+toward_boost_integer_endian/appendices/implementation.html
+toward_boost_integer_endian/appendices/acknowledgements.html
+toward_boost_integer_endian/appendices/appendix_e__tests.html
+toward_boost_integer_endian/appendices/appendix_f__tickets.html
+toward_boost_integer_endian/appendices/todo.html
Modified: sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/appendices.html
==============================================================================
--- sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/appendices.html (original)
+++ sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/appendices.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -30,7 +30,7 @@
<div class="toc"><dl>
<dt><span class="section"><a href="appendices/history.html"> Appendix A:
History</a></span></dt>
-<dd><dl><dt><span class="section">Version 0.1.0, June 11, 2010 Split of Boost.Endian</span></dt></dl></dd>
+<dd><dl><dt><span class="section">Version 0.1.0, June 15, 2010 Split of Boost.Endian</span></dt></dl></dd>
<dt><span class="section"><a href="appendices/rationale.html"> Appendix B:
Rationale</a></span></dt>
<dt><span class="section"><a href="appendices/implementation.html"> Appendix
Modified: sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/appendices/acknowledgements.html
==============================================================================
--- sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/appendices/acknowledgements.html (original)
+++ sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/appendices/acknowledgements.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -44,7 +44,7 @@
Cliff Green, Gennaro Proto, Giovanni Piero Deretta, dizzy, Jeff Flinn, John
Maddock, Kim Barrett, Marsh Ray, Martin Bonner, Matias Capeletto, Neil Mayhew,
Phil Endecott, Rene Rivera, Roland Schwarz, Scott McMurray, Sebastian Redl,
- Tomas Puverle, and Yuval Ronen.
+ Tomas Puverle and Yuval Ronen.
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
Modified: sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/appendices/appendix_e__tests.html
==============================================================================
--- sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/appendices/appendix_e__tests.html (original)
+++ sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/appendices/appendix_e__tests.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -406,6 +406,33 @@
</p>
</td>
</tr>
+<tr>
+<td>
+ <p>
+ check_data
+ </p>
+ </td>
+<td>
+ <p>
+ run
+ </p>
+ </td>
+<td>
+ <p>
+ check data starts at the same address
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ #
+ </p>
+ </td>
+</tr>
</tbody>
</table></div>
</div>
Modified: sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/appendices/history.html
==============================================================================
--- sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/appendices/history.html (original)
+++ sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/appendices/history.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -30,14 +30,60 @@
History"> Appendix A:
History</a>
</h3></div></div></div>
-<div class="toc"><dl><dt><span class="section">Version 0.1.0, June 11, 2010 Split of Boost.Endian</span></dt></dl></div>
+<div class="toc"><dl><dt><span class="section">Version 0.1.0, June 15, 2010 Split of Boost.Endian</span></dt></dl></div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="toward_boost_endian.appendices.history.__version_0_1_0__june_11__2010____split_of_boost_endian_"></a>Version 0.1.0, June 11, 2010 Split of Boost.Endian
+<a name="toward_boost_endian.appendices.history.__version_0_1_0__june_15__2010____split_of_boost_endian_"></a>Version 0.1.0, June 15, 2010 Split of Boost.Endian
</h4></div></div></div>
<p>
<span class="bold"><strong>Features:</strong></span>
</p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ Endian packs
+ <div class="itemizedlist"><ul type="circle">
+<li>
+ Big endian | little endian | native endian byte ordering.
+ </li>
+<li>
+ Signed | unsigned
+ </li>
+<li>
+ Unaligned | aligned
+ </li>
+<li>
+ 1-8 byte (unaligned) | 2, 4, 8 byte (aligned)
+ </li>
+<li>
+ Choice of integer value type
+ </li>
+</ul></div>
+</li>
+<li>
+ Endian integers with the whole set of arithmetics operators based on
+ endian pack.
+ </li>
+<li>
+ Operators <= and => for unformatted binary (as opposed to formatted
+ character) stream insertion and extraction of built-in, std::string types
+ and of endian types.
+ </li>
+<li>
+ Views of aligned endian unaware integer types as endian packs or endian
+ integers so we can make endian conversion.
+ </li>
+<li>
+ Generic in place conversion between different endian formats.
+ <div class="itemizedlist"><ul type="circle">
+<li>
+ Very simple interface: convert_to/from<endiannes domain>(),
+ </li>
+<li>
+ Support for built-in and user-defined data types view as fusion sequences.
+ </li>
+</ul></div>
+</li>
+</ul></div>
</div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
Modified: sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/appendices/implementation.html
==============================================================================
--- sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/appendices/implementation.html (original)
+++ sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/appendices/implementation.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -32,7 +32,7 @@
C: Implementation Notes</a>
</h3></div></div></div>
<a name="toward_boost_endian.appendices.implementation.faq"></a><h4>
-<a name="id4823599"></a>
+<a name="id4831418"></a>
<a href="implementation.html#toward_boost_endian.appendices.implementation.faq">FAQ</a>
</h4>
<div class="itemizedlist"><ul type="disc">
@@ -77,16 +77,17 @@
</li>
<li>
<span class="bold"><strong>What are the implications endian types not being
- POD's of C++03?</strong></span> They can't be used in unions. In theory, compilers
- aren't required to align or lay out storage in portable ways, although
- this problem has never been observed in a real compiler.
+ POD's with C++03 compilers?</strong></span> They can't be used in unions. Also,
+ compilers aren't required to align or lay out storage in portable ways,
+ although this potential problem hasn't prevented use of Boost.Endian with
+ real compilers.
</li>
<li>
<span class="bold"><strong>Which is better, big-endian or little-endian?</strong></span>
Big-endian tends to be a bit more of an industry standard, but little-endian
may be preferred for applications that run primarily on x86 (Intel/AMD)
- and other little-endian CPU's. The Wikipedia article gives more pros and
- cons.
+ and other little-endian CPU's. The Wikipedia
+ article gives more pros and cons.
</li>
<li>
<span class="bold"><strong>What good is native endianness?</strong></span> It provides
Modified: sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/appendices/rationale.html
==============================================================================
--- sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/appendices/rationale.html (original)
+++ sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/appendices/rationale.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -32,7 +32,7 @@
Rationale</a>
</h3></div></div></div>
<a name="toward_boost_endian.appendices.rationale.design_considerations_for_boost_endian"></a><h4>
-<a name="id4823444"></a>
+<a name="id4831095"></a>
<a href="rationale.html#toward_boost_endian.appendices.rationale.design_considerations_for_boost_endian">Design
considerations for Boost.Endian</a>
</h4>
@@ -72,7 +72,7 @@
</li>
</ul></div>
<a name="toward_boost_endian.appendices.rationale.experience"></a><h4>
-<a name="id4823520"></a>
+<a name="id4758374"></a>
<a href="rationale.html#toward_boost_endian.appendices.rationale.experience">Experience</a>
</h4>
<p>
@@ -82,8 +82,19 @@
from C libraries that were also widely used. Endian integers have proven
widely useful across a wide range of computer architectures and applications.
</p>
+<a name="toward_boost_endian.appendices.rationale.motivating_use_cases"></a><h4>
+<a name="id4758405"></a>
+ <a href="rationale.html#toward_boost_endian.appendices.rationale.motivating_use_cases">Motivating
+ use cases</a>
+ </h4>
+<p>
+ Neil Mayhew writes: "I can also provide a meaningful use-case for this
+ library: reading TrueType font files from disk and processing the contents.
+ The data format has fixed endianness (big) and has unaligned values in various
+ places. Using Boost.Endian simplifies and cleans the code wonderfully."
+ </p>
<a name="toward_boost_endian.appendices.rationale.c__0x"></a><h4>
-<a name="id4823552"></a>
+<a name="id4758437"></a>
<a href="rationale.html#toward_boost_endian.appendices.rationale.c__0x">C++0x</a>
</h4>
<p>
Modified: sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/appendices/todo.html
==============================================================================
--- sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/appendices/todo.html (original)
+++ sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/appendices/todo.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -30,15 +30,32 @@
plans</a>
</h3></div></div></div>
<a name="toward_boost_endian.appendices.todo.tasks_to_do_before_review"></a><h4>
-<a name="id4824996"></a>
+<a name="id4832864"></a>
<a href="todo.html#toward_boost_endian.appendices.todo.tasks_to_do_before_review">Tasks
to do before review</a>
</h4>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ Support for 'pure' endian conversion for endian unaware UDT.
+ </li>
+<li>
+ Support for 'in place' endian conversion for ranges of endian unaware types.
+ </li>
+<li>
+ endian iterator, which will iterate across a range endian converting values
+ as necessary. It works with any type supporting the convert_to/from functions.
+ </li>
+</ul></div>
<a name="toward_boost_endian.appendices.todo.for_later_releases"></a><h4>
-<a name="id4825018"></a>
+<a name="id4832906"></a>
<a href="todo.html#toward_boost_endian.appendices.todo.for_later_releases">For
later releases</a>
</h4>
+<div class="itemizedlist"><ul type="disc"><li>
+ The library doesn't take advantage of special instructions on architectures
+ which natively support endian conversion. This functionality could, however,
+ be part of future releases.
+ </li></ul></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
Added: sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/example.html
==============================================================================
--- (empty file)
+++ sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/example.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -0,0 +1,115 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Example</title>
+<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../index.html" title="Toward Boost.Endian">
+<link rel="up" href="../index.html" title="Toward Boost.Endian">
+<link rel="prev" href="reference/integer_endian_conversion_hpp.html" title="
+ Header <boost/integer/endian_conversion.hpp>">
+<link rel="next" href="appendices.html" title="Appendices">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<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="reference/integer_endian_conversion_hpp.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="appendices.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">
+<a name="toward_boost_endian.example"></a>Example
+</h2></div></div></div>
+<p>
+ The endian_example.cpp program writes a binary file containing four byte big-endian
+ and little-endian integers:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">cassert</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">cstdio</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">integer</span><span class="special">/</span><span class="identifier">endian</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">integer</span><span class="special">;</span>
+
+<span class="keyword">namespace</span>
+<span class="special">{</span>
+ <span class="comment">// This is an extract from a very widely used GIS file format. I have no idea
+</span> <span class="comment">// why a designer would mix big and little endians in the same file - but
+</span> <span class="comment">// this is a real-world format and users wishing to write low level code
+</span> <span class="comment">// manipulating these files have to deal with the mixed endianness.
+</span>
+ <span class="keyword">struct</span> <span class="identifier">header</span>
+ <span class="special">{</span>
+ <span class="identifier">big32_t</span> <span class="identifier">file_code</span><span class="special">;</span>
+ <span class="identifier">big32_t</span> <span class="identifier">file_length</span><span class="special">;</span>
+ <span class="identifier">little32_t</span> <span class="identifier">version</span><span class="special">;</span>
+ <span class="identifier">little32_t</span> <span class="identifier">shape_type</span><span class="special">;</span>
+ <span class="special">};</span>
+
+ <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> <span class="identifier">filename</span> <span class="special">=</span> <span class="string">"test.dat"</span><span class="special">;</span>
+<span class="special">}</span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">assert</span><span class="special">(</span> <span class="keyword">sizeof</span><span class="special">(</span> <span class="identifier">header</span> <span class="special">)</span> <span class="special">==</span> <span class="number">16</span> <span class="special">);</span> <span class="comment">// requirement for interoperability
+</span>
+ <span class="identifier">header</span> <span class="identifier">h</span><span class="special">;</span>
+
+ <span class="identifier">h</span><span class="special">.</span><span class="identifier">file_code</span> <span class="special">=</span> <span class="number">0x04030201</span><span class="special">;</span>
+ <span class="identifier">h</span><span class="special">.</span><span class="identifier">file_length</span> <span class="special">=</span> <span class="keyword">sizeof</span><span class="special">(</span> <span class="identifier">header</span> <span class="special">);</span>
+ <span class="identifier">h</span><span class="special">.</span><span class="identifier">version</span> <span class="special">=</span> <span class="special">-</span><span class="number">1</span><span class="special">;</span>
+ <span class="identifier">h</span><span class="special">.</span><span class="identifier">shape_type</span> <span class="special">=</span> <span class="number">0x04030201</span><span class="special">;</span>
+
+ <span class="comment">// Low-level I/O such as POSIX read/write or <cstdio> fread/fwrite is sometimes
+</span> <span class="comment">// used for binary file operations when ultimate efficiency is important.
+</span> <span class="comment">// Such I/O is often performed in some C++ wrapper class, but to drive home the
+</span> <span class="comment">// point that endian integers are often used in fairly low-level code that
+</span> <span class="comment">// does bulk I/O operations, <cstdio> fopen/fwrite is used for I/O in this example.
+</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">FILE</span> <span class="special">*</span> <span class="identifier">fi</span><span class="special">;</span>
+
+ <span class="keyword">if</span> <span class="special">(</span> <span class="special">!(</span><span class="identifier">fi</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">fopen</span><span class="special">(</span> <span class="identifier">filename</span><span class="special">,</span> <span class="string">"wb"</span> <span class="special">))</span> <span class="special">)</span> <span class="comment">// MUST BE BINARY
+</span> <span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"could not open "</span> <span class="special"><<</span> <span class="identifier">filename</span> <span class="special"><<</span> <span class="char">'\n'</span><span class="special">;</span>
+ <span class="keyword">return</span> <span class="number">1</span><span class="special">;</span>
+ <span class="special">}</span>
+
+ <span class="keyword">if</span> <span class="special">(</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">fwrite</span><span class="special">(</span> <span class="special">&</span><span class="identifier">h</span><span class="special">,</span> <span class="keyword">sizeof</span><span class="special">(</span> <span class="identifier">header</span> <span class="special">),</span> <span class="number">1</span><span class="special">,</span> <span class="identifier">fi</span> <span class="special">)</span> <span class="special">!=</span> <span class="number">1</span> <span class="special">)</span>
+ <span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"write failure for "</span> <span class="special"><<</span> <span class="identifier">filename</span> <span class="special"><<</span> <span class="char">'\n'</span><span class="special">;</span>
+ <span class="keyword">return</span> <span class="number">1</span><span class="special">;</span>
+ <span class="special">}</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">fclose</span><span class="special">(</span> <span class="identifier">fi</span> <span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"created file "</span> <span class="special"><<</span> <span class="identifier">filename</span> <span class="special"><<</span> <span class="char">'\n'</span><span class="special">;</span>
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ After compiling and executing endian_example.cpp, a hex dump of test.dat shows:
+ </p>
+<pre class="programlisting"><span class="number">0403</span> <span class="number">0201</span> <span class="number">0000</span> <span class="number">0010</span> <span class="identifier">ffff</span> <span class="identifier">ffff</span> <span class="number">0102</span> <span class="number">0304</span>
+</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006 -2009 Beman Dawes<br>Copyright © 2010 Vicente J. Botet Escriba<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="reference/integer_endian_conversion_hpp.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="appendices.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Modified: sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/overview.html
==============================================================================
--- sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/overview.html (original)
+++ sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/overview.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -32,7 +32,13 @@
<a href="overview.html#toward_boost_endian.overview.description">Description</a>
</h3>
<p>
- <span class="bold"><strong>Boost.Integer.Endian</strong></span> provides:
+ This is an extension of the Beman's Boost.Integer.Endian able to work with
+ endian aware types, used to convert between types with different endian or
+ even to carry on with arithmetic operations, adding support ofr aligned endian
+ unaware types.
+ </p>
+<p>
+ <span class="bold"><strong>Boost.Integer.Endian.Ext</strong></span> provides:
</p>
<div class="itemizedlist"><ul type="disc">
<li>
@@ -64,14 +70,23 @@
and of endian types.
</li>
<li>
- Views of aligned integer types as endian packs or endian integers.
+ Views of aligned endian unaware integer types as endian packs or endian integers
+ so we can make endian conversion.
</li>
<li>
- Generic In place conversion between different endian formats.
- </li>
+ Generic in place conversion between different endian formats.
+ <div class="itemizedlist"><ul type="circle">
+<li>
+ Very simple interface: convert_to/from<endiannes domain>(),
+ </li>
+<li>
+ Support for built-in and user-defined data types view as fusion sequences.
+ </li>
+</ul></div>
+</li>
</ul></div>
<a name="toward_boost_endian.overview.how_to_use_this_documentation"></a><h3>
-<a name="id4765082"></a>
+<a name="id4765104"></a>
<a href="overview.html#toward_boost_endian.overview.how_to_use_this_documentation">How
to Use This Documentation</a>
</h3>
Modified: sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/overview/motivation.html
==============================================================================
--- sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/overview/motivation.html (original)
+++ sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/overview/motivation.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -22,9 +22,154 @@
<div class="spirit-nav">
<a accesskey="p" href="../overview.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.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="../users_guide.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
</div>
-<div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title">
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
<a name="toward_boost_endian.overview.motivation"></a>Motivation
-</h3></div></div></div></div>
+</h3></div></div></div>
+<p>
+ The original Beman's version provided though the boost::integer::endian<>
+ class an integer-like class that providing arithmetics operations on
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ Big endian | little endian | native endian byte ordering.
+ </li>
+<li>
+ Signed | unsigned
+ </li>
+<li>
+ Unaligned | aligned
+ </li>
+<li>
+ 1-8 byte (unaligned) | 2, 4, 8 byte (aligned)
+ </li>
+<li>
+ Choice of integer value type
+ </li>
+</ul></div>
+<p>
+ This endain aware design seems to be unappropiated to work with endian unaware
+ types, but as we will see this is not completly true, as we can construct
+ on top of the Beman's design endian unaware operation. Next follows some
+ of the main critics that have been done recently.
+ </p>
+<a name="toward_boost_endian.overview.motivation.intrusive_verus_non_intrusive"></a><h4>
+<a name="id4803540"></a>
+ <a href="motivation.html#toward_boost_endian.overview.motivation.intrusive_verus_non_intrusive">Intrusive
+ verus non-intrusive</a>
+ </h4>
+<p>
+ Endian conversion must be possible to any type even if you can't modify the
+ original source code. Many people think that originel Beman's library requires
+ the data types which need to be converted to be coded using his endian types
+ as members. We will see that this is not true, as the user can always use
+ casting to reinterpret a given structure on another one, as the proposed
+ extension does with the endian_views.
+ </p>
+<a name="toward_boost_endian.overview.motivation.physical_versus_logical_data"></a><h4>
+<a name="id4803572"></a>
+ <a href="motivation.html#toward_boost_endian.overview.motivation.physical_versus_logical_data">Physical
+ versus Logical data</a>
+ </h4>
+<p>
+ The typical use case is to use native endianness until ready to read/write
+ using wire format. It is only when ready to do I/O that there is a need to
+ account for endianness.
+ </p>
+<p>
+ Beman's original library requires two types one to specify the physical data
+ and the other representing the logical data. Many people think that this
+ means that the user has to maintain two separate structs/classes when only
+ one is needed. This could be sometimes the case, but in other cases, the
+ user will store the the information elements include in the message on local
+ variables and specific contexts that don't follow the external format.
+ </p>
+<p>
+ Application that don't separate the physical and the logical data structures
+ don't scale well as any change on the external format will mean a refactoring
+ of the whole application. Also, the wire structures cannot maintain invariants,
+ so having a separate class is often useful even if its contents are essentially
+ identical to the wire version.
+ </p>
+<p>
+ In addition single and efficient view is only possible when the pysical view
+ can be represented by native aligned integers. But when the physical view
+ contains unaliged integers with sizes not supported by the platform, the
+ need to separate both view becomes anavoidable. Here the Beman's design is
+ the best adapted.
+ </p>
+<a name="toward_boost_endian.overview.motivation.inherent_inefficient_arithmetic_operations"></a><h4>
+<a name="id4803634"></a>
+ <a href="motivation.html#toward_boost_endian.overview.motivation.inherent_inefficient_arithmetic_operations">Inherent
+ inefficient arithmetic operations</a>
+ </h4>
+<p>
+ The fact that the endian types provide operators gives the impression that
+ it's ok to operate on them, but these operations can potentially require
+ two endian conversions when the endianness is different.
+ </p>
+<p>
+ Some people don't agree with that design choice, as they think the operation
+ of endian conversion and operating on the data should be divorced from each
+ other. A less experienced user that you may end up not realizing what the
+ hidden costs are and use the endian aware integer-like types throughout the
+ application, paying unnecessary overheads. They prefer a library that makes
+ hard to misuse in that way; borrowing a phrase from python, "explicit
+ is better than implicit". They believe that forcing the user to do the
+ explicit endian conversion leads to better separation of concerns for the
+ application.
+ </p>
+<p>
+ The extension proposal separates the endian aware type from the one able
+ to make arithmetic operation so the user can be forced to convert for one
+ to/from the native type, and avoid unfortunate costly atithmetic operations.
+ But don't removes the inefficient and endian safe class, as less demanding
+ applications would benefit from the safe approach.
+ </p>
+<a name="toward_boost_endian.overview.motivation.in_place_conversion"></a><h4>
+<a name="id4803688"></a>
+ <a href="motivation.html#toward_boost_endian.overview.motivation.in_place_conversion">In-place
+ conversion</a>
+ </h4>
+<p>
+ Other contexts force the user to make in place conversions. While this could
+ be dangerous, there are context on which a pure conversion is not possible,
+ mainly because the duplicated space could not be an option. These in-place
+ conversions are only possible for aligned endian unaware types.
+ </p>
+<p>
+ The fact that some context need this in-place conversion doesn't mean that
+ every application should work with this approach.
+ </p>
+<a name="toward_boost_endian.overview.motivation.udt_endianness"></a><h4>
+<a name="id4803722"></a>
+ <a href="motivation.html#toward_boost_endian.overview.motivation.udt_endianness">UDT
+ endianness</a>
+ </h4>
+<a name="toward_boost_endian.overview.motivation.mixed_endianness"></a><h4>
+<a name="id4803742"></a>
+ <a href="motivation.html#toward_boost_endian.overview.motivation.mixed_endianness">Mixed
+ endianness</a>
+ </h4>
+<p>
+ Sometimes we need to deal with messages with mixed endianness. A functional
+ approach means the programmer has to "know" which endianess the
+ data he wants to convert has.
+ </p>
+<a name="toward_boost_endian.overview.motivation.floating_point"></a><h4>
+<a name="id4803768"></a>
+ <a href="motivation.html#toward_boost_endian.overview.motivation.floating_point">Floating
+ point</a>
+ </h4>
+<a name="toward_boost_endian.overview.motivation.conclusion"></a><h4>
+<a name="id4803789"></a>
+ Conclusion
+ </h4>
+<p>
+ The library need to support applications needing to work safely with endian
+ aware types and efficiently with in place endian conversion.
+ </p>
+</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright © 2006 -2009 Beman Dawes<br>Copyright © 2010 Vicente J. Botet Escriba<p>
Modified: sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/reference.html
==============================================================================
--- sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/reference.html (original)
+++ sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/reference.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -32,36 +32,36 @@
<code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">alignment</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
<dd><dl><dt><span class="section"><a href="reference/alignment_hpp.html#toward_boost_endian.reference.alignment_hpp.endian_alignment">
Enum Class <code class="computeroutput"><span class="identifier">alignment</span></code></a></span></dt></dl></dd>
-<dt><span class="section"><a href="reference/endian_types_hpp.html"> Header
- <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">endian</span><span class="special">/</span><span class="identifier">types</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="reference/endian_endian_hpp.html"> Header
+ <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">endian</span><span class="special">/</span><span class="identifier">endian</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
<dd><dl>
-<dt><span class="section"><a href="reference/endian_types_hpp.html#toward_boost_endian.reference.endian_types_hpp.endian_endianness">
+<dt><span class="section"><a href="reference/endian_endian_hpp.html#toward_boost_endian.reference.endian_endian_hpp.endian_endianness">
Enum Class <code class="computeroutput"><span class="identifier">endianness</span></code></a></span></dt>
-<dt><span class="section"><a href="reference/endian_types_hpp.html#toward_boost_endian.reference.endian_types_hpp.endian_big">
+<dt><span class="section"><a href="reference/endian_endian_hpp.html#toward_boost_endian.reference.endian_endian_hpp.endian_big">
Class <code class="computeroutput"><span class="identifier">big</span></code></a></span></dt>
-<dt><span class="section"><a href="reference/endian_types_hpp.html#toward_boost_endian.reference.endian_types_hpp.endian_little">
+<dt><span class="section"><a href="reference/endian_endian_hpp.html#toward_boost_endian.reference.endian_endian_hpp.endian_little">
Class <code class="computeroutput"><span class="identifier">little</span></code></a></span></dt>
-<dt><span class="section"><a href="reference/endian_types_hpp.html#toward_boost_endian.reference.endian_types_hpp.endian_middle">
+<dt><span class="section"><a href="reference/endian_endian_hpp.html#toward_boost_endian.reference.endian_endian_hpp.endian_middle">
Class <code class="computeroutput"><span class="identifier">middle</span></code></a></span></dt>
-<dt><span class="section"><a href="reference/endian_types_hpp.html#toward_boost_endian.reference.endian_types_hpp.endian_mixed">
+<dt><span class="section"><a href="reference/endian_endian_hpp.html#toward_boost_endian.reference.endian_endian_hpp.endian_mixed">
Class <code class="computeroutput"><span class="identifier">mixed</span></code></a></span></dt>
-<dt><span class="section"><a href="reference/endian_types_hpp.html#toward_boost_endian.reference.endian_types_hpp.endian_native">
+<dt><span class="section"><a href="reference/endian_endian_hpp.html#toward_boost_endian.reference.endian_endian_hpp.endian_native">
Class <code class="computeroutput"><span class="identifier">native</span></code></a></span></dt>
</dl></dd>
-<dt><span class="section"><a href="reference/endian_shared_tree_hpp.html">
+<dt><span class="section"><a href="reference/endian_domain_map_hpp.html">
Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">endian</span><span class="special">/</span><span class="identifier">domain_map</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
-<dd><dl><dt><span class="section"><a href="reference/endian_shared_tree_hpp.html#toward_boost_endian.reference.endian_shared_tree_hpp.endian_shared_tree">
- Meta Function <code class="computeroutput"><span class="identifier">domain_map</span></code></a></span></dt></dl></dd>
+<dd><dl><dt><span class="section"><a href="reference/endian_domain_map_hpp.html#toward_boost_endian.reference.endian_domain_map_hpp.domain_map">
+ Meta Function <code class="computeroutput"><span class="identifier">domain_map</span><span class="special"><></span></code></a></span></dt></dl></dd>
+<dt><span class="section"><a href="reference/binary_stream_hpp.html"> Header
+ <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">binary_stream</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
<dt><span class="section"><a href="reference/integer_endian_pack_hpp.html">
Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">integer</span><span class="special">/</span><span class="identifier">endian_pack</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
<dt><span class="section"><a href="reference/integer_endian_hpp.html"> Header
<code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">integer</span><span class="special">/</span><span class="identifier">endian</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
-<dd><dl><dt><span class="section"><a href="reference/integer_endian_hpp.html#toward_boost_endian.reference.integer_endian_hpp.bitfield">
+<dd><dl><dt><span class="section"><a href="reference/integer_endian_hpp.html#toward_boost_endian.reference.integer_endian_hpp.endian">
Template class <code class="computeroutput"><span class="identifier">endian</span><span class="special"><></span></code></a></span></dt></dl></dd>
<dt><span class="section"><a href="reference/integer_endian_binary_stream_hpp.html">
Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">integer</span><span class="special">/</span><span class="identifier">endian_binary_stream</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
-<dt><span class="section"><a href="reference/binary_stream_hpp.html"> Header
- <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">binary_stream</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
<dt><span class="section"><a href="reference/integer_endian_type_hpp.html">
Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">integer</span><span class="special">/</span><span class="identifier">endian_type</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
<dd><dl><dt><span class="section"><a href="reference/integer_endian_type_hpp.html#toward_boost_endian.reference.integer_endian_type_hpp.integer_endian_type">
@@ -89,6 +89,16 @@
Non-Member Function Template <code class="computeroutput"><span class="identifier">convert_from</span><span class="special"><></span></code></a></span></dt>
<dt><span class="section"><a href="reference/integer_endian_conversion_hpp.html#toward_boost_endian.reference.integer_endian_conversion_hpp.convert_to">
Non-Member Function Template <code class="computeroutput"><span class="identifier">convert_to</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="reference/integer_endian_conversion_hpp.html#toward_boost_endian.reference.integer_endian_conversion_hpp.to">
+ Class Template <code class="computeroutput"><span class="identifier">to</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="reference/integer_endian_conversion_hpp.html#toward_boost_endian.reference.integer_endian_conversion_hpp.from">
+ Class Template <code class="computeroutput"><span class="identifier">from</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="reference/integer_endian_conversion_hpp.html#toward_boost_endian.reference.integer_endian_conversion_hpp.is_to">
+ Class Template <code class="computeroutput"><span class="identifier">is_to</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="reference/integer_endian_conversion_hpp.html#toward_boost_endian.reference.integer_endian_conversion_hpp.is_from">
+ Class Template <code class="computeroutput"><span class="identifier">is_from</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="reference/integer_endian_conversion_hpp.html#toward_boost_endian.reference.integer_endian_conversion_hpp.convert">
+ Non-Member Function Template <code class="computeroutput"><span class="identifier">convert</span><span class="special"><></span></code></a></span></dt>
</dl></dd>
</dl></div>
</div>
Modified: sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/reference/alignment_hpp.html
==============================================================================
--- sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/reference/alignment_hpp.html (original)
+++ sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/reference/alignment_hpp.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -8,8 +8,8 @@
<link rel="start" href="../../index.html" title="Toward Boost.Endian">
<link rel="up" href="../reference.html" title="Reference">
<link rel="prev" href="../reference.html" title="Reference">
-<link rel="next" href="endian_types_hpp.html" title=" Header
- <boost/endian/types.hpp>">
+<link rel="next" href="endian_endian_hpp.html" title=" Header
+ <boost/endian/endian.hpp>">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@@ -22,7 +22,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="../reference.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.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="endian_types_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="../reference.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.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="endian_endian_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title">
@@ -32,12 +32,14 @@
</h3></div></div></div>
<div class="toc"><dl><dt><span class="section"><a href="alignment_hpp.html#toward_boost_endian.reference.alignment_hpp.endian_alignment">
Enum Class <code class="computeroutput"><span class="identifier">alignment</span></code></a></span></dt></dl></div>
+<a name="toward_boost_endian.reference.alignment_hpp.synopsis"></a><h4>
+<a name="id4759310"></a>
+ Synopsis
+ </h4>
<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span>
<span class="special">{</span>
-
<span class="keyword">enum</span> <span class="keyword">class</span> <span class="identifier">alignment</span> <span class="special">{</span> <span class="identifier">unaligned</span><span class="special">,</span> <span class="identifier">aligned</span> <span class="special">};</span> <span class="comment">// scoped enum emulated on C++03
-</span>
-<span class="special">}</span>
+</span><span class="special">}</span>
</pre>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
@@ -60,7 +62,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="../reference.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.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="endian_types_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="../reference.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.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="endian_endian_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
</div>
</body>
</html>
Modified: sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/reference/binary_stream_hpp.html
==============================================================================
--- sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/reference/binary_stream_hpp.html (original)
+++ sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/reference/binary_stream_hpp.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -7,10 +7,10 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
<link rel="start" href="../../index.html" title="Toward Boost.Endian">
<link rel="up" href="../reference.html" title="Reference">
-<link rel="prev" href="integer_endian_binary_stream_hpp.html" title="
- Header <boost/integer/endian_binary_stream.hpp>">
-<link rel="next" href="integer_endian_type_hpp.html" title="
- Header <boost/integer/endian_type.hpp>">
+<link rel="prev" href="endian_domain_map_hpp.html" title="
+ Header <boost/endian/domain_map.hpp>">
+<link rel="next" href="integer_endian_pack_hpp.html" title="
+ Header <boost/integer/endian_pack.hpp>">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@@ -23,7 +23,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="integer_endian_binary_stream_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.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="integer_endian_type_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="endian_domain_map_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.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="integer_endian_pack_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title">
@@ -37,6 +37,103 @@
(as opposed to formatted character) stream insertion and extraction of built-in
and std::string types.
</p>
+<a name="toward_boost_endian.reference.binary_stream_hpp.synopsis"></a><h4>
+<a name="id4814078"></a>
+ Synopsis
+ </h4>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span>
+<span class="special">{</span>
+
+ <span class="comment">// built-in types ------------------------------------------------------------------//
+</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special"><=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="identifier">os</span><span class="special">,</span> <span class="keyword">short</span> <span class="identifier">v</span><span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">>=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="identifier">is</span><span class="special">,</span> <span class="keyword">short</span><span class="special">&</span> <span class="identifier">v</span><span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special"><=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="identifier">os</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="keyword">short</span> <span class="identifier">v</span><span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">>=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="identifier">is</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="keyword">short</span><span class="special">&</span> <span class="identifier">v</span><span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special"><=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="identifier">os</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">v</span><span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">>=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="identifier">is</span><span class="special">,</span> <span class="keyword">int</span><span class="special">&</span> <span class="identifier">v</span><span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special"><=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="identifier">os</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="keyword">int</span> <span class="identifier">v</span><span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">>=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="identifier">is</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="keyword">int</span><span class="special">&</span> <span class="identifier">v</span><span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special"><=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="identifier">os</span><span class="special">,</span> <span class="keyword">long</span> <span class="identifier">v</span><span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">>=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="identifier">is</span><span class="special">,</span> <span class="keyword">long</span><span class="special">&</span> <span class="identifier">v</span><span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special"><=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="identifier">os</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="keyword">long</span> <span class="identifier">v</span><span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">>=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="identifier">is</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="keyword">long</span><span class="special">&</span> <span class="identifier">v</span><span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special"><=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="identifier">os</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">long</span> <span class="identifier">v</span><span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">>=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="identifier">is</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">long</span><span class="special">&</span> <span class="identifier">v</span><span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special"><=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="identifier">os</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="keyword">long</span> <span class="keyword">long</span> <span class="identifier">v</span><span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">>=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="identifier">is</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="keyword">long</span> <span class="keyword">long</span><span class="special">&</span> <span class="identifier">v</span><span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special"><=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="identifier">os</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">v</span><span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">>=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="identifier">is</span><span class="special">,</span> <span class="keyword">float</span><span class="special">&</span> <span class="identifier">v</span><span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special"><=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="identifier">os</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">v</span><span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">>=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="identifier">is</span><span class="special">,</span> <span class="keyword">double</span><span class="special">&</span> <span class="identifier">v</span><span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special"><=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="identifier">os</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">v</span><span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">>=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="identifier">is</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span><span class="special">&</span> <span class="identifier">v</span><span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special"><=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="identifier">os</span><span class="special">,</span> <span class="keyword">char</span> <span class="identifier">c</span><span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">>=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="identifier">is</span><span class="special">,</span> <span class="keyword">char</span><span class="special">&</span> <span class="identifier">c</span><span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special"><=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="identifier">os</span><span class="special">,</span> <span class="keyword">signed</span> <span class="keyword">char</span> <span class="identifier">c</span><span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">>=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="identifier">is</span><span class="special">,</span> <span class="keyword">signed</span> <span class="keyword">char</span><span class="special">&</span> <span class="identifier">c</span><span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special"><=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="identifier">os</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="keyword">char</span> <span class="identifier">c</span><span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">>=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="identifier">is</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="keyword">char</span><span class="special">&</span> <span class="identifier">c</span><span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special"><=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="identifier">os</span><span class="special">,</span> <span class="keyword">wchar_t</span> <span class="identifier">v</span><span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">>=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="identifier">is</span><span class="special">,</span> <span class="keyword">wchar_t</span><span class="special">&</span> <span class="identifier">v</span><span class="special">);</span>
+
+ <span class="comment">// strings -------------------------------------------------------------------------//
+</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special"><=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="identifier">os</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">p</span><span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special"><=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="identifier">os</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">signed</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">p</span><span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special"><=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="identifier">os</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">unsigned</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">p</span><span class="special">);</span>
+
+<span class="preprocessor">#ifndef</span> <span class="identifier">BOOST_NO_CWCHAR</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special"><=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="identifier">os</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">wchar_t</span><span class="special">*</span> <span class="identifier">p</span><span class="special">);</span>
+<span class="preprocessor">#endif</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special"><=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="identifier">os</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">&</span> <span class="identifier">s</span><span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">>=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="identifier">is</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">&</span> <span class="identifier">s</span><span class="special">);</span>
+
+<span class="preprocessor">#ifndef</span> <span class="identifier">BOOST_NO_STD_WSTRING</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special"><=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="identifier">os</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">wstring</span><span class="special">&</span> <span class="identifier">s</span><span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">>=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="identifier">is</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">wstring</span><span class="special">&</span> <span class="identifier">s</span><span class="special">);</span>
+<span class="preprocessor">#endif</span>
+
+<span class="special">}</span> <span class="comment">// namespace boost
+</span></pre>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<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>
+ Omission of bool and void* is deliberate; any semantics would be questionable
+ </p></td></tr>
+</table></div>
+<div class="warning"><table border="0" summary="Warning">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="../../../../../../doc/html/images/warning.png"></td>
+<th align="left">Warning</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ Note the asymmetry between output and input; a string with embedded nulls
+ will be output with the embedded nulls, but input will stop at the first
+ null. So it probably isn't a good idea to use these functions for strings
+ with nulls.
+ </p></td></tr>
+</table></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
@@ -48,7 +145,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="integer_endian_binary_stream_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.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="integer_endian_type_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="endian_domain_map_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.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="integer_endian_pack_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
</div>
</body>
</html>
Added: sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/reference/endian_domain_map_hpp.html
==============================================================================
--- (empty file)
+++ sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/reference/endian_domain_map_hpp.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -0,0 +1,106 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>
+ Header <boost/endian/domain_map.hpp></title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../../index.html" title="Toward Boost.Endian">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="endian_endian_hpp.html" title=" Header
+ <boost/endian/endian.hpp>">
+<link rel="next" href="binary_stream_hpp.html" title=" Header
+ <boost/binary_stream.hpp>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<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="endian_endian_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.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="binary_stream_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_endian.reference.endian_domain_map_hpp"></a><a href="endian_domain_map_hpp.html" title="
+ Header <boost/endian/domain_map.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">endian</span><span class="special">/</span><span class="identifier">domain_map</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="toc"><dl><dt><span class="section"><a href="endian_domain_map_hpp.html#toward_boost_endian.reference.endian_domain_map_hpp.domain_map">
+ Meta Function <code class="computeroutput"><span class="identifier">domain_map</span><span class="special"><></span></code></a></span></dt></dl></div>
+<a name="toward_boost_endian.reference.endian_domain_map_hpp.synopsis"></a><h4>
+<a name="id4813493"></a>
+ Synopsis
+ </h4>
+<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">endian</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Domain</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">domain_map</span><span class="special">;</span>
+<span class="special">}}</span>
+</pre>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_endian.reference.endian_domain_map_hpp.domain_map"></a><a href="endian_domain_map_hpp.html#toward_boost_endian.reference.endian_domain_map_hpp.domain_map" title="
+ Meta Function domain_map<>">
+ Meta Function <code class="computeroutput"><span class="identifier">domain_map</span><span class="special"><></span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Domain</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">domain_map</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="special"><</span><span class="identifier">see</span> <span class="identifier">below</span><span class="special">></span> <span class="identifier">type</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<div class="itemizedlist"><ul type="disc">
+<li>
+<span class="bold"><strong>Requires:</strong></span><div class="itemizedlist"><ul type="circle"><li>
+<code class="computeroutput"><span class="identifier">Doamin</span></code> any class.
+ Can be also <code class="computeroutput"><span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span></code>
+ or <code class="computeroutput"><span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span></code>.
+ </li></ul></div>
+</li>
+<li>
+<span class="bold"><strong>Result:</strong></span> The member typedef <code class="computeroutput"><span class="identifier">type</span></code> names a mpl tree of sequence of
+ <code class="computeroutput"><span class="identifier">endianness</span></code> types as view
+ from the point of view of the <code class="computeroutput"><span class="identifier">Domain</span></code>.
+ The default definition is a mpl tree having as leaves the <code class="computeroutput"><span class="identifier">Domain</span></code> class for <code class="computeroutput"><span class="identifier">T</span></code>
+ fundamental types, and fusion sequences.
+ </li>
+<li><span class="bold"><strong>Example:</strong></span></li>
+</ul></div>
+<pre class="programlisting"><span class="identifier">is_same</span><span class="special"><</span><span class="identifier">domain_map</span><span class="special"><</span><span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="keyword">int</span><span class="special">>::</span><span class="identifier">type</span><span class="special">,</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">>::</span><span class="identifier">value</span> <span class="special">==</span> <span class="keyword">true</span>
+
+<span class="keyword">struct</span> <span class="identifier">ifA</span> <span class="special">{};</span>
+</pre>
+<p>
+ The user needs to specialize this metafunction for specific domains.
+ </p>
+<div class="warning"><table border="0" summary="Warning">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="../../../../../../doc/html/images/warning.png"></td>
+<th align="left">Warning</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ It is undefined any specialization of this calss for the <code class="computeroutput"><span class="identifier">endianness</span></code> <code class="computeroutput"><span class="identifier">big</span></code>
+ and <code class="computeroutput"><span class="identifier">little</span></code>.
+ </p></td></tr>
+</table></div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006 -2009 Beman Dawes<br>Copyright © 2010 Vicente J. Botet Escriba<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="endian_endian_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.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="binary_stream_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Modified: sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/reference/endian_endian_hpp.html
==============================================================================
--- sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/reference/endian_endian_hpp.html (original)
+++ sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/reference/endian_endian_hpp.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -7,9 +7,10 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
<link rel="start" href="../../index.html" title="Toward Boost.Endian">
<link rel="up" href="../reference.html" title="Reference">
-<link rel="prev" href="../reference.html" title="Reference">
-<link rel="next" href="endian_shared_tree_hpp.html" title="
- Header <boost/endian/shared_tree.hpp>">
+<link rel="prev" href="alignment_hpp.html" title=" Header
+ <boost/alignment.hpp>">
+<link rel="next" href="endian_domain_map_hpp.html" title="
+ Header <boost/endian/domain_map.hpp>">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@@ -22,13 +23,109 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="../reference.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.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="endian_shared_tree_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="alignment_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.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="endian_domain_map_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
</div>
-<div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title">
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
<a name="toward_boost_endian.reference.endian_endian_hpp"></a><a href="endian_endian_hpp.html" title=" Header
<boost/endian/endian.hpp>"> Header
<code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">endian</span><span class="special">/</span><span class="identifier">endian</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
-</h3></div></div></div></div>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="endian_endian_hpp.html#toward_boost_endian.reference.endian_endian_hpp.endian_endianness">
+ Enum Class <code class="computeroutput"><span class="identifier">endianness</span></code></a></span></dt>
+<dt><span class="section"><a href="endian_endian_hpp.html#toward_boost_endian.reference.endian_endian_hpp.endian_big">
+ Class <code class="computeroutput"><span class="identifier">big</span></code></a></span></dt>
+<dt><span class="section"><a href="endian_endian_hpp.html#toward_boost_endian.reference.endian_endian_hpp.endian_little">
+ Class <code class="computeroutput"><span class="identifier">little</span></code></a></span></dt>
+<dt><span class="section"><a href="endian_endian_hpp.html#toward_boost_endian.reference.endian_endian_hpp.endian_middle">
+ Class <code class="computeroutput"><span class="identifier">middle</span></code></a></span></dt>
+<dt><span class="section"><a href="endian_endian_hpp.html#toward_boost_endian.reference.endian_endian_hpp.endian_mixed">
+ Class <code class="computeroutput"><span class="identifier">mixed</span></code></a></span></dt>
+<dt><span class="section"><a href="endian_endian_hpp.html#toward_boost_endian.reference.endian_endian_hpp.endian_native">
+ Class <code class="computeroutput"><span class="identifier">native</span></code></a></span></dt>
+</dl></div>
+<a name="toward_boost_endian.reference.endian_endian_hpp.synopsis"></a><h4>
+<a name="id4759548"></a>
+ Synopsis
+ </h4>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span>
+<span class="special">{</span>
+ <span class="comment">// scoped enum emulated on C++03
+</span> <span class="keyword">enum</span> <span class="keyword">class</span> <span class="identifier">endianness</span> <span class="special">{</span> <span class="identifier">big</span><span class="special">,</span> <span class="identifier">little</span><span class="special">,</span> <span class="identifier">middle</span><span class="special">,</span> <span class="identifier">mixed</span><span class="special">,</span> <span class="identifier">native</span><span class="special">=<</span><span class="identifier">platform</span> <span class="identifier">dependent</span><span class="special">></span> <span class="special">};</span>
+
+ <span class="keyword">namespace</span> <span class="identifier">endian</span> <span class="special">{</span>
+ <span class="keyword">struct</span> <span class="identifier">big</span><span class="special">;</span>
+ <span class="keyword">struct</span> <span class="identifier">little</span><span class="special">;</span>
+ <span class="keyword">struct</span> <span class="identifier">middle</span><span class="special">;</span>
+ <span class="keyword">struct</span> <span class="identifier">mixed</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="special"><</span><span class="identifier">platform</span> <span class="identifier">dependent</span><span class="special">></span> <span class="identifier">native</span> <span class="special">;</span>
+ <span class="special">}</span>
+<span class="special">}</span>
+</pre>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_endian.reference.endian_endian_hpp.endian_endianness"></a><a href="endian_endian_hpp.html#toward_boost_endian.reference.endian_endian_hpp.endian_endianness" title="
+ Enum Class endianness">
+ Enum Class <code class="computeroutput"><span class="identifier">endianness</span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">enum</span> <span class="keyword">class</span> <span class="identifier">endianness</span> <span class="special">{</span> <span class="identifier">big</span><span class="special">,</span> <span class="identifier">little</span><span class="special">,</span> <span class="identifier">middle</span><span class="special">,</span> <span class="identifier">mixed</span><span class="special">,</span> <span class="identifier">native</span><span class="special">=<</span><span class="identifier">platform</span> <span class="identifier">dependent</span><span class="special">></span> <span class="special">};</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_endian.reference.endian_endian_hpp.endian_big"></a><a href="endian_endian_hpp.html#toward_boost_endian.reference.endian_endian_hpp.endian_big" title="
+ Class big">
+ Class <code class="computeroutput"><span class="identifier">big</span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">big</span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">const</span> <span class="identifier">endianness</span> <span class="identifier">value</span><span class="special">=</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_endian.reference.endian_endian_hpp.endian_little"></a><a href="endian_endian_hpp.html#toward_boost_endian.reference.endian_endian_hpp.endian_little" title="
+ Class little">
+ Class <code class="computeroutput"><span class="identifier">little</span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">little</span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">const</span> <span class="identifier">endianness</span> <span class="identifier">value</span><span class="special">=</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_endian.reference.endian_endian_hpp.endian_middle"></a><a href="endian_endian_hpp.html#toward_boost_endian.reference.endian_endian_hpp.endian_middle" title="
+ Class middle">
+ Class <code class="computeroutput"><span class="identifier">middle</span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">middle</span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">const</span> <span class="identifier">endianness</span> <span class="identifier">value</span><span class="special">=</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">middle</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_endian.reference.endian_endian_hpp.endian_mixed"></a><a href="endian_endian_hpp.html#toward_boost_endian.reference.endian_endian_hpp.endian_mixed" title="
+ Class mixed">
+ Class <code class="computeroutput"><span class="identifier">mixed</span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">mixed</span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">const</span> <span class="identifier">endianness</span> <span class="identifier">value</span><span class="special">=</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">mixed</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_endian.reference.endian_endian_hpp.endian_native"></a><a href="endian_endian_hpp.html#toward_boost_endian.reference.endian_endian_hpp.endian_native" title="
+ Class native">
+ Class <code class="computeroutput"><span class="identifier">native</span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="special"><</span><span class="identifier">platform</span> <span class="identifier">dependent</span><span class="special">></span> <span class="identifier">native</span> <span class="special">;</span>
+</pre>
+</div>
+</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright © 2006 -2009 Beman Dawes<br>Copyright © 2010 Vicente J. Botet Escriba<p>
@@ -39,7 +136,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="../reference.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.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="endian_shared_tree_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="alignment_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.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="endian_domain_map_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
</div>
</body>
</html>
Added: sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/reference/endian_native_tree_hpp.html
==============================================================================
--- (empty file)
+++ sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/reference/endian_native_tree_hpp.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -0,0 +1,55 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>
+ Header <boost/endian/native_tree.hpp></title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../../index.html" title="Toward Boost.Endian">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="endian_shared_tree_hpp.html" title="
+ Header <boost/endian/shared_tree.hpp>">
+<link rel="next" href="integer_endian_pack_hpp.html" title="
+ Header <boost/integer/endian_pack.hpp>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<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="endian_shared_tree_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.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="integer_endian_pack_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_endian.reference.endian_native_tree_hpp"></a><a href="endian_native_tree_hpp.html" title="
+ Header <boost/endian/native_tree.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">endian</span><span class="special">/</span><span class="identifier">native_tree</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="toc"><dl><dt><span class="section"><a href="endian_native_tree_hpp.html#toward_boost_endian.reference.endian_native_tree_hpp.endian_native_tree">
+ Meta Function <code class="computeroutput"><span class="identifier">native_tree</span></code></a></span></dt></dl></div>
+<div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_endian.reference.endian_native_tree_hpp.endian_native_tree"></a><a href="endian_native_tree_hpp.html#toward_boost_endian.reference.endian_native_tree_hpp.endian_native_tree" title="
+ Meta Function native_tree">
+ Meta Function <code class="computeroutput"><span class="identifier">native_tree</span></code></a>
+</h4></div></div></div></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006 -2009 Beman Dawes<br>Copyright © 2010 Vicente J. Botet Escriba<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="endian_shared_tree_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.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="integer_endian_pack_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/reference/endian_shared_tree_hpp.html
==============================================================================
--- (empty file)
+++ sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/reference/endian_shared_tree_hpp.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -0,0 +1,63 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>
+ Header <boost/endian/domain_map.hpp></title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../../index.html" title="Toward Boost.Endian">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="endian_endian_hpp.html" title=" Header
+ <boost/endian/endian.hpp>">
+<link rel="next" href="integer_endian_pack_hpp.html" title="
+ Header <boost/integer/endian_pack.hpp>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<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="endian_endian_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.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="integer_endian_pack_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_endian.reference.endian_shared_tree_hpp"></a><a href="endian_shared_tree_hpp.html" title="
+ Header <boost/endian/domain_map.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">endian</span><span class="special">/</span><span class="identifier">domain_map</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="toc"><dl><dt><span class="section"><a href="endian_shared_tree_hpp.html#toward_boost_endian.reference.endian_shared_tree_hpp.endian_shared_tree">
+ Meta Function <code class="computeroutput"><span class="identifier">domain_map</span></code></a></span></dt></dl></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_endian.reference.endian_shared_tree_hpp.endian_shared_tree"></a><a href="endian_shared_tree_hpp.html#toward_boost_endian.reference.endian_shared_tree_hpp.endian_shared_tree" title="
+ Meta Function domain_map">
+ Meta Function <code class="computeroutput"><span class="identifier">domain_map</span></code></a>
+</h4></div></div></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">endian</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Domain</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">domain_map</span><span class="special">;</span>
+<span class="special">}}</span>
+</pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006 -2009 Beman Dawes<br>Copyright © 2010 Vicente J. Botet Escriba<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="endian_endian_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.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="integer_endian_pack_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Modified: sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/reference/integer_endian_binary_stream_hpp.html
==============================================================================
--- sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/reference/integer_endian_binary_stream_hpp.html (original)
+++ sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/reference/integer_endian_binary_stream_hpp.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -9,8 +9,8 @@
<link rel="up" href="../reference.html" title="Reference">
<link rel="prev" href="integer_endian_hpp.html" title=" Header
<boost/integer/endian.hpp>">
-<link rel="next" href="binary_stream_hpp.html" title=" Header
- <boost/binary_stream.hpp>">
+<link rel="next" href="integer_endian_type_hpp.html" title="
+ Header <boost/integer/endian_type.hpp>">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@@ -23,7 +23,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="integer_endian_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.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="binary_stream_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="integer_endian_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.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="integer_endian_type_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title">
@@ -37,6 +37,29 @@
for unformatted binary (as opposed to formatted character) stream insertion
and extraction of endian types.
</p>
+<a name="toward_boost_endian.reference.integer_endian_binary_stream_hpp.synopsis"></a><h4>
+<a name="id4825266"></a>
+ Synopsis
+ </h4>
+<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">integer</span>
+ <span class="special">{</span>
+ <span class="keyword">template</span><span class="special"><</span> <span class="keyword">class</span> <span class="identifier">T</span> <span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">is_endian</span> <span class="special">{</span> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keyword">bool</span> <span class="identifier">value</span> <span class="special">=</span> <span class="keyword">false</span><span class="special">;</span> <span class="special">};</span>
+ <span class="keyword">template</span><span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">E</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">n_bits</span><span class="special">,</span> <span class="identifier">alignment</span> <span class="identifier">A</span> <span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">is_endian</span><span class="special"><</span><span class="identifier">endian</span><span class="special"><</span><span class="identifier">E</span><span class="special">,</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">N</span><span class="special">,</span><span class="identifier">A</span><span class="special">></span> <span class="special">{</span> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keyword">bool</span> <span class="identifier">value</span> <span class="special">=</span> <span class="keyword">true</span><span class="special">;</span> <span class="special">};</span>
+
+ <span class="keyword">template</span> <span class="special"><</span> <span class="keyword">class</span> <span class="identifier">Endian</span> <span class="special">></span>
+ <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span><span class="special"><</span> <span class="identifier">is_endian</span><span class="special"><</span><span class="identifier">Endian</span><span class="special">>,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span> <span class="special">&</span> <span class="special">>::</span><span class="identifier">type</span>
+ <span class="keyword">operator</span><span class="special"><=(</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span> <span class="special">&</span> <span class="identifier">os</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">Endian</span> <span class="special">&</span> <span class="identifier">e</span> <span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span> <span class="keyword">class</span> <span class="identifier">Endian</span> <span class="special">></span>
+ <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span><span class="special"><</span> <span class="identifier">is_endian</span><span class="special"><</span><span class="identifier">Endian</span><span class="special">>,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span> <span class="special">&</span> <span class="special">>::</span><span class="identifier">type</span>
+ <span class="keyword">operator</span><span class="special">>=(</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span> <span class="special">&</span> <span class="identifier">is</span><span class="special">,</span> <span class="identifier">Endian</span> <span class="special">&</span> <span class="identifier">e</span> <span class="special">);</span>
+ <span class="special">}</span>
+<span class="special">}</span>
+</pre>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
@@ -48,7 +71,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="integer_endian_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.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="binary_stream_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="integer_endian_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.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="integer_endian_type_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
</div>
</body>
</html>
Modified: sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/reference/integer_endian_conversion_hpp.html
==============================================================================
--- sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/reference/integer_endian_conversion_hpp.html (original)
+++ sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/reference/integer_endian_conversion_hpp.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -37,16 +37,45 @@
Non-Member Function Template <code class="computeroutput"><span class="identifier">convert_from</span><span class="special"><></span></code></a></span></dt>
<dt><span class="section"><a href="integer_endian_conversion_hpp.html#toward_boost_endian.reference.integer_endian_conversion_hpp.convert_to">
Non-Member Function Template <code class="computeroutput"><span class="identifier">convert_to</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="integer_endian_conversion_hpp.html#toward_boost_endian.reference.integer_endian_conversion_hpp.to">
+ Class Template <code class="computeroutput"><span class="identifier">to</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="integer_endian_conversion_hpp.html#toward_boost_endian.reference.integer_endian_conversion_hpp.from">
+ Class Template <code class="computeroutput"><span class="identifier">from</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="integer_endian_conversion_hpp.html#toward_boost_endian.reference.integer_endian_conversion_hpp.is_to">
+ Class Template <code class="computeroutput"><span class="identifier">is_to</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="integer_endian_conversion_hpp.html#toward_boost_endian.reference.integer_endian_conversion_hpp.is_from">
+ Class Template <code class="computeroutput"><span class="identifier">is_from</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="integer_endian_conversion_hpp.html#toward_boost_endian.reference.integer_endian_conversion_hpp.convert">
+ Non-Member Function Template <code class="computeroutput"><span class="identifier">convert</span><span class="special"><></span></code></a></span></dt>
</dl></div>
-<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">TargetDomain</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">SourceDomain</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
-<span class="keyword">void</span> <span class="identifier">convert_to_from</span><span class="special">(</span><span class="identifier">T</span><span class="special">&</span> <span class="identifier">r</span><span class="special">);</span>
+<a name="toward_boost_endian.reference.integer_endian_conversion_hpp.synopsis"></a><h4>
+<a name="id4828070"></a>
+ Synopsis
+ </h4>
+<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">integer</span> <span class="special">{</span>
-<span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">SourceDomain</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
-<span class="keyword">void</span> <span class="identifier">convert_from</span><span class="special">(</span><span class="identifier">T</span><span class="special">&</span> <span class="identifier">r</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">TargetDomain</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">SourceDomain</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="keyword">void</span> <span class="identifier">convert_to_from</span><span class="special">(</span><span class="identifier">T</span><span class="special">&</span> <span class="identifier">r</span><span class="special">);</span>
-<span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">TargetDomain</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
-<span class="keyword">void</span> <span class="identifier">convert_to</span><span class="special">(</span><span class="identifier">T</span><span class="special">&</span> <span class="identifier">r</span><span class="special">);</span>
-</pre>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">SourceDomain</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="keyword">void</span> <span class="identifier">convert_from</span><span class="special">(</span><span class="identifier">T</span><span class="special">&</span> <span class="identifier">r</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">TargetDomain</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="keyword">void</span> <span class="identifier">convert_to</span><span class="special">(</span><span class="identifier">T</span><span class="special">&</span> <span class="identifier">r</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Endian</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">to</span><span class="special">;</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Endian</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">from</span><span class="special">;</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Endian</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">is_to</span><span class="special">;</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Endian</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">is_from</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Endian1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Endian2</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="keyword">void</span> <span class="identifier">convert</span><span class="special">(</span><span class="identifier">T</span><span class="special">&</span> <span class="identifier">r</span><span class="special">);</span>
+
+
+<span class="special">}</span> <span class="comment">// namespace integer
+</span><span class="special">}</span> <span class="comment">// namespace boost
+</span></pre>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
<a name="toward_boost_endian.reference.integer_endian_conversion_hpp.convert_to_from"></a><a href="integer_endian_conversion_hpp.html#toward_boost_endian.reference.integer_endian_conversion_hpp.convert_to_from" title="
@@ -77,6 +106,64 @@
<span class="keyword">void</span> <span class="identifier">convert_to</span><span class="special">(</span><span class="identifier">T</span><span class="special">&</span> <span class="identifier">r</span><span class="special">);</span>
</pre>
</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_endian.reference.integer_endian_conversion_hpp.to"></a><a href="integer_endian_conversion_hpp.html#toward_boost_endian.reference.integer_endian_conversion_hpp.to" title="
+ Class Template to<>">
+ Class Template <code class="computeroutput"><span class="identifier">to</span><span class="special"><></span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Endian</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">to</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">Endian</span> <span class="identifier">type</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_endian.reference.integer_endian_conversion_hpp.from"></a><a href="integer_endian_conversion_hpp.html#toward_boost_endian.reference.integer_endian_conversion_hpp.from" title="
+ Class Template from<>">
+ Class Template <code class="computeroutput"><span class="identifier">from</span><span class="special"><></span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Endian</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">from</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">Endian</span> <span class="identifier">type</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_endian.reference.integer_endian_conversion_hpp.is_to"></a><a href="integer_endian_conversion_hpp.html#toward_boost_endian.reference.integer_endian_conversion_hpp.is_to" title="
+ Class Template is_to<>">
+ Class Template <code class="computeroutput"><span class="identifier">is_to</span><span class="special"><></span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Endian</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">is_to</span> <span class="special">:</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span> <span class="special">{};</span>
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Endian</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">is_to</span><span class="special"><</span> <span class="identifier">to</span><span class="special"><</span><span class="identifier">Endian</span><span class="special">></span> <span class="special">></span> <span class="special">:</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span> <span class="special">{};</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_endian.reference.integer_endian_conversion_hpp.is_from"></a><a href="integer_endian_conversion_hpp.html#toward_boost_endian.reference.integer_endian_conversion_hpp.is_from" title="
+ Class Template is_from<>">
+ Class Template <code class="computeroutput"><span class="identifier">is_from</span><span class="special"><></span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Endian</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">is_from</span> <span class="special">:</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span> <span class="special">{};</span>
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Endian</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">is_from</span><span class="special"><</span> <span class="identifier">from</span><span class="special"><</span><span class="identifier">Endian</span><span class="special">></span> <span class="special">></span> <span class="special">:</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span> <span class="special">{};</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_endian.reference.integer_endian_conversion_hpp.convert"></a><a href="integer_endian_conversion_hpp.html#toward_boost_endian.reference.integer_endian_conversion_hpp.convert" title="
+ Non-Member Function Template convert<>">
+ Non-Member Function Template <code class="computeroutput"><span class="identifier">convert</span><span class="special"><></span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">TargetDomain</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">SourceDomain</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">convert</span><span class="special">(</span><span class="identifier">T</span><span class="special">&</span> <span class="identifier">r</span><span class="special">);</span>
+</pre>
+</div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
Modified: sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/reference/integer_endian_hpp.html
==============================================================================
--- sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/reference/integer_endian_hpp.html (original)
+++ sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/reference/integer_endian_hpp.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -31,8 +31,24 @@
<boost/integer/endian.hpp>"> Header
<code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">integer</span><span class="special">/</span><span class="identifier">endian</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
</h3></div></div></div>
-<div class="toc"><dl><dt><span class="section"><a href="integer_endian_hpp.html#toward_boost_endian.reference.integer_endian_hpp.bitfield">
- Template class <code class="computeroutput"><span class="identifier">endian</span><span class="special"><></span></code></a></span></dt></dl></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="integer_endian_hpp.html#toward_boost_endian.reference.integer_endian_hpp.endian">
+ Template class <code class="computeroutput"><span class="identifier">endian</span><span class="special"><></span></code></a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="integer_endian_hpp.html#toward_boost_endian.reference.integer_endian_hpp.endian.endian">
+ Default Contructor <code class="computeroutput"><span class="identifier">endian</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="integer_endian_hpp.html#toward_boost_endian.reference.integer_endian_hpp.endian.endianT">
+ Contructor from value_type <code class="computeroutput"><span class="identifier">endian</span><span class="special">(</span><span class="identifier">T</span><span class="special">)</span></code></a></span></dt>
+<dt><span class="section"><a href="integer_endian_hpp.html#toward_boost_endian.reference.integer_endian_hpp.endian.assignment">
+ Assignment Operator from value_type <code class="computeroutput"><span class="keyword">operator</span><span class="special">=(</span><span class="identifier">T</span><span class="special">)</span></code></a></span></dt>
+<dt><span class="section"><a href="integer_endian_hpp.html#toward_boost_endian.reference.integer_endian_hpp.endian.conversion">
+ Conversion Operator <code class="computeroutput"><span class="keyword">operator</span> <span class="identifier">T</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="integer_endian_hpp.html#toward_boost_endian.reference.integer_endian_hpp.endian.data">
+ Member Function <code class="computeroutput"><span class="identifier">data</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="integer_endian_hpp.html#toward_boost_endian.reference.integer_endian_hpp.endian.other">
+ Other operators </a></span></dt>
+</dl></dd>
+</dl></div>
<p>
Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">integer</span><span class="special">/</span><span class="identifier">endian</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>
provides integer-like byte-holder binary types with explicit control over
@@ -68,14 +84,14 @@
Automatic conversion is provided to the underlying integer value type.
</p>
<a name="toward_boost_endian.reference.integer_endian_hpp.typedefs"></a><h4>
-<a name="id4813651"></a>
+<a name="id4817544"></a>
<a href="integer_endian_hpp.html#toward_boost_endian.reference.integer_endian_hpp.typedefs">Typedefs</a>
</h4>
<p>
One class template is provided:
</p>
-<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="identifier">endianness</span><span class="special">::</span><span class="identifier">enum_t</span> <span class="identifier">E</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">n_bytes</span><span class="special">,</span>
- <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">enum_t</span> <span class="identifier">A</span> <span class="special">=</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span><span class="special">></span>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="identifier">endianness</span><span class="special">::</span><span class="identifier">enum_t</span> <span class="identifier">E</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">n_bytes</span><span class="special">=</span><span class="number">8</span><span class="special">*</span><span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">T</span><span class="special">),</span>
+ <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">enum_t</span> <span class="identifier">A</span> <span class="special">=</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">aligned</span><span class="special">></span>
<span class="keyword">class</span> <span class="identifier">endian</span><span class="special">;</span>
</pre>
<p>
@@ -419,7 +435,7 @@
</p></td></tr>
</table></div>
<a name="toward_boost_endian.reference.integer_endian_hpp.comment_on_naming"></a><h4>
-<a name="id4814657"></a>
+<a name="id4818575"></a>
<a href="integer_endian_hpp.html#toward_boost_endian.reference.integer_endian_hpp.comment_on_naming">Comment
on naming</a>
</h4>
@@ -430,7 +446,7 @@
rather than <code class="computeroutput"><span class="identifier">big56_t</span></code>.
</p>
<p>
- As experience using these type grows, the realization creeps in that they
+ As experience using these types grows, the realization creeps in that they
are lousy arithmetic integers - they are really byte holders that for convenience
support arithmetic operations - and that for use in internal interfaces or
anything more than trivial arithmetic computations it is far better to convert
@@ -444,75 +460,75 @@
reflection of the mental model.
</p>
<a name="toward_boost_endian.reference.integer_endian_hpp.synopsis"></a><h4>
-<a name="id4814729"></a>
+<a name="id4818647"></a>
<a href="integer_endian_hpp.html#toward_boost_endian.reference.integer_endian_hpp.synopsis">Synopsis</a>
</h4>
<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">integer</span> <span class="special">{</span>
- <span class="keyword">template</span> <span class="special"><</span><span class="identifier">endianness</span> <span class="identifier">E</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">n_bits</span><span class="special">,</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">E</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">n_bits</span><span class="special">,</span>
<span class="identifier">alignment</span> <span class="identifier">A</span> <span class="special">=</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span><span class="special">></span>
<span class="keyword">class</span> <span class="identifier">endian</span><span class="special">;</span>
<span class="comment">// unaligned big endian signed integer types
-</span> <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">int_least8_t</span><span class="special">,</span> <span class="number">8</span> <span class="special">></span> <span class="identifier">big8_t</span><span class="special">;</span>
- <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">int_least16_t</span><span class="special">,</span> <span class="number">16</span> <span class="special">></span> <span class="identifier">big16_t</span><span class="special">;</span>
- <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">int_least32_t</span><span class="special">,</span> <span class="number">24</span> <span class="special">></span> <span class="identifier">big24_t</span><span class="special">;</span>
- <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">int_least32_t</span><span class="special">,</span> <span class="number">32</span> <span class="special">></span> <span class="identifier">big32_t</span><span class="special">;</span>
- <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">int_least64_t</span><span class="special">,</span> <span class="number">40</span> <span class="special">></span> <span class="identifier">big40_t</span><span class="special">;</span>
- <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">int_least64_t</span><span class="special">,</span> <span class="number">48</span> <span class="special">></span> <span class="identifier">big48_t</span><span class="special">;</span>
- <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">int_least64_t</span><span class="special">,</span> <span class="number">56</span> <span class="special">></span> <span class="identifier">big56_t</span><span class="special">;</span>
- <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">int_least64_t</span><span class="special">,</span> <span class="number">64</span> <span class="special">></span> <span class="identifier">big64_t</span><span class="special">;</span>
+</span> <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">int_least8_t</span><span class="special">,</span> <span class="number">8</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">big8_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">int_least16_t</span><span class="special">,</span> <span class="number">16</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">big16_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">int_least32_t</span><span class="special">,</span> <span class="number">24</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">big24_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">int_least32_t</span><span class="special">,</span> <span class="number">32</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">big32_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">int_least64_t</span><span class="special">,</span> <span class="number">40</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">big40_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">int_least64_t</span><span class="special">,</span> <span class="number">48</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">big48_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">int_least64_t</span><span class="special">,</span> <span class="number">56</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">big56_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">int_least64_t</span><span class="special">,</span> <span class="number">64</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">big64_t</span><span class="special">;</span>
<span class="comment">// unaligned big endian unsigned integer types
-</span> <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">uint_least8_t</span><span class="special">,</span> <span class="number">8</span> <span class="special">></span> <span class="identifier">ubig8_t</span><span class="special">;</span>
- <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">uint_least16_t</span><span class="special">,</span> <span class="number">16</span> <span class="special">></span> <span class="identifier">ubig16_t</span><span class="special">;</span>
- <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">uint_least32_t</span><span class="special">,</span> <span class="number">24</span> <span class="special">></span> <span class="identifier">ubig24_t</span><span class="special">;</span>
- <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">uint_least32_t</span><span class="special">,</span> <span class="number">32</span> <span class="special">></span> <span class="identifier">ubig32_t</span><span class="special">;</span>
- <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">uint_least64_t</span><span class="special">,</span> <span class="number">40</span> <span class="special">></span> <span class="identifier">ubig40_t</span><span class="special">;</span>
- <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">uint_least64_t</span><span class="special">,</span> <span class="number">48</span> <span class="special">></span> <span class="identifier">ubig48_t</span><span class="special">;</span>
- <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">uint_least64_t</span><span class="special">,</span> <span class="number">56</span> <span class="special">></span> <span class="identifier">ubig56_t</span><span class="special">;</span>
- <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">uint_least64_t</span><span class="special">,</span> <span class="number">64</span> <span class="special">></span> <span class="identifier">ubig64_t</span><span class="special">;</span>
+</span> <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">uint_least8_t</span><span class="special">,</span> <span class="number">8</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">ubig8_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">uint_least16_t</span><span class="special">,</span> <span class="number">16</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">ubig16_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">uint_least32_t</span><span class="special">,</span> <span class="number">24</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">ubig24_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">uint_least32_t</span><span class="special">,</span> <span class="number">32</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">ubig32_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">uint_least64_t</span><span class="special">,</span> <span class="number">40</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">ubig40_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">uint_least64_t</span><span class="special">,</span> <span class="number">48</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">ubig48_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">uint_least64_t</span><span class="special">,</span> <span class="number">56</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">ubig56_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">uint_least64_t</span><span class="special">,</span> <span class="number">64</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">ubig64_t</span><span class="special">;</span>
<span class="comment">// unaligned little endian signed integer types
-</span> <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">int_least8_t</span><span class="special">,</span> <span class="number">8</span> <span class="special">></span> <span class="identifier">little8_t</span><span class="special">;</span>
- <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">int_least16_t</span><span class="special">,</span> <span class="number">16</span> <span class="special">></span> <span class="identifier">little16_t</span><span class="special">;</span>
- <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">int_least32_t</span><span class="special">,</span> <span class="number">24</span> <span class="special">></span> <span class="identifier">little24_t</span><span class="special">;</span>
- <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">int_least32_t</span><span class="special">,</span> <span class="number">32</span> <span class="special">></span> <span class="identifier">little32_t</span><span class="special">;</span>
- <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">int_least64_t</span><span class="special">,</span> <span class="number">40</span> <span class="special">></span> <span class="identifier">little40_t</span><span class="special">;</span>
- <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">int_least64_t</span><span class="special">,</span> <span class="number">48</span> <span class="special">></span> <span class="identifier">little48_t</span><span class="special">;</span>
- <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">int_least64_t</span><span class="special">,</span> <span class="number">56</span> <span class="special">></span> <span class="identifier">little56_t</span><span class="special">;</span>
- <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">int_least64_t</span><span class="special">,</span> <span class="number">64</span> <span class="special">></span> <span class="identifier">little64_t</span><span class="special">;</span>
+</span> <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">int_least8_t</span><span class="special">,</span> <span class="number">8</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">little8_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">int_least16_t</span><span class="special">,</span> <span class="number">16</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">little16_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">int_least32_t</span><span class="special">,</span> <span class="number">24</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">little24_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">int_least32_t</span><span class="special">,</span> <span class="number">32</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">little32_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">int_least64_t</span><span class="special">,</span> <span class="number">40</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">little40_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">int_least64_t</span><span class="special">,</span> <span class="number">48</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">little48_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">int_least64_t</span><span class="special">,</span> <span class="number">56</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">little56_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">int_least64_t</span><span class="special">,</span> <span class="number">64</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">little64_t</span><span class="special">;</span>
<span class="comment">// unaligned little endian unsigned integer types
-</span> <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">uint_least8_t</span><span class="special">,</span> <span class="number">8</span> <span class="special">></span> <span class="identifier">ulittle8_t</span><span class="special">;</span>
- <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">uint_least16_t</span><span class="special">,</span> <span class="number">16</span> <span class="special">></span> <span class="identifier">ulittle16_t</span><span class="special">;</span>
- <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">uint_least32_t</span><span class="special">,</span> <span class="number">24</span> <span class="special">></span> <span class="identifier">ulittle24_t</span><span class="special">;</span>
- <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">uint_least32_t</span><span class="special">,</span> <span class="number">32</span> <span class="special">></span> <span class="identifier">ulittle32_t</span><span class="special">;</span>
- <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">uint_least64_t</span><span class="special">,</span> <span class="number">40</span> <span class="special">></span> <span class="identifier">ulittle40_t</span><span class="special">;</span>
- <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">uint_least64_t</span><span class="special">,</span> <span class="number">48</span> <span class="special">></span> <span class="identifier">ulittle48_t</span><span class="special">;</span>
- <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">uint_least64_t</span><span class="special">,</span> <span class="number">56</span> <span class="special">></span> <span class="identifier">ulittle56_t</span><span class="special">;</span>
- <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">uint_least64_t</span><span class="special">,</span> <span class="number">64</span> <span class="special">></span> <span class="identifier">ulittle64_t</span><span class="special">;</span>
+</span> <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">uint_least8_t</span><span class="special">,</span> <span class="number">8</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">ulittle8_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">uint_least16_t</span><span class="special">,</span> <span class="number">16</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">ulittle16_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">uint_least32_t</span><span class="special">,</span> <span class="number">24</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">ulittle24_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">uint_least32_t</span><span class="special">,</span> <span class="number">32</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">ulittle32_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">uint_least64_t</span><span class="special">,</span> <span class="number">40</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">ulittle40_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">uint_least64_t</span><span class="special">,</span> <span class="number">48</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">ulittle48_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">uint_least64_t</span><span class="special">,</span> <span class="number">56</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">ulittle56_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">uint_least64_t</span><span class="special">,</span> <span class="number">64</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">ulittle64_t</span><span class="special">;</span>
<span class="comment">// unaligned native endian signed integer types
-</span> <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">native</span><span class="special">,</span> <span class="identifier">int_least8_t</span><span class="special">,</span> <span class="number">8</span> <span class="special">></span> <span class="identifier">native8_t</span><span class="special">;</span>
- <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">native</span><span class="special">,</span> <span class="identifier">int_least16_t</span><span class="special">,</span> <span class="number">16</span> <span class="special">></span> <span class="identifier">native16_t</span><span class="special">;</span>
- <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">native</span><span class="special">,</span> <span class="identifier">int_least32_t</span><span class="special">,</span> <span class="number">24</span> <span class="special">></span> <span class="identifier">native24_t</span><span class="special">;</span>
- <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">native</span><span class="special">,</span> <span class="identifier">int_least32_t</span><span class="special">,</span> <span class="number">32</span> <span class="special">></span> <span class="identifier">native32_t</span><span class="special">;</span>
- <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">native</span><span class="special">,</span> <span class="identifier">int_least64_t</span><span class="special">,</span> <span class="number">40</span> <span class="special">></span> <span class="identifier">native40_t</span><span class="special">;</span>
- <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">native</span><span class="special">,</span> <span class="identifier">int_least64_t</span><span class="special">,</span> <span class="number">48</span> <span class="special">></span> <span class="identifier">native48_t</span><span class="special">;</span>
- <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">native</span><span class="special">,</span> <span class="identifier">int_least64_t</span><span class="special">,</span> <span class="number">56</span> <span class="special">></span> <span class="identifier">native56_t</span><span class="special">;</span>
- <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">native</span><span class="special">,</span> <span class="identifier">int_least64_t</span><span class="special">,</span> <span class="number">64</span> <span class="special">></span> <span class="identifier">native64_t</span><span class="special">;</span>
+</span> <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">native</span><span class="special">,</span> <span class="identifier">int_least8_t</span><span class="special">,</span> <span class="number">8</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">native8_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">native</span><span class="special">,</span> <span class="identifier">int_least16_t</span><span class="special">,</span> <span class="number">16</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">native16_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">native</span><span class="special">,</span> <span class="identifier">int_least32_t</span><span class="special">,</span> <span class="number">24</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">native24_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">native</span><span class="special">,</span> <span class="identifier">int_least32_t</span><span class="special">,</span> <span class="number">32</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">native32_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">native</span><span class="special">,</span> <span class="identifier">int_least64_t</span><span class="special">,</span> <span class="number">40</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">native40_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">native</span><span class="special">,</span> <span class="identifier">int_least64_t</span><span class="special">,</span> <span class="number">48</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">native48_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">native</span><span class="special">,</span> <span class="identifier">int_least64_t</span><span class="special">,</span> <span class="number">56</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">native56_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">native</span><span class="special">,</span> <span class="identifier">int_least64_t</span><span class="special">,</span> <span class="number">64</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">native64_t</span><span class="special">;</span>
<span class="comment">// unaligned native endian unsigned integer types
-</span> <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">native</span><span class="special">,</span> <span class="identifier">uint_least8_t</span><span class="special">,</span> <span class="number">8</span> <span class="special">></span> <span class="identifier">unative8_t</span><span class="special">;</span>
- <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">native</span><span class="special">,</span> <span class="identifier">uint_least16_t</span><span class="special">,</span> <span class="number">16</span> <span class="special">></span> <span class="identifier">unative16_t</span><span class="special">;</span>
- <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">native</span><span class="special">,</span> <span class="identifier">uint_least32_t</span><span class="special">,</span> <span class="number">24</span> <span class="special">></span> <span class="identifier">unative24_t</span><span class="special">;</span>
- <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">native</span><span class="special">,</span> <span class="identifier">uint_least32_t</span><span class="special">,</span> <span class="number">32</span> <span class="special">></span> <span class="identifier">unative32_t</span><span class="special">;</span>
- <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">native</span><span class="special">,</span> <span class="identifier">uint_least64_t</span><span class="special">,</span> <span class="number">40</span> <span class="special">></span> <span class="identifier">unative40_t</span><span class="special">;</span>
- <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">native</span><span class="special">,</span> <span class="identifier">uint_least64_t</span><span class="special">,</span> <span class="number">48</span> <span class="special">></span> <span class="identifier">unative48_t</span><span class="special">;</span>
- <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">native</span><span class="special">,</span> <span class="identifier">uint_least64_t</span><span class="special">,</span> <span class="number">56</span> <span class="special">></span> <span class="identifier">unative56_t</span><span class="special">;</span>
- <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">native</span><span class="special">,</span> <span class="identifier">uint_least64_t</span><span class="special">,</span> <span class="number">64</span> <span class="special">></span> <span class="identifier">unative64_t</span><span class="special">;</span>
+</span> <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">native</span><span class="special">,</span> <span class="identifier">uint_least8_t</span><span class="special">,</span> <span class="number">8</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">unative8_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">native</span><span class="special">,</span> <span class="identifier">uint_least16_t</span><span class="special">,</span> <span class="number">16</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">unative16_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">native</span><span class="special">,</span> <span class="identifier">uint_least32_t</span><span class="special">,</span> <span class="number">24</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">unative24_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">native</span><span class="special">,</span> <span class="identifier">uint_least32_t</span><span class="special">,</span> <span class="number">32</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">unative32_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">native</span><span class="special">,</span> <span class="identifier">uint_least64_t</span><span class="special">,</span> <span class="number">40</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">unative40_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">native</span><span class="special">,</span> <span class="identifier">uint_least64_t</span><span class="special">,</span> <span class="number">48</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">unative48_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">native</span><span class="special">,</span> <span class="identifier">uint_least64_t</span><span class="special">,</span> <span class="number">56</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">unative56_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">native</span><span class="special">,</span> <span class="identifier">uint_least64_t</span><span class="special">,</span> <span class="number">64</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">unative64_t</span><span class="special">;</span>
<span class="comment">// These types only present if platform has exact size integers:
</span>
@@ -545,81 +561,170 @@
</span></pre>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="toward_boost_endian.reference.integer_endian_hpp.bitfield"></a><a href="integer_endian_hpp.html#toward_boost_endian.reference.integer_endian_hpp.bitfield" title="
+<a name="toward_boost_endian.reference.integer_endian_hpp.endian"></a><a href="integer_endian_hpp.html#toward_boost_endian.reference.integer_endian_hpp.endian" title="
Template class endian<>">
Template class <code class="computeroutput"><span class="identifier">endian</span><span class="special"><></span></code></a>
</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="integer_endian_hpp.html#toward_boost_endian.reference.integer_endian_hpp.endian.endian">
+ Default Contructor <code class="computeroutput"><span class="identifier">endian</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="integer_endian_hpp.html#toward_boost_endian.reference.integer_endian_hpp.endian.endianT">
+ Contructor from value_type <code class="computeroutput"><span class="identifier">endian</span><span class="special">(</span><span class="identifier">T</span><span class="special">)</span></code></a></span></dt>
+<dt><span class="section"><a href="integer_endian_hpp.html#toward_boost_endian.reference.integer_endian_hpp.endian.assignment">
+ Assignment Operator from value_type <code class="computeroutput"><span class="keyword">operator</span><span class="special">=(</span><span class="identifier">T</span><span class="special">)</span></code></a></span></dt>
+<dt><span class="section"><a href="integer_endian_hpp.html#toward_boost_endian.reference.integer_endian_hpp.endian.conversion">
+ Conversion Operator <code class="computeroutput"><span class="keyword">operator</span> <span class="identifier">T</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="integer_endian_hpp.html#toward_boost_endian.reference.integer_endian_hpp.endian.data">
+ Member Function <code class="computeroutput"><span class="identifier">data</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="integer_endian_hpp.html#toward_boost_endian.reference.integer_endian_hpp.endian.other">
+ Other operators </a></span></dt>
+</dl></div>
<p>
An endian integer is an integer byte-holder with user-specified endianness,
value type, size, and alignment. The usual operations on integers are supplied.
</p>
-<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="identifier">endianness</span> <span class="identifier">E</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">n_bits</span><span class="special">,</span>
- <span class="identifier">alignment</span> <span class="identifier">A</span> <span class="special">=</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span><span class="special">></span>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span>
+ <span class="keyword">typename</span> <span class="identifier">E</span><span class="special">,</span>
+ <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">n_bits</span><span class="special">=</span><span class="number">8</span><span class="special">*</span><span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">T</span><span class="special">),</span>
+ <span class="identifier">alignment</span> <span class="identifier">A</span> <span class="special">=</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">aligned</span><span class="special">></span>
<span class="keyword">class</span> <span class="identifier">endian</span> <span class="special">:</span> <span class="identifier">integer_cover_operators</span><span class="special"><</span> <span class="identifier">endian</span><span class="special"><</span><span class="identifier">E</span><span class="special">,</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">n_bits</span><span class="special">,</span> <span class="identifier">A</span><span class="special">>,</span> <span class="identifier">T</span> <span class="special">></span> <span class="special">{</span>
<span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">typedef</span> <span class="identifier">E</span> <span class="identifier">endian_type</span><span class="special">;</span>
<span class="keyword">typedef</span> <span class="identifier">T</span> <span class="identifier">value_type</span><span class="special">;</span>
+ <span class="keyword">static</span> <span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">width</span> <span class="special">=</span> <span class="identifier">n_bits</span><span class="special">;</span>
+ <span class="keyword">static</span> <span class="keyword">const</span> <span class="identifier">alignment</span> <span class="identifier">alignment_value</span> <span class="special">=</span> <span class="identifier">A</span><span class="special">;</span>
+
<span class="identifier">endian</span><span class="special">()</span> <span class="special">=</span> <span class="keyword">default</span><span class="special">;</span> <span class="comment">// = default replaced by {} on C++03
</span> <span class="keyword">explicit</span> <span class="identifier">endian</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">v</span><span class="special">);</span>
<span class="identifier">endian</span> <span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">T</span> <span class="identifier">v</span><span class="special">);</span>
<span class="keyword">operator</span> <span class="identifier">T</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">data</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
<span class="special">};</span>
</pre>
-<p>
- Members
- </p>
-<p>
- <code class="computeroutput"><span class="identifier">endian</span><span class="special">()</span>
- <span class="special">=</span> <span class="keyword">default</span><span class="special">;</span></code> // C++03: endian(){}
- </p>
+<div class="itemizedlist"><ul type="disc"><li>
+<span class="bold"><strong>Requires:</strong></span><div class="itemizedlist"><ul type="circle">
+<li>
+<code class="computeroutput"><span class="identifier">E</span></code> is one of <code class="computeroutput"><span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span></code> or <code class="computeroutput"><span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span></code>.
+ </li>
+<li>
+<code class="computeroutput"><span class="identifier">T</span></code> must be a POD
+ </li>
+<li>
+<code class="computeroutput"><span class="identifier">nbits</span></code> is a multiple
+ of <code class="computeroutput"><span class="number">8</span></code>
+</li>
+<li>
+ If <code class="computeroutput"><span class="identifier">A</span></code> is <code class="computeroutput"><span class="identifier">alignment</span><span class="special">::</span><span class="identifier">aligned</span></code> then <code class="computeroutput"><span class="identifier">nbits</span></code>
+ must be equal to <code class="computeroutput"><span class="number">8</span><span class="special">*</span><span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">T</span><span class="special">)</span></code>
+</li>
+</ul></div>
+</li></ul></div>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<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>
+ if BOOST_ENDIAN_FORCE_PODNESS is defined && C++0x POD's are not
+ available then these two constructors will not be present
+ </p></td></tr>
+</table></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_endian.reference.integer_endian_hpp.endian.endian"></a><a href="integer_endian_hpp.html#toward_boost_endian.reference.integer_endian_hpp.endian.endian" title="
+ Default Contructor endian()">
+ Default Contructor <code class="computeroutput"><span class="identifier">endian</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="identifier">endian</span><span class="special">()</span> <span class="special">=</span> <span class="keyword">default</span><span class="special">;</span> <span class="comment">// C++03: endian(){}
+</span></pre>
<div class="itemizedlist"><ul type="disc"><li>
<span class="bold"><strong>Effects:</strong></span> Constructs an object of type
- <code class="computeroutput"><span class="identifier">endian</span><span class="special"><</span><span class="identifier">E</span><span class="special">,</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">n_bits</span><span class="special">,</span> <span class="identifier">A</span><span class="special">></span></code>.
- </li></ul></div>
-<p>
- <code class="computeroutput"><span class="keyword">explicit</span> <span class="identifier">endian</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">v</span><span class="special">);</span></code>
- </p>
+ <code class="computeroutput"><span class="identifier">endian</span><span class="special"><</span><span class="identifier">E</span><span class="special">,</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">n_bits</span><span class="special">,</span>
+ <span class="identifier">A</span><span class="special">></span></code>.
+ </li></ul></div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_endian.reference.integer_endian_hpp.endian.endianT"></a><a href="integer_endian_hpp.html#toward_boost_endian.reference.integer_endian_hpp.endian.endianT" title="
+ Contructor from value_type endian(T)">
+ Contructor from value_type <code class="computeroutput"><span class="identifier">endian</span><span class="special">(</span><span class="identifier">T</span><span class="special">)</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">explicit</span> <span class="identifier">endian</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">v</span><span class="special">);</span>
+</pre>
<div class="itemizedlist"><ul type="disc">
<li>
<span class="bold"><strong>Effects:</strong></span> Constructs an object of type
- <code class="computeroutput"><span class="identifier">endian</span><span class="special"><</span><span class="identifier">E</span><span class="special">,</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">n_bits</span><span class="special">,</span> <span class="identifier">A</span><span class="special">></span></code>.
- </li>
+ <code class="computeroutput"><span class="identifier">endian</span><span class="special"><</span><span class="identifier">E</span><span class="special">,</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">n_bits</span><span class="special">,</span>
+ <span class="identifier">A</span><span class="special">></span></code>.
+ </li>
<li>
<span class="bold"><strong>Postcondition:</strong></span><code class="computeroutput"><span class="identifier">x</span>
- <span class="special">==</span> <span class="identifier">v</span></code>,
- where <code class="computeroutput"><span class="identifier">x</span></code> is the constructed
- object.
- </li>
+ <span class="special">==</span> <span class="identifier">v</span></code>,
+ where <code class="computeroutput"><span class="identifier">x</span></code> is the constructed
+ object.
+ </li>
</ul></div>
-<p>
- <code class="computeroutput"><span class="identifier">endian</span> <span class="special">&</span>
- <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">T</span> <span class="identifier">v</span><span class="special">);</span></code>
- </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_endian.reference.integer_endian_hpp.endian.assignment"></a><a href="integer_endian_hpp.html#toward_boost_endian.reference.integer_endian_hpp.endian.assignment" title="
+ Assignment Operator from value_type operator=(T)">
+ Assignment Operator from value_type <code class="computeroutput"><span class="keyword">operator</span><span class="special">=(</span><span class="identifier">T</span><span class="special">)</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="identifier">endian</span> <span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">T</span> <span class="identifier">v</span><span class="special">);</span>
+</pre>
<div class="itemizedlist"><ul type="disc">
<li>
<span class="bold"><strong>Postcondition:</strong></span><code class="computeroutput"><span class="identifier">x</span>
- <span class="special">==</span> <span class="identifier">v</span></code>,
- where <code class="computeroutput"><span class="identifier">x</span></code> is the constructed
- object.
- </li>
+ <span class="special">==</span> <span class="identifier">v</span></code>,
+ where <code class="computeroutput"><span class="identifier">x</span></code> is the constructed
+ object.
+ </li>
<li>
<span class="bold"><strong>Returns:</strong></span><code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>.
- </li>
+ </li>
</ul></div>
-<p>
- <code class="computeroutput"><span class="keyword">operator</span> <span class="identifier">T</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span></code>
- </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_endian.reference.integer_endian_hpp.endian.conversion"></a><a href="integer_endian_hpp.html#toward_boost_endian.reference.integer_endian_hpp.endian.conversion" title="
+ Conversion Operator operator T()">
+ Conversion Operator <code class="computeroutput"><span class="keyword">operator</span> <span class="identifier">T</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">operator</span> <span class="identifier">T</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
<div class="itemizedlist"><ul type="disc"><li>
-<span class="bold"><strong>Returns: The current value stored in <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>,
- converted to <code class="computeroutput"><span class="identifier">value_type</span></code>.</strong></span>[*Returns:
- The current value stored in <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>, converted to <code class="computeroutput"><span class="identifier">value_type</span></code>.
- </li></ul></div>
-<p>
- Other operators
- </p>
-<p>
- Other operators on endian objects are forwarded to the equivalent operator
- on <code class="computeroutput"><span class="identifier">value_type</span></code>.
- </p>
+<span class="bold"><strong>Returns:</strong></span> The current value stored
+ in <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>,
+ converted to <code class="computeroutput"><span class="identifier">value_type</span></code>.
+ </li></ul></div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_endian.reference.integer_endian_hpp.endian.data"></a><a href="integer_endian_hpp.html#toward_boost_endian.reference.integer_endian_hpp.endian.data" title="
+ Member Function data()">
+ Member Function <code class="computeroutput"><span class="identifier">data</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">data</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<div class="itemizedlist"><ul type="disc"><li>
+<span class="bold"><strong>Returns:</strong></span> The current value stored
+ in <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>,
+ converted to <code class="computeroutput"><span class="identifier">value_type</span></code>.
+ </li></ul></div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_endian.reference.integer_endian_hpp.endian.other"></a><a href="integer_endian_hpp.html#toward_boost_endian.reference.integer_endian_hpp.endian.other" title="
+ Other operators ">
+ Other operators </a>
+</h5></div></div></div>
+<p>
+ Other operators on endian objects are forwarded to the equivalent operator
+ on <code class="computeroutput"><span class="identifier">value_type</span></code>.
+ </p>
+</div>
</div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
Modified: sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/reference/integer_endian_pack_hpp.html
==============================================================================
--- sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/reference/integer_endian_pack_hpp.html (original)
+++ sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/reference/integer_endian_pack_hpp.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -7,8 +7,8 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
<link rel="start" href="../../index.html" title="Toward Boost.Endian">
<link rel="up" href="../reference.html" title="Reference">
-<link rel="prev" href="endian_shared_tree_hpp.html" title="
- Header <boost/endian/domain_map.hpp>">
+<link rel="prev" href="binary_stream_hpp.html" title=" Header
+ <boost/binary_stream.hpp>">
<link rel="next" href="integer_endian_hpp.html" title=" Header
<boost/integer/endian.hpp>">
</head>
@@ -23,7 +23,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="endian_shared_tree_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.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="integer_endian_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="binary_stream_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.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="integer_endian_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title">
@@ -57,6 +57,10 @@
An <code class="computeroutput"><span class="identifier">endian_pack</span></code> is an byte-holder
with user-specified endianness, intger value type, size, and alignment.
</p>
+<a name="toward_boost_endian.reference.integer_endian_pack_hpp.synopsis"></a><h4>
+<a name="id4817116"></a>
+ Synopsis
+ </h4>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
@@ -68,7 +72,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="endian_shared_tree_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.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="integer_endian_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="binary_stream_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.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="integer_endian_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
</div>
</body>
</html>
Modified: sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/reference/integer_endian_type_hpp.html
==============================================================================
--- sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/reference/integer_endian_type_hpp.html (original)
+++ sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/reference/integer_endian_type_hpp.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -7,8 +7,8 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
<link rel="start" href="../../index.html" title="Toward Boost.Endian">
<link rel="up" href="../reference.html" title="Reference">
-<link rel="prev" href="binary_stream_hpp.html" title=" Header
- <boost/binary_stream.hpp>">
+<link rel="prev" href="integer_endian_binary_stream_hpp.html" title="
+ Header <boost/integer/endian_binary_stream.hpp>">
<link rel="next" href="integer_endian_view_hpp.html" title="
Header <boost/integer/endian_view.hpp>">
</head>
@@ -23,7 +23,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="binary_stream_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.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="integer_endian_view_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="integer_endian_binary_stream_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.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="integer_endian_view_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title">
@@ -33,6 +33,10 @@
</h3></div></div></div>
<div class="toc"><dl><dt><span class="section"><a href="integer_endian_type_hpp.html#toward_boost_endian.reference.integer_endian_type_hpp.integer_endian_type">
Meta Function <code class="computeroutput"><span class="identifier">endian_type</span><span class="special"><></span></code></a></span></dt></dl></div>
+<a name="toward_boost_endian.reference.integer_endian_type_hpp.synopsis"></a><h4>
+<a name="id4826025"></a>
+ Synopsis
+ </h4>
<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">integer</span> <span class="special">{</span>
<span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
@@ -47,7 +51,30 @@
Meta Function <code class="computeroutput"><span class="identifier">endian_type</span><span class="special"><></span></code></a>
</h4></div></div></div>
<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Domain</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
-<span class="keyword">struct</span> <span class="identifier">endian_type</span><span class="special">;</span>
+<span class="keyword">struct</span> <span class="identifier">endian_type</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">type</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ The member typedef <code class="computeroutput"><span class="identifier">type</span></code>
+ names one of the <code class="computeroutput"><span class="identifier">endianness</span></code>
+ types <code class="computeroutput"><span class="identifier">big</span></code>, <code class="computeroutput"><span class="identifier">little</span></code> or <code class="computeroutput"><span class="identifier">mixed</span></code>.
+ If all the leaves of the type T are of the same endianness type is this
+ endiannes, otherwise it is <code class="computeroutput"><span class="identifier">mixed</span></code>.
+ </p>
+<p>
+ The default behavior works for all the endian aware types, fundamental
+ types and any type that is a fusion sequence.
+ </p>
+<p>
+ The user can specialize this metafunction for specific clases.
+ </p>
+<a name="toward_boost_endian.reference.integer_endian_type_hpp.integer_endian_type.example"></a><h5>
+<a name="id4826342"></a>
+ Example
+ </h5>
+<pre class="programlisting"><span class="identifier">is_same</span><span class="special"><</span><span class="identifier">endian_type</span><span class="special"><</span><span class="identifier">endian</span><span class="special"><</span><span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="keyword">int</span><span class="special">></span> <span class="special">>::</span><span class="identifier">type</span><span class="special">,</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">>::</span><span class="identifier">value</span> <span class="special">==</span> <span class="keyword">true</span>
+<span class="identifier">is_same</span><span class="special"><</span><span class="identifier">endian_type</span><span class="special"><</span><span class="keyword">int</span><span class="special">>::</span><span class="identifier">type</span><span class="special">,</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">native</span><span class="special">>::</span><span class="identifier">value</span> <span class="special">==</span> <span class="keyword">true</span>
</pre>
</div>
</div>
@@ -61,7 +88,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="binary_stream_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.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="integer_endian_view_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="integer_endian_binary_stream_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.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="integer_endian_view_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
</div>
</body>
</html>
Modified: sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/reference/integer_endian_view_hpp.html
==============================================================================
--- sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/reference/integer_endian_view_hpp.html (original)
+++ sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/reference/integer_endian_view_hpp.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -43,6 +43,10 @@
<dt><span class="section"><a href="integer_endian_view_hpp.html#toward_boost_endian.reference.integer_endian_view_hpp.as_big">
Non-Member Function Template <code class="computeroutput"><span class="identifier">as_big</span><span class="special"><></span></code></a></span></dt>
</dl></div>
+<a name="toward_boost_endian.reference.integer_endian_view_hpp.synopsis"></a><h4>
+<a name="id4826617"></a>
+ Synopsis
+ </h4>
<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">integer</span> <span class="special">{</span>
@@ -97,10 +101,6 @@
</h4></div></div></div>
<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
<span class="identifier">endian_view</span><span class="special"><</span><span class="identifier">endian</span><span class="special"><</span><span class="identifier">endian</span><span class="special">::</span><span class="identifier">native</span><span class="special">,</span> <span class="identifier">T</span><span class="special">></span> <span class="special">></span> <span class="identifier">as</span><span class="special">(</span><span class="identifier">T</span><span class="special">&</span> <span class="identifier">v</span><span class="special">);</span>
-<span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
-<span class="identifier">endian_view</span><span class="special"><</span><span class="identifier">endian</span><span class="special"><</span><span class="identifier">endian</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">T</span><span class="special">></span> <span class="special">></span> <span class="identifier">as_little</span><span class="special">(</span><span class="identifier">T</span><span class="special">&</span> <span class="identifier">v</span><span class="special">);</span>
-<span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
-<span class="identifier">endian_view</span><span class="special"><</span><span class="identifier">endian</span><span class="special"><</span><span class="identifier">endian</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">T</span><span class="special">></span> <span class="special">></span> <span class="identifier">as_big</span><span class="special">(</span><span class="identifier">T</span><span class="special">&</span> <span class="identifier">v</span><span class="special">);</span>
</pre>
</div>
<div class="section" lang="en">
@@ -111,8 +111,6 @@
</h4></div></div></div>
<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
<span class="identifier">endian_view</span><span class="special"><</span><span class="identifier">endian</span><span class="special"><</span><span class="identifier">endian</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">T</span><span class="special">></span> <span class="special">></span> <span class="identifier">as_little</span><span class="special">(</span><span class="identifier">T</span><span class="special">&</span> <span class="identifier">v</span><span class="special">);</span>
-<span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
-<span class="identifier">endian_view</span><span class="special"><</span><span class="identifier">endian</span><span class="special"><</span><span class="identifier">endian</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">T</span><span class="special">></span> <span class="special">></span> <span class="identifier">as_big</span><span class="special">(</span><span class="identifier">T</span><span class="special">&</span> <span class="identifier">v</span><span class="special">);</span>
</pre>
</div>
<div class="section" lang="en">
Modified: sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/users_guide.html
==============================================================================
--- sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/users_guide.html (original)
+++ sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/users_guide.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -39,6 +39,14 @@
</a></span></dt>
</dl></dd>
<dt><span class="section">Tutorial</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="users_guide/tutorial.html#toward_boost_endian.users_guide.tutorial.endian_aware_types">Endian
+ aware types</a></span></dt>
+<dt><span class="section"><a href="users_guide/tutorial.html#toward_boost_endian.users_guide.tutorial.endian_unaware_types">Endian
+ unaware types</a></span></dt>
+<dt><span class="section"><a href="users_guide/tutorial.html#toward_boost_endian.users_guide.tutorial._receiver_makes_right_">"receiver
+ makes right"</a></span></dt>
+</dl></dd>
<dt><span class="section"> References</span></dt>
</dl></div>
</div>
Modified: sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/users_guide/getting_started.html
==============================================================================
--- sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/users_guide/getting_started.html (original)
+++ sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/users_guide/getting_started.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -44,7 +44,7 @@
Installing Integer.Endian</a>
</h4></div></div></div>
<a name="toward_boost_endian.users_guide.getting_started.install.getting_boost_integer_endian"></a><h5>
-<a name="id4803506"></a>
+<a name="id4803864"></a>
<a href="getting_started.html#toward_boost_endian.users_guide.getting_started.install.getting_boost_integer_endian">Getting
Boost.Integer.Endian</a>
</h5>
@@ -58,7 +58,7 @@
Sandbox</a>.
</p>
<a name="toward_boost_endian.users_guide.getting_started.install.building_boost_integer_endian"></a><h5>
-<a name="id4803558"></a>
+<a name="id4803912"></a>
<a href="getting_started.html#toward_boost_endian.users_guide.getting_started.install.building_boost_integer_endian">Building
Boost.Integer.Endian</a>
</h5>
@@ -84,16 +84,16 @@
</li>
</ul></div>
<a name="toward_boost_endian.users_guide.getting_started.install.requirements"></a><h5>
-<a name="id4803612"></a>
+<a name="id4803966"></a>
<a href="getting_started.html#toward_boost_endian.users_guide.getting_started.install.requirements">Requirements</a>
</h5>
<p>
<span class="bold"><strong>Boost.Integer.Endian</strong></span> depends on some Boost
- library. For these specific parts you must use either Boost version 1.38.0
+ library. For these specific parts you must use either Boost version 1.43.0
or the version in SVN trunk (even if older version should works also).
</p>
<a name="toward_boost_endian.users_guide.getting_started.install.exceptions_safety"></a><h5>
-<a name="id4803645"></a>
+<a name="id4803999"></a>
<a href="getting_started.html#toward_boost_endian.users_guide.getting_started.install.exceptions_safety">Exceptions
safety</a>
</h5>
@@ -102,7 +102,7 @@
of exception safety as long as the underlying parameters provide it.
</p>
<a name="toward_boost_endian.users_guide.getting_started.install.thread_safety"></a><h5>
-<a name="id4803672"></a>
+<a name="id4804026"></a>
<a href="getting_started.html#toward_boost_endian.users_guide.getting_started.install.thread_safety">Thread
safety</a>
</h5>
@@ -110,7 +110,7 @@
All functions in the library are thread-unsafe except when noted explicitly.
</p>
<a name="toward_boost_endian.users_guide.getting_started.install.tested_compilers"></a><h5>
-<a name="id4803698"></a>
+<a name="id4804052"></a>
<a href="getting_started.html#toward_boost_endian.users_guide.getting_started.install.tested_compilers">Tested
compilers</a>
</h5>
@@ -203,7 +203,7 @@
will no longer be relying on unspecified behavior.
</p>
<a name="toward_boost_endian.users_guide.getting_started.limitations_.binary_i_o_warnings_and_cautions"></a><h5>
-<a name="id4758516"></a>
+<a name="id4758861"></a>
<a href="getting_started.html#toward_boost_endian.users_guide.getting_started.limitations_.binary_i_o_warnings_and_cautions">Binary
I/O warnings and cautions</a>
</h5>
@@ -213,12 +213,12 @@
<th align="left">Warning</th>
</tr>
<tr><td align="left" valign="top"><p>
- Use only on streams opened with filemode std::ios_base::binary. Thus
- unformatted binary I/O should not be with the standard streams (cout,
- cin, etc.) since they are opened in text mode. Use on text streams may
- produce incorrect results, such as insertion of unwanted characters or
- premature end-of-file. For example, on Windows 0x0D would become 0x0D,
- 0x0A.
+ Use only on streams opened with filemode <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">ios_base</span><span class="special">::</span><span class="identifier">binary</span></code>.
+ Thus unformatted binary I/O should not be with the standard streams (<code class="computeroutput"><span class="identifier">cout</span></code>, <code class="computeroutput"><span class="identifier">cin</span></code>,
+ etc.) since they are opened in text mode. Use on text streams may produce
+ incorrect results, such as insertion of unwanted characters or premature
+ end-of-file. For example, on Windows <code class="computeroutput"><span class="number">0x0D</span></code>
+ would become <code class="computeroutput"><span class="number">0x0D</span></code>, <code class="computeroutput"><span class="number">0x0A</span></code>.
</p></td></tr>
</table></div>
<div class="warning"><table border="0" summary="Warning">
Modified: sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/users_guide/tutorial.html
==============================================================================
--- sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/users_guide/tutorial.html (original)
+++ sandbox/endian_ext/libs/integer/doc/html/toward_boost_endian/users_guide/tutorial.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -23,9 +23,34 @@
<div class="spirit-nav">
<a accesskey="p" href="getting_started.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../users_guide.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="ext_references.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
</div>
-<div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title">
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
<a name="toward_boost_endian.users_guide.tutorial"></a>Tutorial
-</h3></div></div></div></div>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="tutorial.html#toward_boost_endian.users_guide.tutorial.endian_aware_types">Endian
+ aware types</a></span></dt>
+<dt><span class="section"><a href="tutorial.html#toward_boost_endian.users_guide.tutorial.endian_unaware_types">Endian
+ unaware types</a></span></dt>
+<dt><span class="section"><a href="tutorial.html#toward_boost_endian.users_guide.tutorial._receiver_makes_right_">"receiver
+ makes right"</a></span></dt>
+</dl></div>
+<div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_endian.users_guide.tutorial.endian_aware_types"></a><a href="tutorial.html#toward_boost_endian.users_guide.tutorial.endian_aware_types" title="Endian
+ aware types">Endian
+ aware types</a>
+</h4></div></div></div></div>
+<div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_endian.users_guide.tutorial.endian_unaware_types"></a><a href="tutorial.html#toward_boost_endian.users_guide.tutorial.endian_unaware_types" title="Endian
+ unaware types">Endian
+ unaware types</a>
+</h4></div></div></div></div>
+<div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_endian.users_guide.tutorial._receiver_makes_right_"></a><a href="tutorial.html#toward_boost_endian.users_guide.tutorial._receiver_makes_right_" title='"receiver
+ makes right"'>"receiver
+ makes right"</a>
+</h4></div></div></div></div>
+</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright © 2006 -2009 Beman Dawes<br>Copyright © 2010 Vicente J. Botet Escriba<p>
Added: sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/appendices.html
==============================================================================
--- (empty file)
+++ sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/appendices.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -0,0 +1,71 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Appendices</title>
+<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../index.html" title="Toward Boost.Integer.Endian">
+<link rel="up" href="../index.html" title="Toward Boost.Integer.Endian">
+<link rel="prev" href="examples/receiver_makes_right.html" title='
+ "receiver makes right"'>
+<link rel="next" href="appendices/history.html" title=" Appendix
+ A: History">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<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="examples/receiver_makes_right.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="appendices/history.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">
+<a name="toward_boost_integer_endian.appendices"></a>Appendices
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="appendices/history.html"> Appendix
+ A: History</a></span></dt>
+<dd><dl><dt><span class="section"><a href="appendices/history.html#toward_boost_integer_endian.appendices.history.__version_0_1_0__june_15__2010____split_of_boost_integer_endian___added_endian_views_"><span class="bold"><strong>Version 0.1.0, June 15, 2010</strong></span> <span class="emphasis"><em>Split of Boost.Integer.Endian
+ + Added Endian views</em></span></a></span></dt></dl></dd>
+<dt><span class="section"><a href="appendices/rationale.html"> Appendix
+ B: Rationale</a></span></dt>
+<dt><span class="section"><a href="appendices/implementation.html">
+ Appendix C: Implementation Notes</a></span></dt>
+<dt><span class="section"><a href="appendices/acknowledgements.html">
+ Appendix D: Acknowledgements</a></span></dt>
+<dt><span class="section"><a href="appendices/appendix_e__tests.html">Appendix
+ E: Tests</a></span></dt>
+<dd><dl>
+<dt><span class="section">binary_stream_test</span></dt>
+<dt><span class="section">integer_endian_pack_test</span></dt>
+<dt><span class="section">integer_endian_test</span></dt>
+<dt><span class="section">integer_endian_arithmetic_operation_test</span></dt>
+<dt><span class="section">integer_endian_view_test</span></dt>
+<dt><span class="section">integer_endian_convert_test</span></dt>
+</dl></dd>
+<dt><span class="section"><a href="appendices/appendix_f__tickets.html">Appendix
+ F: Tickets</a></span></dt>
+<dt><span class="section"><a href="appendices/todo.html"> Appendix
+ G: Future plans</a></span></dt>
+</dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006 -2009 Beman Dawes<br>Copyright © 2010 Vicente J. Botet Escriba<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="examples/receiver_makes_right.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="appendices/history.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/appendices/acknowledgements.html
==============================================================================
--- (empty file)
+++ sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/appendices/acknowledgements.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -0,0 +1,63 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>
+ Appendix D: Acknowledgements</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../../index.html" title="Toward Boost.Integer.Endian">
+<link rel="up" href="../appendices.html" title="Appendices">
+<link rel="prev" href="implementation.html" title="
+ Appendix C: Implementation Notes">
+<link rel="next" href="appendix_e__tests.html" title="Appendix
+ E: Tests">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<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="implementation.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.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="appendix_e__tests.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_integer_endian.appendices.acknowledgements"></a><a href="acknowledgements.html" title="
+ Appendix D: Acknowledgements">
+ Appendix D: Acknowledgements</a>
+</h3></div></div></div>
+<p>
+ Original design developed by Darin Adler based on classes developed by Mark
+ Borgerding. Four original class templates combined into a single endian class
+ template by Beman Dawes, who put the library together, provided documentation,
+ and added the typedefs. He also added the unrolled_byte_loops sign partial
+ specialization to correctly extend the sign when cover integer size differs
+ from endian representation size.
+ </p>
+<p>
+ Comments and suggestions were received from Benaka Moorthi, Christopher Kohlhoff,
+ Cliff Green, Gennaro Proto, Giovanni Piero Deretta, dizzy, Jeff Flinn, John
+ Maddock, Kim Barrett, Marsh Ray, Martin Bonner, Matias Capeletto, Neil Mayhew,
+ Phil Endecott, Rene Rivera, Roland Schwarz, Scott McMurray, Sebastian Redl,
+ Tomas Puverle and Yuval Ronen.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006 -2009 Beman Dawes<br>Copyright © 2010 Vicente J. Botet Escriba<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="implementation.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.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="appendix_e__tests.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/appendices/appendix_e__tests.html
==============================================================================
--- (empty file)
+++ sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/appendices/appendix_e__tests.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -0,0 +1,686 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Appendix
+ E: Tests</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../../index.html" title="Toward Boost.Integer.Endian">
+<link rel="up" href="../appendices.html" title="Appendices">
+<link rel="prev" href="acknowledgements.html" title="
+ Appendix D: Acknowledgements">
+<link rel="next" href="appendix_f__tickets.html" title="Appendix
+ F: Tickets">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<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="acknowledgements.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.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="appendix_f__tickets.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_integer_endian.appendices.appendix_e__tests"></a><a href="appendix_e__tests.html" title="Appendix
+ E: Tests">Appendix
+ E: Tests</a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section">binary_stream_test</span></dt>
+<dt><span class="section">integer_endian_pack_test</span></dt>
+<dt><span class="section">integer_endian_test</span></dt>
+<dt><span class="section">integer_endian_arithmetic_operation_test</span></dt>
+<dt><span class="section">integer_endian_view_test</span></dt>
+<dt><span class="section">integer_endian_convert_test</span></dt>
+</dl></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_integer_endian.appendices.appendix_e__tests.binary_stream_test"></a>binary_stream_test
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ kind
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Result
+ </p>
+ </th>
+<th>
+ <p>
+ Ticket
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ check_op
+ </p>
+ </td>
+<td>
+ <p>
+ run
+ </p>
+ </td>
+<td>
+ <p>
+ checl binary streams operations on builtin types
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ #
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_integer_endian.appendices.appendix_e__tests.integer_endian_pack_test"></a>integer_endian_pack_test
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ kind
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Result
+ </p>
+ </th>
+<th>
+ <p>
+ Ticket
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ detect_endianness
+ </p>
+ </td>
+<td>
+ <p>
+ run
+ </p>
+ </td>
+<td>
+ <p>
+ detect endianness
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ #
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ check_size
+ </p>
+ </td>
+<td>
+ <p>
+ run
+ </p>
+ </td>
+<td>
+ <p>
+ check size for different endian types
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ #
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ check_alignment
+ </p>
+ </td>
+<td>
+ <p>
+ run
+ </p>
+ </td>
+<td>
+ <p>
+ check alignement for different endian types
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ #
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ check_representation_and_range_and_ops
+ </p>
+ </td>
+<td>
+ <p>
+ run
+ </p>
+ </td>
+<td>
+ <p>
+ check representation and range and operations
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ #
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_integer_endian.appendices.appendix_e__tests.integer_endian_test"></a>integer_endian_test
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ kind
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Result
+ </p>
+ </th>
+<th>
+ <p>
+ Ticket
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ detect_endianness
+ </p>
+ </td>
+<td>
+ <p>
+ run
+ </p>
+ </td>
+<td>
+ <p>
+ detect endianness
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ #
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ check_size
+ </p>
+ </td>
+<td>
+ <p>
+ run
+ </p>
+ </td>
+<td>
+ <p>
+ check size for different endian types
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ #
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ check_alignment
+ </p>
+ </td>
+<td>
+ <p>
+ run
+ </p>
+ </td>
+<td>
+ <p>
+ check alignement for different endian types
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ #
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ check_representation_and_range_and_ops
+ </p>
+ </td>
+<td>
+ <p>
+ run
+ </p>
+ </td>
+<td>
+ <p>
+ check representation and range and operations
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ #
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ check_data
+ </p>
+ </td>
+<td>
+ <p>
+ run
+ </p>
+ </td>
+<td>
+ <p>
+ check data starts at the same address
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ #
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_integer_endian.appendices.appendix_e__tests.integer_endian_arithmetic_operation_test"></a>integer_endian_arithmetic_operation_test
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ kind
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Result
+ </p>
+ </th>
+<th>
+ <p>
+ Ticket
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ check_op
+ </p>
+ </td>
+<td>
+ <p>
+ run
+ </p>
+ </td>
+<td>
+ <p>
+ check arithmethic operations on integer endian types
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ #
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_integer_endian.appendices.appendix_e__tests.integer_endian_view_test"></a>integer_endian_view_test
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ kind
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Result
+ </p>
+ </th>
+<th>
+ <p>
+ Ticket
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ check_read
+ </p>
+ </td>
+<td>
+ <p>
+ run
+ </p>
+ </td>
+<td>
+ <p>
+ check read access
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ #
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ check_write
+ </p>
+ </td>
+<td>
+ <p>
+ run
+ </p>
+ </td>
+<td>
+ <p>
+ check write access
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ #
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_integer_endian.appendices.appendix_e__tests.integer_endian_convert_test"></a>integer_endian_convert_test
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ kind
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Result
+ </p>
+ </th>
+<th>
+ <p>
+ Ticket
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ check_in_place_conversion
+ </p>
+ </td>
+<td>
+ <p>
+ run
+ </p>
+ </td>
+<td>
+ <p>
+ check in place conversion
+ </p>
+ </td>
+<td>
+ <p>
+ Pass
+ </p>
+ </td>
+<td>
+ <p>
+ #
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006 -2009 Beman Dawes<br>Copyright © 2010 Vicente J. Botet Escriba<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="acknowledgements.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.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="appendix_f__tickets.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/appendices/appendix_f__tickets.html
==============================================================================
--- (empty file)
+++ sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/appendices/appendix_f__tickets.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -0,0 +1,46 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Appendix
+ F: Tickets</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../../index.html" title="Toward Boost.Integer.Endian">
+<link rel="up" href="../appendices.html" title="Appendices">
+<link rel="prev" href="appendix_e__tests.html" title="Appendix
+ E: Tests">
+<link rel="next" href="todo.html" title=" Appendix
+ G: Future plans">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<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="appendix_e__tests.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.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="todo.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_integer_endian.appendices.appendix_f__tickets"></a><a href="appendix_f__tickets.html" title="Appendix
+ F: Tickets">Appendix
+ F: Tickets</a>
+</h3></div></div></div></div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006 -2009 Beman Dawes<br>Copyright © 2010 Vicente J. Botet Escriba<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="appendix_e__tests.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.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="todo.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/appendices/history.html
==============================================================================
--- (empty file)
+++ sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/appendices/history.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -0,0 +1,105 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title> Appendix
+ A: History</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../../index.html" title="Toward Boost.Integer.Endian">
+<link rel="up" href="../appendices.html" title="Appendices">
+<link rel="prev" href="../appendices.html" title="Appendices">
+<link rel="next" href="rationale.html" title=" Appendix
+ B: Rationale">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<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="../appendices.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.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="rationale.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_integer_endian.appendices.history"></a><a href="history.html" title=" Appendix
+ A: History"> Appendix
+ A: History</a>
+</h3></div></div></div>
+<div class="toc"><dl><dt><span class="section"><a href="history.html#toward_boost_integer_endian.appendices.history.__version_0_1_0__june_15__2010____split_of_boost_integer_endian___added_endian_views_"><span class="bold"><strong>Version 0.1.0, June 15, 2010</strong></span> <span class="emphasis"><em>Split of Boost.Integer.Endian
+ + Added Endian views</em></span></a></span></dt></dl></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_integer_endian.appendices.history.__version_0_1_0__june_15__2010____split_of_boost_integer_endian___added_endian_views_"></a><a href="history.html#toward_boost_integer_endian.appendices.history.__version_0_1_0__june_15__2010____split_of_boost_integer_endian___added_endian_views_" title="Version 0.1.0, June 15, 2010 Split of Boost.Integer.Endian
+ + Added Endian views"><span class="bold"><strong>Version 0.1.0, June 15, 2010</strong></span> <span class="emphasis"><em>Split of Boost.Integer.Endian
+ + Added Endian views</em></span></a>
+</h4></div></div></div>
+<p>
+ <span class="bold"><strong>Features:</strong></span>
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ Endian packs
+ <div class="itemizedlist"><ul type="circle">
+<li>
+ Big endian | little endian | native endian byte ordering.
+ </li>
+<li>
+ Signed | unsigned
+ </li>
+<li>
+ Unaligned | aligned
+ </li>
+<li>
+ 1-8 byte (unaligned) | 2, 4, 8 byte (aligned)
+ </li>
+<li>
+ Choice of integer value type
+ </li>
+</ul></div>
+</li>
+<li>
+ Endian integers with the whole set of arithmetics operators based on
+ endian pack.
+ </li>
+<li>
+ Operators <= and => for unformatted binary (as opposed to formatted
+ character) stream insertion and extraction of built-in, std::string types
+ and of endian types.
+ </li>
+<li>
+ Views of aligned endian unaware integer types as endian packs or endian
+ integers so we can make endian conversion.
+ </li>
+<li>
+ Generic in place conversion between different endian formats.
+ <div class="itemizedlist"><ul type="circle">
+<li>
+ Very simple interface: convert_to/from<endiannes domain>(),
+ </li>
+<li>
+ Support for built-in and user-defined data types view as fusion sequences.
+ </li>
+</ul></div>
+</li>
+</ul></div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006 -2009 Beman Dawes<br>Copyright © 2010 Vicente J. Botet Escriba<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="../appendices.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.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="rationale.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/appendices/implementation.html
==============================================================================
--- (empty file)
+++ sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/appendices/implementation.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -0,0 +1,145 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>
+ Appendix C: Implementation Notes</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../../index.html" title="Toward Boost.Integer.Endian">
+<link rel="up" href="../appendices.html" title="Appendices">
+<link rel="prev" href="rationale.html" title=" Appendix
+ B: Rationale">
+<link rel="next" href="acknowledgements.html" title="
+ Appendix D: Acknowledgements">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<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="rationale.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.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="acknowledgements.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_integer_endian.appendices.implementation"></a><a href="implementation.html" title="
+ Appendix C: Implementation Notes">
+ Appendix C: Implementation Notes</a>
+</h3></div></div></div>
+<a name="toward_boost_integer_endian.appendices.implementation.faq"></a><h4>
+<a name="id4837897"></a>
+ FAQ
+ </h4>
+<div class="itemizedlist"><ul type="disc">
+<li>
+<span class="bold"><strong>Why bother with endian types?</strong></span> External
+ data portability and both speed and space efficiency. Availability of additional
+ binary integer sizes and alignments is important in some applications.
+ </li>
+<li>
+<span class="bold"><strong>Why not just use Boost.Serialization?</strong></span>
+ Serialization involves a conversion for every object involved in I/O. Endian
+ objects require no conversion or copying. They are already in the desired
+ format for binary I/O. Thus they can be read or written in bulk.
+ </li>
+<li>
+<span class="bold"><strong>Why bother with binary I/O? Why not just use C++
+ Standard Library stream inserters and extractors?</strong></span> Using binary
+ rather than character representations can be more space efficient, with
+ a side benefit of faster I/O. CPU time is minimized because conversions
+ to and from string are eliminated. Furthermore, binary integers are fixed
+ size, and so fixed-size disk records are possible, easing sorting and allowing
+ direct access. Disadvantages, such as the inability to use text utilities
+ on the resulting files, limit usefulness to applications where the binary
+ I/O advantages are paramount.
+ </li>
+<li>
+<span class="bold"><strong>Do these types have any uses outside of I/O?</strong></span>
+ Probably not, except for native endianness which can be used for fine grained
+ control over size and alignment.
+ </li>
+<li>
+<span class="bold"><strong>Is there a performance hit when doing arithmetic
+ using integer endian types?</strong></span> Yes, for sure, compared to arithmetic
+ operations on native integer types. However, these types are usually be
+ faster, and sometimes much faster, for I/O compared to stream inserters
+ and extractors, or to serialization.
+ </li>
+<li>
+<span class="bold"><strong>Are endian types POD's?</strong></span> Yes for C++0x.
+ No for C++03, although several macros are available to force PODness in
+ all cases.
+ </li>
+<li>
+<span class="bold"><strong>What are the implications endian types not being
+ POD's with C++03 compilers?</strong></span> They can't be used in unions. Also,
+ compilers aren't required to align or lay out storage in portable ways,
+ although this potential problem hasn't prevented use of Boost.Integer.Endian
+ with real compilers.
+ </li>
+<li>
+<span class="bold"><strong>Which is better, big-endian or little-endian?</strong></span>
+ Big-endian tends to be a bit more of an industry standard, but little-endian
+ may be preferred for applications that run primarily on x86 (Intel/AMD)
+ and other little-endian CPU's. The Wikipedia
+ article gives more pros and cons.
+ </li>
+<li>
+<span class="bold"><strong>What good is native endianness?</strong></span> It provides
+ alignment and size guarantees not available from the built-in types. It
+ eases generic programming.
+ </li>
+<li>
+<span class="bold"><strong>Why bother with the aligned endian types?</strong></span>
+ Aligned integer operations may be faster (20 times, in one measurement)
+ if the endianness and alignment of the type matches the endianness and
+ alignment requirements of the machine. On common CPU architectures, that
+ optimization is only available for aligned types. That allows I/O of maximally
+ efficient types on an application's primary platform, yet produces data
+ files are portable to all platforms. The code, however, is likely to be
+ more fragile and less portable than with the unaligned types.
+ </li>
+<li>
+<span class="bold"><strong>Endian types are really just byte-holders. Why provide
+ the arithmetic operations at all?</strong></span> Providing a full set of operations
+ reduces program clutter and makes code both easier to write and to read.
+ Consider incrementing a variable in a record. It is very convenient to
+ write:
+ </li>
+</ul></div>
+<pre class="programlisting"><span class="special">++</span><span class="identifier">record</span><span class="special">.</span><span class="identifier">foo</span><span class="special">;</span>
+</pre>
+<p>
+ Rather than:
+ </p>
+<pre class="programlisting"><span class="keyword">int</span> <span class="identifier">temp</span><span class="special">(</span> <span class="identifier">record</span><span class="special">.</span><span class="identifier">foo</span><span class="special">);</span>
+<span class="special">++</span><span class="identifier">temp</span><span class="special">;</span>
+<span class="identifier">record</span><span class="special">.</span><span class="identifier">foo</span> <span class="special">=</span> <span class="identifier">temp</span><span class="special">;</span>
+</pre>
+<div class="itemizedlist"><ul type="disc"><li>
+<span class="bold"><strong>Why do binary stream insertion and extraction use
+ operators <= and >= rather than <<= and >>=?</strong></span>
+ <<= and >>= associate right-to-left, which is the opposite
+ of << and >>, so would be very confusing and error prone. <=
+ and >= associate left-to-right.
+ </li></ul></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006 -2009 Beman Dawes<br>Copyright © 2010 Vicente J. Botet Escriba<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="rationale.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.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="acknowledgements.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/appendices/rationale.html
==============================================================================
--- (empty file)
+++ sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/appendices/rationale.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -0,0 +1,119 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title> Appendix
+ B: Rationale</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../../index.html" title="Toward Boost.Integer.Endian">
+<link rel="up" href="../appendices.html" title="Appendices">
+<link rel="prev" href="history.html" title=" Appendix
+ A: History">
+<link rel="next" href="implementation.html" title="
+ Appendix C: Implementation Notes">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<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.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.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="implementation.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_integer_endian.appendices.rationale"></a><a href="rationale.html" title=" Appendix
+ B: Rationale"> Appendix
+ B: Rationale</a>
+</h3></div></div></div>
+<a name="toward_boost_integer_endian.appendices.rationale.design_considerations_for_boost_integer_endian"></a><h4>
+<a name="id4837709"></a>
+ <a href="rationale.html#toward_boost_integer_endian.appendices.rationale.design_considerations_for_boost_integer_endian">Design
+ considerations for Boost.Integer.Endian</a>
+ </h4>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ Must be suitable for I/O - in other words, must be memcpyable.
+ </li>
+<li>
+ Must provide exactly the size and internal byte ordering specified.
+ </li>
+<li>
+ Must work correctly when the internal integer representation has more bits
+ that the sum of the bits in the external byte representation. Sign extension
+ must work correctly when the internal integer representation type has more
+ bits than the sum of the bits in the external bytes. For example, using
+ a 64-bit integer internally to represent 40-bit (5 byte) numbers must work
+ for both positive and negative values.
+ </li>
+<li>
+ Must work correctly (including using the same defined external representation)
+ regardless of whether a compiler treats char as signed or unsigned.
+ </li>
+<li>
+ Unaligned types must not cause compilers to insert padding bytes.
+ </li>
+<li>
+ The implementation should supply optimizations only in very limited circumstances.
+ Experience has shown that optimizations of endian integers often become
+ pessimizations. While this may be obvious when changing machines or compilers,
+ it also happens when changing compiler switches, compiler versions, or
+ CPU models of the same architecture.
+ </li>
+<li>
+ It is better software engineering if the same implementation works regardless
+ of the CPU endianness. In other words, #ifdefs should be avoided where
+ possible.
+ </li>
+</ul></div>
+<a name="toward_boost_integer_endian.appendices.rationale.experience"></a><h4>
+<a name="id4837784"></a>
+ Experience
+ </h4>
+<p>
+ Classes with similar functionality have been independently developed by several
+ Boost programmers and used very successful in high-value, high-use applications
+ for many years. These independently developed endian libraries often evolved
+ from C libraries that were also widely used. Endian integers have proven
+ widely useful across a wide range of computer architectures and applications.
+ </p>
+<a name="toward_boost_integer_endian.appendices.rationale.motivating_use_cases"></a><h4>
+<a name="id4837817"></a>
+ <a href="rationale.html#toward_boost_integer_endian.appendices.rationale.motivating_use_cases">Motivating
+ use cases</a>
+ </h4>
+<p>
+ Neil Mayhew writes: "I can also provide a meaningful use-case for this
+ library: reading TrueType font files from disk and processing the contents.
+ The data format has fixed endianness (big) and has unaligned values in various
+ places. Using Boost.Integer.Endian simplifies and cleans the code wonderfully."
+ </p>
+<a name="toward_boost_integer_endian.appendices.rationale.c__0x"></a><h4>
+<a name="id4837849"></a>
+ C++0x
+ </h4>
+<p>
+ The availability of the C++0x Defaulted Functions feature is detected automatically,
+ and will be used if present to ensure that objects of class endian are trivial,
+ and thus POD's.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006 -2009 Beman Dawes<br>Copyright © 2010 Vicente J. Botet Escriba<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="history.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.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="implementation.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/appendices/todo.html
==============================================================================
--- (empty file)
+++ sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/appendices/todo.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -0,0 +1,73 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title> Appendix
+ G: Future plans</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../../index.html" title="Toward Boost.Integer.Endian">
+<link rel="up" href="../appendices.html" title="Appendices">
+<link rel="prev" href="appendix_f__tickets.html" title="Appendix
+ F: Tickets">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<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="appendix_f__tickets.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.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><h3 class="title">
+<a name="toward_boost_integer_endian.appendices.todo"></a><a href="todo.html" title=" Appendix
+ G: Future plans"> Appendix
+ G: Future plans</a>
+</h3></div></div></div>
+<a name="toward_boost_integer_endian.appendices.todo.tasks_to_do_before_review"></a><h4>
+<a name="id4839348"></a>
+ <a href="todo.html#toward_boost_integer_endian.appendices.todo.tasks_to_do_before_review">Tasks
+ to do before review</a>
+ </h4>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ Support for 'pure' endian conversion for endian unaware UDT.
+ </li>
+<li>
+ Support for 'in place' endian conversion for ranges of endian unaware types.
+ </li>
+<li>
+ endian iterator, which will iterate across a range endian converting values
+ as necessary. It works with any type supporting the convert_to/from functions.
+ </li>
+</ul></div>
+<a name="toward_boost_integer_endian.appendices.todo.for_later_releases"></a><h4>
+<a name="id4839391"></a>
+ <a href="todo.html#toward_boost_integer_endian.appendices.todo.for_later_releases">For
+ later releases</a>
+ </h4>
+<div class="itemizedlist"><ul type="disc"><li>
+ The library doesn't take advantage of special instructions on architectures
+ which natively support endian conversion. This functionality could, however,
+ be part of future releases.
+ </li></ul></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006 -2009 Beman Dawes<br>Copyright © 2010 Vicente J. Botet Escriba<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="appendix_f__tickets.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.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>
Added: sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/examples.html
==============================================================================
--- (empty file)
+++ sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/examples.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -0,0 +1,51 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Examples</title>
+<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../index.html" title="Toward Boost.Integer.Endian">
+<link rel="up" href="../index.html" title="Toward Boost.Integer.Endian">
+<link rel="prev" href="reference/integer_endian_conversion_hpp.html" title="
+ Header <boost/integer/endian_conversion.hpp>">
+<link rel="next" href="examples/_endian_aware.html" title="
+ Endian Aware">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<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="reference/integer_endian_conversion_hpp.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="examples/_endian_aware.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">
+<a name="toward_boost_integer_endian.examples"></a>Examples
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="examples/_endian_aware.html">
+ Endian Aware</a></span></dt>
+<dt><span class="section"><a href="examples/receiver_makes_right.html">
+ "receiver makes right"</a></span></dt>
+</dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006 -2009 Beman Dawes<br>Copyright © 2010 Vicente J. Botet Escriba<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="reference/integer_endian_conversion_hpp.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="examples/_endian_aware.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/examples/_endian_aware.html
==============================================================================
--- (empty file)
+++ sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/examples/_endian_aware.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -0,0 +1,123 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>
+ Endian Aware</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../../index.html" title="Toward Boost.Integer.Endian">
+<link rel="up" href="../examples.html" title="Examples">
+<link rel="prev" href="../examples.html" title="Examples">
+<link rel="next" href="receiver_makes_right.html" title='
+ "receiver makes right"'>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<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="../examples.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../examples.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="receiver_makes_right.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_integer_endian.examples._endian_aware"></a><a href="_endian_aware.html" title="
+ Endian Aware">
+ Endian Aware</a>
+</h3></div></div></div>
+<p>
+ The endian_example.cpp program writes a binary file containing four byte
+ big-endian and little-endian integers.
+ </p>
+<p>
+ This is an extract from a very widely used GIS file format. I have no idea
+ why a designer would mix big and little endians in the same file - but this
+ is a real-world format and users wishing to write low level code manipulating
+ these files have to deal with the mixed endianness.
+ </p>
+<p>
+ Low-level I/O such as POSIX read/write or <cstdio> fread/fwrite is
+ sometimes used for binary file operations when ultimate efficiency is important.
+ Such I/O is often performed in some C++ wrapper class, but to drive home
+ the point that endian integers are often used in fairly low-level code that
+ does bulk I/O operations, <cstdio> fopen/fwrite is used for I/O in
+ this example.
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">cassert</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">cstdio</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">integer</span><span class="special">/</span><span class="identifier">endian</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">integer</span><span class="special">;</span>
+
+<span class="keyword">namespace</span>
+<span class="special">{</span>
+
+ <span class="keyword">struct</span> <span class="identifier">header</span>
+ <span class="special">{</span>
+ <span class="identifier">big32_t</span> <span class="identifier">file_code</span><span class="special">;</span>
+ <span class="identifier">big32_t</span> <span class="identifier">file_length</span><span class="special">;</span>
+ <span class="identifier">little32_t</span> <span class="identifier">version</span><span class="special">;</span>
+ <span class="identifier">little32_t</span> <span class="identifier">shape_type</span><span class="special">;</span>
+ <span class="special">};</span>
+
+ <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> <span class="identifier">filename</span> <span class="special">=</span> <span class="string">"test.dat"</span><span class="special">;</span>
+<span class="special">}</span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">assert</span><span class="special">(</span> <span class="keyword">sizeof</span><span class="special">(</span> <span class="identifier">header</span> <span class="special">)</span> <span class="special">==</span> <span class="number">16</span> <span class="special">);</span> <span class="comment">// requirement for interoperability
+</span>
+ <span class="identifier">header</span> <span class="identifier">h</span><span class="special">;</span>
+
+ <span class="identifier">h</span><span class="special">.</span><span class="identifier">file_code</span> <span class="special">=</span> <span class="number">0x04030201</span><span class="special">;</span>
+ <span class="identifier">h</span><span class="special">.</span><span class="identifier">file_length</span> <span class="special">=</span> <span class="keyword">sizeof</span><span class="special">(</span> <span class="identifier">header</span> <span class="special">);</span>
+ <span class="identifier">h</span><span class="special">.</span><span class="identifier">version</span> <span class="special">=</span> <span class="special">-</span><span class="number">1</span><span class="special">;</span>
+ <span class="identifier">h</span><span class="special">.</span><span class="identifier">shape_type</span> <span class="special">=</span> <span class="number">0x04030201</span><span class="special">;</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">FILE</span> <span class="special">*</span> <span class="identifier">fi</span><span class="special">;</span>
+
+ <span class="keyword">if</span> <span class="special">(</span> <span class="special">!(</span><span class="identifier">fi</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">fopen</span><span class="special">(</span> <span class="identifier">filename</span><span class="special">,</span> <span class="string">"wb"</span> <span class="special">))</span> <span class="special">)</span> <span class="comment">// MUST BE BINARY
+</span> <span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"could not open "</span> <span class="special"><<</span> <span class="identifier">filename</span> <span class="special"><<</span> <span class="char">'\n'</span><span class="special">;</span>
+ <span class="keyword">return</span> <span class="number">1</span><span class="special">;</span>
+ <span class="special">}</span>
+
+ <span class="keyword">if</span> <span class="special">(</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">fwrite</span><span class="special">(</span> <span class="special">&</span><span class="identifier">h</span><span class="special">,</span> <span class="keyword">sizeof</span><span class="special">(</span> <span class="identifier">header</span> <span class="special">),</span> <span class="number">1</span><span class="special">,</span> <span class="identifier">fi</span> <span class="special">)</span> <span class="special">!=</span> <span class="number">1</span> <span class="special">)</span>
+ <span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"write failure for "</span> <span class="special"><<</span> <span class="identifier">filename</span> <span class="special"><<</span> <span class="char">'\n'</span><span class="special">;</span>
+ <span class="keyword">return</span> <span class="number">1</span><span class="special">;</span>
+ <span class="special">}</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">fclose</span><span class="special">(</span> <span class="identifier">fi</span> <span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"created file "</span> <span class="special"><<</span> <span class="identifier">filename</span> <span class="special"><<</span> <span class="char">'\n'</span><span class="special">;</span>
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ After compiling and executing endian_example.cpp, a hex dump of test.dat
+ shows:
+ </p>
+<pre class="programlisting"><span class="number">0403</span> <span class="number">0201</span> <span class="number">0000</span> <span class="number">0010</span> <span class="identifier">ffff</span> <span class="identifier">ffff</span> <span class="number">0102</span> <span class="number">0304</span>
+</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006 -2009 Beman Dawes<br>Copyright © 2010 Vicente J. Botet Escriba<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="../examples.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../examples.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="receiver_makes_right.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/examples/endian_aware.html
==============================================================================
--- (empty file)
+++ sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/examples/endian_aware.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -0,0 +1,118 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Endian
+ Aware</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../../index.html" title="Toward Boost.Integer.Endian">
+<link rel="up" href="../examples.html" title="Examples">
+<link rel="prev" href="../examples.html" title="Examples">
+<link rel="next" href="../appendices.html" title="Appendices">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<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="../examples.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../examples.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="../appendices.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_integer_endian.examples.endian_aware"></a><a href="endian_aware.html" title="Endian
+ Aware">Endian
+ Aware</a>
+</h3></div></div></div>
+<p>
+ The endian_example.cpp program writes a binary file containing four byte
+ big-endian and little-endian integers:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">cassert</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">cstdio</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">integer</span><span class="special">/</span><span class="identifier">endian</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">integer</span><span class="special">;</span>
+
+<span class="keyword">namespace</span>
+<span class="special">{</span>
+ <span class="comment">// This is an extract from a very widely used GIS file format. I have no idea
+</span> <span class="comment">// why a designer would mix big and little endians in the same file - but
+</span> <span class="comment">// this is a real-world format and users wishing to write low level code
+</span> <span class="comment">// manipulating these files have to deal with the mixed endianness.
+</span>
+ <span class="keyword">struct</span> <span class="identifier">header</span>
+ <span class="special">{</span>
+ <span class="identifier">big32_t</span> <span class="identifier">file_code</span><span class="special">;</span>
+ <span class="identifier">big32_t</span> <span class="identifier">file_length</span><span class="special">;</span>
+ <span class="identifier">little32_t</span> <span class="identifier">version</span><span class="special">;</span>
+ <span class="identifier">little32_t</span> <span class="identifier">shape_type</span><span class="special">;</span>
+ <span class="special">};</span>
+
+ <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> <span class="identifier">filename</span> <span class="special">=</span> <span class="string">"test.dat"</span><span class="special">;</span>
+<span class="special">}</span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">assert</span><span class="special">(</span> <span class="keyword">sizeof</span><span class="special">(</span> <span class="identifier">header</span> <span class="special">)</span> <span class="special">==</span> <span class="number">16</span> <span class="special">);</span> <span class="comment">// requirement for interoperability
+</span>
+ <span class="identifier">header</span> <span class="identifier">h</span><span class="special">;</span>
+
+ <span class="identifier">h</span><span class="special">.</span><span class="identifier">file_code</span> <span class="special">=</span> <span class="number">0x04030201</span><span class="special">;</span>
+ <span class="identifier">h</span><span class="special">.</span><span class="identifier">file_length</span> <span class="special">=</span> <span class="keyword">sizeof</span><span class="special">(</span> <span class="identifier">header</span> <span class="special">);</span>
+ <span class="identifier">h</span><span class="special">.</span><span class="identifier">version</span> <span class="special">=</span> <span class="special">-</span><span class="number">1</span><span class="special">;</span>
+ <span class="identifier">h</span><span class="special">.</span><span class="identifier">shape_type</span> <span class="special">=</span> <span class="number">0x04030201</span><span class="special">;</span>
+
+ <span class="comment">// Low-level I/O such as POSIX read/write or <cstdio> fread/fwrite is sometimes
+</span> <span class="comment">// used for binary file operations when ultimate efficiency is important.
+</span> <span class="comment">// Such I/O is often performed in some C++ wrapper class, but to drive home the
+</span> <span class="comment">// point that endian integers are often used in fairly low-level code that
+</span> <span class="comment">// does bulk I/O operations, <cstdio> fopen/fwrite is used for I/O in this example.
+</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">FILE</span> <span class="special">*</span> <span class="identifier">fi</span><span class="special">;</span>
+
+ <span class="keyword">if</span> <span class="special">(</span> <span class="special">!(</span><span class="identifier">fi</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">fopen</span><span class="special">(</span> <span class="identifier">filename</span><span class="special">,</span> <span class="string">"wb"</span> <span class="special">))</span> <span class="special">)</span> <span class="comment">// MUST BE BINARY
+</span> <span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"could not open "</span> <span class="special"><<</span> <span class="identifier">filename</span> <span class="special"><<</span> <span class="char">'\n'</span><span class="special">;</span>
+ <span class="keyword">return</span> <span class="number">1</span><span class="special">;</span>
+ <span class="special">}</span>
+
+ <span class="keyword">if</span> <span class="special">(</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">fwrite</span><span class="special">(</span> <span class="special">&</span><span class="identifier">h</span><span class="special">,</span> <span class="keyword">sizeof</span><span class="special">(</span> <span class="identifier">header</span> <span class="special">),</span> <span class="number">1</span><span class="special">,</span> <span class="identifier">fi</span> <span class="special">)</span> <span class="special">!=</span> <span class="number">1</span> <span class="special">)</span>
+ <span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"write failure for "</span> <span class="special"><<</span> <span class="identifier">filename</span> <span class="special"><<</span> <span class="char">'\n'</span><span class="special">;</span>
+ <span class="keyword">return</span> <span class="number">1</span><span class="special">;</span>
+ <span class="special">}</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">fclose</span><span class="special">(</span> <span class="identifier">fi</span> <span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"created file "</span> <span class="special"><<</span> <span class="identifier">filename</span> <span class="special"><<</span> <span class="char">'\n'</span><span class="special">;</span>
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ After compiling and executing endian_example.cpp, a hex dump of test.dat
+ shows:
+ </p>
+<pre class="programlisting"><span class="number">0403</span> <span class="number">0201</span> <span class="number">0000</span> <span class="number">0010</span> <span class="identifier">ffff</span> <span class="identifier">ffff</span> <span class="number">0102</span> <span class="number">0304</span>
+</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006 -2009 Beman Dawes<br>Copyright © 2010 Vicente J. Botet Escriba<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="../examples.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../examples.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="../appendices.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/examples/receiver_makes_right.html
==============================================================================
--- (empty file)
+++ sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/examples/receiver_makes_right.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -0,0 +1,45 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>
+ "receiver makes right"</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../../index.html" title="Toward Boost.Integer.Endian">
+<link rel="up" href="../examples.html" title="Examples">
+<link rel="prev" href="_endian_aware.html" title="
+ Endian Aware">
+<link rel="next" href="../appendices.html" title="Appendices">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<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="_endian_aware.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../examples.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="../appendices.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_integer_endian.examples.receiver_makes_right"></a><a href="receiver_makes_right.html" title='
+ "receiver makes right"'>
+ "receiver makes right"</a>
+</h3></div></div></div></div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006 -2009 Beman Dawes<br>Copyright © 2010 Vicente J. Botet Escriba<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="_endian_aware.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../examples.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="../appendices.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/overview.html
==============================================================================
--- (empty file)
+++ sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/overview.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -0,0 +1,154 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Overview</title>
+<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../index.html" title="Toward Boost.Integer.Endian">
+<link rel="up" href="../index.html" title="Toward Boost.Integer.Endian">
+<link rel="prev" href="../index.html" title="Toward Boost.Integer.Endian">
+<link rel="next" href="overview/motivation.html" title="Motivation">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<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="../../../../../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="overview/motivation.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">
+<a name="toward_boost_integer_endian.overview"></a>Overview
+</h2></div></div></div>
+<div class="toc"><dl><dt><span class="section">Motivation</span></dt></dl></div>
+<a name="toward_boost_integer_endian.overview.description"></a><h3>
+<a name="id4765003"></a>
+ Description
+ </h3>
+<p>
+ This is an extension of the Beman's Boost.Integer.Endian, which was able to
+ work with endian aware types, used to convert between types with different
+ endian or even to carry on with arithmetic operations, by spliting the endian
+ part from integer part and by adding support for aligned endian unaware types.
+ </p>
+<p>
+ <span class="bold"><strong>Boost.Integer.Endian.Ext</strong></span> provides:
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ Endian packs
+ <div class="itemizedlist"><ul type="circle">
+<li>
+ Big endian | little endian | native endian byte ordering.
+ </li>
+<li>
+ Signed | unsigned
+ </li>
+<li>
+ Unaligned | aligned
+ </li>
+<li>
+ 1-8 byte (unaligned) | 2, 4, 8 byte (aligned)
+ </li>
+<li>
+ Choice of integer value type
+ </li>
+</ul></div>
+</li>
+<li>
+ Endian integers with the whole set of arithmetics operators.
+ </li>
+<li>
+ Operators <= and => for unformatted binary (as opposed to formatted
+ character) stream insertion and extraction of built-in, std::string types
+ and of endian types.
+ </li>
+<li>
+ Views of aligned endian unaware integer types as endian packs or endian integers
+ so we can make endian conversion.
+ </li>
+<li>
+ Generic in place conversion between different endian formats.
+ <div class="itemizedlist"><ul type="circle">
+<li>
+ Very simple interface: convert_to/from<endiannes domain>(),
+ </li>
+<li>
+ Support for built-in and user-defined data types view as fusion sequences.
+ </li>
+</ul></div>
+</li>
+</ul></div>
+<a name="toward_boost_integer_endian.overview.how_to_use_this_documentation"></a><h3>
+<a name="id4765109"></a>
+ <a href="overview.html#toward_boost_integer_endian.overview.how_to_use_this_documentation">How
+ to Use This Documentation</a>
+ </h3>
+<p>
+ This documentation makes use of the following naming and formatting conventions.
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ Code is in <code class="computeroutput"><span class="identifier">fixed</span> <span class="identifier">width</span>
+ <span class="identifier">font</span></code> and is syntax-highlighted.
+ </li>
+<li>
+ Replaceable text that you will need to supply is in <em class="replaceable"><code>italics</code></em>.
+ </li>
+<li>
+ If a name refers to a free function, it is specified like this: <code class="computeroutput"><span class="identifier">free_function</span><span class="special">()</span></code>;
+ that is, it is in code font and its name is followed by <code class="computeroutput"><span class="special">()</span></code>
+ to indicate that it is a free function.
+ </li>
+<li>
+ If a name refers to a class template, it is specified like this: <code class="computeroutput"><span class="identifier">class_template</span><span class="special"><></span></code>;
+ that is, it is in code font and its name is followed by <code class="computeroutput"><span class="special"><></span></code>
+ to indicate that it is a class template.
+ </li>
+<li>
+ If a name refers to a function-like macro, it is specified like this: <code class="computeroutput"><span class="identifier">MACRO</span><span class="special">()</span></code>;
+ that is, it is uppercase in code font and its name is followed by <code class="computeroutput"><span class="special">()</span></code> to indicate that it is a function-like
+ macro. Object-like macros appear without the trailing <code class="computeroutput"><span class="special">()</span></code>.
+ </li>
+<li>
+ Names that refer to <span class="emphasis"><em>concepts</em></span> in the generic programming
+ sense are specified in CamelCase.
+ </li>
+</ul></div>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<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>
+ In addition, notes such as this one specify non-essential information that
+ provides additional background or rationale.
+ </p></td></tr>
+</table></div>
+<p>
+ Finally, you can mentally add the following to any code fragments in this document:
+ </p>
+<pre class="programlisting"><span class="comment">// Include all of endian files
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">integer</span><span class="special">/</span><span class="identifier">endian</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006 -2009 Beman Dawes<br>Copyright © 2010 Vicente J. Botet Escriba<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="../../../../../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="overview/motivation.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/overview/motivation.html
==============================================================================
--- (empty file)
+++ sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/overview/motivation.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -0,0 +1,261 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Motivation</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../../index.html" title="Toward Boost.Integer.Endian">
+<link rel="up" href="../overview.html" title="Overview">
+<link rel="prev" href="../overview.html" title="Overview">
+<link rel="next" href="../users_guide.html" title=" Users'Guide">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<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="../overview.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.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="../users_guide.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_integer_endian.overview.motivation"></a>Motivation
+</h3></div></div></div>
+<p>
+ The original Beman's version provided through the boost::integer::endian<>
+ class an integer-like class that providing arithmetics operations on
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ Big endian | little endian | native endian byte ordering.
+ </li>
+<li>
+ Signed | unsigned
+ </li>
+<li>
+ Unaligned | aligned
+ </li>
+<li>
+ 1-8 byte (unaligned) | 2, 4, 8 byte (aligned)
+ </li>
+<li>
+ Choice of integer value type
+ </li>
+</ul></div>
+<p>
+ This endain aware design seems to be unappropiated to work with endian unaware
+ types, but as we will see this is not completly true, as we can construct
+ on top of the Beman's design endian unaware operation. Next follows some
+ of the main critics that have been done recently.
+ </p>
+<a name="toward_boost_integer_endian.overview.motivation.intrusive_verus_non_intrusive"></a><h4>
+<a name="id4803533"></a>
+ <a href="motivation.html#toward_boost_integer_endian.overview.motivation.intrusive_verus_non_intrusive">Intrusive
+ verus non-intrusive</a>
+ </h4>
+<p>
+ Endian conversion must be possible to any type even if you can't modify the
+ original source code. Many people think that originel Beman's library requires
+ the data types which need to be converted to be coded using his endian types
+ as members.
+ </p>
+<p>
+ We will see that this is not true, as the user can always use casting to
+ reinterpret a given structure on another one, as the proposed extension does
+ with the endian_views.
+ </p>
+<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">endian_unaware_structure</span> <span class="special">{</span>
+ <span class="identifier">int32_t</span> <span class="identifier">a</span><span class="special">;</span>
+ <span class="identifier">int16_t</span> <span class="identifier">b</span><span class="special">;</span>
+<span class="special">};</span>
+<span class="identifier">endian_unaware_structure</span> <span class="identifier">st_a</span><span class="special">;</span>
+
+<span class="identifier">endian_unaware_structure</span> <span class="identifier">st_b</span><span class="special">;</span>
+<span class="identifier">as_endian</span><span class="special"><</span><span class="identifier">native</span><span class="special">>(</span><span class="identifier">st_b</span><span class="special">)</span> <span class="special">=</span> <span class="identifier">as_endian</span><span class="special"><</span><span class="identifier">big</span><span class="special">>(</span><span class="identifier">st_a</span><span class="special">);</span>
+</pre>
+<a name="toward_boost_integer_endian.overview.motivation.physical_versus_logical_data"></a><h4>
+<a name="id4803723"></a>
+ <a href="motivation.html#toward_boost_integer_endian.overview.motivation.physical_versus_logical_data">Physical
+ versus Logical data</a>
+ </h4>
+<p>
+ The typical use case is to use native endianness until ready to read/write
+ using wire format. It is only when ready to do I/O that there is a need to
+ account for endianness.
+ </p>
+<p>
+ Beman's original library requires two types one to specify the physical data
+ and the other representing the logical data. Many people think that this
+ means that the user has to maintain two separate structs/classes when only
+ one is needed. This could be sometimes the case, but in other cases, the
+ user will store the information elements include in the message on local
+ variables and specific contexts that don't follow the external format.
+ </p>
+<p>
+ Applications that don't separate the physical and the logical data structures
+ don't scale well as any change on the external format will mean a refactoring
+ of the whole application. Also, the wire structures cannot maintain invariants,
+ so having a separate class is often useful even if its contents are essentially
+ identical to the wire version.
+ </p>
+<p>
+ In addition a single and efficient view is only possible when the pysical
+ view can be represented by native aligned integers. But when the physical
+ view contains unaliged integers with sizes not supported by the platform,
+ the need to separate both view becomes anavoidable. Here the Beman's design
+ is the best adapted.
+ </p>
+<a name="toward_boost_integer_endian.overview.motivation.inherent_inefficient_arithmetic_operations"></a><h4>
+<a name="id4803795"></a>
+ <a href="motivation.html#toward_boost_integer_endian.overview.motivation.inherent_inefficient_arithmetic_operations">Inherent
+ inefficient arithmetic operations</a>
+ </h4>
+<p>
+ The fact that the endian types provide operators gives the impression that
+ it's ok to operate on them, as these operations can potentially require two
+ endian conversions when the endianness is different.
+ </p>
+<p>
+ Some people don't agree with that design choice, as they think the operation
+ of endian conversion and operating on the data should be divorced from each
+ other. A less experienced user that you may end up not realizing what the
+ hidden costs are and use the endian aware integer-like types throughout the
+ application, paying unnecessary overheads. They prefer a library that makes
+ hard to misuse in that way; borrowing a phrase from python, "explicit
+ is better than implicit". They believe that forcing the user to do the
+ explicit endian conversion leads to better separation of concerns for the
+ application, but they don't propose any mean to force this conversion.
+ </p>
+<p>
+ The extension proposal separates the endian aware byte-holder type from the
+ one able to make arithmetic operations so the user will be forced to convert
+ for one to/from the native type, and avoid unfortunate costly atithmetic
+ operations.
+ </p>
+<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">endian_aware_structure</span> <span class="special">{</span>
+ <span class="identifier">endian_holder</span><span class="special"><</span><span class="identifier">big</span><span class="special">,</span><span class="identifier">int32_t</span><span class="special">></span> <span class="identifier">a</span><span class="special">;</span>
+ <span class="identifier">endian_holder</span><span class="special"><</span><span class="identifier">big</span><span class="special">,</span><span class="identifier">int16_t</span><span class="special">></span> <span class="identifier">b</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+ Structure endian_aware_structure can not be used without converting to native
+ types, as endian_holder don't provide other operations than conversion.
+ </p>
+<pre class="programlisting"><span class="identifier">endian_aware_structure</span> <span class="identifier">st</span><span class="special">;</span>
+<span class="comment">// ...
+</span><span class="identifier">st</span><span class="special">.</span><span class="identifier">a</span><span class="special">=</span><span class="identifier">i</span><span class="special">;</span>
+<span class="identifier">st</span><span class="special">.</span><span class="identifier">b</span><span class="special">=</span><span class="identifier">j</span><span class="special">;</span>
+</pre>
+<p>
+ But don't removes the inefficient and endian safe class, as less demanding
+ applications would benefit from the safe and transparent approach.
+ </p>
+<a name="toward_boost_integer_endian.overview.motivation.in_place_conversion"></a><h4>
+<a name="id4804044"></a>
+ <a href="motivation.html#toward_boost_integer_endian.overview.motivation.in_place_conversion">In-place
+ conversion</a>
+ </h4>
+<p>
+ Other contexts force the user to make in place conversions. While this could
+ be dangerous, there are context on which a funtional conversion is not possible,
+ mainly because the duplicated space could not be an option. These in-place
+ conversions are only possible for aligned endian unaware types.
+ </p>
+<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">endian_unaware_structure</span> <span class="special">{</span>
+ <span class="identifier">int32_t</span> <span class="identifier">a</span><span class="special">;</span>
+ <span class="identifier">int16_t</span> <span class="identifier">b</span><span class="special">;</span>
+<span class="special">};</span>
+<span class="identifier">endian_unaware_structure</span> <span class="identifier">st</span><span class="special">;</span>
+
+<span class="identifier">as_endian</span><span class="special"><</span><span class="identifier">native</span><span class="special">>(</span><span class="identifier">st</span><span class="special">)</span> <span class="special">=</span> <span class="identifier">as_endian</span><span class="special"><</span><span class="identifier">big</span><span class="special">>(</span><span class="identifier">st</span><span class="special">);</span>
+</pre>
+<p>
+ The fact that some context need this in-place conversion doesn't mean that
+ every application should use this approach.
+ </p>
+<a name="toward_boost_integer_endian.overview.motivation.udt_endianness"></a><h4>
+<a name="id4804216"></a>
+ <a href="motivation.html#toward_boost_integer_endian.overview.motivation.udt_endianness">UDT
+ endianness</a>
+ </h4>
+<p>
+ It has been also arged that the boost::integer::endian class didn't accepts
+ a UDT. This is true when the endian is unaligned, but not for aligned types.
+ </p>
+<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">UserMessage</span> <span class="special">{</span>
+ <span class="identifier">endian_pack</span><span class="special"><</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">system_clock</span><span class="special">::</span><span class="identifier">time_point</span> <span class="special">></span> <span class="identifier">timestamp</span><span class="special">;</span>
+ <span class="identifier">ulittle32_pt</span> <span class="identifier">aircraft_id</span><span class="special">;</span>
+ <span class="keyword">struct</span> <span class="identifier">Position</span> <span class="special">{</span>
+ <span class="identifier">endian_pack</span><span class="special"><</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">quantity</span><span class="special"><</span><span class="identifier">si</span><span class="special">::</span><span class="identifier">length</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">int_least32_t</span><span class="special">></span> <span class="special">></span> <span class="identifier">x</span><span class="special">;</span>
+ <span class="identifier">endian_pack</span><span class="special"><</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">quantity</span><span class="special"><</span><span class="identifier">si</span><span class="special">::</span><span class="identifier">length</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">int_least32_t</span><span class="special">></span> <span class="special">></span> <span class="identifier">y</span><span class="special">;</span>
+ <span class="identifier">endian_pack</span><span class="special"><</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">quantity</span><span class="special"><</span><span class="identifier">si</span><span class="special">::</span><span class="identifier">length</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">int_least32_t</span><span class="special">></span> <span class="special">></span> <span class="identifier">z</span><span class="special">;</span>
+ <span class="special">}</span> <span class="identifier">position</span><span class="special">;</span>
+ <span class="keyword">struct</span> <span class="identifier">Attitude</span> <span class="special">{</span>
+ <span class="identifier">endian_pack</span><span class="special"><</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">quantity</span><span class="special"><</span><span class="identifier">si</span><span class="special">::</span><span class="identifier">plane_angle</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">int_least8_t</span><span class="special">></span> <span class="special">></span> <span class="identifier">heading</span><span class="special">;</span>
+ <span class="identifier">endian_pack</span><span class="special"><</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">quantity</span><span class="special"><</span><span class="identifier">si</span><span class="special">::</span><span class="identifier">plane_angle</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">int_least8_t</span><span class="special">></span> <span class="special">></span> <span class="identifier">pitch</span><span class="special">;</span>
+ <span class="identifier">endian_pack</span><span class="special"><</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">quantity</span><span class="special"><</span><span class="identifier">si</span><span class="special">::</span><span class="identifier">plane_angle</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">int_least8_t</span><span class="special">></span> <span class="special">></span> <span class="identifier">roll</span><span class="special">;</span>
+ <span class="special">}</span> <span class="identifier">attitude</span><span class="special">;</span>
+<span class="special">};</span> <span class="comment">// UserMessage
+</span></pre>
+<a name="toward_boost_integer_endian.overview.motivation.mixed_endianness"></a><h4>
+<a name="id4758939"></a>
+ <a href="motivation.html#toward_boost_integer_endian.overview.motivation.mixed_endianness">Mixed
+ endianness</a>
+ </h4>
+<p>
+ Sometimes we need to deal with messages with mixed endianness. A functional
+ approach means the programmer has to "know" which endianess the
+ data he wants to convert has.
+ </p>
+<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">UdpHeader</span> <span class="special">{</span>
+ <span class="identifier">ubig16_pt</span> <span class="identifier">source_port</span><span class="special">;</span>
+ <span class="identifier">ubig16_pt</span> <span class="identifier">destination_port</span><span class="special">;</span>
+ <span class="identifier">ubig16_pt</span> <span class="identifier">length</span><span class="special">;</span>
+ <span class="identifier">ubig16_pt</span> <span class="identifier">checksum</span><span class="special">;</span>
+<span class="special">};</span> <span class="comment">// UdpHeader
+</span>
+<span class="keyword">struct</span> <span class="identifier">Packet</span> <span class="special">{</span>
+ <span class="identifier">internet</span><span class="special">::</span><span class="identifier">UdpHeader</span> <span class="identifier">udpHeader</span><span class="special">;</span>
+ <span class="identifier">UserMessage</span> <span class="identifier">userMessage</span><span class="special">;</span>
+<span class="special">};</span> <span class="comment">// Packet
+</span></pre>
+<a name="toward_boost_integer_endian.overview.motivation.floating_point"></a><h4>
+<a name="id4759130"></a>
+ <a href="motivation.html#toward_boost_integer_endian.overview.motivation.floating_point">Floating
+ point</a>
+ </h4>
+<p>
+ From my understanding floating point types are not only concerned by endianness,
+ but also by a multitude of standard on not standard formats.
+ </p>
+<a name="toward_boost_integer_endian.overview.motivation.conclusion"></a><h4>
+<a name="id4759156"></a>
+ Conclusion
+ </h4>
+<p>
+ The library must support applications needing to work safely with endian
+ aware types and efficiently with in place endian conversions.
+ </p>
+<p>
+ Conversions between native and big/little endian formats must be simple.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006 -2009 Beman Dawes<br>Copyright © 2010 Vicente J. Botet Escriba<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="../overview.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.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="../users_guide.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/reference.html
==============================================================================
--- (empty file)
+++ sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/reference.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -0,0 +1,117 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Reference</title>
+<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../index.html" title="Toward Boost.Integer.Endian">
+<link rel="up" href="../index.html" title="Toward Boost.Integer.Endian">
+<link rel="prev" href="users_guide/ext_references.html" title="
+ References">
+<link rel="next" href="reference/alignment_hpp.html" title="
+ Header <boost/alignment.hpp>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<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="users_guide/ext_references.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="reference/alignment_hpp.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">
+<a name="toward_boost_integer_endian.reference"></a>Reference
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="reference/alignment_hpp.html">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">alignment</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dd><dl><dt><span class="section"><a href="reference/alignment_hpp.html#toward_boost_integer_endian.reference.alignment_hpp.endian_alignment">
+ Enum Class <code class="computeroutput"><span class="identifier">alignment</span></code></a></span></dt></dl></dd>
+<dt><span class="section"><a href="reference/integer_endianness_hpp.html">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">integer</span><span class="special">/</span><span class="identifier">endiannes</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="reference/integer_endianness_hpp.html#toward_boost_integer_endian.reference.integer_endianness_hpp.endian_big">
+ Class <code class="computeroutput"><span class="identifier">big</span></code></a></span></dt>
+<dt><span class="section"><a href="reference/integer_endianness_hpp.html#toward_boost_integer_endian.reference.integer_endianness_hpp.endian_little">
+ Class <code class="computeroutput"><span class="identifier">little</span></code></a></span></dt>
+<dt><span class="section"><a href="reference/integer_endianness_hpp.html#toward_boost_integer_endian.reference.integer_endianness_hpp.endian_middle">
+ Class <code class="computeroutput"><span class="identifier">middle</span></code></a></span></dt>
+<dt><span class="section"><a href="reference/integer_endianness_hpp.html#toward_boost_integer_endian.reference.integer_endianness_hpp.endian_mixed">
+ Class <code class="computeroutput"><span class="identifier">mixed</span></code></a></span></dt>
+<dt><span class="section"><a href="reference/integer_endianness_hpp.html#toward_boost_integer_endian.reference.integer_endianness_hpp.endian_native">
+ Class <code class="computeroutput"><span class="identifier">native</span></code></a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="reference/endian_domain_map_hpp.html">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">endian</span><span class="special">/</span><span class="identifier">domain_map</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dd><dl><dt><span class="section"><a href="reference/endian_domain_map_hpp.html#toward_boost_integer_endian.reference.endian_domain_map_hpp.domain_map">
+ Meta Function <code class="computeroutput"><span class="identifier">domain_map</span><span class="special"><></span></code></a></span></dt></dl></dd>
+<dt><span class="section"><a href="reference/binary_stream_hpp.html">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">binary_stream</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="reference/integer_endian_pack_hpp.html">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">integer</span><span class="special">/</span><span class="identifier">endian_pack</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="reference/integer_endian_hpp.html">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">integer</span><span class="special">/</span><span class="identifier">endian</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dd><dl><dt><span class="section"><a href="reference/integer_endian_hpp.html#toward_boost_integer_endian.reference.integer_endian_hpp.endian">
+ Template class <code class="computeroutput"><span class="identifier">endian</span><span class="special"><></span></code></a></span></dt></dl></dd>
+<dt><span class="section"><a href="reference/integer_endian_binary_stream_hpp.html">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">integer</span><span class="special">/</span><span class="identifier">endian_binary_stream</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="reference/integer_endian_type_hpp.html">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">integer</span><span class="special">/</span><span class="identifier">endian_type</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dd><dl><dt><span class="section"><a href="reference/integer_endian_type_hpp.html#toward_boost_integer_endian.reference.integer_endian_type_hpp.integer_endian_type">
+ Meta Function <code class="computeroutput"><span class="identifier">endian_type</span><span class="special"><></span></code></a></span></dt></dl></dd>
+<dt><span class="section"><a href="reference/integer_endian_view_hpp.html">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">integer</span><span class="special">/</span><span class="identifier">endian_view</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="reference/integer_endian_view_hpp.html#toward_boost_integer_endian.reference.integer_endian_view_hpp.bitfield">
+ Template class <code class="computeroutput"><span class="identifier">endian_view</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="reference/integer_endian_view_hpp.html#toward_boost_integer_endian.reference.integer_endian_view_hpp.as_endian">
+ Non-Member Function Template <code class="computeroutput"><span class="identifier">as_endian</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="reference/integer_endian_view_hpp.html#toward_boost_integer_endian.reference.integer_endian_view_hpp.as">
+ Non-Member Function Template <code class="computeroutput"><span class="identifier">as</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="reference/integer_endian_view_hpp.html#toward_boost_integer_endian.reference.integer_endian_view_hpp.as_little">
+ Non-Member Function Template <code class="computeroutput"><span class="identifier">as_little</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="reference/integer_endian_view_hpp.html#toward_boost_integer_endian.reference.integer_endian_view_hpp.as_big">
+ Non-Member Function Template <code class="computeroutput"><span class="identifier">as_big</span><span class="special"><></span></code></a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="reference/integer_endian_conversion_hpp.html">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">integer</span><span class="special">/</span><span class="identifier">endian_conversion</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="reference/integer_endian_conversion_hpp.html#toward_boost_integer_endian.reference.integer_endian_conversion_hpp.convert_to_from">
+ Non-Member Function Template <code class="computeroutput"><span class="identifier">convert_to_from</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="reference/integer_endian_conversion_hpp.html#toward_boost_integer_endian.reference.integer_endian_conversion_hpp.convert_from">
+ Non-Member Function Template <code class="computeroutput"><span class="identifier">convert_from</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="reference/integer_endian_conversion_hpp.html#toward_boost_integer_endian.reference.integer_endian_conversion_hpp.convert_to">
+ Non-Member Function Template <code class="computeroutput"><span class="identifier">convert_to</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="reference/integer_endian_conversion_hpp.html#toward_boost_integer_endian.reference.integer_endian_conversion_hpp.to">
+ Class Template <code class="computeroutput"><span class="identifier">to</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="reference/integer_endian_conversion_hpp.html#toward_boost_integer_endian.reference.integer_endian_conversion_hpp.from">
+ Class Template <code class="computeroutput"><span class="identifier">from</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="reference/integer_endian_conversion_hpp.html#toward_boost_integer_endian.reference.integer_endian_conversion_hpp.is_to">
+ Class Template <code class="computeroutput"><span class="identifier">is_to</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="reference/integer_endian_conversion_hpp.html#toward_boost_integer_endian.reference.integer_endian_conversion_hpp.is_from">
+ Class Template <code class="computeroutput"><span class="identifier">is_from</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="reference/integer_endian_conversion_hpp.html#toward_boost_integer_endian.reference.integer_endian_conversion_hpp.convert">
+ Non-Member Function Template <code class="computeroutput"><span class="identifier">convert</span><span class="special"><></span></code></a></span></dt>
+</dl></dd>
+</dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006 -2009 Beman Dawes<br>Copyright © 2010 Vicente J. Botet Escriba<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="users_guide/ext_references.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="reference/alignment_hpp.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/reference/alignment_hpp.html
==============================================================================
--- (empty file)
+++ sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/reference/alignment_hpp.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -0,0 +1,68 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>
+ Header <boost/alignment.hpp></title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../../index.html" title="Toward Boost.Integer.Endian">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="../reference.html" title="Reference">
+<link rel="next" href="integer_endianness_hpp.html" title="
+ Header <boost/integer/endiannes.hpp>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<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="../reference.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.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="integer_endianness_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_integer_endian.reference.alignment_hpp"></a><a href="alignment_hpp.html" title="
+ Header <boost/alignment.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">alignment</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="toc"><dl><dt><span class="section"><a href="alignment_hpp.html#toward_boost_integer_endian.reference.alignment_hpp.endian_alignment">
+ Enum Class <code class="computeroutput"><span class="identifier">alignment</span></code></a></span></dt></dl></div>
+<a name="toward_boost_integer_endian.reference.alignment_hpp.synopsis"></a><h4>
+<a name="id4818584"></a>
+ Synopsis
+ </h4>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span>
+<span class="special">{</span>
+ <span class="keyword">enum</span> <span class="keyword">class</span> <span class="identifier">alignment</span> <span class="special">{</span> <span class="identifier">unaligned</span><span class="special">,</span> <span class="identifier">aligned</span> <span class="special">};</span> <span class="comment">// scoped enum emulated on C++03
+</span><span class="special">}</span>
+</pre>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_integer_endian.reference.alignment_hpp.endian_alignment"></a><a href="alignment_hpp.html#toward_boost_integer_endian.reference.alignment_hpp.endian_alignment" title="
+ Enum Class alignment">
+ Enum Class <code class="computeroutput"><span class="identifier">alignment</span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="comment">// scoped enum emulated on C++03
+</span><span class="keyword">enum</span> <span class="keyword">class</span> <span class="identifier">alignment</span> <span class="special">{</span> <span class="identifier">unaligned</span><span class="special">,</span> <span class="identifier">aligned</span> <span class="special">};</span>
+</pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006 -2009 Beman Dawes<br>Copyright © 2010 Vicente J. Botet Escriba<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="../reference.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.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="integer_endianness_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/reference/binary_stream_hpp.html
==============================================================================
--- (empty file)
+++ sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/reference/binary_stream_hpp.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -0,0 +1,151 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>
+ Header <boost/binary_stream.hpp></title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../../index.html" title="Toward Boost.Integer.Endian">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="endian_domain_map_hpp.html" title="
+ Header <boost/endian/domain_map.hpp>">
+<link rel="next" href="integer_endian_pack_hpp.html" title="
+ Header <boost/integer/endian_pack.hpp>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<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="endian_domain_map_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.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="integer_endian_pack_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_integer_endian.reference.binary_stream_hpp"></a><a href="binary_stream_hpp.html" title="
+ Header <boost/binary_stream.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">binary_stream</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<p>
+ Header <boost/binary_stream.hpp> provides operators <code class="computeroutput"><span class="special"><=</span></code>
+ and <code class="computeroutput"><span class="special">=></span></code> for unformatted binary
+ (as opposed to formatted character) stream insertion and extraction of built-in
+ and std::string types.
+ </p>
+<a name="toward_boost_integer_endian.reference.binary_stream_hpp.synopsis"></a><h4>
+<a name="id4820014"></a>
+ Synopsis
+ </h4>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span>
+<span class="special">{</span>
+
+ <span class="comment">// built-in types ------------------------------------------------------------------//
+</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special"><=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="identifier">os</span><span class="special">,</span> <span class="keyword">short</span> <span class="identifier">v</span><span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">>=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="identifier">is</span><span class="special">,</span> <span class="keyword">short</span><span class="special">&</span> <span class="identifier">v</span><span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special"><=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="identifier">os</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="keyword">short</span> <span class="identifier">v</span><span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">>=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="identifier">is</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="keyword">short</span><span class="special">&</span> <span class="identifier">v</span><span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special"><=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="identifier">os</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">v</span><span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">>=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="identifier">is</span><span class="special">,</span> <span class="keyword">int</span><span class="special">&</span> <span class="identifier">v</span><span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special"><=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="identifier">os</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="keyword">int</span> <span class="identifier">v</span><span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">>=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="identifier">is</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="keyword">int</span><span class="special">&</span> <span class="identifier">v</span><span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special"><=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="identifier">os</span><span class="special">,</span> <span class="keyword">long</span> <span class="identifier">v</span><span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">>=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="identifier">is</span><span class="special">,</span> <span class="keyword">long</span><span class="special">&</span> <span class="identifier">v</span><span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special"><=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="identifier">os</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="keyword">long</span> <span class="identifier">v</span><span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">>=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="identifier">is</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="keyword">long</span><span class="special">&</span> <span class="identifier">v</span><span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special"><=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="identifier">os</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">long</span> <span class="identifier">v</span><span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">>=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="identifier">is</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">long</span><span class="special">&</span> <span class="identifier">v</span><span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special"><=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="identifier">os</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="keyword">long</span> <span class="keyword">long</span> <span class="identifier">v</span><span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">>=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="identifier">is</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="keyword">long</span> <span class="keyword">long</span><span class="special">&</span> <span class="identifier">v</span><span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special"><=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="identifier">os</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">v</span><span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">>=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="identifier">is</span><span class="special">,</span> <span class="keyword">float</span><span class="special">&</span> <span class="identifier">v</span><span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special"><=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="identifier">os</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">v</span><span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">>=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="identifier">is</span><span class="special">,</span> <span class="keyword">double</span><span class="special">&</span> <span class="identifier">v</span><span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special"><=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="identifier">os</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">v</span><span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">>=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="identifier">is</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span><span class="special">&</span> <span class="identifier">v</span><span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special"><=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="identifier">os</span><span class="special">,</span> <span class="keyword">char</span> <span class="identifier">c</span><span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">>=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="identifier">is</span><span class="special">,</span> <span class="keyword">char</span><span class="special">&</span> <span class="identifier">c</span><span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special"><=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="identifier">os</span><span class="special">,</span> <span class="keyword">signed</span> <span class="keyword">char</span> <span class="identifier">c</span><span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">>=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="identifier">is</span><span class="special">,</span> <span class="keyword">signed</span> <span class="keyword">char</span><span class="special">&</span> <span class="identifier">c</span><span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special"><=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="identifier">os</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="keyword">char</span> <span class="identifier">c</span><span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">>=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="identifier">is</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="keyword">char</span><span class="special">&</span> <span class="identifier">c</span><span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special"><=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="identifier">os</span><span class="special">,</span> <span class="keyword">wchar_t</span> <span class="identifier">v</span><span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">>=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="identifier">is</span><span class="special">,</span> <span class="keyword">wchar_t</span><span class="special">&</span> <span class="identifier">v</span><span class="special">);</span>
+
+ <span class="comment">// strings -------------------------------------------------------------------------//
+</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special"><=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="identifier">os</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">p</span><span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special"><=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="identifier">os</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">signed</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">p</span><span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special"><=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="identifier">os</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">unsigned</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">p</span><span class="special">);</span>
+
+<span class="preprocessor">#ifndef</span> <span class="identifier">BOOST_NO_CWCHAR</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special"><=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="identifier">os</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">wchar_t</span><span class="special">*</span> <span class="identifier">p</span><span class="special">);</span>
+<span class="preprocessor">#endif</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special"><=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="identifier">os</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">&</span> <span class="identifier">s</span><span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">>=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="identifier">is</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">&</span> <span class="identifier">s</span><span class="special">);</span>
+
+<span class="preprocessor">#ifndef</span> <span class="identifier">BOOST_NO_STD_WSTRING</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special"><=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="identifier">os</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">wstring</span><span class="special">&</span> <span class="identifier">s</span><span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">>=(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span> <span class="identifier">is</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">wstring</span><span class="special">&</span> <span class="identifier">s</span><span class="special">);</span>
+<span class="preprocessor">#endif</span>
+
+<span class="special">}</span> <span class="comment">// namespace boost
+</span></pre>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<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>
+ Omission of bool and void* is deliberate; any semantics would be questionable
+ </p></td></tr>
+</table></div>
+<div class="warning"><table border="0" summary="Warning">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="../../../../../../doc/html/images/warning.png"></td>
+<th align="left">Warning</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ Note the asymmetry between output and input; a string with embedded nulls
+ will be output with the embedded nulls, but input will stop at the first
+ null. So it probably isn't a good idea to use these functions for strings
+ with nulls.
+ </p></td></tr>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006 -2009 Beman Dawes<br>Copyright © 2010 Vicente J. Botet Escriba<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="endian_domain_map_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.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="integer_endian_pack_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/reference/endian_domain_map_hpp.html
==============================================================================
--- (empty file)
+++ sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/reference/endian_domain_map_hpp.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -0,0 +1,96 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>
+ Header <boost/endian/domain_map.hpp></title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../../index.html" title="Toward Boost.Integer.Endian">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="integer_endianness_hpp.html" title="
+ Header <boost/integer/endiannes.hpp>">
+<link rel="next" href="binary_stream_hpp.html" title="
+ Header <boost/binary_stream.hpp>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<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="integer_endianness_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.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="binary_stream_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_integer_endian.reference.endian_domain_map_hpp"></a><a href="endian_domain_map_hpp.html" title="
+ Header <boost/endian/domain_map.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">endian</span><span class="special">/</span><span class="identifier">domain_map</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="toc"><dl><dt><span class="section"><a href="endian_domain_map_hpp.html#toward_boost_integer_endian.reference.endian_domain_map_hpp.domain_map">
+ Meta Function <code class="computeroutput"><span class="identifier">domain_map</span><span class="special"><></span></code></a></span></dt></dl></div>
+<a name="toward_boost_integer_endian.reference.endian_domain_map_hpp.synopsis"></a><h4>
+<a name="id4819462"></a>
+ Synopsis
+ </h4>
+<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">endian</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Domain</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">domain_map</span><span class="special">;</span>
+<span class="special">}}</span>
+</pre>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_integer_endian.reference.endian_domain_map_hpp.domain_map"></a><a href="endian_domain_map_hpp.html#toward_boost_integer_endian.reference.endian_domain_map_hpp.domain_map" title="
+ Meta Function domain_map<>">
+ Meta Function <code class="computeroutput"><span class="identifier">domain_map</span><span class="special"><></span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Domain</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">domain_map</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="special"><</span><span class="identifier">see</span> <span class="identifier">below</span><span class="special">></span> <span class="identifier">type</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<div class="itemizedlist"><ul type="disc">
+<li>
+<span class="bold"><strong>Requires:</strong></span><div class="itemizedlist"><ul type="circle"><li>
+<code class="computeroutput"><span class="identifier">Domain</span></code> any class.
+ Can be also <code class="computeroutput"><span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span></code>
+ or <code class="computeroutput"><span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span></code>.
+ </li></ul></div>
+</li>
+<li>
+<span class="bold"><strong>Result:</strong></span> The member typedef <code class="computeroutput"><span class="identifier">type</span></code> names a mpl tree of sequence of
+ <code class="computeroutput"><span class="identifier">endianness</span></code> types as view
+ from the point of view of the <code class="computeroutput"><span class="identifier">Domain</span></code>.
+ The default definition is a mpl tree having as leaves the <code class="computeroutput"><span class="identifier">Domain</span></code> class for <code class="computeroutput"><span class="identifier">T</span></code>
+ fundamental types, and fusion sequences.
+ </li>
+<li><span class="bold"><strong>Example:</strong></span></li>
+</ul></div>
+<pre class="programlisting"><span class="identifier">is_same</span><span class="special"><</span><span class="identifier">domain_map</span><span class="special"><</span><span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="keyword">int</span><span class="special">>::</span><span class="identifier">type</span><span class="special">,</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">>::</span><span class="identifier">value</span> <span class="special">==</span> <span class="keyword">true</span>
+
+<span class="keyword">struct</span> <span class="identifier">ifA</span> <span class="special">{};</span>
+</pre>
+<p>
+ The user needs to specialize this metafunction for specific domains.
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006 -2009 Beman Dawes<br>Copyright © 2010 Vicente J. Botet Escriba<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="integer_endianness_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.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="binary_stream_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/reference/endian_endian_hpp.html
==============================================================================
--- (empty file)
+++ sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/reference/endian_endian_hpp.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -0,0 +1,142 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>
+ Header <boost/endian/endian.hpp></title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../../index.html" title="Toward Boost.Integer.Endian">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="alignment_hpp.html" title="
+ Header <boost/alignment.hpp>">
+<link rel="next" href="endian_domain_map_hpp.html" title="
+ Header <boost/endian/domain_map.hpp>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<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="alignment_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.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="endian_domain_map_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_integer_endian.reference.endian_endian_hpp"></a><a href="endian_endian_hpp.html" title="
+ Header <boost/endian/endian.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">endian</span><span class="special">/</span><span class="identifier">endian</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="endian_endian_hpp.html#toward_boost_integer_endian.reference.endian_endian_hpp.endian_endianness">
+ Enum Class <code class="computeroutput"><span class="identifier">endianness</span></code></a></span></dt>
+<dt><span class="section"><a href="endian_endian_hpp.html#toward_boost_integer_endian.reference.endian_endian_hpp.endian_big">
+ Class <code class="computeroutput"><span class="identifier">big</span></code></a></span></dt>
+<dt><span class="section"><a href="endian_endian_hpp.html#toward_boost_integer_endian.reference.endian_endian_hpp.endian_little">
+ Class <code class="computeroutput"><span class="identifier">little</span></code></a></span></dt>
+<dt><span class="section"><a href="endian_endian_hpp.html#toward_boost_integer_endian.reference.endian_endian_hpp.endian_middle">
+ Class <code class="computeroutput"><span class="identifier">middle</span></code></a></span></dt>
+<dt><span class="section"><a href="endian_endian_hpp.html#toward_boost_integer_endian.reference.endian_endian_hpp.endian_mixed">
+ Class <code class="computeroutput"><span class="identifier">mixed</span></code></a></span></dt>
+<dt><span class="section"><a href="endian_endian_hpp.html#toward_boost_integer_endian.reference.endian_endian_hpp.endian_native">
+ Class <code class="computeroutput"><span class="identifier">native</span></code></a></span></dt>
+</dl></div>
+<a name="toward_boost_integer_endian.reference.endian_endian_hpp.synopsis"></a><h4>
+<a name="id4759575"></a>
+ Synopsis
+ </h4>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span>
+<span class="special">{</span>
+ <span class="comment">// scoped enum emulated on C++03
+</span> <span class="keyword">enum</span> <span class="keyword">class</span> <span class="identifier">endianness</span> <span class="special">{</span> <span class="identifier">big</span><span class="special">,</span> <span class="identifier">little</span><span class="special">,</span> <span class="identifier">middle</span><span class="special">,</span> <span class="identifier">mixed</span><span class="special">,</span> <span class="identifier">native</span><span class="special">=<</span><span class="identifier">platform</span> <span class="identifier">dependent</span><span class="special">></span> <span class="special">};</span>
+
+ <span class="keyword">namespace</span> <span class="identifier">endian</span> <span class="special">{</span>
+ <span class="keyword">struct</span> <span class="identifier">big</span><span class="special">;</span>
+ <span class="keyword">struct</span> <span class="identifier">little</span><span class="special">;</span>
+ <span class="keyword">struct</span> <span class="identifier">middle</span><span class="special">;</span>
+ <span class="keyword">struct</span> <span class="identifier">mixed</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="special"><</span><span class="identifier">platform</span> <span class="identifier">dependent</span><span class="special">></span> <span class="identifier">native</span> <span class="special">;</span>
+ <span class="special">}</span>
+<span class="special">}</span>
+</pre>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_integer_endian.reference.endian_endian_hpp.endian_endianness"></a><a href="endian_endian_hpp.html#toward_boost_integer_endian.reference.endian_endian_hpp.endian_endianness" title="
+ Enum Class endianness">
+ Enum Class <code class="computeroutput"><span class="identifier">endianness</span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">enum</span> <span class="keyword">class</span> <span class="identifier">endianness</span> <span class="special">{</span> <span class="identifier">big</span><span class="special">,</span> <span class="identifier">little</span><span class="special">,</span> <span class="identifier">middle</span><span class="special">,</span> <span class="identifier">mixed</span><span class="special">,</span> <span class="identifier">native</span><span class="special">=<</span><span class="identifier">platform</span> <span class="identifier">dependent</span><span class="special">></span> <span class="special">};</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_integer_endian.reference.endian_endian_hpp.endian_big"></a><a href="endian_endian_hpp.html#toward_boost_integer_endian.reference.endian_endian_hpp.endian_big" title="
+ Class big">
+ Class <code class="computeroutput"><span class="identifier">big</span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">big</span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">const</span> <span class="identifier">endianness</span> <span class="identifier">value</span><span class="special">=</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_integer_endian.reference.endian_endian_hpp.endian_little"></a><a href="endian_endian_hpp.html#toward_boost_integer_endian.reference.endian_endian_hpp.endian_little" title="
+ Class little">
+ Class <code class="computeroutput"><span class="identifier">little</span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">little</span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">const</span> <span class="identifier">endianness</span> <span class="identifier">value</span><span class="special">=</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_integer_endian.reference.endian_endian_hpp.endian_middle"></a><a href="endian_endian_hpp.html#toward_boost_integer_endian.reference.endian_endian_hpp.endian_middle" title="
+ Class middle">
+ Class <code class="computeroutput"><span class="identifier">middle</span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">middle</span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">const</span> <span class="identifier">endianness</span> <span class="identifier">value</span><span class="special">=</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">middle</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_integer_endian.reference.endian_endian_hpp.endian_mixed"></a><a href="endian_endian_hpp.html#toward_boost_integer_endian.reference.endian_endian_hpp.endian_mixed" title="
+ Class mixed">
+ Class <code class="computeroutput"><span class="identifier">mixed</span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">mixed</span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">const</span> <span class="identifier">endianness</span> <span class="identifier">value</span><span class="special">=</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">mixed</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_integer_endian.reference.endian_endian_hpp.endian_native"></a><a href="endian_endian_hpp.html#toward_boost_integer_endian.reference.endian_endian_hpp.endian_native" title="
+ Class native">
+ Class <code class="computeroutput"><span class="identifier">native</span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="special"><</span><span class="identifier">platform</span> <span class="identifier">dependent</span><span class="special">></span> <span class="identifier">native</span> <span class="special">;</span>
+</pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006 -2009 Beman Dawes<br>Copyright © 2010 Vicente J. Botet Escriba<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="alignment_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.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="endian_domain_map_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/reference/integer_endian_binary_stream_hpp.html
==============================================================================
--- (empty file)
+++ sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/reference/integer_endian_binary_stream_hpp.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -0,0 +1,79 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>
+ Header <boost/integer/endian_binary_stream.hpp></title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../../index.html" title="Toward Boost.Integer.Endian">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="integer_endian_hpp.html" title="
+ Header <boost/integer/endian.hpp>">
+<link rel="next" href="integer_endian_type_hpp.html" title="
+ Header <boost/integer/endian_type.hpp>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<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="integer_endian_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.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="integer_endian_type_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_integer_endian.reference.integer_endian_binary_stream_hpp"></a><a href="integer_endian_binary_stream_hpp.html" title="
+ Header <boost/integer/endian_binary_stream.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">integer</span><span class="special">/</span><span class="identifier">endian_binary_stream</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<p>
+ Header <boost/integer/endian_binary_stream.hpp> provides operators
+ <code class="computeroutput"><span class="special"><=</span></code> and <code class="computeroutput"><span class="special">=></span></code>
+ for unformatted binary (as opposed to formatted character) stream insertion
+ and extraction of endian types.
+ </p>
+<a name="toward_boost_integer_endian.reference.integer_endian_binary_stream_hpp.synopsis"></a><h4>
+<a name="id4831692"></a>
+ Synopsis
+ </h4>
+<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">integer</span>
+ <span class="special">{</span>
+ <span class="keyword">template</span><span class="special"><</span> <span class="keyword">class</span> <span class="identifier">T</span> <span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">is_endian</span> <span class="special">{</span> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keyword">bool</span> <span class="identifier">value</span> <span class="special">=</span> <span class="keyword">false</span><span class="special">;</span> <span class="special">};</span>
+ <span class="keyword">template</span><span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">E</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">n_bits</span><span class="special">,</span> <span class="identifier">alignment</span> <span class="identifier">A</span> <span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">is_endian</span><span class="special"><</span><span class="identifier">endian_pack</span><span class="special"><</span><span class="identifier">E</span><span class="special">,</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">n_bits</span><span class="special">,</span><span class="identifier">A</span><span class="special">></span> <span class="special">{</span> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keyword">bool</span> <span class="identifier">value</span> <span class="special">=</span> <span class="keyword">true</span><span class="special">;</span> <span class="special">};</span>
+ <span class="keyword">template</span><span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">E</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">n_bits</span><span class="special">,</span> <span class="identifier">alignment</span> <span class="identifier">A</span> <span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">is_endian</span><span class="special"><</span><span class="identifier">endian</span><span class="special"><</span><span class="identifier">E</span><span class="special">,</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">n_bits</span><span class="special">,</span><span class="identifier">A</span><span class="special">></span> <span class="special">{</span> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keyword">bool</span> <span class="identifier">value</span> <span class="special">=</span> <span class="keyword">true</span><span class="special">;</span> <span class="special">};</span>
+
+ <span class="keyword">template</span> <span class="special"><</span> <span class="keyword">class</span> <span class="identifier">Endian</span> <span class="special">></span>
+ <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span><span class="special"><</span> <span class="identifier">is_endian</span><span class="special"><</span><span class="identifier">Endian</span><span class="special">>,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span> <span class="special">&</span> <span class="special">>::</span><span class="identifier">type</span>
+ <span class="keyword">operator</span><span class="special"><=(</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span> <span class="special">&</span> <span class="identifier">os</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">Endian</span> <span class="special">&</span> <span class="identifier">e</span> <span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span> <span class="keyword">class</span> <span class="identifier">Endian</span> <span class="special">></span>
+ <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span><span class="special"><</span> <span class="identifier">is_endian</span><span class="special"><</span><span class="identifier">Endian</span><span class="special">>,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span> <span class="special">&</span> <span class="special">>::</span><span class="identifier">type</span>
+ <span class="keyword">operator</span><span class="special">>=(</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span> <span class="special">&</span> <span class="identifier">is</span><span class="special">,</span> <span class="identifier">Endian</span> <span class="special">&</span> <span class="identifier">e</span> <span class="special">);</span>
+ <span class="special">}</span>
+<span class="special">}</span>
+</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006 -2009 Beman Dawes<br>Copyright © 2010 Vicente J. Botet Escriba<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="integer_endian_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.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="integer_endian_type_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/reference/integer_endian_conversion_hpp.html
==============================================================================
--- (empty file)
+++ sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/reference/integer_endian_conversion_hpp.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -0,0 +1,181 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>
+ Header <boost/integer/endian_conversion.hpp></title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../../index.html" title="Toward Boost.Integer.Endian">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="integer_endian_view_hpp.html" title="
+ Header <boost/integer/endian_view.hpp>">
+<link rel="next" href="../examples.html" title="Examples">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<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="integer_endian_view_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.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="../examples.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_integer_endian.reference.integer_endian_conversion_hpp"></a><a href="integer_endian_conversion_hpp.html" title="
+ Header <boost/integer/endian_conversion.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">integer</span><span class="special">/</span><span class="identifier">endian_conversion</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="integer_endian_conversion_hpp.html#toward_boost_integer_endian.reference.integer_endian_conversion_hpp.convert_to_from">
+ Non-Member Function Template <code class="computeroutput"><span class="identifier">convert_to_from</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="integer_endian_conversion_hpp.html#toward_boost_integer_endian.reference.integer_endian_conversion_hpp.convert_from">
+ Non-Member Function Template <code class="computeroutput"><span class="identifier">convert_from</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="integer_endian_conversion_hpp.html#toward_boost_integer_endian.reference.integer_endian_conversion_hpp.convert_to">
+ Non-Member Function Template <code class="computeroutput"><span class="identifier">convert_to</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="integer_endian_conversion_hpp.html#toward_boost_integer_endian.reference.integer_endian_conversion_hpp.to">
+ Class Template <code class="computeroutput"><span class="identifier">to</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="integer_endian_conversion_hpp.html#toward_boost_integer_endian.reference.integer_endian_conversion_hpp.from">
+ Class Template <code class="computeroutput"><span class="identifier">from</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="integer_endian_conversion_hpp.html#toward_boost_integer_endian.reference.integer_endian_conversion_hpp.is_to">
+ Class Template <code class="computeroutput"><span class="identifier">is_to</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="integer_endian_conversion_hpp.html#toward_boost_integer_endian.reference.integer_endian_conversion_hpp.is_from">
+ Class Template <code class="computeroutput"><span class="identifier">is_from</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="integer_endian_conversion_hpp.html#toward_boost_integer_endian.reference.integer_endian_conversion_hpp.convert">
+ Non-Member Function Template <code class="computeroutput"><span class="identifier">convert</span><span class="special"><></span></code></a></span></dt>
+</dl></div>
+<a name="toward_boost_integer_endian.reference.integer_endian_conversion_hpp.synopsis"></a><h4>
+<a name="id4834696"></a>
+ Synopsis
+ </h4>
+<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">integer</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">TargetDomain</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">SourceDomain</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="keyword">void</span> <span class="identifier">convert_to_from</span><span class="special">(</span><span class="identifier">T</span><span class="special">&</span> <span class="identifier">r</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">SourceDomain</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="keyword">void</span> <span class="identifier">convert_from</span><span class="special">(</span><span class="identifier">T</span><span class="special">&</span> <span class="identifier">r</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">TargetDomain</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="keyword">void</span> <span class="identifier">convert_to</span><span class="special">(</span><span class="identifier">T</span><span class="special">&</span> <span class="identifier">r</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Endian</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">to</span><span class="special">;</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Endian</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">from</span><span class="special">;</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Endian</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">is_to</span><span class="special">;</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Endian</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">is_from</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Endian1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Endian2</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="keyword">void</span> <span class="identifier">convert</span><span class="special">(</span><span class="identifier">T</span><span class="special">&</span> <span class="identifier">r</span><span class="special">);</span>
+
+
+<span class="special">}</span> <span class="comment">// namespace integer
+</span><span class="special">}</span> <span class="comment">// namespace boost
+</span></pre>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_integer_endian.reference.integer_endian_conversion_hpp.convert_to_from"></a><a href="integer_endian_conversion_hpp.html#toward_boost_integer_endian.reference.integer_endian_conversion_hpp.convert_to_from" title="
+ Non-Member Function Template convert_to_from<>">
+ Non-Member Function Template <code class="computeroutput"><span class="identifier">convert_to_from</span><span class="special"><></span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">TargetDomain</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">SourceDomain</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">convert_to_from</span><span class="special">(</span><span class="identifier">T</span><span class="special">&</span> <span class="identifier">r</span><span class="special">);</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_integer_endian.reference.integer_endian_conversion_hpp.convert_from"></a><a href="integer_endian_conversion_hpp.html#toward_boost_integer_endian.reference.integer_endian_conversion_hpp.convert_from" title="
+ Non-Member Function Template convert_from<>">
+ Non-Member Function Template <code class="computeroutput"><span class="identifier">convert_from</span><span class="special"><></span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">SourceDomain</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">convert_from</span><span class="special">(</span><span class="identifier">T</span><span class="special">&</span> <span class="identifier">r</span><span class="special">);</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_integer_endian.reference.integer_endian_conversion_hpp.convert_to"></a><a href="integer_endian_conversion_hpp.html#toward_boost_integer_endian.reference.integer_endian_conversion_hpp.convert_to" title="
+ Non-Member Function Template convert_to<>">
+ Non-Member Function Template <code class="computeroutput"><span class="identifier">convert_to</span><span class="special"><></span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">TargetDomain</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">convert_to</span><span class="special">(</span><span class="identifier">T</span><span class="special">&</span> <span class="identifier">r</span><span class="special">);</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_integer_endian.reference.integer_endian_conversion_hpp.to"></a><a href="integer_endian_conversion_hpp.html#toward_boost_integer_endian.reference.integer_endian_conversion_hpp.to" title="
+ Class Template to<>">
+ Class Template <code class="computeroutput"><span class="identifier">to</span><span class="special"><></span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Endian</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">to</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">Endian</span> <span class="identifier">type</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_integer_endian.reference.integer_endian_conversion_hpp.from"></a><a href="integer_endian_conversion_hpp.html#toward_boost_integer_endian.reference.integer_endian_conversion_hpp.from" title="
+ Class Template from<>">
+ Class Template <code class="computeroutput"><span class="identifier">from</span><span class="special"><></span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Endian</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">from</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">Endian</span> <span class="identifier">type</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_integer_endian.reference.integer_endian_conversion_hpp.is_to"></a><a href="integer_endian_conversion_hpp.html#toward_boost_integer_endian.reference.integer_endian_conversion_hpp.is_to" title="
+ Class Template is_to<>">
+ Class Template <code class="computeroutput"><span class="identifier">is_to</span><span class="special"><></span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Endian</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">is_to</span> <span class="special">:</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span> <span class="special">{};</span>
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Endian</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">is_to</span><span class="special"><</span> <span class="identifier">to</span><span class="special"><</span><span class="identifier">Endian</span><span class="special">></span> <span class="special">></span> <span class="special">:</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span> <span class="special">{};</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_integer_endian.reference.integer_endian_conversion_hpp.is_from"></a><a href="integer_endian_conversion_hpp.html#toward_boost_integer_endian.reference.integer_endian_conversion_hpp.is_from" title="
+ Class Template is_from<>">
+ Class Template <code class="computeroutput"><span class="identifier">is_from</span><span class="special"><></span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Endian</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">is_from</span> <span class="special">:</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span> <span class="special">{};</span>
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Endian</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">is_from</span><span class="special"><</span> <span class="identifier">from</span><span class="special"><</span><span class="identifier">Endian</span><span class="special">></span> <span class="special">></span> <span class="special">:</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span> <span class="special">{};</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_integer_endian.reference.integer_endian_conversion_hpp.convert"></a><a href="integer_endian_conversion_hpp.html#toward_boost_integer_endian.reference.integer_endian_conversion_hpp.convert" title="
+ Non-Member Function Template convert<>">
+ Non-Member Function Template <code class="computeroutput"><span class="identifier">convert</span><span class="special"><></span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Endian1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Endian2</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">convert</span><span class="special">(</span><span class="identifier">T</span><span class="special">&</span> <span class="identifier">r</span><span class="special">);</span>
+</pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006 -2009 Beman Dawes<br>Copyright © 2010 Vicente J. Botet Escriba<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="integer_endian_view_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.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="../examples.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/reference/integer_endian_hpp.html
==============================================================================
--- (empty file)
+++ sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/reference/integer_endian_hpp.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -0,0 +1,744 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>
+ Header <boost/integer/endian.hpp></title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../../index.html" title="Toward Boost.Integer.Endian">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="integer_endian_pack_hpp.html" title="
+ Header <boost/integer/endian_pack.hpp>">
+<link rel="next" href="integer_endian_binary_stream_hpp.html" title="
+ Header <boost/integer/endian_binary_stream.hpp>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<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="integer_endian_pack_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.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="integer_endian_binary_stream_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_integer_endian.reference.integer_endian_hpp"></a><a href="integer_endian_hpp.html" title="
+ Header <boost/integer/endian.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">integer</span><span class="special">/</span><span class="identifier">endian</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="integer_endian_hpp.html#toward_boost_integer_endian.reference.integer_endian_hpp.endian">
+ Template class <code class="computeroutput"><span class="identifier">endian</span><span class="special"><></span></code></a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="integer_endian_hpp.html#toward_boost_integer_endian.reference.integer_endian_hpp.endian.endian">
+ Default Contructor <code class="computeroutput"><span class="identifier">endian</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="integer_endian_hpp.html#toward_boost_integer_endian.reference.integer_endian_hpp.endian.endianT">
+ Contructor from value_type <code class="computeroutput"><span class="identifier">endian</span><span class="special">(</span><span class="identifier">T</span><span class="special">)</span></code></a></span></dt>
+<dt><span class="section"><a href="integer_endian_hpp.html#toward_boost_integer_endian.reference.integer_endian_hpp.endian.assignment">
+ Assignment Operator from value_type <code class="computeroutput"><span class="keyword">operator</span><span class="special">=(</span><span class="identifier">T</span><span class="special">)</span></code></a></span></dt>
+<dt><span class="section"><a href="integer_endian_hpp.html#toward_boost_integer_endian.reference.integer_endian_hpp.endian.conversion">
+ Conversion Operator <code class="computeroutput"><span class="keyword">operator</span> <span class="identifier">T</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="integer_endian_hpp.html#toward_boost_integer_endian.reference.integer_endian_hpp.endian.data">
+ Member Function <code class="computeroutput"><span class="identifier">data</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="integer_endian_hpp.html#toward_boost_integer_endian.reference.integer_endian_hpp.endian.other">
+ Other operators </a></span></dt>
+</dl></dd>
+</dl></div>
+<p>
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">integer</span><span class="special">/</span><span class="identifier">endian</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>
+ provides integer-like byte-holder binary types with explicit control over
+ byte order, value type, size, and alignment. Typedefs provide easy-to-use
+ names for common configurations.
+ </p>
+<p>
+ Boost endian integers are based on the byte_holder endian_pack class template
+ and provide in addition the same full set of C++ assignment, arithmetic,
+ and relational operators as C++ standard integral types, with the standard
+ semantics.
+ </p>
+<p>
+ Unary arithmetic operators are <code class="computeroutput"><span class="special">+</span></code>,
+ <code class="computeroutput"><span class="special">-</span></code>, <code class="computeroutput"><span class="special">~</span></code>,
+ <code class="computeroutput"><span class="special">!</span></code>, prefix and postfix <code class="computeroutput"><span class="special">--</span></code> and <code class="computeroutput"><span class="special">++</span></code>.
+ Binary arithmetic operators are <code class="computeroutput"><span class="special">+</span></code>,
+ <code class="computeroutput"><span class="special">+=</span></code>, <code class="computeroutput"><span class="special">-</span></code>,
+ <code class="computeroutput"><span class="special">-=</span></code>, <code class="computeroutput"><span class="special">*</span></code>,
+ <code class="computeroutput"><span class="special">*=</span></code>, <code class="computeroutput"><span class="special">/</span></code>,
+ <code class="computeroutput"><span class="special">/=</span></code>, <code class="computeroutput"><span class="special">%</span></code>,
+ <code class="computeroutput"><span class="special">%=</span></code>, <code class="computeroutput"><span class="special">&</span></code>,
+ <code class="computeroutput"><span class="special">&=</span></code>, <code class="computeroutput"><span class="special">|</span></code>,
+ <code class="computeroutput"><span class="special">|=</span></code>, <code class="computeroutput"><span class="special">^</span></code>,
+ <code class="computeroutput"><span class="special">^=</span></code>, <code class="computeroutput"><span class="special"><<</span></code>,
+ <code class="computeroutput"><span class="special"><<=</span></code>, <code class="computeroutput"><span class="special">>></span></code>,
+ <code class="computeroutput"><span class="special">>>=</span></code>. Binary relational
+ operators are <code class="computeroutput"><span class="special">==</span></code>, <code class="computeroutput"><span class="special">!=</span></code>, <code class="computeroutput"><span class="special"><</span></code>,
+ <code class="computeroutput"><span class="special"><=</span></code>, <code class="computeroutput"><span class="special">></span></code>,
+ <code class="computeroutput"><span class="special">>=</span></code>.
+ </p>
+<p>
+ Automatic conversion is provided to the underlying integer value type.
+ </p>
+<a name="toward_boost_integer_endian.reference.integer_endian_hpp.typedefs"></a><h4>
+<a name="id4823459"></a>
+ Typedefs
+ </h4>
+<p>
+ One class template is provided:
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="identifier">endianness</span><span class="special">::</span><span class="identifier">enum_t</span> <span class="identifier">E</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">n_bytes</span><span class="special">=</span><span class="number">8</span><span class="special">*</span><span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">T</span><span class="special">),</span>
+ <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">enum_t</span> <span class="identifier">A</span> <span class="special">=</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">aligned</span><span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">endian</span><span class="special">;</span>
+</pre>
+<p>
+ Sixty typedefs, such as big32_t, provide convenient naming conventions for
+ common use cases:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Endianness
+ </p>
+ </th>
+<th>
+ <p>
+ Sign
+ </p>
+ </th>
+<th>
+ <p>
+ Sizes in bits (n)
+ </p>
+ </th>
+<th>
+ <p>
+ Alignment
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">int_big</span></code><span class="bold"><strong>n</strong></span><code class="computeroutput"><span class="identifier">_t</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">big</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ signed
+ </p>
+ </td>
+<td>
+ <p>
+ 8,16,24,32,40,48,56,64
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">unaligned</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">uint_big</span></code><span class="bold"><strong>n</strong></span><code class="computeroutput"><span class="identifier">_t</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">big</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ unsigned
+ </p>
+ </td>
+<td>
+ <p>
+ 8,16,24,32,40,48,56,64
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">unaligned</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">int_little</span></code><span class="bold"><strong>n</strong></span><code class="computeroutput"><span class="identifier">_t</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">little</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ signed
+ </p>
+ </td>
+<td>
+ <p>
+ 8,16,24,32,40,48,56,64
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">unaligned</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">uint_little</span></code><span class="bold"><strong>n</strong></span><code class="computeroutput"><span class="identifier">_t</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">little</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ unsigned
+ </p>
+ </td>
+<td>
+ <p>
+ 8,16,24,32,40,48,56,64
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">unaligned</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">uint_little</span></code><span class="bold"><strong>n</strong></span><code class="computeroutput"><span class="identifier">_t</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">native</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ signed
+ </p>
+ </td>
+<td>
+ <p>
+ 8,16,24,32,40,48,56,64
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">unaligned</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">uint_native</span></code><span class="bold"><strong>n</strong></span><code class="computeroutput"><span class="identifier">_t</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">native</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ unsigned
+ </p>
+ </td>
+<td>
+ <p>
+ 16,32,64
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">aligned</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">aligned_int_big</span></code><span class="bold"><strong>n</strong></span><code class="computeroutput"><span class="identifier">_t</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">big</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ signed
+ </p>
+ </td>
+<td>
+ <p>
+ 16,32,64
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">aligned</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">aligned_uint_big</span></code><span class="bold"><strong>n</strong></span><code class="computeroutput"><span class="identifier">_t</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">big</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ unsigned
+ </p>
+ </td>
+<td>
+ <p>
+ 16,32,64
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">aligned</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">aligned_int_little</span></code><span class="bold"><strong>n</strong></span><code class="computeroutput"><span class="identifier">_t</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">little</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ signed
+ </p>
+ </td>
+<td>
+ <p>
+ 16,32,64
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">aligned</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">aligned_uint_little</span></code><span class="bold"><strong>n</strong></span><code class="computeroutput"><span class="identifier">_t</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">little</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ unsigned
+ </p>
+ </td>
+<td>
+ <p>
+ 16,32,64
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">aligned</span></code>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+ The unaligned types do not cause compilers to insert padding bytes in classes
+ and structs. This is an important characteristic that can be exploited to
+ minimize wasted space in memory, files, and network transmissions.
+ </p>
+<div class="warning"><table border="0" summary="Warning">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="../../../../../../doc/html/images/warning.png"></td>
+<th align="left">Warning</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ Code that uses aligned types is inherently non-portable because alignment
+ requirements vary between hardware architectures and because alignment
+ may be affected by compiler switches or pragmas. Furthermore, aligned types
+ are only available on architectures with 16, 32, and 64-bit integer types.
+ </p></td></tr>
+</table></div>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../doc/html/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ One-byte big-endian, little-endian, and native-endian types provide identical
+ functionality. All three names are provided to improve code readability
+ and searchability.
+ </p></td></tr>
+</table></div>
+<a name="toward_boost_integer_endian.reference.integer_endian_hpp.comment_on_naming"></a><h4>
+<a name="id4824552"></a>
+ <a href="integer_endian_hpp.html#toward_boost_integer_endian.reference.integer_endian_hpp.comment_on_naming">Comment
+ on naming</a>
+ </h4>
+<p>
+ When first exposed to endian types, programmers often fit them into a mental
+ model based on the <cstdint> types. Using that model, it is natural
+ to expect a 56-bit big-endian signed integer to be named <code class="computeroutput"><span class="identifier">int_big56_t</span></code>
+ rather than <code class="computeroutput"><span class="identifier">big56_t</span></code>.
+ </p>
+<p>
+ As experience using these types grows, the realization creeps in that they
+ are lousy arithmetic integers - they are really byte holders that for convenience
+ support arithmetic operations - and that for use in internal interfaces or
+ anything more than trivial arithmetic computations it is far better to convert
+ values of these endian types to traditional integer types.
+ </p>
+<p>
+ That seems to lead to formation of a new mental model specific to endian
+ byte-holder types. In that model, the endianness is the key feature, and
+ the integer aspect is downplayed. Once that mental transition is made, a
+ name like <code class="computeroutput"><span class="identifier">big56_t</span></code> is a good
+ reflection of the mental model.
+ </p>
+<a name="toward_boost_integer_endian.reference.integer_endian_hpp.synopsis"></a><h4>
+<a name="id4824633"></a>
+ Synopsis
+ </h4>
+<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">integer</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">E</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">n_bits</span><span class="special">,</span>
+ <span class="identifier">alignment</span> <span class="identifier">A</span> <span class="special">=</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span><span class="special">></span>
+ <span class="keyword">class</span> <span class="identifier">endian</span><span class="special">;</span>
+
+ <span class="comment">// unaligned big endian signed integer types
+</span> <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">int_least8_t</span><span class="special">,</span> <span class="number">8</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">big8_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">int_least16_t</span><span class="special">,</span> <span class="number">16</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">big16_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">int_least32_t</span><span class="special">,</span> <span class="number">24</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">big24_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">int_least32_t</span><span class="special">,</span> <span class="number">32</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">big32_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">int_least64_t</span><span class="special">,</span> <span class="number">40</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">big40_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">int_least64_t</span><span class="special">,</span> <span class="number">48</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">big48_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">int_least64_t</span><span class="special">,</span> <span class="number">56</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">big56_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">int_least64_t</span><span class="special">,</span> <span class="number">64</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">big64_t</span><span class="special">;</span>
+
+ <span class="comment">// unaligned big endian unsigned integer types
+</span> <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">uint_least8_t</span><span class="special">,</span> <span class="number">8</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">ubig8_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">uint_least16_t</span><span class="special">,</span> <span class="number">16</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">ubig16_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">uint_least32_t</span><span class="special">,</span> <span class="number">24</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">ubig24_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">uint_least32_t</span><span class="special">,</span> <span class="number">32</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">ubig32_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">uint_least64_t</span><span class="special">,</span> <span class="number">40</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">ubig40_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">uint_least64_t</span><span class="special">,</span> <span class="number">48</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">ubig48_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">uint_least64_t</span><span class="special">,</span> <span class="number">56</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">ubig56_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">uint_least64_t</span><span class="special">,</span> <span class="number">64</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">ubig64_t</span><span class="special">;</span>
+
+ <span class="comment">// unaligned little endian signed integer types
+</span> <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">int_least8_t</span><span class="special">,</span> <span class="number">8</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">little8_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">int_least16_t</span><span class="special">,</span> <span class="number">16</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">little16_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">int_least32_t</span><span class="special">,</span> <span class="number">24</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">little24_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">int_least32_t</span><span class="special">,</span> <span class="number">32</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">little32_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">int_least64_t</span><span class="special">,</span> <span class="number">40</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">little40_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">int_least64_t</span><span class="special">,</span> <span class="number">48</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">little48_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">int_least64_t</span><span class="special">,</span> <span class="number">56</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">little56_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">int_least64_t</span><span class="special">,</span> <span class="number">64</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">little64_t</span><span class="special">;</span>
+
+ <span class="comment">// unaligned little endian unsigned integer types
+</span> <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">uint_least8_t</span><span class="special">,</span> <span class="number">8</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">ulittle8_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">uint_least16_t</span><span class="special">,</span> <span class="number">16</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">ulittle16_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">uint_least32_t</span><span class="special">,</span> <span class="number">24</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">ulittle24_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">uint_least32_t</span><span class="special">,</span> <span class="number">32</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">ulittle32_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">uint_least64_t</span><span class="special">,</span> <span class="number">40</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">ulittle40_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">uint_least64_t</span><span class="special">,</span> <span class="number">48</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">ulittle48_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">uint_least64_t</span><span class="special">,</span> <span class="number">56</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">ulittle56_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">uint_least64_t</span><span class="special">,</span> <span class="number">64</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">ulittle64_t</span><span class="special">;</span>
+
+ <span class="comment">// unaligned native endian signed integer types
+</span> <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">native</span><span class="special">,</span> <span class="identifier">int_least8_t</span><span class="special">,</span> <span class="number">8</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">native8_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">native</span><span class="special">,</span> <span class="identifier">int_least16_t</span><span class="special">,</span> <span class="number">16</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">native16_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">native</span><span class="special">,</span> <span class="identifier">int_least32_t</span><span class="special">,</span> <span class="number">24</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">native24_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">native</span><span class="special">,</span> <span class="identifier">int_least32_t</span><span class="special">,</span> <span class="number">32</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">native32_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">native</span><span class="special">,</span> <span class="identifier">int_least64_t</span><span class="special">,</span> <span class="number">40</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">native40_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">native</span><span class="special">,</span> <span class="identifier">int_least64_t</span><span class="special">,</span> <span class="number">48</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">native48_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">native</span><span class="special">,</span> <span class="identifier">int_least64_t</span><span class="special">,</span> <span class="number">56</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">native56_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">native</span><span class="special">,</span> <span class="identifier">int_least64_t</span><span class="special">,</span> <span class="number">64</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">native64_t</span><span class="special">;</span>
+
+ <span class="comment">// unaligned native endian unsigned integer types
+</span> <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">native</span><span class="special">,</span> <span class="identifier">uint_least8_t</span><span class="special">,</span> <span class="number">8</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">unative8_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">native</span><span class="special">,</span> <span class="identifier">uint_least16_t</span><span class="special">,</span> <span class="number">16</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">unative16_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">native</span><span class="special">,</span> <span class="identifier">uint_least32_t</span><span class="special">,</span> <span class="number">24</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">unative24_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">native</span><span class="special">,</span> <span class="identifier">uint_least32_t</span><span class="special">,</span> <span class="number">32</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">unative32_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">native</span><span class="special">,</span> <span class="identifier">uint_least64_t</span><span class="special">,</span> <span class="number">40</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">unative40_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">native</span><span class="special">,</span> <span class="identifier">uint_least64_t</span><span class="special">,</span> <span class="number">48</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">unative48_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">native</span><span class="special">,</span> <span class="identifier">uint_least64_t</span><span class="special">,</span> <span class="number">56</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">unative56_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">native</span><span class="special">,</span> <span class="identifier">uint_least64_t</span><span class="special">,</span> <span class="number">64</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">unaligned</span> <span class="special">></span> <span class="identifier">unative64_t</span><span class="special">;</span>
+
+ <span class="comment">// These types only present if platform has exact size integers:
+</span>
+ <span class="comment">// aligned big endian signed integer types
+</span> <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">int16_t</span><span class="special">,</span> <span class="number">16</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">aligned</span> <span class="special">></span> <span class="identifier">aligned_big16_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">int32_t</span><span class="special">,</span> <span class="number">32</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">aligned</span> <span class="special">></span> <span class="identifier">aligned_big32_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">int64_t</span><span class="special">,</span> <span class="number">64</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">aligned</span> <span class="special">></span> <span class="identifier">aligned_big64_t</span><span class="special">;</span>
+
+ <span class="comment">// aligned big endian unsigned integer types
+</span> <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">uint16_t</span><span class="special">,</span> <span class="number">16</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">aligned</span> <span class="special">></span> <span class="identifier">aligned_ubig16_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">uint32_t</span><span class="special">,</span> <span class="number">32</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">aligned</span> <span class="special">></span> <span class="identifier">aligned_ubig32_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">uint64_t</span><span class="special">,</span> <span class="number">64</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">aligned</span> <span class="special">></span> <span class="identifier">aligned_ubig64_t</span><span class="special">;</span>
+
+ <span class="comment">// aligned little endian signed integer types
+</span> <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">int16_t</span><span class="special">,</span> <span class="number">16</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">aligned</span> <span class="special">></span> <span class="identifier">aligned_little2_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">int32_t</span><span class="special">,</span> <span class="number">32</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">aligned</span> <span class="special">></span> <span class="identifier">aligned_little4_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">int64_t</span><span class="special">,</span> <span class="number">64</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">aligned</span> <span class="special">></span> <span class="identifier">aligned_little8_t</span><span class="special">;</span>
+
+ <span class="comment">// aligned little endian unsigned integer types
+</span> <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">uint16_t</span><span class="special">,</span> <span class="number">16</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">aligned</span> <span class="special">></span> <span class="identifier">aligned_ulittle2_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">uint32_t</span><span class="special">,</span> <span class="number">32</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">aligned</span> <span class="special">></span> <span class="identifier">aligned_ulittle4_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">endian</span><span class="special"><</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">uint64_t</span><span class="special">,</span> <span class="number">64</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">aligned</span> <span class="special">></span> <span class="identifier">aligned_ulittle8_t</span><span class="special">;</span>
+
+
+ <span class="comment">// aligned native endian typedefs are not provided because
+</span> <span class="comment">// <cstdint> types are superior for this use case
+</span>
+<span class="special">}</span> <span class="comment">// namespace integer
+</span><span class="special">}</span> <span class="comment">// namespace boost
+</span></pre>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_integer_endian.reference.integer_endian_hpp.endian"></a><a href="integer_endian_hpp.html#toward_boost_integer_endian.reference.integer_endian_hpp.endian" title="
+ Template class endian<>">
+ Template class <code class="computeroutput"><span class="identifier">endian</span><span class="special"><></span></code></a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="integer_endian_hpp.html#toward_boost_integer_endian.reference.integer_endian_hpp.endian.endian">
+ Default Contructor <code class="computeroutput"><span class="identifier">endian</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="integer_endian_hpp.html#toward_boost_integer_endian.reference.integer_endian_hpp.endian.endianT">
+ Contructor from value_type <code class="computeroutput"><span class="identifier">endian</span><span class="special">(</span><span class="identifier">T</span><span class="special">)</span></code></a></span></dt>
+<dt><span class="section"><a href="integer_endian_hpp.html#toward_boost_integer_endian.reference.integer_endian_hpp.endian.assignment">
+ Assignment Operator from value_type <code class="computeroutput"><span class="keyword">operator</span><span class="special">=(</span><span class="identifier">T</span><span class="special">)</span></code></a></span></dt>
+<dt><span class="section"><a href="integer_endian_hpp.html#toward_boost_integer_endian.reference.integer_endian_hpp.endian.conversion">
+ Conversion Operator <code class="computeroutput"><span class="keyword">operator</span> <span class="identifier">T</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="integer_endian_hpp.html#toward_boost_integer_endian.reference.integer_endian_hpp.endian.data">
+ Member Function <code class="computeroutput"><span class="identifier">data</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="integer_endian_hpp.html#toward_boost_integer_endian.reference.integer_endian_hpp.endian.other">
+ Other operators </a></span></dt>
+</dl></div>
+<p>
+ An endian integer is an integer byte-holder with user-specified endianness,
+ value type, size, and alignment. The usual operations on integers are supplied.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span>
+ <span class="keyword">typename</span> <span class="identifier">E</span><span class="special">,</span>
+ <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">n_bits</span><span class="special">=</span><span class="number">8</span><span class="special">*</span><span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">T</span><span class="special">),</span>
+ <span class="identifier">alignment</span> <span class="identifier">A</span> <span class="special">=</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">aligned</span><span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">endian</span> <span class="special">:</span> <span class="identifier">integer_cover_operators</span><span class="special"><</span> <span class="identifier">endian</span><span class="special"><</span><span class="identifier">E</span><span class="special">,</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">n_bits</span><span class="special">,</span> <span class="identifier">A</span><span class="special">>,</span> <span class="identifier">T</span> <span class="special">></span> <span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">typedef</span> <span class="identifier">E</span> <span class="identifier">endian_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">T</span> <span class="identifier">value_type</span><span class="special">;</span>
+ <span class="keyword">static</span> <span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">width</span> <span class="special">=</span> <span class="identifier">n_bits</span><span class="special">;</span>
+ <span class="keyword">static</span> <span class="keyword">const</span> <span class="identifier">alignment</span> <span class="identifier">alignment_value</span> <span class="special">=</span> <span class="identifier">A</span><span class="special">;</span>
+
+ <span class="identifier">endian</span><span class="special">()</span> <span class="special">=</span> <span class="keyword">default</span><span class="special">;</span> <span class="comment">// = default replaced by {} on C++03
+</span> <span class="keyword">explicit</span> <span class="identifier">endian</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">v</span><span class="special">);</span>
+ <span class="identifier">endian</span> <span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">T</span> <span class="identifier">v</span><span class="special">);</span>
+ <span class="keyword">operator</span> <span class="identifier">T</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">data</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<div class="itemizedlist"><ul type="disc"><li>
+<span class="bold"><strong>Requires:</strong></span><div class="itemizedlist"><ul type="circle">
+<li>
+<code class="computeroutput"><span class="identifier">E</span></code> is one of <code class="computeroutput"><span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span></code> or <code class="computeroutput"><span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span></code>.
+ </li>
+<li>
+<code class="computeroutput"><span class="identifier">T</span></code> must be a POD with
+ value semantics.
+ </li>
+<li>
+<code class="computeroutput"><span class="identifier">nbits</span></code> is a multiple
+ of <code class="computeroutput"><span class="number">8</span></code>
+</li>
+<li>
+ If <code class="computeroutput"><span class="identifier">A</span></code> is <code class="computeroutput"><span class="identifier">alignment</span><span class="special">::</span><span class="identifier">aligned</span></code> then <code class="computeroutput"><span class="identifier">nbits</span></code>
+ must be equal to <code class="computeroutput"><span class="number">8</span><span class="special">*</span><span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">T</span><span class="special">)</span></code>
+</li>
+</ul></div>
+</li></ul></div>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<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>
+ if BOOST_ENDIAN_FORCE_PODNESS is defined && C++0x POD's are not
+ available then these two constructors will not be present
+ </p></td></tr>
+</table></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_integer_endian.reference.integer_endian_hpp.endian.endian"></a><a href="integer_endian_hpp.html#toward_boost_integer_endian.reference.integer_endian_hpp.endian.endian" title="
+ Default Contructor endian()">
+ Default Contructor <code class="computeroutput"><span class="identifier">endian</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="identifier">endian</span><span class="special">()</span> <span class="special">=</span> <span class="keyword">default</span><span class="special">;</span> <span class="comment">// C++03: endian(){}
+</span></pre>
+<div class="itemizedlist"><ul type="disc"><li>
+<span class="bold"><strong>Effects:</strong></span> Constructs an object of type
+ <code class="computeroutput"><span class="identifier">endian</span><span class="special"><</span><span class="identifier">E</span><span class="special">,</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">n_bits</span><span class="special">,</span>
+ <span class="identifier">A</span><span class="special">></span></code>.
+ </li></ul></div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_integer_endian.reference.integer_endian_hpp.endian.endianT"></a><a href="integer_endian_hpp.html#toward_boost_integer_endian.reference.integer_endian_hpp.endian.endianT" title="
+ Contructor from value_type endian(T)">
+ Contructor from value_type <code class="computeroutput"><span class="identifier">endian</span><span class="special">(</span><span class="identifier">T</span><span class="special">)</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">explicit</span> <span class="identifier">endian</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">v</span><span class="special">);</span>
+</pre>
+<div class="itemizedlist"><ul type="disc">
+<li>
+<span class="bold"><strong>Effects:</strong></span> Constructs an object of type
+ <code class="computeroutput"><span class="identifier">endian</span><span class="special"><</span><span class="identifier">E</span><span class="special">,</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">n_bits</span><span class="special">,</span>
+ <span class="identifier">A</span><span class="special">></span></code>.
+ </li>
+<li>
+<span class="bold"><strong>Postcondition:</strong></span><code class="computeroutput"><span class="identifier">x</span>
+ <span class="special">==</span> <span class="identifier">v</span></code>,
+ where <code class="computeroutput"><span class="identifier">x</span></code> is the constructed
+ object.
+ </li>
+</ul></div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_integer_endian.reference.integer_endian_hpp.endian.assignment"></a><a href="integer_endian_hpp.html#toward_boost_integer_endian.reference.integer_endian_hpp.endian.assignment" title="
+ Assignment Operator from value_type operator=(T)">
+ Assignment Operator from value_type <code class="computeroutput"><span class="keyword">operator</span><span class="special">=(</span><span class="identifier">T</span><span class="special">)</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="identifier">endian</span> <span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">T</span> <span class="identifier">v</span><span class="special">);</span>
+</pre>
+<div class="itemizedlist"><ul type="disc">
+<li>
+<span class="bold"><strong>Postcondition:</strong></span><code class="computeroutput"><span class="identifier">x</span>
+ <span class="special">==</span> <span class="identifier">v</span></code>,
+ where <code class="computeroutput"><span class="identifier">x</span></code> is the constructed
+ object.
+ </li>
+<li>
+<span class="bold"><strong>Returns:</strong></span><code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>.
+ </li>
+</ul></div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_integer_endian.reference.integer_endian_hpp.endian.conversion"></a><a href="integer_endian_hpp.html#toward_boost_integer_endian.reference.integer_endian_hpp.endian.conversion" title="
+ Conversion Operator operator T()">
+ Conversion Operator <code class="computeroutput"><span class="keyword">operator</span> <span class="identifier">T</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">operator</span> <span class="identifier">T</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<div class="itemizedlist"><ul type="disc"><li>
+<span class="bold"><strong>Returns:</strong></span> The current value stored
+ in <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>,
+ converted to <code class="computeroutput"><span class="identifier">value_type</span></code>.
+ </li></ul></div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_integer_endian.reference.integer_endian_hpp.endian.data"></a><a href="integer_endian_hpp.html#toward_boost_integer_endian.reference.integer_endian_hpp.endian.data" title="
+ Member Function data()">
+ Member Function <code class="computeroutput"><span class="identifier">data</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">data</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<div class="itemizedlist"><ul type="disc"><li>
+<span class="bold"><strong>Returns:</strong></span> The current value stored
+ in <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>,
+ converted to <code class="computeroutput"><span class="identifier">value_type</span></code>.
+ </li></ul></div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_integer_endian.reference.integer_endian_hpp.endian.other"></a><a href="integer_endian_hpp.html#toward_boost_integer_endian.reference.integer_endian_hpp.endian.other" title="
+ Other operators ">
+ Other operators </a>
+</h5></div></div></div>
+<p>
+ Other operators on endian objects are forwarded to the equivalent operator
+ on <code class="computeroutput"><span class="identifier">value_type</span></code>.
+ </p>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006 -2009 Beman Dawes<br>Copyright © 2010 Vicente J. Botet Escriba<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="integer_endian_pack_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.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="integer_endian_binary_stream_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/reference/integer_endian_pack_hpp.html
==============================================================================
--- (empty file)
+++ sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/reference/integer_endian_pack_hpp.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -0,0 +1,61 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>
+ Header <boost/integer/endian_pack.hpp></title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../../index.html" title="Toward Boost.Integer.Endian">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="binary_stream_hpp.html" title="
+ Header <boost/binary_stream.hpp>">
+<link rel="next" href="integer_endian_hpp.html" title="
+ Header <boost/integer/endian.hpp>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<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="binary_stream_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.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="integer_endian_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_integer_endian.reference.integer_endian_pack_hpp"></a><a href="integer_endian_pack_hpp.html" title="
+ Header <boost/integer/endian_pack.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">integer</span><span class="special">/</span><span class="identifier">endian_pack</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<p>
+ This file contains the core class template of Boost.Integer.Endian. Provides
+ byte-holder binary types with explicit control over byte order, value type,
+ size, and alignment. Typedefs provide easy-to-use names for common configurations.
+ </p>
+<a name="toward_boost_integer_endian.reference.integer_endian_pack_hpp.synopsis"></a><h4>
+<a name="id4823015"></a>
+ Synopsis
+ </h4>
+<p>
+ An <code class="computeroutput"><span class="identifier">endian_pack</span></code> is an byte-holder
+ with user-specified endianness, value type, size, and alignment.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006 -2009 Beman Dawes<br>Copyright © 2010 Vicente J. Botet Escriba<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="binary_stream_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.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="integer_endian_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/reference/integer_endian_type_hpp.html
==============================================================================
--- (empty file)
+++ sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/reference/integer_endian_type_hpp.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -0,0 +1,94 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>
+ Header <boost/integer/endian_type.hpp></title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../../index.html" title="Toward Boost.Integer.Endian">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="integer_endian_binary_stream_hpp.html" title="
+ Header <boost/integer/endian_binary_stream.hpp>">
+<link rel="next" href="integer_endian_view_hpp.html" title="
+ Header <boost/integer/endian_view.hpp>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<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="integer_endian_binary_stream_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.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="integer_endian_view_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_integer_endian.reference.integer_endian_type_hpp"></a><a href="integer_endian_type_hpp.html" title="
+ Header <boost/integer/endian_type.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">integer</span><span class="special">/</span><span class="identifier">endian_type</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="toc"><dl><dt><span class="section"><a href="integer_endian_type_hpp.html#toward_boost_integer_endian.reference.integer_endian_type_hpp.integer_endian_type">
+ Meta Function <code class="computeroutput"><span class="identifier">endian_type</span><span class="special"><></span></code></a></span></dt></dl></div>
+<a name="toward_boost_integer_endian.reference.integer_endian_type_hpp.synopsis"></a><h4>
+<a name="id4832648"></a>
+ Synopsis
+ </h4>
+<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">integer</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">endian_type</span><span class="special">;</span>
+<span class="special">}</span>
+<span class="special">}</span>
+</pre>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_integer_endian.reference.integer_endian_type_hpp.integer_endian_type"></a><a href="integer_endian_type_hpp.html#toward_boost_integer_endian.reference.integer_endian_type_hpp.integer_endian_type" title="
+ Meta Function endian_type<>">
+ Meta Function <code class="computeroutput"><span class="identifier">endian_type</span><span class="special"><></span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Domain</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">endian_type</span> <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">type</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ The member typedef <code class="computeroutput"><span class="identifier">type</span></code>
+ names one of the <code class="computeroutput"><span class="identifier">endianness</span></code>
+ types <code class="computeroutput"><span class="identifier">big</span></code>, <code class="computeroutput"><span class="identifier">little</span></code> or <code class="computeroutput"><span class="identifier">mixed</span></code>.
+ If all the leaves of the type T are of the same endianness type is this
+ endiannes, otherwise it is <code class="computeroutput"><span class="identifier">mixed</span></code>.
+ </p>
+<p>
+ The default behavior works for all the endian aware types, fundamental
+ types and any type that is a fusion sequence.
+ </p>
+<p>
+ The user can specialize this metafunction for specific clases.
+ </p>
+<a name="toward_boost_integer_endian.reference.integer_endian_type_hpp.integer_endian_type.example"></a><h5>
+<a name="id4832966"></a>
+ Example
+ </h5>
+<pre class="programlisting"><span class="identifier">is_same</span><span class="special"><</span><span class="identifier">endian_type</span><span class="special"><</span><span class="identifier">endian</span><span class="special"><</span><span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="keyword">int</span><span class="special">></span> <span class="special">>::</span><span class="identifier">type</span><span class="special">,</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">>::</span><span class="identifier">value</span> <span class="special">==</span> <span class="keyword">true</span>
+<span class="identifier">is_same</span><span class="special"><</span><span class="identifier">endian_type</span><span class="special"><</span><span class="keyword">int</span><span class="special">>::</span><span class="identifier">type</span><span class="special">,</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">native</span><span class="special">>::</span><span class="identifier">value</span> <span class="special">==</span> <span class="keyword">true</span>
+</pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006 -2009 Beman Dawes<br>Copyright © 2010 Vicente J. Botet Escriba<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="integer_endian_binary_stream_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.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="integer_endian_view_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/reference/integer_endian_view_hpp.html
==============================================================================
--- (empty file)
+++ sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/reference/integer_endian_view_hpp.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -0,0 +1,140 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>
+ Header <boost/integer/endian_view.hpp></title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../../index.html" title="Toward Boost.Integer.Endian">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="integer_endian_type_hpp.html" title="
+ Header <boost/integer/endian_type.hpp>">
+<link rel="next" href="integer_endian_conversion_hpp.html" title="
+ Header <boost/integer/endian_conversion.hpp>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<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="integer_endian_type_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.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="integer_endian_conversion_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_integer_endian.reference.integer_endian_view_hpp"></a><a href="integer_endian_view_hpp.html" title="
+ Header <boost/integer/endian_view.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">integer</span><span class="special">/</span><span class="identifier">endian_view</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="integer_endian_view_hpp.html#toward_boost_integer_endian.reference.integer_endian_view_hpp.bitfield">
+ Template class <code class="computeroutput"><span class="identifier">endian_view</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="integer_endian_view_hpp.html#toward_boost_integer_endian.reference.integer_endian_view_hpp.as_endian">
+ Non-Member Function Template <code class="computeroutput"><span class="identifier">as_endian</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="integer_endian_view_hpp.html#toward_boost_integer_endian.reference.integer_endian_view_hpp.as">
+ Non-Member Function Template <code class="computeroutput"><span class="identifier">as</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="integer_endian_view_hpp.html#toward_boost_integer_endian.reference.integer_endian_view_hpp.as_little">
+ Non-Member Function Template <code class="computeroutput"><span class="identifier">as_little</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="integer_endian_view_hpp.html#toward_boost_integer_endian.reference.integer_endian_view_hpp.as_big">
+ Non-Member Function Template <code class="computeroutput"><span class="identifier">as_big</span><span class="special"><></span></code></a></span></dt>
+</dl></div>
+<a name="toward_boost_integer_endian.reference.integer_endian_view_hpp.synopsis"></a><h4>
+<a name="id4833243"></a>
+ Synopsis
+ </h4>
+<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">integer</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Endian</span><span class="special">></span>
+ <span class="keyword">class</span> <span class="identifier">endian_view</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">E</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="identifier">endian_view</span><span class="special"><</span><span class="identifier">endian_pack</span><span class="special"><</span><span class="identifier">E</span><span class="special">,</span><span class="identifier">T</span><span class="special">></span> <span class="special">></span> <span class="identifier">as_endian</span><span class="special">(</span><span class="identifier">T</span><span class="special">&</span> <span class="identifier">v</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="identifier">endian_view</span><span class="special"><</span><span class="identifier">endian_pack</span><span class="special"><</span><span class="identifier">native_endian</span><span class="special">,</span> <span class="identifier">T</span><span class="special">></span> <span class="special">></span> <span class="identifier">as</span><span class="special">(</span><span class="identifier">T</span><span class="special">&</span> <span class="identifier">v</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="identifier">endian_view</span><span class="special"><</span><span class="identifier">endian_pack</span><span class="special"><</span><span class="identifier">little_endian</span><span class="special">,</span><span class="identifier">T</span><span class="special">></span> <span class="special">></span> <span class="identifier">as_little</span><span class="special">(</span><span class="identifier">T</span><span class="special">&</span> <span class="identifier">v</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="identifier">endian_view</span><span class="special"><</span><span class="identifier">endian_pack</span><span class="special"><</span><span class="identifier">big_endian</span><span class="special">,</span><span class="identifier">T</span><span class="special">></span> <span class="special">></span> <span class="identifier">as_big</span><span class="special">(</span><span class="identifier">T</span><span class="special">&</span> <span class="identifier">v</span><span class="special">);</span>
+
+
+<span class="special">}</span> <span class="comment">// namespace integer
+</span><span class="special">}</span> <span class="comment">// namespace boost
+</span></pre>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_integer_endian.reference.integer_endian_view_hpp.bitfield"></a><a href="integer_endian_view_hpp.html#toward_boost_integer_endian.reference.integer_endian_view_hpp.bitfield" title="
+ Template class endian_view<>">
+ Template class <code class="computeroutput"><span class="identifier">endian_view</span><span class="special"><></span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Endian</span><span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">endian_view</span> <span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">Endian</span><span class="special">::</span><span class="identifier">value_type</span> <span class="identifier">value_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">Endian</span> <span class="identifier">endian_t</span><span class="special">;</span>
+ <span class="identifier">endian_view</span><span class="special">(</span><span class="identifier">value_type</span><span class="special">&</span> <span class="identifier">ref</span><span class="special">);</span>
+ <span class="keyword">operator</span> <span class="identifier">value_type</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">endian_view</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">value_type</span> <span class="identifier">val</span><span class="special">);</span>
+<span class="special">};</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_integer_endian.reference.integer_endian_view_hpp.as_endian"></a><a href="integer_endian_view_hpp.html#toward_boost_integer_endian.reference.integer_endian_view_hpp.as_endian" title="
+ Non-Member Function Template as_endian<>">
+ Non-Member Function Template <code class="computeroutput"><span class="identifier">as_endian</span><span class="special"><></span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">E</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">endian_view</span><span class="special"><</span><span class="identifier">endian</span><span class="special"><</span><span class="identifier">E</span><span class="special">,</span><span class="identifier">T</span><span class="special">></span> <span class="special">></span> <span class="identifier">as_endian</span><span class="special">(</span><span class="identifier">T</span><span class="special">&</span> <span class="identifier">v</span><span class="special">);</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_integer_endian.reference.integer_endian_view_hpp.as"></a><a href="integer_endian_view_hpp.html#toward_boost_integer_endian.reference.integer_endian_view_hpp.as" title="
+ Non-Member Function Template as<>">
+ Non-Member Function Template <code class="computeroutput"><span class="identifier">as</span><span class="special"><></span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">endian_view</span><span class="special"><</span><span class="identifier">endian</span><span class="special"><</span><span class="identifier">endian</span><span class="special">::</span><span class="identifier">native</span><span class="special">,</span> <span class="identifier">T</span><span class="special">></span> <span class="special">></span> <span class="identifier">as</span><span class="special">(</span><span class="identifier">T</span><span class="special">&</span> <span class="identifier">v</span><span class="special">);</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_integer_endian.reference.integer_endian_view_hpp.as_little"></a><a href="integer_endian_view_hpp.html#toward_boost_integer_endian.reference.integer_endian_view_hpp.as_little" title="
+ Non-Member Function Template as_little<>">
+ Non-Member Function Template <code class="computeroutput"><span class="identifier">as_little</span><span class="special"><></span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">endian_view</span><span class="special"><</span><span class="identifier">endian</span><span class="special"><</span><span class="identifier">endian</span><span class="special">::</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">T</span><span class="special">></span> <span class="special">></span> <span class="identifier">as_little</span><span class="special">(</span><span class="identifier">T</span><span class="special">&</span> <span class="identifier">v</span><span class="special">);</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_integer_endian.reference.integer_endian_view_hpp.as_big"></a><a href="integer_endian_view_hpp.html#toward_boost_integer_endian.reference.integer_endian_view_hpp.as_big" title="
+ Non-Member Function Template as_big<>">
+ Non-Member Function Template <code class="computeroutput"><span class="identifier">as_big</span><span class="special"><></span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">endian_view</span><span class="special"><</span><span class="identifier">endian</span><span class="special"><</span><span class="identifier">endian</span><span class="special">::</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">T</span><span class="special">></span> <span class="special">></span> <span class="identifier">as_big</span><span class="special">(</span><span class="identifier">T</span><span class="special">&</span> <span class="identifier">v</span><span class="special">);</span>
+</pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006 -2009 Beman Dawes<br>Copyright © 2010 Vicente J. Botet Escriba<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="integer_endian_type_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.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="integer_endian_conversion_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/reference/integer_endianness_hpp.html
==============================================================================
--- (empty file)
+++ sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/reference/integer_endianness_hpp.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -0,0 +1,129 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>
+ Header <boost/integer/endiannes.hpp></title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../../index.html" title="Toward Boost.Integer.Endian">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="alignment_hpp.html" title="
+ Header <boost/alignment.hpp>">
+<link rel="next" href="endian_domain_map_hpp.html" title="
+ Header <boost/endian/domain_map.hpp>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<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="alignment_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.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="endian_domain_map_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_integer_endian.reference.integer_endianness_hpp"></a><a href="integer_endianness_hpp.html" title="
+ Header <boost/integer/endiannes.hpp>">
+ Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">integer</span><span class="special">/</span><span class="identifier">endiannes</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="integer_endianness_hpp.html#toward_boost_integer_endian.reference.integer_endianness_hpp.endian_big">
+ Class <code class="computeroutput"><span class="identifier">big</span></code></a></span></dt>
+<dt><span class="section"><a href="integer_endianness_hpp.html#toward_boost_integer_endian.reference.integer_endianness_hpp.endian_little">
+ Class <code class="computeroutput"><span class="identifier">little</span></code></a></span></dt>
+<dt><span class="section"><a href="integer_endianness_hpp.html#toward_boost_integer_endian.reference.integer_endianness_hpp.endian_middle">
+ Class <code class="computeroutput"><span class="identifier">middle</span></code></a></span></dt>
+<dt><span class="section"><a href="integer_endianness_hpp.html#toward_boost_integer_endian.reference.integer_endianness_hpp.endian_mixed">
+ Class <code class="computeroutput"><span class="identifier">mixed</span></code></a></span></dt>
+<dt><span class="section"><a href="integer_endianness_hpp.html#toward_boost_integer_endian.reference.integer_endianness_hpp.endian_native">
+ Class <code class="computeroutput"><span class="identifier">native</span></code></a></span></dt>
+</dl></div>
+<a name="toward_boost_integer_endian.reference.integer_endianness_hpp.synopsis"></a><h4>
+<a name="id4818808"></a>
+ Synopsis
+ </h4>
+<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">endianness</span> <span class="special">{</span>
+ <span class="keyword">struct</span> <span class="identifier">big</span><span class="special">;</span>
+ <span class="keyword">struct</span> <span class="identifier">little</span><span class="special">;</span>
+ <span class="keyword">struct</span> <span class="identifier">middle</span><span class="special">;</span>
+ <span class="keyword">struct</span> <span class="identifier">mixed</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="special"><</span><span class="identifier">platform</span> <span class="identifier">dependent</span><span class="special">></span> <span class="identifier">native</span> <span class="special">;</span>
+ <span class="special">}</span>
+<span class="special">}</span>
+</pre>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_integer_endian.reference.integer_endianness_hpp.endian_big"></a><a href="integer_endianness_hpp.html#toward_boost_integer_endian.reference.integer_endianness_hpp.endian_big" title="
+ Class big">
+ Class <code class="computeroutput"><span class="identifier">big</span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">big</span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">const</span> <span class="identifier">endianness</span> <span class="identifier">value</span><span class="special">=</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">big</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_integer_endian.reference.integer_endianness_hpp.endian_little"></a><a href="integer_endianness_hpp.html#toward_boost_integer_endian.reference.integer_endianness_hpp.endian_little" title="
+ Class little">
+ Class <code class="computeroutput"><span class="identifier">little</span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">little</span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">const</span> <span class="identifier">endianness</span> <span class="identifier">value</span><span class="special">=</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">little</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_integer_endian.reference.integer_endianness_hpp.endian_middle"></a><a href="integer_endianness_hpp.html#toward_boost_integer_endian.reference.integer_endianness_hpp.endian_middle" title="
+ Class middle">
+ Class <code class="computeroutput"><span class="identifier">middle</span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">middle</span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">const</span> <span class="identifier">endianness</span> <span class="identifier">value</span><span class="special">=</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">middle</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_integer_endian.reference.integer_endianness_hpp.endian_mixed"></a><a href="integer_endianness_hpp.html#toward_boost_integer_endian.reference.integer_endianness_hpp.endian_mixed" title="
+ Class mixed">
+ Class <code class="computeroutput"><span class="identifier">mixed</span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">mixed</span> <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">const</span> <span class="identifier">endianness</span> <span class="identifier">value</span><span class="special">=</span> <span class="identifier">endianness</span><span class="special">::</span><span class="identifier">mixed</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_integer_endian.reference.integer_endianness_hpp.endian_native"></a><a href="integer_endianness_hpp.html#toward_boost_integer_endian.reference.integer_endianness_hpp.endian_native" title="
+ Class native">
+ Class <code class="computeroutput"><span class="identifier">native</span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="special"><</span><span class="identifier">platform</span> <span class="identifier">dependent</span><span class="special">></span> <span class="identifier">native</span> <span class="special">;</span>
+</pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006 -2009 Beman Dawes<br>Copyright © 2010 Vicente J. Botet Escriba<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="alignment_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.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="endian_domain_map_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/users_guide.html
==============================================================================
--- (empty file)
+++ sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/users_guide.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -0,0 +1,65 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title> Users'Guide</title>
+<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../index.html" title="Toward Boost.Integer.Endian">
+<link rel="up" href="../index.html" title="Toward Boost.Integer.Endian">
+<link rel="prev" href="overview/motivation.html" title="Motivation">
+<link rel="next" href="users_guide/getting_started.html" title="
+ Getting Started">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<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="overview/motivation.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="users_guide/getting_started.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">
+<a name="toward_boost_integer_endian.users_guide"></a> Users'Guide
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="users_guide/getting_started.html">
+ Getting Started</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="users_guide/getting_started.html#toward_boost_integer_endian.users_guide.getting_started.install">
+ Installing Integer.Endian</a></span></dt>
+<dt><span class="section"><a href="users_guide/getting_started.html#toward_boost_integer_endian.users_guide.getting_started.hello_endian_world__">Hello
+ Endian World! </a></span></dt>
+<dt><span class="section"><a href="users_guide/getting_started.html#toward_boost_integer_endian.users_guide.getting_started.limitations_">Limitations
+ </a></span></dt>
+</dl></dd>
+<dt><span class="section">Tutorial</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="users_guide/tutorial.html#toward_boost_integer_endian.users_guide.tutorial.endian_aware_types">Endian
+ aware types</a></span></dt>
+<dt><span class="section"><a href="users_guide/tutorial.html#toward_boost_integer_endian.users_guide.tutorial.endian_unaware_types">Endian
+ unaware types</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="users_guide/ext_references.html">
+ References</a></span></dt>
+</dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006 -2009 Beman Dawes<br>Copyright © 2010 Vicente J. Botet Escriba<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="overview/motivation.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="users_guide/getting_started.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/users_guide/ext_references.html
==============================================================================
--- (empty file)
+++ sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/users_guide/ext_references.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -0,0 +1,44 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>
+ References</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../../index.html" title="Toward Boost.Integer.Endian">
+<link rel="up" href="../users_guide.html" title=" Users'Guide">
+<link rel="prev" href="tutorial.html" title="Tutorial">
+<link rel="next" href="../reference.html" title="Reference">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<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="tutorial.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../users_guide.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="../reference.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_integer_endian.users_guide.ext_references"></a><a href="ext_references.html" title="
+ References">
+ References</a>
+</h3></div></div></div></div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006 -2009 Beman Dawes<br>Copyright © 2010 Vicente J. Botet Escriba<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="tutorial.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../users_guide.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="../reference.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/users_guide/getting_started.html
==============================================================================
--- (empty file)
+++ sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/users_guide/getting_started.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -0,0 +1,265 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>
+ Getting Started</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../../index.html" title="Toward Boost.Integer.Endian">
+<link rel="up" href="../users_guide.html" title=" Users'Guide">
+<link rel="prev" href="../users_guide.html" title=" Users'Guide">
+<link rel="next" href="tutorial.html" title="Tutorial">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="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="../users_guide.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../users_guide.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="tutorial.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_integer_endian.users_guide.getting_started"></a><a href="getting_started.html" title="
+ Getting Started">
+ Getting Started</a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="getting_started.html#toward_boost_integer_endian.users_guide.getting_started.install">
+ Installing Integer.Endian</a></span></dt>
+<dt><span class="section"><a href="getting_started.html#toward_boost_integer_endian.users_guide.getting_started.hello_endian_world__">Hello
+ Endian World! </a></span></dt>
+<dt><span class="section"><a href="getting_started.html#toward_boost_integer_endian.users_guide.getting_started.limitations_">Limitations
+ </a></span></dt>
+</dl></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_integer_endian.users_guide.getting_started.install"></a><a href="getting_started.html#toward_boost_integer_endian.users_guide.getting_started.install" title="
+ Installing Integer.Endian">
+ Installing Integer.Endian</a>
+</h4></div></div></div>
+<a name="toward_boost_integer_endian.users_guide.getting_started.install.getting_boost_integer_endian"></a><h5>
+<a name="id4759239"></a>
+ <a href="getting_started.html#toward_boost_integer_endian.users_guide.getting_started.install.getting_boost_integer_endian">Getting
+ Boost.Integer.Endian</a>
+ </h5>
+<p>
+ You can get the last stable release of Boost.Integer.Endian by downloading
+ <code class="literal">integer_endian.zip</code> from the <a href="http://www.boost-consulting.com/vault/index.php?directory=Portability%20Programming" target="_top">Boost
+ Vault</a>
+ </p>
+<p>
+ You can also access the latest (unstable?) state from the <a href="https://svn.boost.org/svn/boost/sandbox/endian_split" target="_top">Boost
+ Sandbox</a>.
+ </p>
+<a name="toward_boost_integer_endian.users_guide.getting_started.install.building_boost_integer_endian"></a><h5>
+<a name="id4759291"></a>
+ <a href="getting_started.html#toward_boost_integer_endian.users_guide.getting_started.install.building_boost_integer_endian">Building
+ Boost.Integer.Endian</a>
+ </h5>
+<p>
+ Boost.Integer.Endian is implemented entirely within headers, with no need
+ to link to any Boost object libraries.
+ </p>
+<p>
+ Several macros allow user control over features:
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ BOOST_ENDIAN_NO_CTORS causes class endian to have no constructors. The
+ intended use is for compiling user code that must be portable between
+ compilers regardless of C++0x Defaulted Functions support. Use of constructors
+ will always fail,
+ </li>
+<li>
+ BOOST_ENDIAN_FORCE_PODNESS causes BOOST_ENDIAN_NO_CTORS to be defined
+ if the compiler does not support C++0x Defaulted Functions. This is ensures
+ that , and so can be used in unions. In C++0x, class endian objects are
+ POD's even though they have constructors.
+ </li>
+</ul></div>
+<a name="toward_boost_integer_endian.users_guide.getting_started.install.requirements"></a><h5>
+<a name="id4759346"></a>
+ Requirements
+ </h5>
+<p>
+ <span class="bold"><strong>Boost.Integer.Endian</strong></span> depends on some Boost
+ library. For these specific parts you must use either Boost version 1.43.0
+ or the version in SVN trunk (even if older version should works also).
+ </p>
+<a name="toward_boost_integer_endian.users_guide.getting_started.install.exceptions_safety"></a><h5>
+<a name="id4759379"></a>
+ <a href="getting_started.html#toward_boost_integer_endian.users_guide.getting_started.install.exceptions_safety">Exceptions
+ safety</a>
+ </h5>
+<p>
+ All functions in the library are exception-neutral and provide strong guarantee
+ of exception safety as long as the underlying parameters provide it.
+ </p>
+<a name="toward_boost_integer_endian.users_guide.getting_started.install.thread_safety"></a><h5>
+<a name="id4759407"></a>
+ <a href="getting_started.html#toward_boost_integer_endian.users_guide.getting_started.install.thread_safety">Thread
+ safety</a>
+ </h5>
+<p>
+ All functions in the library are thread-unsafe except when noted explicitly.
+ </p>
+<a name="toward_boost_integer_endian.users_guide.getting_started.install.tested_compilers"></a><h5>
+<a name="id4759432"></a>
+ <a href="getting_started.html#toward_boost_integer_endian.users_guide.getting_started.install.tested_compilers">Tested
+ compilers</a>
+ </h5>
+<p>
+ Currently, <span class="bold"><strong>Boost.Integer.Endian</strong></span> has been
+ tested in the following compilers/platforms:
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ GCC 3.4.4 Cygwin
+ </li>
+<li>
+ GCC 3.4.6 Linux
+ </li>
+<li>
+ GCC 4.1.2 Linux
+ </li>
+</ul></div>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<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>
+ Please send any questions, comments and bug reports to boost <at>
+ lists <dot> boost <dot> org.
+ </p></td></tr>
+</table></div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_integer_endian.users_guide.getting_started.hello_endian_world__"></a><a href="getting_started.html#toward_boost_integer_endian.users_guide.getting_started.hello_endian_world__" title="Hello
+ Endian World! ">Hello
+ Endian World! </a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">integer</span><span class="special">/</span><span class="identifier">endian</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">integer</span><span class="special">/</span><span class="identifier">endian_binary_stream</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">binary_stream</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">integer</span><span class="special">;</span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">int_least32_t</span> <span class="identifier">v</span> <span class="special">=</span> <span class="number">0x31323334L</span><span class="special">;</span> <span class="comment">// = ASCII { '1', '2', '3', '4' }
+</span> <span class="comment">// value chosen to work on text stream
+</span> <span class="identifier">big32_t</span> <span class="identifier">b</span><span class="special">(</span><span class="identifier">v</span><span class="special">);</span>
+ <span class="identifier">little32_t</span> <span class="identifier">l</span><span class="special">(</span><span class="identifier">v</span><span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Hello, endian world!\n\n"</span><span class="special">;</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">v</span> <span class="special"><<</span> <span class="char">' '</span> <span class="special"><<</span> <span class="identifier">b</span> <span class="special"><<</span> <span class="char">' '</span> <span class="special"><<</span> <span class="identifier">l</span> <span class="special"><<</span> <span class="char">'\n'</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><=</span> <span class="identifier">v</span> <span class="special"><=</span> <span class="char">' '</span> <span class="special"><=</span> <span class="identifier">b</span> <span class="special"><=</span> <span class="char">' '</span> <span class="special"><=</span> <span class="identifier">l</span> <span class="special"><=</span> <span class="char">'\n'</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ On a little-endian CPU, this program outputs:
+ </p>
+<pre class="programlisting"><span class="identifier">Hello</span><span class="special">,</span> <span class="identifier">endian</span> <span class="identifier">world</span><span class="special">!</span>
+
+<span class="number">825373492</span> <span class="number">825373492</span> <span class="number">825373492</span>
+<span class="number">4321</span> <span class="number">1234</span> <span class="number">4321</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_integer_endian.users_guide.getting_started.limitations_"></a><a href="getting_started.html#toward_boost_integer_endian.users_guide.getting_started.limitations_" title="Limitations
+ ">Limitations
+ </a>
+</h4></div></div></div>
+<p>
+ Requires <code class="computeroutput"><span class="special"><</span><span class="identifier">climits</span><span class="special">></span> <span class="identifier">CHAR_BIT</span>
+ <span class="special">==</span> <span class="number">8</span></code>.
+ If <code class="computeroutput"><span class="identifier">CHAR_BIT</span></code> is some other
+ value, compilation will result in an <code class="computeroutput"><span class="preprocessor">#error</span></code>.
+ This restriction is in place because the design, implementation, testing,
+ and documentation has only considered issues related to 8-bit bytes, and
+ there have been no real-world use cases presented for other sizes.
+ </p>
+<p>
+ In C++03, endian does not meet the requirements for POD types because it
+ has constructors, private data members, and a base class. This means that
+ common use cases are relying on unspecified behavior in that the C++ Standard
+ does not guarantee memory layout for non-POD types. This has not been a
+ problem in practice since all known C++ compilers do layout memory as if
+ endian were a POD type. In C++0x, it will be possible to specify the default
+ constructor as trivial, and private data members and base classes will
+ no longer disqualify a type from being a POD. Thus under C++0x, endian
+ will no longer be relying on unspecified behavior.
+ </p>
+<a name="toward_boost_integer_endian.users_guide.getting_started.limitations_.binary_i_o_warnings_and_cautions"></a><h5>
+<a name="id4813244"></a>
+ <a href="getting_started.html#toward_boost_integer_endian.users_guide.getting_started.limitations_.binary_i_o_warnings_and_cautions">Binary
+ I/O warnings and cautions</a>
+ </h5>
+<div class="warning"><table border="0" summary="Warning">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="../../../../../../doc/html/images/warning.png"></td>
+<th align="left">Warning</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ Use only on streams opened with filemode <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">ios_base</span><span class="special">::</span><span class="identifier">binary</span></code>.
+ Thus unformatted binary I/O should not be with the standard streams (<code class="computeroutput"><span class="identifier">cout</span></code>, <code class="computeroutput"><span class="identifier">cin</span></code>,
+ etc.) since they are opened in text mode. Use on text streams may produce
+ incorrect results, such as insertion of unwanted characters or premature
+ end-of-file. For example, on Windows <code class="computeroutput"><span class="number">0x0D</span></code>
+ would become <code class="computeroutput"><span class="number">0x0D</span></code>, <code class="computeroutput"><span class="number">0x0A</span></code>.
+ </p></td></tr>
+</table></div>
+<div class="warning"><table border="0" summary="Warning">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="../../../../../../doc/html/images/warning.png"></td>
+<th align="left">Warning</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+ Caution: When mixing formatted (i.e. operator <code class="computeroutput"><span class="special"><<</span></code>
+ or <code class="computeroutput"><span class="special">>></span></code>) and unformatted
+ (i.e. operator <code class="computeroutput"><span class="special"><=</span></code> or
+ <code class="computeroutput"><span class="special">>=</span></code>) stream I/O, be aware
+ that <code class="computeroutput"><span class="special"><<</span></code> and <code class="computeroutput"><span class="special">>></span></code> take precedence over <code class="computeroutput"><span class="special"><=</span></code> and <code class="computeroutput"><span class="special">>=</span></code>.
+ Use parentheses to force correct order of evaluation. For example:
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="identifier">my_stream</span> <span class="special"><<</span> <span class="identifier">foo</span> <span class="special"><=</span> <span class="identifier">bar</span><span class="special">;</span> <span class="comment">// no parentheses needed
+</span><span class="special">(</span><span class="identifier">my_stream</span> <span class="special"><=</span> <span class="identifier">foo</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">bar</span><span class="special">;</span> <span class="comment">// parentheses required
+</span></pre>
+<p>
+ As a practical matter, it may be easier and safer to never mix the character
+ and binary insertion or extraction operators in the same statement.
+ </p>
+</td></tr>
+</table></div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006 -2009 Beman Dawes<br>Copyright © 2010 Vicente J. Botet Escriba<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="../users_guide.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../users_guide.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="tutorial.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/users_guide/tutorial.html
==============================================================================
--- (empty file)
+++ sandbox/endian_ext/libs/integer/doc/html/toward_boost_integer_endian/users_guide/tutorial.html 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -0,0 +1,681 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Tutorial</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../../index.html" title="Toward Boost.Integer.Endian">
+<link rel="up" href="../users_guide.html" title=" Users'Guide">
+<link rel="prev" href="getting_started.html" title="
+ Getting Started">
+<link rel="next" href="ext_references.html" title="
+ References">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="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="getting_started.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../users_guide.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="ext_references.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_integer_endian.users_guide.tutorial"></a>Tutorial
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="tutorial.html#toward_boost_integer_endian.users_guide.tutorial.endian_aware_types">Endian
+ aware types</a></span></dt>
+<dt><span class="section"><a href="tutorial.html#toward_boost_integer_endian.users_guide.tutorial.endian_unaware_types">Endian
+ unaware types</a></span></dt>
+</dl></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_integer_endian.users_guide.tutorial.endian_aware_types"></a><a href="tutorial.html#toward_boost_integer_endian.users_guide.tutorial.endian_aware_types" title="Endian
+ aware types">Endian
+ aware types</a>
+</h4></div></div></div>
+<a name="toward_boost_integer_endian.users_guide.tutorial.endian_aware_types.basic_endian_holders"></a><h5>
+<a name="id4813552"></a>
+ <a href="tutorial.html#toward_boost_integer_endian.users_guide.tutorial.endian_aware_types.basic_endian_holders">basic
+ endian holders</a>
+ </h5>
+<p>
+ Boost.Integer.Endian provides an endian aware byte-holder class template:
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="identifier">endianness</span><span class="special">::</span><span class="identifier">enum_t</span> <span class="identifier">E</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">n_bytes</span><span class="special">=</span><span class="number">8</span><span class="special">*</span><span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">T</span><span class="special">),</span>
+ <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">enum_t</span> <span class="identifier">A</span> <span class="special">=</span> <span class="identifier">alignment</span><span class="special">::</span><span class="identifier">aligned</span><span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">endian_pack</span><span class="special">;</span>
+</pre>
+<p>
+ This class provide portable byte-holders for data, independent of particular
+ computer architectures. Use cases almost always involve I/O, either via
+ files or network connections. Although data portability is the primary
+ motivation, these byte-holders may also be used to reduce memory use, file
+ size, or network activity since they provide binary integer sizes not otherwise
+ available.
+ </p>
+<p>
+ Such byte-holder types are traditionally called endian types. See the Wikipedia
+ for a full exploration of endianness, including definitions of big endian
+ and little endian.
+ </p>
+<p>
+ This class doesn't provides arithmetic operators, but of course automatic
+ conversion to and assignment from the underlying integer value type are
+ provided.
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">integer</span><span class="special">/</span><span class="identifier">endian_pack</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">integer</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">endianness</span><span class="special">;</span>
+
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">int_least32_t</span> <span class="identifier">v</span> <span class="special">=</span> <span class="number">0x31323334L</span><span class="special">;</span> <span class="comment">// = ASCII { '1', '2', '3', '4' }
+</span> <span class="comment">// value chosen to work on text stream
+</span>
+ <span class="identifier">endian_pack</span><span class="special"><</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">int_least32_t</span><span class="special">></span> <span class="identifier">b</span><span class="special">(</span><span class="identifier">v</span><span class="special">);</span>
+ <span class="identifier">endian_pack</span><span class="special"><</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">int_least32_t</span><span class="special">></span> <span class="identifier">l</span><span class="special">(</span><span class="identifier">v</span><span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">v</span> <span class="special"><<</span> <span class="char">' '</span> <span class="special"><<</span> <span class="identifier">b</span> <span class="special"><<</span> <span class="char">' '</span> <span class="special"><<</span> <span class="identifier">l</span> <span class="special"><<</span> <span class="char">'\n'</span><span class="special">;</span>
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ On a little-endian CPU, this program outputs:
+ </p>
+<pre class="programlisting"><span class="number">825373492</span> <span class="number">825373492</span> <span class="number">825373492</span>
+</pre>
+<a name="toward_boost_integer_endian.users_guide.tutorial.endian_aware_types.binary_streams"></a><h5>
+<a name="id4814172"></a>
+ <a href="tutorial.html#toward_boost_integer_endian.users_guide.tutorial.endian_aware_types.binary_streams">Binary
+ streams</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">integer</span><span class="special">/</span><span class="identifier">endian_pack</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">integer</span><span class="special">/</span><span class="identifier">endian_binary_stream</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">binary_stream</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">integer</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">endianness</span><span class="special">;</span>
+
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">int_least32_t</span> <span class="identifier">n</span> <span class="special">=</span> <span class="number">0x31323334L</span><span class="special">;</span> <span class="comment">// = ASCII { '1', '2', '3', '4' }
+</span> <span class="comment">// value chosen to work on text stream
+</span>
+ <span class="identifier">endian_pack</span><span class="special"><</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">int_least32_t</span><span class="special">></span> <span class="identifier">b</span><span class="special">(</span><span class="identifier">n</span><span class="special">);</span>
+ <span class="identifier">endian_pack</span><span class="special"><</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">int_least32_t</span><span class="special">></span> <span class="identifier">l</span><span class="special">(</span><span class="identifier">n</span><span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">n</span> <span class="special"><<</span> <span class="char">' '</span> <span class="special"><<</span> <span class="identifier">b</span> <span class="special"><<</span> <span class="char">' '</span> <span class="special"><<</span> <span class="identifier">l</span> <span class="special"><<</span> <span class="char">'\n'</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><=</span> <span class="identifier">n</span> <span class="special"><=</span> <span class="char">' '</span> <span class="special"><=</span> <span class="identifier">b</span> <span class="special"><=</span> <span class="char">' '</span> <span class="special"><=</span> <span class="identifier">l</span> <span class="special"><=</span> <span class="char">'\n'</span><span class="special">;</span>
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ On a little-endian CPU, this program outputs:
+ </p>
+<pre class="programlisting"><span class="identifier">Hello</span><span class="special">,</span> <span class="identifier">endian</span> <span class="identifier">world</span><span class="special">!</span>
+
+<span class="number">825373492</span> <span class="number">825373492</span> <span class="number">825373492</span>
+<span class="number">4321</span> <span class="number">1234</span> <span class="number">4321</span>
+</pre>
+<a name="toward_boost_integer_endian.users_guide.tutorial.endian_aware_types.endian_aware_unaligned_byte_holders"></a><h5>
+<a name="id4814805"></a>
+ <a href="tutorial.html#toward_boost_integer_endian.users_guide.tutorial.endian_aware_types.endian_aware_unaligned_byte_holders">endian
+ aware unaligned byte holders</a>
+ </h5>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">integer</span><span class="special">/</span><span class="identifier">endian_pack</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">integer</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">endianness</span><span class="special">;</span>
+
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">int_least32_t</span> <span class="identifier">v</span> <span class="special">=</span> <span class="number">0x313233L</span><span class="special">;</span> <span class="comment">// = ASCII { '1', '2', '3' }
+</span> <span class="comment">// value chosen to work on text stream
+</span>
+ <span class="identifier">endian_pack</span><span class="special"><</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">int_least32_t</span><span class="special">,</span> <span class="number">24</span><span class="special">,</span> <span class="identifier">unaligned</span><span class="special">></span> <span class="identifier">b</span><span class="special">(</span><span class="identifier">v</span><span class="special">);</span>
+ <span class="identifier">endian_pack</span><span class="special"><</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">int_least32_t</span><span class="special">,</span> <span class="number">24</span><span class="special">,</span> <span class="identifier">unaligned</span><span class="special">></span> <span class="identifier">l</span><span class="special">(</span><span class="identifier">v</span><span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">v</span> <span class="special"><<</span> <span class="char">' '</span> <span class="special"><<</span> <span class="identifier">b</span> <span class="special"><<</span> <span class="char">' '</span> <span class="special"><<</span> <span class="identifier">l</span> <span class="special"><<</span> <span class="char">'\n'</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><=</span> <span class="identifier">b</span> <span class="special"><=</span> <span class="char">' '</span> <span class="special"><=</span> <span class="identifier">l</span> <span class="special"><=</span> <span class="char">'\n'</span><span class="special">;</span>
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ On a little-endian CPU, this program outputs:
+ </p>
+<pre class="programlisting"><span class="number">3224115</span> <span class="number">3224115</span> <span class="number">3224115</span>
+<span class="number">123</span> <span class="number">321</span>
+</pre>
+<a name="toward_boost_integer_endian.users_guide.tutorial.endian_aware_types.endian_holders_common_typedefs"></a><h5>
+<a name="id4815348"></a>
+ <a href="tutorial.html#toward_boost_integer_endian.users_guide.tutorial.endian_aware_types.endian_holders_common_typedefs">endian
+ holders common typedefs</a>
+ </h5>
+<p>
+ Sixty typedefs, such as big32_t, provide convenient naming conventions
+ for common use cases:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Endianness
+ </p>
+ </th>
+<th>
+ <p>
+ Sign
+ </p>
+ </th>
+<th>
+ <p>
+ Sizes in bits (n)
+ </p>
+ </th>
+<th>
+ <p>
+ Alignment
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">big</span></code><span class="bold"><strong>n</strong></span><code class="computeroutput"><span class="identifier">_t</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">big</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ signed
+ </p>
+ </td>
+<td>
+ <p>
+ 8,16,24,32,40,48,56,64
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">unaligned</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">ubig</span></code><span class="bold"><strong>n</strong></span><code class="computeroutput"><span class="identifier">_t</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">big</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ unsigned
+ </p>
+ </td>
+<td>
+ <p>
+ 8,16,24,32,40,48,56,64
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">unaligned</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">little</span></code><span class="bold"><strong>n</strong></span><code class="computeroutput"><span class="identifier">_t</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">little</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ signed
+ </p>
+ </td>
+<td>
+ <p>
+ 8,16,24,32,40,48,56,64
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">unaligned</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">ulittle</span></code><span class="bold"><strong>n</strong></span><code class="computeroutput"><span class="identifier">_t</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">little</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ unsigned
+ </p>
+ </td>
+<td>
+ <p>
+ 8,16,24,32,40,48,56,64
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">unaligned</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">ulittle</span></code><span class="bold"><strong>n</strong></span><code class="computeroutput"><span class="identifier">_t</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">native</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ signed
+ </p>
+ </td>
+<td>
+ <p>
+ 8,16,24,32,40,48,56,64
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">unaligned</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">unative</span></code><span class="bold"><strong>n</strong></span><code class="computeroutput"><span class="identifier">_t</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">native</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ unsigned
+ </p>
+ </td>
+<td>
+ <p>
+ 16,32,64
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">aligned</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">aligned_big</span></code><span class="bold"><strong>n</strong></span><code class="computeroutput"><span class="identifier">_t</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">big</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ signed
+ </p>
+ </td>
+<td>
+ <p>
+ 16,32,64
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">aligned</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">aligned_ubig</span></code><span class="bold"><strong>n</strong></span><code class="computeroutput"><span class="identifier">_t</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">big</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ unsigned
+ </p>
+ </td>
+<td>
+ <p>
+ 16,32,64
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">aligned</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">aligned_little</span></code><span class="bold"><strong>n</strong></span><code class="computeroutput"><span class="identifier">_t</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">big</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ signed
+ </p>
+ </td>
+<td>
+ <p>
+ 16,32,64
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">aligned</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">aligned_ulittle</span></code><span class="bold"><strong>n</strong></span><code class="computeroutput"><span class="identifier">_t</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">big</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ unsigned
+ </p>
+ </td>
+<td>
+ <p>
+ 16,32,64
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">aligned</span></code>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+ The unaligned types do not cause compilers to insert padding bytes in classes
+ and structs. This is an important characteristic that can be exploited
+ to minimize wasted space in memory, files, and network transmissions.
+ </p>
+<div class="warning"><table border="0" summary="Warning">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="../../../../../../doc/html/images/warning.png"></td>
+<th align="left">Warning</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ Code that uses aligned types is inherently non-portable because alignment
+ requirements vary between hardware architectures and because alignment
+ may be affected by compiler switches or pragmas. Furthermore, aligned
+ types are only available on architectures with 16, 32, and 64-bit integer
+ types.
+ </p></td></tr>
+</table></div>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../doc/html/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ One-byte big-endian, little-endian, and native-endian types provide identical
+ functionality. All three names are provided to improve code readability
+ and searchability.
+ </p></td></tr>
+</table></div>
+<p>
+ <span class="bold"><strong>Comment on naming</strong></span>
+ </p>
+<p>
+ When first exposed to endian types, programmers often fit them into a mental
+ model based on the <cstdint> types. Using that model, it is natural
+ to expect a 56-bit big-endian signed integer to be named <code class="computeroutput"><span class="identifier">int_big56_t</span></code>. But these integer byte-hodlers
+ are not realy integers.
+ </p>
+<p>
+ That seems to lead to formation of a new mental model specific to endian
+ byte-holder types. In that model, the endianness is the key feature, and
+ the integer aspect is downplayed. Once that mental transition is made,
+ a name like <code class="computeroutput"><span class="identifier">big56_t</span></code> is
+ a good reflection of the mental model.
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">integer</span><span class="special">/</span><span class="identifier">endian_pack</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">integer</span><span class="special">;</span>
+
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">int_least32_t</span> <span class="identifier">v</span> <span class="special">=</span> <span class="number">0x31323334L</span><span class="special">;</span> <span class="comment">// = ASCII { '1', '2', '3', '4' }
+</span> <span class="comment">// value chosen to work on text stream
+</span> <span class="identifier">big32_t</span> <span class="identifier">b</span><span class="special">(</span><span class="identifier">v</span><span class="special">);</span>
+ <span class="identifier">little32_t</span> <span class="identifier">l</span><span class="special">(</span><span class="identifier">v</span><span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">v</span> <span class="special"><<</span> <span class="char">' '</span> <span class="special"><<</span> <span class="identifier">b</span> <span class="special"><<</span> <span class="char">' '</span> <span class="special"><<</span> <span class="identifier">l</span> <span class="special"><<</span> <span class="char">'\n'</span><span class="special">;</span>
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ On a little-endian CPU, this program outputs:
+ </p>
+<pre class="programlisting"><span class="number">825373492</span> <span class="number">825373492</span> <span class="number">825373492</span>
+</pre>
+<a name="toward_boost_integer_endian.users_guide.tutorial.endian_aware_types.endian_holders_of_udt"></a><h5>
+<a name="id4816612"></a>
+ <a href="tutorial.html#toward_boost_integer_endian.users_guide.tutorial.endian_aware_types.endian_holders_of_udt">endian
+ holders of UDT</a>
+ </h5>
+<p>
+ The user can define wrappers to integer types that behave as integers,
+ as it is the case for quantity<> class. This UDT can be packaged
+ on an endian holder to take care of endian issues, as show the following
+ example.
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">integer</span><span class="special">/</span><span class="identifier">endian_pack</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">integer</span><span class="special">/</span><span class="identifier">endian_binary_stream</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">binary_stream</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">units</span><span class="special">/</span><span class="identifier">io</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">units</span><span class="special">/</span><span class="identifier">quantity</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">units</span><span class="special">/</span><span class="identifier">systems</span><span class="special">/</span><span class="identifier">si</span><span class="special">/</span><span class="identifier">length</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">units</span><span class="special">/</span><span class="identifier">systems</span><span class="special">/</span><span class="identifier">si</span><span class="special">/</span><span class="identifier">plane_angle</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">integer</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">endianness</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">units</span><span class="special">;</span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">quantity</span><span class="special"><</span><span class="identifier">si</span><span class="special">::</span><span class="identifier">length</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">int_least32_t</span><span class="special">></span> <span class="identifier">q</span> <span class="special">=</span> <span class="number">825373492</span> <span class="special">*</span> <span class="identifier">si</span><span class="special">::</span><span class="identifier">meter</span><span class="special">;</span>
+ <span class="identifier">endian_pack</span><span class="special"><</span><span class="identifier">big</span><span class="special">,</span> <span class="identifier">quantity</span><span class="special"><</span><span class="identifier">si</span><span class="special">::</span><span class="identifier">length</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">int_least32_t</span><span class="special">></span> <span class="special">></span> <span class="identifier">b</span><span class="special">;</span>
+ <span class="identifier">endian_pack</span><span class="special"><</span><span class="identifier">little</span><span class="special">,</span> <span class="identifier">quantity</span><span class="special"><</span><span class="identifier">si</span><span class="special">::</span><span class="identifier">length</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">int_least32_t</span><span class="special">></span> <span class="special">></span> <span class="identifier">l</span><span class="special">;</span>
+ <span class="identifier">b</span><span class="special">=</span><span class="identifier">q</span><span class="special">;</span>
+ <span class="identifier">l</span><span class="special">=</span><span class="identifier">q</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">q</span> <span class="special"><<</span> <span class="char">' '</span> <span class="special"><<</span> <span class="identifier">b</span> <span class="special"><<</span> <span class="char">' '</span> <span class="special"><<</span> <span class="identifier">l</span> <span class="special"><<</span> <span class="char">'\n'</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><=</span> <span class="identifier">b</span> <span class="special"><=</span> <span class="char">' '</span> <span class="special"><=</span> <span class="identifier">l</span> <span class="special"><=</span> <span class="char">'\n'</span><span class="special">;</span>
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ On a little-endian CPU, this program outputs:
+ </p>
+<p>
+ 825373492 m 825373492 m 825373492 m 1234 4321
+ </p>
+<a name="toward_boost_integer_endian.users_guide.tutorial.endian_aware_types.arrays_of_endian_holders"></a><h5>
+<a name="id4817563"></a>
+ <a href="tutorial.html#toward_boost_integer_endian.users_guide.tutorial.endian_aware_types.arrays_of_endian_holders">Arrays
+ of endian holders</a>
+ </h5>
+<p>
+ Up to now we have see how to work with endian aware byte holders variables.
+ In this section we will see how to work with arrays of endian aware byte
+ holders.
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">integer</span><span class="special">/</span><span class="identifier">endian_pack</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">integer</span><span class="special">/</span><span class="identifier">endian_binary_stream</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">binary_stream</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">integer</span><span class="special">;</span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">int_least32_t</span> <span class="identifier">an</span><span class="special">[</span><span class="number">100</span><span class="special">]</span> <span class="special">=</span> <span class="special">{</span> <span class="number">0x31323334L</span> <span class="special">};</span> <span class="comment">// = ASCII { '1', '2', '3', '4' }
+</span> <span class="comment">// value chosen to work on text stream
+</span> <span class="identifier">big32_t</span> <span class="identifier">ab</span><span class="special">[</span><span class="number">100</span><span class="special">];</span>
+ <span class="identifier">little32_t</span> <span class="identifier">al</span><span class="special">[</span><span class="number">100</span><span class="special">];</span>
+
+ <span class="identifier">for_each</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">an</span><span class="special">[</span><span class="number">3</span><span class="special">]</span> <span class="special"><<</span> <span class="char">' '</span> <span class="special"><<</span> <span class="identifier">ab</span><span class="special">[</span><span class="number">3</span><span class="special">]</span> <span class="special"><<</span> <span class="char">' '</span> <span class="special"><<</span> <span class="identifier">al</span><span class="special">[</span><span class="number">3</span><span class="special">]</span> <span class="special"><<</span> <span class="char">'\n'</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><=</span> <span class="identifier">an</span><span class="special">[</span><span class="number">3</span><span class="special">]</span> <span class="special"><=</span> <span class="char">' '</span> <span class="special"><=</span> <span class="identifier">ab</span><span class="special">[</span><span class="number">3</span><span class="special">]</span> <span class="special"><=</span> <span class="char">' '</span> <span class="special"><=</span> <span class="identifier">al</span><span class="special">[</span><span class="number">3</span><span class="special">]</span> <span class="special"><=</span> <span class="char">'\n'</span><span class="special">;</span>
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<a name="toward_boost_integer_endian.users_guide.tutorial.endian_aware_types.structures_of_endian_holders"></a><h5>
+<a name="id4818166"></a>
+ <a href="tutorial.html#toward_boost_integer_endian.users_guide.tutorial.endian_aware_types.structures_of_endian_holders">Structures
+ of endian holders</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">UdpHeader</span> <span class="special">{</span>
+ <span class="identifier">ubig16_pt</span> <span class="identifier">source_port</span><span class="special">;</span>
+ <span class="identifier">ubig16_pt</span> <span class="identifier">destination_port</span><span class="special">;</span>
+ <span class="identifier">ubig16_pt</span> <span class="identifier">length</span><span class="special">;</span>
+ <span class="identifier">ubig16_pt</span> <span class="identifier">checksum</span><span class="special">;</span>
+<span class="special">};</span> <span class="comment">// UdpHeader
+</span>
+<span class="identifier">UdpHeader</span> <span class="identifier">header</span><span class="special">;</span>
+<span class="identifier">header</span><span class="special">.</span><span class="identifier">source_port</span> <span class="special">=</span> <span class="number">1111</span><span class="special">;</span>
+<span class="identifier">header</span><span class="special">.</span><span class="identifier">destination_port</span> <span class="special">=</span> <span class="number">1234</span><span class="special">;</span>
+<span class="identifier">header</span><span class="special">.</span><span class="identifier">length</span> <span class="special">=</span> <span class="identifier">get_length</span><span class="special">(</span><span class="identifier">p</span><span class="special">);</span>
+<span class="identifier">header</span><span class="special">.</span><span class="identifier">checksum</span> <span class="special">=</span> <span class="identifier">checksum_of</span><span class="special">(</span><span class="identifier">p</span><span class="special">);</span>
+</pre>
+<a name="toward_boost_integer_endian.users_guide.tutorial.endian_aware_types.endian_integers"></a><h5>
+<a name="id4818420"></a>
+ <a href="tutorial.html#toward_boost_integer_endian.users_guide.tutorial.endian_aware_types.endian_integers">endian
+ integers</a>
+ </h5>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_integer_endian.users_guide.tutorial.endian_unaware_types"></a><a href="tutorial.html#toward_boost_integer_endian.users_guide.tutorial.endian_unaware_types" title="Endian
+ unaware types">Endian
+ unaware types</a>
+</h4></div></div></div>
+<a name="toward_boost_integer_endian.users_guide.tutorial.endian_unaware_types.working_with_third_party_structures"></a><h5>
+<a name="id4818460"></a>
+ <a href="tutorial.html#toward_boost_integer_endian.users_guide.tutorial.endian_unaware_types.working_with_third_party_structures">Working
+ with third party structures</a>
+ </h5>
+<a name="toward_boost_integer_endian.users_guide.tutorial.endian_unaware_types.in_place_conversions"></a><h5>
+<a name="id4818484"></a>
+ <a href="tutorial.html#toward_boost_integer_endian.users_guide.tutorial.endian_unaware_types.in_place_conversions">In-place
+ conversions</a>
+ </h5>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2006 -2009 Beman Dawes<br>Copyright © 2010 Vicente J. Botet Escriba<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="getting_started.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../users_guide.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="ext_references.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Modified: sandbox/endian_ext/libs/integer/doc/integer_endian.qbk
==============================================================================
--- sandbox/endian_ext/libs/integer/doc/integer_endian.qbk (original)
+++ sandbox/endian_ext/libs/integer/doc/integer_endian.qbk 2010-06-20 18:01:51 EDT (Sun, 20 Jun 2010)
@@ -6,7 +6,7 @@
/ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
/]
-[article Toward Boost.Endian
+[article Toward Boost.Integer.Endian
[quickbook 1.4]
[authors [Dawes, Beman]]
[authors [Botet Escriba, Vicente J.]]
@@ -29,7 +29,7 @@
[endsect]
/]
-[warning Endian.Integers is not a part of the Boost libraries.]
+[warning Integer.Endian is not a part of the Boost libraries.]
[/========================]
@@ -40,8 +40,9 @@
[heading Description]
[/==================]
+This is an extension of the Beman's Boost.Integer.Endian, which was able to work with endian aware types, used to convert between types with different endian or even to carry on with arithmetic operations, by spliting the endian part from integer part and by adding support for aligned endian unaware types.
-[*Boost.Integer.Endian] provides:
+[*Boost.Integer.Endian.Ext] provides:
* Endian packs
* Big endian | little endian | native endian byte ordering.
@@ -54,8 +55,12 @@
* Operators <= and => for unformatted binary (as opposed to formatted character) stream insertion and extraction of built-in, std::string types and of endian types.
-* Views of aligned integer types as endian packs or endian integers.
-* Generic In place conversion between different endian formats.
+* Views of aligned endian unaware integer types as endian packs or endian integers so we can make endian conversion.
+
+* Generic in place conversion between different endian formats.
+ * Very simple interface: convert_to/from<endiannes domain>(),
+ * Support for built-in and user-defined data types view as fusion sequences.
+
[/====================================]
[heading How to Use This Documentation]
@@ -79,9 +84,154 @@
// Include all of endian files
#include <boost/integer/endian.hpp>
+[/=================]
[section Motivation]
+[/=================]
+The original Beman's version provided through the boost::integer::endian<> class an integer-like class that providing arithmetics operations on
+
+* Big endian | little endian | native endian byte ordering.
+* Signed | unsigned
+* Unaligned | aligned
+* 1-8 byte (unaligned) | 2, 4, 8 byte (aligned)
+* Choice of integer value type
+
+This endain aware design seems to be unappropiated to work with endian unaware types, but as we will see this is not completly true, as we can construct on top of the Beman's design endian unaware operation. Next follows some of the main critics that have been done recently.
+
+[heading Intrusive verus non-intrusive]
+[/====================================]
+
+Endian conversion must be possible to any type even if you can't modify the original source code. Many people think that originel Beman's library requires the data types which need to be converted to be coded using his endian types as members.
+
+We will see that this is not true, as the user can always use casting to reinterpret a given structure on another one, as the proposed extension does with the endian_views.
+
+ struct endian_unaware_structure {
+ int32_t a;
+ int16_t b;
+ };
+ endian_unaware_structure st_a;
+
+ endian_unaware_structure st_b;
+ as_endian<native>(st_b) = as_endian<big>(st_a);
+
+[heading Physical versus Logical data]
+[/===================================]
+
+The typical use case is to use native endianness until ready to read/write using wire format. It is only when ready to do I/O that there is a need to account for endianness.
+Beman's original library requires two types one to specify the physical data and the other representing the logical data.
+Many people think that this means that the user has to maintain two separate structs/classes when only one is needed. This could be sometimes the case, but in other cases, the user will store the information elements include in the message on local variables and specific contexts that don't follow the external format.
+
+Applications that don't separate the physical and the logical data structures don't scale well as any change on the external format will mean a refactoring of the whole application. Also, the wire structures cannot maintain invariants, so having a separate class is often useful even if its contents are essentially identical to the wire version.
+
+In addition a single and efficient view is only possible when the pysical view can be represented by native aligned integers. But when the physical view contains unaliged integers with sizes not supported by the platform, the need to separate both view becomes anavoidable. Here the Beman's design is the best adapted.
+
+[heading Inherent inefficient arithmetic operations]
+[/=================================================]
+
+The fact that the endian types provide operators gives the impression that it's ok to operate on them, as these operations can potentially require two endian conversions when the endianness is different.
+
+Some people don't agree with that design choice, as they think the operation of endian conversion and operating on the data should be divorced from each other. A less experienced user that you may end up not realizing what the hidden costs are and use the endian aware integer-like types throughout the application, paying unnecessary overheads. They prefer a library that makes hard to misuse in that way; borrowing a phrase from python, "explicit is better than implicit". They believe that forcing the user to do the explicit endian conversion leads to better separation of concerns for the application, but they don't propose any mean to force this conversion.
+
+The extension proposal separates the endian aware byte-holder type from the one able to make arithmetic operations so the user will be forced to convert for one to/from the native type, and avoid unfortunate costly atithmetic operations.
+
+ struct endian_aware_structure {
+ endian_holder<big,int32_t> a;
+ endian_holder<big,int16_t> b;
+ };
+
+
+Structure endian_aware_structure can not be used without converting to native types, as endian_holder don't provide other operations than conversion.
+
+ endian_aware_structure st;
+ // ...
+ st.a=i;
+ st.b=j;
+
+But don't removes the inefficient and endian safe class, as less demanding applications would benefit from the safe and transparent approach.
+
+[heading In-place conversion]
+[/==========================]
+
+Other contexts force the user to make in place conversions. While this could be dangerous, there are context on which a funtional conversion is not possible, mainly because the duplicated space could not be an option. These in-place conversions are only possible for aligned endian unaware types.
+
+ struct endian_unaware_structure {
+ int32_t a;
+ int16_t b;
+ };
+ endian_unaware_structure st;
+
+ as_endian<native>(st) = as_endian<big>(st);
+
+The fact that some context need this in-place conversion doesn't mean that every application should use this approach.
+
+
+[heading UDT endianness]
+[/=====================]
+
+It has been also arged that the boost::integer::endian class didn't accepts a UDT. This is true when the endian is unaligned, but not for aligned types.
+
+ struct UserMessage {
+ endian_pack<little, system_clock::time_point > timestamp;
+ ulittle32_pt aircraft_id;
+ struct Position {
+ endian_pack<little, quantity<si::length, boost::int_least32_t> > x;
+ endian_pack<little, quantity<si::length, boost::int_least32_t> > y;
+ endian_pack<little, quantity<si::length, boost::int_least32_t> > z;
+ } position;
+ struct Attitude {
+ endian_pack<little, quantity<si::plane_angle, boost::int_least8_t> > heading;
+ endian_pack<little, quantity<si::plane_angle, boost::int_least8_t> > pitch;
+ endian_pack<little, quantity<si::plane_angle, boost::int_least8_t> > roll;
+ } attitude;
+ }; // UserMessage
+
+
+[heading Mixed endianness]
+[/=======================]
+
+Sometimes we need to deal with messages with mixed endianness.
+A functional approach means the programmer has to "know" which endianess the data he wants to convert has.
+
+ struct UdpHeader {
+ ubig16_pt source_port;
+ ubig16_pt destination_port;
+ ubig16_pt length;
+ ubig16_pt checksum;
+ }; // UdpHeader
+
+ struct Packet {
+ internet::UdpHeader udpHeader;
+ UserMessage userMessage;
+ }; // Packet
+
+
+
+[/A real-world use-case that uses multiple endians and has
+different protocol layers.
+That is one over-the-wire packet has several layers of headers, possibly
+with different endian alignment than the user payload contained. This is
+common on PC's which often have big-endian IP headers and then have a
+little-endian user payload. The whole packet is read in from a socket at
+once into a data buffer owned by a unique_ptr, so the message is not copied
+from layer-to-layer. I work on proprietary, non-internet networks, so I'm
+not sure which protocol headers we should use for a use-case. In my
+wireless applications, the headers are usually padded to an integral number
+of bytes, but fields within the headers are sometimes not byte-aligned.
+]
+
+
+[heading Floating point]
+[/====================================]
+
+From my understanding floating point types are not only concerned by endianness, but also by a multitude of standard on not standard formats.
+
+[heading Conclusion]
+[/=================]
+
+The library must support applications needing to work safely with endian aware types and efficiently with in place endian conversions.
+
+Conversions between native and big/little endian formats must be simple.
[endsect]
[endsect]
@@ -107,11 +257,10 @@
You can also access the latest (unstable?) state from the [@https://svn.boost.org/svn/boost/sandbox/endian_split Boost Sandbox].
-[/=================================]
[heading Building Boost.Integer.Endian]
-[/=================================]
+[/====================================]
-Boost.Endian is implemented entirely within headers, with no need to link to any Boost object libraries.
+Boost.Integer.Endian is implemented entirely within headers, with no need to link to any Boost object libraries.
Several macros allow user control over features:
@@ -125,7 +274,7 @@
[heading Requirements]
[/=========================]
-[*Boost.Integer.Endian] depends on some Boost library. For these specific parts you must use either Boost version 1.38.0 or the version in SVN trunk (even if older version should works also).
+[*Boost.Integer.Endian] depends on some Boost library. For these specific parts you must use either Boost version 1.43.0 or the version in SVN trunk (even if older version should works also).
[/========================]
@@ -140,7 +289,6 @@
All functions in the library are thread-unsafe except when noted explicitly.
-
[/=======================]
[heading Tested compilers]
[/=======================]
@@ -190,7 +338,9 @@
[endsect]
+[/===================]
[section Limitations ]
+[/===================]
Requires `<climits> CHAR_BIT == 8`. If `CHAR_BIT` is some other value, compilation will result in an `#error`. This restriction is in place because the design, implementation, testing, and documentation has only considered issues related to 8-bit bytes, and there have been no real-world use cases presented for other sizes.
@@ -198,7 +348,7 @@
[heading Binary I/O warnings and cautions]
-[warning Use only on streams opened with filemode std::ios_base::binary. Thus unformatted binary I/O should not be with the standard streams (cout, cin, etc.) since they are opened in text mode. Use on text streams may produce incorrect results, such as insertion of unwanted characters or premature end-of-file. For example, on Windows 0x0D would become 0x0D, 0x0A.]
+[warning Use only on streams opened with filemode `std::ios_base::binary`. Thus unformatted binary I/O should not be with the standard streams (`cout`, `cin`, etc.) since they are opened in text mode. Use on text streams may produce incorrect results, such as insertion of unwanted characters or premature end-of-file. For example, on Windows `0x0D` would become `0x0D`, `0x0A`.]
[warning Caution: When mixing formatted (i.e. operator `<<` or `>>`) and unformatted (i.e. operator `<=` or `>=`) stream I/O, be aware that `<<` and `>>` take precedence over `<=` and `>=`. Use parentheses to force correct order of evaluation. For example:
@@ -212,14 +362,277 @@
[endsect]
[endsect]
+[/===============]
[section Tutorial]
+[/===============]
+
+[/=========================]
+[section Endian aware types]
+[/=========================]
+
+[heading basic endian holders]
+
+Boost.Integer.Endian provides an endian aware byte-holder class template:
+
+ template <endianness::enum_t E, typename T, std::size_t n_bytes=8*sizeof(T),
+ alignment::enum_t A = alignment::aligned>
+ class endian_pack;
+
+This class provide portable byte-holders for data, independent of particular computer architectures. Use cases almost always involve I/O, either via files or network connections. Although data portability is the primary motivation, these byte-holders may also be used to reduce memory use, file size, or network activity since they provide binary integer sizes not otherwise available.
+
+Such byte-holder types are traditionally called endian types. See the Wikipedia for a full exploration of endianness, including definitions of big endian and little endian.
+
+This class doesn't provides arithmetic operators, but of course automatic conversion to and assignment from the underlying integer value type are provided.
+
+ #include <boost/integer/endian_pack.hpp>
+ #include <iostream>
+
+ using namespace boost;
+ using namespace boost::integer;
+ using namespace boost::endianness;
+ int main()
+ {
+ int_least32_t v = 0x31323334L; // = ASCII { '1', '2', '3', '4' }
+ // value chosen to work on text stream
+
+ endian_pack<big, int_least32_t> b(v);
+ endian_pack<little, int_least32_t> l(v);
+
+ std::cout << v << ' ' << b << ' ' << l << '\n';
+ return 0;
+ }
+
+On a little-endian CPU, this program outputs:
+
+ 825373492 825373492 825373492
+
+[heading Binary streams]
+
+ #include <boost/integer/endian_pack.hpp>
+ #include <boost/integer/endian_binary_stream.hpp>
+ #include <boost/binary_stream.hpp>
+ #include <iostream>
+
+ using namespace boost;
+ using namespace boost::integer;
+ using namespace boost::endianness;
+
+
+ int main()
+ {
+ int_least32_t n = 0x31323334L; // = ASCII { '1', '2', '3', '4' }
+ // value chosen to work on text stream
+
+ endian_pack<big, int_least32_t> b(n);
+ endian_pack<little, int_least32_t> l(n);
+
+ std::cout << n << ' ' << b << ' ' << l << '\n';
+ std::cout <= n <= ' ' <= b <= ' ' <= l <= '\n';
+ return 0;
+ }
+
+On a little-endian CPU, this program outputs:
+
+ Hello, endian world!
+
+ 825373492 825373492 825373492
+ 4321 1234 4321
+
+
+[heading endian aware unaligned byte holders]
+
+
+ #include <boost/integer/endian_pack.hpp>
+ #include <iostream>
+
+ using namespace boost;
+ using namespace boost::integer;
+ using namespace boost::endianness;
+
+
+ int main()
+ {
+ int_least32_t v = 0x313233L; // = ASCII { '1', '2', '3' }
+ // value chosen to work on text stream
+
+ endian_pack<big, int_least32_t, 24, unaligned> b(v);
+ endian_pack<little, int_least32_t, 24, unaligned> l(v);
+
+ std::cout << v << ' ' << b << ' ' << l << '\n';
+ std::cout <= b <= ' ' <= l <= '\n';
+ return 0;
+ }
+
+On a little-endian CPU, this program outputs:
+
+ 3224115 3224115 3224115
+ 123 321
+
+
+[heading endian holders common typedefs]
+
+
+Sixty typedefs, such as big32_t, provide convenient naming conventions for common use cases:
+
+
+[table
+ [[Name] [Endianness] [Sign] [Sizes in bits (n)] [Alignment]]
+ [[`big`*n*`_t`] [`big`] [signed] [8,16,24,32,40,48,56,64] [`unaligned`]]
+ [[`ubig`*n*`_t`] [`big`] [unsigned] [8,16,24,32,40,48,56,64] [`unaligned`]]
+ [[`little`*n*`_t`] [`little`] [signed] [8,16,24,32,40,48,56,64] [`unaligned`]]
+ [[`ulittle`*n*`_t`] [`little`] [unsigned] [8,16,24,32,40,48,56,64] [`unaligned`]]
+ [[`ulittle`*n*`_t`] [`native`] [signed] [8,16,24,32,40,48,56,64] [`unaligned`]]
+ [[`unative`*n*`_t`] [`native`] [unsigned] [16,32,64] [`aligned`]]
+ [[`aligned_big`*n*`_t`] [`big`] [signed] [16,32,64] [`aligned`]]
+ [[`aligned_ubig`*n*`_t`] [`big`] [unsigned] [16,32,64] [`aligned`]]
+ [[`aligned_little`*n*`_t`] [`big`] [signed] [16,32,64] [`aligned`]]
+ [[`aligned_ulittle`*n*`_t`] [`big`] [unsigned] [16,32,64] [`aligned`]]
+]
+
+The unaligned types do not cause compilers to insert padding bytes in classes and structs. This is an important characteristic that can be exploited to minimize wasted space in memory, files, and network transmissions.
+
+[warning Code that uses aligned types is inherently non-portable because alignment requirements vary between hardware architectures and because alignment may be affected by compiler switches or pragmas. Furthermore, aligned types are only available on architectures with 16, 32, and 64-bit integer types.]
+
+[note One-byte big-endian, little-endian, and native-endian types provide identical functionality. All three names are provided to improve code readability and searchability.
+]
+
+[*Comment on naming]
+
+When first exposed to endian types, programmers often fit them into a mental model based on the <cstdint> types. Using that model, it is natural to expect a 56-bit big-endian signed integer to be named `int_big56_t`. But these integer byte-hodlers are not realy integers.
+
+That seems to lead to formation of a new mental model specific to endian byte-holder types. In that model, the endianness is the key feature, and the integer aspect is downplayed. Once that mental transition is made, a name like `big56_t` is a good reflection of the mental model.
+
+
+
+ #include <boost/integer/endian_pack.hpp>
+ #include <iostream>
+
+ using namespace boost;
+ using namespace boost::integer;
+
+
+ int main()
+ {
+ int_least32_t v = 0x31323334L; // = ASCII { '1', '2', '3', '4' }
+ // value chosen to work on text stream
+ big32_t b(v);
+ little32_t l(v);
+
+ std::cout << v << ' ' << b << ' ' << l << '\n';
+ return 0;
+ }
+
+On a little-endian CPU, this program outputs:
+
+ 825373492 825373492 825373492
+
+
+[heading endian holders of UDT]
+
+The user can define wrappers to integer types that behave as integers, as it is the case for
+quantity<> class. This UDT can be packaged on an endian holder to take care of endian issues, as show the following example.
+
+ #include <boost/integer/endian_pack.hpp>
+ #include <boost/integer/endian_binary_stream.hpp>
+ #include <boost/binary_stream.hpp>
+ #include <iostream>
+ #include <boost/units/io.hpp>
+ #include <boost/units/quantity.hpp>
+ #include <boost/units/systems/si/length.hpp>
+ #include <boost/units/systems/si/plane_angle.hpp>
+
+ using namespace boost;
+ using namespace boost::integer;
+ using namespace boost::endianness;
+ using namespace boost::units;
+
+ int main()
+ {
+ quantity<si::length, boost::int_least32_t> q = 825373492 * si::meter;
+ endian_pack<big, quantity<si::length, boost::int_least32_t> > b;
+ endian_pack<little, quantity<si::length, boost::int_least32_t> > l;
+ b=q;
+ l=q;
+ std::cout << q << ' ' << b << ' ' << l << '\n';
+ std::cout <= b <= ' ' <= l <= '\n';
+ return 0;
+ }
+
+On a little-endian CPU, this program outputs:
+
+825373492 m 825373492 m 825373492 m
+1234 4321
+
+[heading Arrays of endian holders]
+
+Up to now we have see how to work with endian aware byte holders variables. In this section we will see how to work with arrays of endian aware byte holders.
+
+ #include <boost/integer/endian_pack.hpp>
+ #include <boost/integer/endian_binary_stream.hpp>
+ #include <boost/binary_stream.hpp>
+ #include <iostream>
+
+ using namespace boost;
+ using namespace boost::integer;
+
+ int main()
+ {
+ int_least32_t an[100] = { 0x31323334L }; // = ASCII { '1', '2', '3', '4' }
+ // value chosen to work on text stream
+ big32_t ab[100];
+ little32_t al[100];
+
+ for_each
+
+ std::cout << an[3] << ' ' << ab[3] << ' ' << al[3] << '\n';
+ std::cout <= an[3] <= ' ' <= ab[3] <= ' ' <= al[3] <= '\n';
+ return 0;
+ }
+
+
+[heading Structures of endian holders]
+
+ struct UdpHeader {
+ ubig16_pt source_port;
+ ubig16_pt destination_port;
+ ubig16_pt length;
+ ubig16_pt checksum;
+ }; // UdpHeader
+
+ UdpHeader header;
+ header.source_port = 1111;
+ header.destination_port = 1234;
+ header.length = get_length(p);
+ header.checksum = checksum_of(p);
+
+
+[heading endian integers]
+
[endsect]
+[/===========================]
+[section Endian unaware types]
+[/===========================]
+
+[heading Working with third party structures]
+
+[heading In-place conversions]
+
+[endsect]
+
+
+
+[endsect]
+
+
+[/================================]
[section:ext_references References]
+[/================================]
+
[/variablelist
[
@@ -237,17 +650,19 @@
[endsect]
+[/================]
[section Reference]
+[/================]
[/==========================================================================================]
[section:alignment_hpp Header `<boost/alignment.hpp>`]
[/==========================================================================================]
+[heading Synopsis]
+
namespace boost
{
-
enum class alignment { unaligned, aligned }; // scoped enum emulated on C++03
-
}
@@ -264,25 +679,28 @@
[endsect]
[/==========================================================================================]
-[section:endian_types_hpp Header `<boost/endian/types.hpp>`]
+[section:integer_endianness_hpp Header `<boost/integer/endiannes.hpp>`]
[/==========================================================================================]
+[heading Synopsis]
+
namespace boost
- {
-
- // scoped enum emulated on C++03
- enum class endianness { big, little, middle, mixed, native=<platform dependent> };
+ {
- namespace endian {
+ namespace endianness {
struct big;
struct little;
struct middle;
struct mixed;
typedef <platform dependent> native ;
}
-
}
+[/
+ // scoped enum emulated on C++03
+ enum class endianness { big, little, middle, mixed, native=<platform dependent> };
+
+
[/==========================================================================================]
[section:endian_endianness Enum Class `endianness`]
[/==========================================================================================]
@@ -290,6 +708,7 @@
enum class endianness { big, little, middle, mixed, native=<platform dependent> };
[endsect]
+]
[/==========================================================================================]
[section:endian_big Class `big`]
@@ -342,13 +761,11 @@
[endsect]
[/==========================================================================================]
-[section:endian_shared_tree_hpp Header `<boost/endian/domain_map.hpp>`]
+[section:endian_domain_map_hpp Header `<boost/endian/domain_map.hpp>`]
[/==========================================================================================]
-[/==========================================================================================]
-[section:endian_shared_tree Meta Function `domain_map`]
-[/==========================================================================================]
+[heading Synopsis]
namespace boost {
namespace endian {
@@ -357,24 +774,138 @@
}}
+[/==========================================================================================]
+[section:domain_map Meta Function `domain_map<>`]
+[/==========================================================================================]
+
+ template <typename Domain, typename T>
+ struct domain_map {
+ typedef <see below> type;
+ };
+
+* [*Requires:]
+
+ * `Domain` any class. Can be also `endianness::big` or `endianness::little`.
+
+* [*Result:] The member typedef `type` names a mpl tree of sequence of `endianness` types as view from the point of view of the `Domain`. The default definition is a mpl tree having as leaves the `Domain` class for `T` fundamental types, and fusion sequences.
+
+* [*Example:]
+
+ is_same<domain_map<endianness::big, int>::type, endianness::big>::value == true
+
+ struct ifA {};
+
+
+The user needs to specialize this metafunction for specific domains.
+
+[/warning It is undefined any specialization of this class for the `endianness` `big` and `little`.]
+
[endsect]
[endsect]
+[/==========================================================================================]
+[section:binary_stream_hpp Header `<boost/binary_stream.hpp>`]
+[/==========================================================================================]
+
+Header <boost/binary_stream.hpp> provides operators `<=` and `=>` for unformatted binary (as opposed to formatted character) stream insertion and extraction of built-in and std::string types.
+
+[heading Synopsis]
+
+ namespace boost
+ {
+
+ // built-in types ------------------------------------------------------------------//
+
+ std::ostream& operator<=(std::ostream& os, short v);
+ std::istream& operator>=(std::istream& is, short& v);
+
+ std::ostream& operator<=(std::ostream& os, unsigned short v);
+ std::istream& operator>=(std::istream& is, unsigned short& v);
+
+ std::ostream& operator<=(std::ostream& os, int v);
+ std::istream& operator>=(std::istream& is, int& v);
+
+ std::ostream& operator<=(std::ostream& os, unsigned int v);
+ std::istream& operator>=(std::istream& is, unsigned int& v);
+
+ std::ostream& operator<=(std::ostream& os, long v);
+ std::istream& operator>=(std::istream& is, long& v);
+
+ std::ostream& operator<=(std::ostream& os, unsigned long v);
+ std::istream& operator>=(std::istream& is, unsigned long& v);
+
+ std::ostream& operator<=(std::ostream& os, long long v);
+ std::istream& operator>=(std::istream& is, long long& v);
+
+ std::ostream& operator<=(std::ostream& os, unsigned long long v);
+ std::istream& operator>=(std::istream& is, unsigned long long& v);
+
+ std::ostream& operator<=(std::ostream& os, float v);
+ std::istream& operator>=(std::istream& is, float& v);
+
+ std::ostream& operator<=(std::ostream& os, double v);
+ std::istream& operator>=(std::istream& is, double& v);
+
+ std::ostream& operator<=(std::ostream& os, long double v);
+ std::istream& operator>=(std::istream& is, long double& v);
+
+ std::ostream& operator<=(std::ostream& os, char c);
+ std::istream& operator>=(std::istream& is, char& c);
+
+ std::ostream& operator<=(std::ostream& os, signed char c);
+ std::istream& operator>=(std::istream& is, signed char& c);
+
+ std::ostream& operator<=(std::ostream& os, unsigned char c);
+ std::istream& operator>=(std::istream& is, unsigned char& c);
+
+ std::ostream& operator<=(std::ostream& os, wchar_t v);
+ std::istream& operator>=(std::istream& is, wchar_t& v);
+
+ // strings -------------------------------------------------------------------------//
+
+ std::ostream& operator<=(std::ostream& os, const char* p);
+
+ std::ostream& operator<=(std::ostream& os, const signed char* p);
+
+ std::ostream& operator<=(std::ostream& os, const unsigned char* p);
+
+ #ifndef BOOST_NO_CWCHAR
+ std::ostream& operator<=(std::ostream& os, const wchar_t* p);
+ #endif
+
+ std::ostream& operator<=(std::ostream& os, const std::string& s);
+ std::istream& operator>=(std::istream& is, std::string& s);
+
+ #ifndef BOOST_NO_STD_WSTRING
+ std::ostream& operator<=(std::ostream& os, const std::wstring& s);
+ std::istream& operator>=(std::istream& is, std::wstring& s);
+ #endif
+
+ } // namespace boost
+
+[note Omission of bool and void* is deliberate; any semantics would be questionable]
+
+[warning
+Note the asymmetry between output and input; a string with embedded
+nulls will be output with the embedded nulls, but input will stop at the first null.
+So it probably isn't a good idea to use these functions for strings with nulls.
+]
+
+[endsect]
+
[/==========================================================================================]
[section:integer_endian_pack_hpp Header `<boost/integer/endian_pack.hpp>`]
[/==========================================================================================]
-This file contains the core class template of Integer.Endian. Provides byte-holder binary types with explicit control over byte order, value type, size, and alignment. Typedefs provide easy-to-use names for common configurations.
+This file contains the core class template of Boost.Integer.Endian. Provides byte-holder binary types with explicit control over byte order, value type, size, and alignment. Typedefs provide easy-to-use names for common configurations.
-These types provide portable byte-holders for integer data, independent of particular computer architectures. Use cases almost always involve I/O, either via files or network connections. Although data portability is the primary motivation, these integer byte-holders may also be used to reduce memory use, file size, or network activity since they provide binary integer sizes not otherwise available.
+[heading Synopsis]
-Such integer byte-holder types are traditionally called endian types. See the Wikipedia for a full exploration of endianness, including definitions of big endian and little endian.
-This class soesn't provides arithmetic operators, but of course automatic conversion is provided to the underlying integer value type.
+An `endian_pack` is an byte-holder with user-specified endianness, value type, size, and alignment.
-An `endian_pack` is an byte-holder with user-specified endianness, intger value type, size, and alignment.
[endsect]
@@ -394,8 +925,8 @@
One class template is provided:
- template <endianness::enum_t E, typename T, std::size_t n_bytes,
- alignment::enum_t A = alignment::unaligned>
+ template <endianness::enum_t E, typename T, std::size_t n_bytes=8*sizeof(T),
+ alignment::enum_t A = alignment::aligned>
class endian;
Sixty typedefs, such as big32_t, provide convenient naming conventions for common use cases:
@@ -403,16 +934,16 @@
[table
[[Name] [Endianness] [Sign] [Sizes in bits (n)] [Alignment]]
- [[`big`*n*`_t`] [`big`] [signed] [8,16,24,32,40,48,56,64] [`unaligned`]]
- [[`ubig`*n*`_t`] [`big`] [unsigned] [8,16,24,32,40,48,56,64] [`unaligned`]]
- [[`little`*n*`_t`] [`little`] [signed] [8,16,24,32,40,48,56,64] [`unaligned`]]
- [[`ulittle`*n*`_t`] [`little`] [unsigned] [8,16,24,32,40,48,56,64] [`unaligned`]]
- [[`ulittle`*n*`_t`] [`native`] [signed] [8,16,24,32,40,48,56,64] [`unaligned`]]
- [[`unative`*n*`_t`] [`native`] [unsigned] [16,32,64] [`aligned`]]
- [[`aligned_big`*n*`_t`] [`big`] [signed] [16,32,64] [`aligned`]]
- [[`aligned_ubig`*n*`_t`] [`big`] [unsigned] [16,32,64] [`aligned`]]
- [[`aligned_little`*n*`_t`] [`big`] [signed] [16,32,64] [`aligned`]]
- [[`aligned_ulittle`*n*`_t`] [`big`] [unsigned] [16,32,64] [`aligned`]]
+ [[`int_big`*n*`_t`] [`big`] [signed] [8,16,24,32,40,48,56,64] [`unaligned`]]
+ [[`uint_big`*n*`_t`] [`big`] [unsigned] [8,16,24,32,40,48,56,64] [`unaligned`]]
+ [[`int_little`*n*`_t`] [`little`] [signed] [8,16,24,32,40,48,56,64] [`unaligned`]]
+ [[`uint_little`*n*`_t`] [`little`] [unsigned] [8,16,24,32,40,48,56,64] [`unaligned`]]
+ [[`uint_little`*n*`_t`] [`native`] [signed] [8,16,24,32,40,48,56,64] [`unaligned`]]
+ [[`uint_native`*n*`_t`] [`native`] [unsigned] [16,32,64] [`aligned`]]
+ [[`aligned_int_big`*n*`_t`] [`big`] [signed] [16,32,64] [`aligned`]]
+ [[`aligned_uint_big`*n*`_t`] [`big`] [unsigned] [16,32,64] [`aligned`]]
+ [[`aligned_int_little`*n*`_t`] [`little`] [signed] [16,32,64] [`aligned`]]
+ [[`aligned_uint_little`*n*`_t`] [`little`] [unsigned] [16,32,64] [`aligned`]]
]
The unaligned types do not cause compilers to insert padding bytes in classes and structs. This is an important characteristic that can be exploited to minimize wasted space in memory, files, and network transmissions.
@@ -426,79 +957,78 @@
When first exposed to endian types, programmers often fit them into a mental model based on the <cstdint> types. Using that model, it is natural to expect a 56-bit big-endian signed integer to be named `int_big56_t` rather than `big56_t`.
-As experience using these type grows, the realization creeps in that they are lousy arithmetic integers - they are really byte holders that for convenience support arithmetic operations - and that for use in internal interfaces or anything more than trivial arithmetic computations it is far better to convert values of these endian types to traditional integer types.
+As experience using these types grows, the realization creeps in that they are lousy arithmetic integers - they are really byte holders that for convenience support arithmetic operations - and that for use in internal interfaces or anything more than trivial arithmetic computations it is far better to convert values of these endian types to traditional integer types.
That seems to lead to formation of a new mental model specific to endian byte-holder types. In that model, the endianness is the key feature, and the integer aspect is downplayed. Once that mental transition is made, a name like `big56_t` is a good reflection of the mental model.
[heading Synopsis]
-
namespace boost {
namespace integer {
- template <endianness E, typename T, std::size_t n_bits,
+ template <typename E, typename T, std::size_t n_bits,
alignment A = alignment::unaligned>
class endian;
// unaligned big endian signed integer types
- typedef endian< endianness::big, int_least8_t, 8 > big8_t;
- typedef endian< endianness::big, int_least16_t, 16 > big16_t;
- typedef endian< endianness::big, int_least32_t, 24 > big24_t;
- typedef endian< endianness::big, int_least32_t, 32 > big32_t;
- typedef endian< endianness::big, int_least64_t, 40 > big40_t;
- typedef endian< endianness::big, int_least64_t, 48 > big48_t;
- typedef endian< endianness::big, int_least64_t, 56 > big56_t;
- typedef endian< endianness::big, int_least64_t, 64 > big64_t;
+ typedef endian< endianness::big, int_least8_t, 8, alignment::unaligned > big8_t;
+ typedef endian< endianness::big, int_least16_t, 16, alignment::unaligned > big16_t;
+ typedef endian< endianness::big, int_least32_t, 24, alignment::unaligned > big24_t;
+ typedef endian< endianness::big, int_least32_t, 32, alignment::unaligned > big32_t;
+ typedef endian< endianness::big, int_least64_t, 40, alignment::unaligned > big40_t;
+ typedef endian< endianness::big, int_least64_t, 48, alignment::unaligned > big48_t;
+ typedef endian< endianness::big, int_least64_t, 56, alignment::unaligned > big56_t;
+ typedef endian< endianness::big, int_least64_t, 64, alignment::unaligned > big64_t;
// unaligned big endian unsigned integer types
- typedef endian< endianness::big, uint_least8_t, 8 > ubig8_t;
- typedef endian< endianness::big, uint_least16_t, 16 > ubig16_t;
- typedef endian< endianness::big, uint_least32_t, 24 > ubig24_t;
- typedef endian< endianness::big, uint_least32_t, 32 > ubig32_t;
- typedef endian< endianness::big, uint_least64_t, 40 > ubig40_t;
- typedef endian< endianness::big, uint_least64_t, 48 > ubig48_t;
- typedef endian< endianness::big, uint_least64_t, 56 > ubig56_t;
- typedef endian< endianness::big, uint_least64_t, 64 > ubig64_t;
+ typedef endian< endianness::big, uint_least8_t, 8, alignment::unaligned > ubig8_t;
+ typedef endian< endianness::big, uint_least16_t, 16, alignment::unaligned > ubig16_t;
+ typedef endian< endianness::big, uint_least32_t, 24, alignment::unaligned > ubig24_t;
+ typedef endian< endianness::big, uint_least32_t, 32, alignment::unaligned > ubig32_t;
+ typedef endian< endianness::big, uint_least64_t, 40, alignment::unaligned > ubig40_t;
+ typedef endian< endianness::big, uint_least64_t, 48, alignment::unaligned > ubig48_t;
+ typedef endian< endianness::big, uint_least64_t, 56, alignment::unaligned > ubig56_t;
+ typedef endian< endianness::big, uint_least64_t, 64, alignment::unaligned > ubig64_t;
// unaligned little endian signed integer types
- typedef endian< endianness::little, int_least8_t, 8 > little8_t;
- typedef endian< endianness::little, int_least16_t, 16 > little16_t;
- typedef endian< endianness::little, int_least32_t, 24 > little24_t;
- typedef endian< endianness::little, int_least32_t, 32 > little32_t;
- typedef endian< endianness::little, int_least64_t, 40 > little40_t;
- typedef endian< endianness::little, int_least64_t, 48 > little48_t;
- typedef endian< endianness::little, int_least64_t, 56 > little56_t;
- typedef endian< endianness::little, int_least64_t, 64 > little64_t;
+ typedef endian< endianness::little, int_least8_t, 8, alignment::unaligned > little8_t;
+ typedef endian< endianness::little, int_least16_t, 16, alignment::unaligned > little16_t;
+ typedef endian< endianness::little, int_least32_t, 24, alignment::unaligned > little24_t;
+ typedef endian< endianness::little, int_least32_t, 32, alignment::unaligned > little32_t;
+ typedef endian< endianness::little, int_least64_t, 40, alignment::unaligned > little40_t;
+ typedef endian< endianness::little, int_least64_t, 48, alignment::unaligned > little48_t;
+ typedef endian< endianness::little, int_least64_t, 56, alignment::unaligned > little56_t;
+ typedef endian< endianness::little, int_least64_t, 64, alignment::unaligned > little64_t;
// unaligned little endian unsigned integer types
- typedef endian< endianness::little, uint_least8_t, 8 > ulittle8_t;
- typedef endian< endianness::little, uint_least16_t, 16 > ulittle16_t;
- typedef endian< endianness::little, uint_least32_t, 24 > ulittle24_t;
- typedef endian< endianness::little, uint_least32_t, 32 > ulittle32_t;
- typedef endian< endianness::little, uint_least64_t, 40 > ulittle40_t;
- typedef endian< endianness::little, uint_least64_t, 48 > ulittle48_t;
- typedef endian< endianness::little, uint_least64_t, 56 > ulittle56_t;
- typedef endian< endianness::little, uint_least64_t, 64 > ulittle64_t;
+ typedef endian< endianness::little, uint_least8_t, 8, alignment::unaligned > ulittle8_t;
+ typedef endian< endianness::little, uint_least16_t, 16, alignment::unaligned > ulittle16_t;
+ typedef endian< endianness::little, uint_least32_t, 24, alignment::unaligned > ulittle24_t;
+ typedef endian< endianness::little, uint_least32_t, 32, alignment::unaligned > ulittle32_t;
+ typedef endian< endianness::little, uint_least64_t, 40, alignment::unaligned > ulittle40_t;
+ typedef endian< endianness::little, uint_least64_t, 48, alignment::unaligned > ulittle48_t;
+ typedef endian< endianness::little, uint_least64_t, 56, alignment::unaligned > ulittle56_t;
+ typedef endian< endianness::little, uint_least64_t, 64, alignment::unaligned > ulittle64_t;
// unaligned native endian signed integer types
- typedef endian< endianness::native, int_least8_t, 8 > native8_t;
- typedef endian< endianness::native, int_least16_t, 16 > native16_t;
- typedef endian< endianness::native, int_least32_t, 24 > native24_t;
- typedef endian< endianness::native, int_least32_t, 32 > native32_t;
- typedef endian< endianness::native, int_least64_t, 40 > native40_t;
- typedef endian< endianness::native, int_least64_t, 48 > native48_t;
- typedef endian< endianness::native, int_least64_t, 56 > native56_t;
- typedef endian< endianness::native, int_least64_t, 64 > native64_t;
+ typedef endian< endianness::native, int_least8_t, 8, alignment::unaligned > native8_t;
+ typedef endian< endianness::native, int_least16_t, 16, alignment::unaligned > native16_t;
+ typedef endian< endianness::native, int_least32_t, 24, alignment::unaligned > native24_t;
+ typedef endian< endianness::native, int_least32_t, 32, alignment::unaligned > native32_t;
+ typedef endian< endianness::native, int_least64_t, 40, alignment::unaligned > native40_t;
+ typedef endian< endianness::native, int_least64_t, 48, alignment::unaligned > native48_t;
+ typedef endian< endianness::native, int_least64_t, 56, alignment::unaligned > native56_t;
+ typedef endian< endianness::native, int_least64_t, 64, alignment::unaligned > native64_t;
// unaligned native endian unsigned integer types
- typedef endian< endianness::native, uint_least8_t, 8 > unative8_t;
- typedef endian< endianness::native, uint_least16_t, 16 > unative16_t;
- typedef endian< endianness::native, uint_least32_t, 24 > unative24_t;
- typedef endian< endianness::native, uint_least32_t, 32 > unative32_t;
- typedef endian< endianness::native, uint_least64_t, 40 > unative40_t;
- typedef endian< endianness::native, uint_least64_t, 48 > unative48_t;
- typedef endian< endianness::native, uint_least64_t, 56 > unative56_t;
- typedef endian< endianness::native, uint_least64_t, 64 > unative64_t;
+ typedef endian< endianness::native, uint_least8_t, 8, alignment::unaligned > unative8_t;
+ typedef endian< endianness::native, uint_least16_t, 16, alignment::unaligned > unative16_t;
+ typedef endian< endianness::native, uint_least32_t, 24, alignment::unaligned > unative24_t;
+ typedef endian< endianness::native, uint_least32_t, 32, alignment::unaligned > unative32_t;
+ typedef endian< endianness::native, uint_least64_t, 40, alignment::unaligned > unative40_t;
+ typedef endian< endianness::native, uint_least64_t, 48, alignment::unaligned > unative48_t;
+ typedef endian< endianness::native, uint_least64_t, 56, alignment::unaligned > unative56_t;
+ typedef endian< endianness::native, uint_least64_t, 64, alignment::unaligned > unative64_t;
// These types only present if platform has exact size integers:
@@ -532,75 +1062,141 @@
[/==========================================================================================]
-[section:bitfield Template class `endian<>`]
+[section:endian Template class `endian<>`]
[/==========================================================================================]
An endian integer is an integer byte-holder with user-specified endianness, value type, size, and alignment. The usual operations on integers are supplied.
-
- template <endianness E, typename T, std::size_t n_bits,
- alignment A = alignment::unaligned>
+ template <
+ typename E,
+ typename T,
+ std::size_t n_bits=8*sizeof(T),
+ alignment A = alignment::aligned>
class endian : integer_cover_operators< endian<E, T, n_bits, A>, T > {
public:
+ typedef E endian_type;
typedef T value_type;
+ static const std::size_t width = n_bits;
+ static const alignment alignment_value = A;
+
endian() = default; // = default replaced by {} on C++03
explicit endian(T v);
endian & operator=(T v);
operator T() const;
+ const char* data() const;
};
+* [*Requires:]
-Members
+ * `E` is one of `endianness::big` or `endianness::little`.
+ * `T` must be a POD with value semantics.
+ * `nbits` is a multiple of `8`
+ * If `A` is `alignment::aligned` then `nbits` must be equal to `8*sizeof(T)`
-`endian() = default;` // C++03: endian(){}
+[note if BOOST_ENDIAN_FORCE_PODNESS is defined && C++0x POD's are not
+available then these two constructors will not be present]
-* [*Effects:] Constructs an object of type `endian<E, T, n_bits, A>`.
-`explicit endian(T v);`
+[/==========================================================================================]
+[section:endian Default Contructor `endian()`]
+[/==========================================================================================]
+
+ endian() = default; // C++03: endian(){}
* [*Effects:] Constructs an object of type `endian<E, T, n_bits, A>`.
-* [*Postcondition:] `x == v`, where `x` is the constructed object.
+[endsect]
-`endian & operator=(T v);`
+[/==========================================================================================]
+[section:endianT Contructor from value_type `endian(T)`]
+[/==========================================================================================]
+
+ explicit endian(T v);
+* [*Effects:] Constructs an object of type `endian<E, T, n_bits, A>`.
* [*Postcondition:] `x == v`, where `x` is the constructed object.
+[endsect]
+
+[/==========================================================================================]
+[section:assignment Assignment Operator from value_type `operator=(T)`]
+[/==========================================================================================]
+
+ endian & operator=(T v);
+
+* [*Postcondition:] `x == v`, where `x` is the constructed object.
* [*Returns:] `*this`.
-`operator T() const;`
+[endsect]
-* [*Returns: The current value stored in `*this`, converted to `value_type`.
+[/==========================================================================================]
+[section:conversion Conversion Operator `operator T()`]
+[/==========================================================================================]
-Other operators
+ operator T() const;
-Other operators on endian objects are forwarded to the equivalent operator on `value_type`.
+* [*Returns:] The current value stored in `*this`, converted to `value_type`.
[endsect]
-[endsect]
[/==========================================================================================]
-[section:integer_endian_binary_stream_hpp Header `<boost/integer/endian_binary_stream.hpp>`]
+[section:data Member Function `data()`]
[/==========================================================================================]
-Header <boost/integer/endian_binary_stream.hpp> provides operators `<=` and `=>` for unformatted binary (as opposed to formatted character) stream insertion and extraction of endian types.
+ const char* data() const;
+* [*Returns:] The current value stored in `*this`, converted to `value_type`.
[endsect]
[/==========================================================================================]
-[section:binary_stream_hpp Header `<boost/binary_stream.hpp>`]
+[section:other Other operators ]
[/==========================================================================================]
-Header <boost/binary_stream.hpp> provides operators `<=` and `=>` for unformatted binary (as opposed to formatted character) stream insertion and extraction of built-in and std::string types.
+Other operators on endian objects are forwarded to the equivalent operator on `value_type`.
[endsect]
+[endsect]
+[endsect]
+
+[/==========================================================================================]
+[section:integer_endian_binary_stream_hpp Header `<boost/integer/endian_binary_stream.hpp>`]
+[/==========================================================================================]
+
+Header <boost/integer/endian_binary_stream.hpp> provides operators `<=` and `=>` for unformatted binary (as opposed to formatted character) stream insertion and extraction of endian types.
+
+[heading Synopsis]
+
+ namespace boost
+ {
+ namespace integer
+ {
+ template< class T >
+ struct is_endian { static const bool value = false; };
+ template< typename E, typename T, std::size_t n_bits, alignment A >
+ struct is_endian<endian_pack<E,T,n_bits,A> { static const bool value = true; };
+ template< typename E, typename T, std::size_t n_bits, alignment A >
+ struct is_endian<endian<E,T,n_bits,A> { static const bool value = true; };
+
+ template < class Endian >
+ typename boost::enable_if< is_endian<Endian>, std::ostream & >::type
+ operator<=( std::ostream & os, const Endian & e );
+
+ template < class Endian >
+ typename boost::enable_if< is_endian<Endian>, std::istream & >::type
+ operator>=( std::istream & is, Endian & e );
+ }
+ }
+
+[endsect]
[/==========================================================================================]
[section:integer_endian_type_hpp Header `<boost/integer/endian_type.hpp>`]
[/==========================================================================================]
+[heading Synopsis]
+
namespace boost {
namespace integer {
template <typename T>
@@ -613,7 +1209,21 @@
[/==========================================================================================]
template <typename Domain, typename T>
- struct endian_type;
+ struct endian_type {
+ typedef type;
+ }
+
+The member typedef `type` names one of the `endianness` types `big`, `little` or `mixed`. If all the leaves of the type T are of the same endianness type is this endiannes, otherwise it is `mixed`.
+
+The default behavior works for all the endian aware types, fundamental types and any type that is a fusion sequence.
+
+The user can specialize this metafunction for specific clases.
+
+[heading Example]
+
+ is_same<endian_type<endian<endianness::big, int> >::type, endianness::big>::value == true
+ is_same<endian_type<int>::type, endianness::native>::value == true
+
[endsect]
@@ -623,6 +1233,8 @@
[section:integer_endian_view_hpp Header `<boost/integer/endian_view.hpp>`]
[/==========================================================================================]
+[heading Synopsis]
+
namespace boost {
namespace integer {
@@ -630,13 +1242,13 @@
class endian_view;
template <typename E, typename T>
- endian_view<endian<E,T> > as_endian(T& v);
+ endian_view<endian_pack<E,T> > as_endian(T& v);
template <typename T>
- endian_view<endian<native_endian, T> > as(T& v);
+ endian_view<endian_pack<native_endian, T> > as(T& v);
template <typename T>
- endian_view<endian<little_endian,T> > as_little(T& v);
+ endian_view<endian_pack<little_endian,T> > as_little(T& v);
template <typename T>
- endian_view<endian<big_endian,T> > as_big(T& v);
+ endian_view<endian_pack<big_endian,T> > as_big(T& v);
} // namespace integer
@@ -673,10 +1285,6 @@
template <typename T>
endian_view<endian<endian::native, T> > as(T& v);
- template <typename T>
- endian_view<endian<endian::little, T> > as_little(T& v);
- template <typename T>
- endian_view<endian<endian::big, T> > as_big(T& v);
[endsect]
@@ -686,8 +1294,6 @@
template <typename T>
endian_view<endian<endian::little, T> > as_little(T& v);
- template <typename T>
- endian_view<endian<endian::big, T> > as_big(T& v);
[endsect]
@@ -707,6 +1313,11 @@
[section:integer_endian_conversion_hpp Header `<boost/integer/endian_conversion.hpp>`]
[/==========================================================================================]
+[heading Synopsis]
+
+ namespace boost {
+ namespace integer {
+
template <typename TargetDomain, typename SourceDomain, typename T>
void convert_to_from(T& r);
@@ -715,6 +1326,20 @@
template <typename TargetDomain, typename T>
void convert_to(T& r);
+
+ template <typename Endian> struct to;
+ template <typename Endian> struct from;
+ template <typename Endian> struct is_to;
+ template <typename Endian> struct is_from;
+
+ template <typename Endian1, typename Endian2, typename T>
+ void convert(T& r);
+
+
+ } // namespace integer
+ } // namespace boost
+
+
[/==========================================================================================]
[section:convert_to_from Non-Member Function Template `convert_to_from<>`]
@@ -743,17 +1368,80 @@
[endsect]
+[/==========================================================================================]
+[section:to Class Template `to<>`]
+[/==========================================================================================]
+
+
+ template <typename Endian>
+ struct to {
+ typedef Endian type;
+ };
+
+[endsect]
+
+[/==========================================================================================]
+[section:from Class Template `from<>`]
+[/==========================================================================================]
+ template <typename Endian>
+ struct from {
+ typedef Endian type;
+ };
+
[endsect]
+[/==========================================================================================]
+[section:is_to Class Template `is_to<>`]
+[/==========================================================================================]
+
+ template <typename Endian>
+ struct is_to : mpl::false_ {};
+ template <typename Endian>
+ struct is_to< to<Endian> > : mpl::true_ {};
+
+[endsect]
+
+[/==========================================================================================]
+[section:is_from Class Template `is_from<>`]
+[/==========================================================================================]
+
+ template <typename Endian>
+ struct is_from : mpl::false_ {};
+ template <typename Endian>
+ struct is_from< from<Endian> > : mpl::true_ {};
+
+[endsect]
+
+[/==========================================================================================]
+[section:convert Non-Member Function Template `convert<>`]
+[/==========================================================================================]
+
+ template <typename Endian1, typename Endian2, typename T>
+ void convert(T& r);
+
[endsect]
+[endsect]
+[endsect]
[section Examples]
-[section Endian Aware]
+[section: Endian Aware]
+
+The endian_example.cpp program writes a binary file containing four byte big-endian and little-endian integers.
+
+This is an extract from a very widely used GIS file format. I have no idea
+why a designer would mix big and little endians in the same file - but
+this is a real-world format and users wishing to write low level code
+manipulating these files have to deal with the mixed endianness.
+
+Low-level I/O such as POSIX read/write or <cstdio> fread/fwrite is sometimes
+used for binary file operations when ultimate efficiency is important.
+Such I/O is often performed in some C++ wrapper class, but to drive home the
+point that endian integers are often used in fairly low-level code that
+does bulk I/O operations, <cstdio> fopen/fwrite is used for I/O in this example.
-The endian_example.cpp program writes a binary file containing four byte big-endian and little-endian integers:
#include <iostream>
#include <cassert>
@@ -764,10 +1452,6 @@
namespace
{
- // This is an extract from a very widely used GIS file format. I have no idea
- // why a designer would mix big and little endians in the same file - but
- // this is a real-world format and users wishing to write low level code
- // manipulating these files have to deal with the mixed endianness.
struct header
{
@@ -791,12 +1475,6 @@
h.version = -1;
h.shape_type = 0x04030201;
- // Low-level I/O such as POSIX read/write or <cstdio> fread/fwrite is sometimes
- // used for binary file operations when ultimate efficiency is important.
- // Such I/O is often performed in some C++ wrapper class, but to drive home the
- // point that endian integers are often used in fairly low-level code that
- // does bulk I/O operations, <cstdio> fopen/fwrite is used for I/O in this example.
-
std::FILE * fi;
if ( !(fi = std::fopen( filename, "wb" )) ) // MUST BE BINARY
@@ -824,6 +1502,12 @@
[endsect]
+
+[/=============================]
+[section:receiver_makes_right "receiver makes right"]
+[/=============================]
+
+[endsect]
[endsect]
@@ -831,17 +1515,33 @@
[section Appendices]
[/=================]
[section:history Appendix A: History]
-[section [*Version 0.1.0, June 11, 2010] ['Split of Boost.Endian]]
+[section [*Version 0.1.0, June 15, 2010] ['Split of Boost.Integer.Endian + Added Endian views]]
[*Features:]
+* Endian packs
+ * Big endian | little endian | native endian byte ordering.
+ * Signed | unsigned
+ * Unaligned | aligned
+ * 1-8 byte (unaligned) | 2, 4, 8 byte (aligned)
+ * Choice of integer value type
+
+* Endian integers with the whole set of arithmetics operators based on endian pack.
+
+* Operators <= and => for unformatted binary (as opposed to formatted character) stream insertion and extraction of built-in, std::string types and of endian types.
+
+* Views of aligned endian unaware integer types as endian packs or endian integers so we can make endian conversion.
+
+* Generic in place conversion between different endian formats.
+ * Very simple interface: convert_to/from<endiannes domain>(),
+ * Support for built-in and user-defined data types view as fusion sequences.
[endsect]
[endsect]
[section:rationale Appendix B: Rationale]
-[heading Design considerations for Boost.Endian]
+[heading Design considerations for Boost.Integer.Endian]
* Must be suitable for I/O - in other words, must be memcpyable.
* Must provide exactly the size and internal byte ordering specified.
@@ -855,6 +1555,10 @@
Classes with similar functionality have been independently developed by several Boost programmers and used very successful in high-value, high-use applications for many years. These independently developed endian libraries often evolved from C libraries that were also widely used. Endian integers have proven widely useful across a wide range of computer architectures and applications.
+[heading Motivating use cases]
+
+Neil Mayhew writes: "I can also provide a meaningful use-case for this library: reading TrueType font files from disk and processing the contents. The data format has fixed endianness (big) and has unaligned values in various places. Using Boost.Integer.Endian simplifies and cleans the code wonderfully."
+
[heading C++0x]
The availability of the C++0x Defaulted Functions feature is detected automatically, and will be used if present to ensure that objects of class endian are trivial, and thus POD's.
@@ -870,23 +1574,23 @@
* *Why not just use Boost.Serialization?* Serialization involves a conversion for every object involved in I/O. Endian objects require no conversion or copying. They are already in the desired format for binary I/O. Thus they can be read or written in bulk.
-* *Why bother with binary I/O?* Why not just use C++ Standard Library stream inserters and extractors? Using binary rather than character representations can be more space efficient, with a side benefit of faster I/O. CPU time is minimized because conversions to and from string are eliminated. Furthermore, binary integers are fixed size, and so fixed-size disk records are possible, easing sorting and allowing direct access. Disadvantages, such as the inability to use text utilities on the resulting files, limit usefulness to applications where the binary I/O advantages are paramount.
+* *Why bother with binary I/O? Why not just use C++ Standard Library stream inserters and extractors?* Using binary rather than character representations can be more space efficient, with a side benefit of faster I/O. CPU time is minimized because conversions to and from string are eliminated. Furthermore, binary integers are fixed size, and so fixed-size disk records are possible, easing sorting and allowing direct access. Disadvantages, such as the inability to use text utilities on the resulting files, limit usefulness to applications where the binary I/O advantages are paramount.
* *Do these types have any uses outside of I/O?* Probably not, except for native endianness which can be used for fine grained control over size and alignment.
-* *Is there is a performance hit when doing arithmetic using these types?* Yes, for sure, compared to arithmetic operations on native integer types. However, these types are usually be faster, and sometimes much faster, for I/O compared to stream inserters and extractors, or to serialization.
+* *Is there a performance hit when doing arithmetic using integer endian types?* Yes, for sure, compared to arithmetic operations on native integer types. However, these types are usually be faster, and sometimes much faster, for I/O compared to stream inserters and extractors, or to serialization.
* *Are endian types POD's?* Yes for C++0x. No for C++03, although several macros are available to force PODness in all cases.
-* *What are the implications endian types not being POD's of C++03?* They can't be used in unions. In theory, compilers aren't required to align or lay out storage in portable ways, although this problem has never been observed in a real compiler.
+* *What are the implications endian types not being POD's with C++03 compilers?* They can't be used in unions. Also, compilers aren't required to align or lay out storage in portable ways, although this potential problem hasn't prevented use of Boost.Integer.Endian with real compilers.
-* *Which is better, big-endian or little-endian?* Big-endian tends to be a bit more of an industry standard, but little-endian may be preferred for applications that run primarily on x86 (Intel/AMD) and other little-endian CPU's. The Wikipedia article gives more pros and cons.
+* *Which is better, big-endian or little-endian?* Big-endian tends to be a bit more of an industry standard, but little-endian may be preferred for applications that run primarily on x86 (Intel/AMD) and other little-endian CPU's. The [@http://en.wikipedia.org/wiki/Endian Wikipedia] article gives more pros and cons.
* *What good is native endianness?* It provides alignment and size guarantees not available from the built-in types. It eases generic programming.
* *Why bother with the aligned endian types?* Aligned integer operations may be faster (20 times, in one measurement) if the endianness and alignment of the type matches the endianness and alignment requirements of the machine. On common CPU architectures, that optimization is only available for aligned types. That allows I/O of maximally efficient types on an application's primary platform, yet produces data files are portable to all platforms. The code, however, is likely to be more fragile and less portable than with the unaligned types.
-* *These types are really just byte-holders. Why provide the arithmetic operations at all?* Providing a full set of operations reduces program clutter and makes code both easier to write and to read. Consider incrementing a variable in a record. It is very convenient to write:
+* *Endian types are really just byte-holders. Why provide the arithmetic operations at all?* Providing a full set of operations reduces program clutter and makes code both easier to write and to read. Consider incrementing a variable in a record. It is very convenient to write:
++record.foo;
@@ -904,8 +1608,7 @@
Original design developed by Darin Adler based on classes developed by Mark Borgerding. Four original class templates combined into a single endian class template by Beman Dawes, who put the library together, provided documentation, and added the typedefs. He also added the unrolled_byte_loops sign partial specialization to correctly extend the sign when cover integer size differs from endian representation size.
-Comments and suggestions were received from Benaka Moorthi, Christopher Kohlhoff, Cliff Green, Gennaro Proto, Giovanni Piero Deretta, dizzy, Jeff Flinn, John Maddock, Kim Barrett, Marsh Ray, Martin Bonner, Matias Capeletto, Neil Mayhew, Phil Endecott, Rene Rivera, Roland Schwarz, Scott McMurray, Sebastian Redl, Tomas Puverle, and Yuval Ronen.
-
+Comments and suggestions were received from Benaka Moorthi, Christopher Kohlhoff, Cliff Green, Gennaro Proto, Giovanni Piero Deretta, dizzy, Jeff Flinn, John Maddock, Kim Barrett, Marsh Ray, Martin Bonner, Matias Capeletto, Neil Mayhew, Phil Endecott, Rene Rivera, Roland Schwarz, Scott McMurray, Sebastian Redl, Tomas Puverle and Yuval Ronen.
[endsect]
@@ -942,6 +1645,7 @@
[[check_size] [run] [check size for different endian types] [Pass] [#]]
[[check_alignment] [run] [check alignement for different endian types] [Pass] [#]]
[[check_representation_and_range_and_ops] [run] [check representation and range and operations] [Pass] [#]]
+ [[check_data] [run] [check data starts at the same address] [Pass] [#]]
]
[endsect]
@@ -989,9 +1693,16 @@
[heading Tasks to do before review]
+* Support for 'pure' endian conversion for endian unaware UDT.
+
+* Support for 'in place' endian conversion for ranges of endian unaware types.
+
+* endian iterator, which will iterate across a range endian converting values as necessary. It works with any type supporting the convert_to/from functions.
[heading For later releases]
+* The library doesn't take advantage of special instructions on architectures which natively support endian conversion. This functionality could, however, be part of future releases.
+
[endsect]
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