Boost logo

Boost-Commit :

From: bdawes_at_[hidden]
Date: 2007-09-14 11:45:37


Author: bemandawes
Date: 2007-09-14 11:45:36 EDT (Fri, 14 Sep 2007)
New Revision: 39270
URL: http://svn.boost.org/trac/boost/changeset/39270

Log:
Replace docs with up-to-date contents, design
Added:
   trunk/libs/system/doc/index.html (contents, props changed)
   trunk/libs/system/doc/reference.html (contents, props changed)
Removed:
   trunk/libs/system/doc/error_code.html
   trunk/libs/system/doc/system_error.html

Deleted: trunk/libs/system/doc/error_code.html
==============================================================================
--- trunk/libs/system/doc/error_code.html 2007-09-14 11:45:36 EDT (Fri, 14 Sep 2007)
+++ (empty file)
@@ -1,270 +0,0 @@
-<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 class error_code documentation
-</title>
-</head>
-
-<body bgcolor="#FFFFFF">
-
-<h1>Header boost/system/error_code.hpp</h1>
-<p>Introduction<br>
-Synopsis<br>
-Class error_category<br>
-&nbsp;&nbsp;&nbsp; Members<br>
-Class error_code<br>
-&nbsp;&nbsp;&nbsp; Members<br>
-Non-member functions<br>
-Acknowledgments</p>
-<h2><a name="Introduction">Introduction</a></h2>
-<p>This header provides components used to report errors from the operating
-system or other low-level application program interface (API). It is based on the <i>Diagnostics</i> portion of the TR2 filesystem
-proposal.</p>
-<p>Class <code>error_code</code> encapsulates an error
-code, usually one returned by an API. Class <code>
-error_category</code> encapsulates
-an identifier for&nbsp;a
-particular kind of error code. Users or
-third-parties may add additional error categories.</p>
-<h2>Builds</h2>
-<p>The system library is required by default. If the preprocessor macro name
-BOOST_ERROR_CODE_HEADER_ONLY is defined, no object library or shared/DLL library
-is required. Only one translation unit may defined BOOST_ERROR_CODE_HEADER_ONLY,
-otherwise symbols will be multiply defined.</p>
-<h2><a name="Synopsis">Synopsis</a></h2>
-<pre>namespace boost
-{
- namespace system
- {
- class error_code;
-
- typedef int (*errno_decoder)( const error_code & );
- typedef std::string (*message_decoder)( const error_code & );
- typedef wstring_t (*wmessage_decoder)( const error_code & );
-
- class error_category : public identifier< uint_least32_t, error_category >
- {
- public:
- error_category();
- explicit error_category( value_type v );
- };
-
- const error_category errno_ecat = <i>unspecified-value</i>;
- const error_category native_ecat = <i>unspecified-value</i>;
-
- class error_code
- {
- public:
- typedef boost::int_least32_t value_type;
-
- // constructors:
- error_code();
- error_code( value_type val, error_category cat );
- void assign(value_type val, error_category cat);
-
- // observers:
- value_type value() const;
- error_category category() const;
- int to_errno() const; // name chosen to limit surprises
- // see Kohlhoff June 28 '06 boost posting
- std::string message() const;
- std::wstring wmessage() const;
-
- // relationals:
- bool operator==( const error_code & rhs ) const;
- bool operator!=( const error_code & rhs ) const;
- bool operator< ( const error_code & rhs ) const;
- bool operator<=( const error_code & rhs ) const;
- bool operator> ( const error_code & rhs ) const;
- bool operator>=( const error_code & rhs ) const;
-
- operator unspecified-bool-type() const;
- bool operator!() const;
-
- // statics:
- static error_category new_category( errno_decoder ed = 0,
- message_decoder md = 0, wmessage_decoder wmd = 0 );
- static bool get_decoders( error_category cat, errno_decoder & ed,
- message_decoder & md, wmessage_decoder & wmd );
-
- };
-
- std::size_t hash_value( const error_code & ec );
-
- } // namespace system
-} // namespace boost</pre>
-<h2><a name="Class-error_category">Class <code>error_category</code></a></h2>
-<p>Class <code>error_category</code>
-encapsulates an identifier for&nbsp;a
-particular kind of error code. Users or
-third-parties may add additional error categories.</p>
-<p>For inherited members, see <a href="../../utility/doc/identifier.html">
-identifier documentation</a>.</p>
-<h3><a name="Class-error_category-members">Class <code>error_category</code>
-members</a></h3>
-<pre>error_category();</pre>
-<blockquote>
- <p><i>Effects:</i> Constructs an object of class <code>error_category</code>.</p>
- <p><i>Postcondition:</i> <code>value() == value_type()</code>.</p>
-</blockquote>
-<pre>explicit error_category( value_type v );</pre>
-<blockquote>
- <p><i>Effects:</i> Constructs an object of class <code>error_category</code>.</p>
- <p><i>Postcondition:</i> <code>value() == v</code>.</p>
-</blockquote>
-<h2><a name="Class-error_code">Class <code>error_code</code></a></h2>
-<p>The value contained by an <code>error_code</code> object is the underlying
-API error code itself if the API error code type can be stored in <code>
-value_type</code> without loss of any actual values and if 0 represents no
-error. Otherwise, the value is an integer that maps to the API error code, with
-the exact method of mapping unspecified.</p>
-<h3><a name="Class-error_code-members">Class <code>error_code</code> members</a></h3>
-<pre><a name="error_code">error_code</a>();</pre>
-<blockquote>
- <p><i>Effects:</i> Constructs an object of class <code>error_code</code>.</p>
- <p><i>Postcondition:</i> <code>value() == 0 &amp;&amp; category() == errno_ecat</code>.</p>
-</blockquote>
-<pre><a name="error_code-2">error_code</a>( value_type val, error_category cat );</pre>
-<blockquote>
- <p><i>Effects:</i> Constructs an object of class <code>error_code</code>.</p>
- <p><i>Postcondition:</i> <code>value() == val &amp;&amp; category() == cat</code>.</p>
-</blockquote>
-<pre>void <a name="error_code-assign">assign</a>(value_type val, error_category cat);</pre>
-<blockquote>
- <p><i>Postconditions:</i> <code>value() == val &amp;&amp; category() == cat</code>.</p>
-</blockquote>
-<pre>value_type <a name="value">value</a>() const;</pre>
-<blockquote>
- <p><i>Returns:</i> <code>value()</code> as specified by <i>postconditions</i>&nbsp;of the most
-recent <code>assign</code>, if any, or of the constructor.</p>
-</blockquote>
-<pre>error_category <a name="category">category</a>() const;</pre>
-<blockquote>
- <p><i>Returns:</i> <code>category()</code> as specified by <i>postconditions</i>&nbsp;of the most
-recent <code>assign</code>, if any, or of the constructor.</p>
-</blockquote>
-<pre>int <a name="to_errno">to_errno</a>() const;</pre>
-<blockquote>
-<p><i>Effects: </i>&nbsp;<code>errno_decoder ed;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; message_decoder md;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wmessage_decoder wmd;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bool ok( get_decoders( category(), ed, md,
-wmd ) );</code></p>
-<p><i>Returns:</i>&nbsp; If <code>ok &amp;&amp; ed</code>, <code>ed(*this)</code>,
-otherwise <code>EOTHER</code>.</p>
-<p><i>[Note:</i> The intent is to return the <a href="http://www.unix.org/single_unix_specification/">
-ISO/IEC 9945:2003, <i>Portable Operating System Interface (POSIX)</i></a> error
-number that the implementation determines most closely corresponds to <code>
-value()</code>. <i>--end note.]</i></p>
-</blockquote>
-<pre>std::string <a name="message">message</a>() const;</pre>
-<blockquote>
-<p><i>Effects: </i>&nbsp;<code>errno_decoder ed;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; message_decoder md;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wmessage_decoder wmd;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bool ok( get_decoders( category(), ed, md,
-wmd ) );</code></p>
-<p><i>Returns:</i>&nbsp; If <code>ok &amp;&amp; md</code>, <code>md(*this)</code>,
-otherwise <code>std::string()</code>.</p>
-<p><i>Remarks:</i> If <code>category() == errno_ec</code>, the string is as
-returned by <code>strerror()</code>. Otherwise, the method used by the
-implementation to determine the string is unspecified.</p>
-<p><i>[Note:</i> The intent is to return a locale sensitive string that describes the error
-corresponding to <code>value()</code>.&nbsp; <i>--end note.]</i></p>
-</blockquote>
-<pre>wstring_t <a name="wmessage">wmessage</a>() const;</pre>
-<blockquote>
-<p><i>Effects: </i>&nbsp;<code>errno_decoder ed;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; message_decoder md;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wmessage_decoder wmd;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bool ok( get_decoders( category(), ed, md,
-wmd ) );</code></p>
-<p><i>Returns:</i>&nbsp; If <code>ok &amp;&amp; wmd</code>, <code>wmd(*this)</code>,
-otherwise <code>std::wstring()</code>.</p>
-<p><i>Remarks:</i> If <code>category() == errno_ec</code>, the string is as
-returned by <code>strerror()</code>. Otherwise, the method used by the
-implementation to determine the string is unspecified.</p>
-<p><i>[Note:</i> The intent is to return a locale sensitive string that describes the error
-corresponding to <code>value()</code>.&nbsp; <i>--end note.]</i></p>
-</blockquote>
-<pre>bool <a name="operator-eq">operator</a>==(const error_code &amp; rhs) const;</pre>
-<blockquote>
- <p><i>Returns:</i> <code>value() == rhs.value() &amp;&amp; category() == rhs.category()</code>.</p>
-</blockquote>
-<pre>bool <a name="operator-ne">operator!</a>=(const error_code &amp; rhs) const;</pre>
-<blockquote>
- <p><i>Returns:</i> <code>!(*this == rhs)</code>.</p>
-</blockquote>
-<pre>bool <a name="operator-lt">operator</a>&lt;(const error_code &amp; rhs) const;</pre>
-<blockquote>
- <p><i>Returns:</i> <code>category() &lt; rhs.category() || ( category() ==
- rhs.category() &amp;&amp; value() &lt; rhs.value() )</code>.</p>
-</blockquote>
-<pre>bool <a name="operator-le">operator</a>&lt;=(const error_code &amp; rhs) const;</pre>
-<blockquote>
- <p><i>Returns:</i> <code>*this == rhs || *this &lt; rhs</code>.</p>
-</blockquote>
-<pre>bool <a name="operator-gt">operator</a>&gt;(const error_code &amp; rhs) const;</pre>
-<blockquote>
- <p><i>Returns:</i> <code>!(*this &lt;= rhs)</code>.</p>
-</blockquote>
-<pre>bool <a name="operator-ge">operator</a>&gt;=(const error_code &amp; rhs) const;</pre>
-<blockquote>
- <p><i>Returns:</i> <code>!(*this &lt; rhs)</code>.</p>
-</blockquote>
-<pre><a name="operator-unspecified-bool-type">operator <i>unspecified-bool-type</i></a>() const;</pre>
-<blockquote>
- <p><i>Returns:</i> <code>&nbsp;value() != value_type() ? <i>unspecified-bool-type</i>
- : 0</code>.</p>
-<p><i>Throws:</i> nothing.</p>
-<p>[ <i>Note: </i>This conversion can be used in contexts where a <code>bool</code>
-is expected (e.g., an <code>if</code> condition); however, implicit conversions
-(e.g., to <code>int</code>) that can occur with <code>bool</code> are not
-allowed, eliminating some sources of user error. One possible implementation
-choice for this type is pointer-to-member. <i>—end note </i>]</p>
-</blockquote>
-<pre>bool <a name="operator-bang">operator!</a>() const;</pre>
-<blockquote>
- <p><i>Returns:</i> <code>&nbsp;value() == value_type()</code>.</p>
-</blockquote>
-<pre>static error_category <a name="new_category">new_category</a>( errno_decoder ed = 0, message_decoder md = 0, wmessage_decoder wmd = 0 );</pre>
-<blockquote>
- <p><i>Effects:</i> Constructs a new <code>error_category</code> object.<code>
- </code>Creates an association between the object and <code>ed</code>,&nbsp;
- <code>md</code>, and <code>wmd</code>.</p>
- <p><i>Returns:</i> The object.</p>
-</blockquote>
-<pre>static bool <a name="get_decoders">get_decoders</a>( error_category cat, errno_decoder &amp; ed, message_decoder &amp; md, wmessage_decoder &amp; wmd );</pre>
-<blockquote>
- <p><i>Effects:</i> If <code>cat</code> was created by <code>new_category()</code>,
- sets <code>ed</code>,&nbsp; <code>md</code>, and <code>wmd</code>
- to the respective values associated with <code>cat</code> by <code>
- new_category()</code>. Otherwise, no effects.</p>
- <p><i>Returns:</i> If <code>cat</code> was created by <code>new_category()</code>,
- <code>true</code>, otherwise <code>false</code>.</p>
-</blockquote>
-<h2><a name="Non-member">Non-member</a> functions</h2>
-<pre>std::size_t <a name="hash_value">hash_value</a>( const error_code &amp; ec );</pre>
-<blockquote>
- <p><i>Returns: </i>&nbsp;A hash value representing <code>ec</code>.</p>
-</blockquote>
- <h2><a name="Acknowledgements">Acknowledgements</a></h2>
- <p>Christopher Kohlhoff and Peter Dimov made important contributions to the
- design. Comments and suggestions were also received from Pavel Vozenilek,
- Gennaro Prota, Dave Abrahams, Jeff Garland, Iain Hanson, Oliver Kowalke, and
- Oleg Abrosimov.</p>
-<hr>
-<p>Last revised:
-<!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %B, %Y" startspan -->30 August, 2007<!--webbot bot="Timestamp" endspan i-checksum="34727" --></p>
-<p>© Copyright Beman Dawes, 2006</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

Added: trunk/libs/system/doc/index.html
==============================================================================
--- (empty file)
+++ trunk/libs/system/doc/index.html 2007-09-14 11:45:36 EDT (Fri, 14 Sep 2007)
@@ -0,0 +1,125 @@
+<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 System Library</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" width="637">
+ <tr>
+ <td width="277">
+<a href="../../../index.htm">
+<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">System Library</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&nbsp;&nbsp;&nbsp; <a href="index.html">
+ Library Home</a>&nbsp;&nbsp; Tutorial&nbsp;&nbsp; <a href="reference.html">
+ Reference</a></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>
+ Design Rationale<br>
+ History<br>
+ Acknowledgements
+ </td>
+ </tr>
+</table>
+
+<h2><a name="Introduction">Introduction</a></h2>
+
+<p>Error conditions originating from the operating system or other low-level
+application program interfaces (API's) are typically reported via an integer
+representing an error code. When these low-level API calls are wrapped in
+portable code, such as in a portable library, some users want to deal with the
+error codes in portable ways. Other users need to get at the system specific
+error codes, so they can deal with system specific needs. The Boost System
+library provides simple, light-weight <a href="reference.html#Class-error_code">
+error_code</a> objects that encapsulate system-specific error code values, yet
+also provide access to more abstract and portable error conditions via
+error_condition objects.
+Because error_code objects can represent errors from sources other than the
+operating system, including user-defined sources, each error_code and
+error_condition has an associated <a href="reference.html#Class-error_category">
+error_category</a>.</p>
+
+<p>An exception class,&nbsp; <a href="reference.html#Class-system_error">
+system_error</a>, is provided. Derived from std::runtime_error, it captures the
+underlying error_code for the problem causing the exception so that this
+important information is not lost.</p>
+<p>While exceptions are the preferred C++ default error code reporting
+mechanism, users of libraries dependent on low-level API's&nbsp;often need overloads
+reporting error conditions via error code arguments and/or return values rather
+than via throwing exceptions. Otherwise, when errors are not exceptional
+occurrences and must be dealt with as they arise, programs become littered with
+try/catch blocks, unreadable, and very inefficient. The Boost System library
+supports both error reporting by exception and by error code.</p>
+<h2><a name="Design_Rationale">Design Rationale</a></h2>
+<p>Class <code>error_code</code>&nbsp; and <code>error_condition</code> are designed as a value types so
+they can be copied
+without slicing and do not requiring heap allocation, but still have polymorphic
+behavior based on the error category. This is achieved by abstract base class
+<code>error_category</code> supplying the polymorphic behavior, and <code>
+error_code</code> and <code>error_condition</code> containing a pointer to an object of a type derived from <code>
+error_category</code>.</p>
+<p>Many of the detailed design decisions were driven by the requirements that
+users to be able to add additional error categories, and that it be no more
+difficult to write portable code than system-specific code.</p>
+<p>The <code>operator&lt;&lt;</code> overload for <code>error_code</code> eliminates a
+misleading conversion to bool in code like <code>cout &lt;&lt; ec</code>, where <code>
+ec</code> is of type <code>error_code</code>. It is also useful in its own
+right.</p>
+<h2><a name="History">History</a></h2>
+<p><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1975.html">
+N1975</a>, Filesystem Library Proposal for TR2, accepted for Library Technical
+Report 2 (TR2) at the Berlin meeting, included additional components to
+supplement the Standard Library's Diagnostics clause. Since then, these error
+reporting components have received wider public scrutiny and enhancements have
+been made to the design. The enhanced version has been used by N2054, Networking
+Library Proposal for TR2, demonstrating that these error reporting components
+are useful beyond the original Filesystem Library.</p>
+<p>The original proposal viewed error categories as a binary choice between
+<code>errno</code> (i.e. POSIX-style) and the native operating system's error
+codes. The proposed components now allow as many additional error categories as
+are needed by either implementations or by users. The need to support additional
+error categories, for example, occurs in some networking library implementations
+because they are built on top of the POSIX <code>getaddrinfo</code> API that
+uses error codes not based on <code>errno</code>.</p>
+<h2><a name="Acknowledgements">Acknowledgements</a></h2>
+<p>Christopher Kohlhoff and Peter Dimov made important contributions to the
+design. Comments and suggestions were also received from Pavel Vozenilek,
+Gennaro Prota, Dave Abrahams, Jeff Garland, Iain Hanson, Oliver Kowalke, and
+Oleg Abrosimov. Christopher Kohlhoff suggested several improvements to the N2066
+paper. Johan Nilsson's comments led to several of the refinements in N2066 .</p>
+<hr>
+
+<p>© Copyright Beman Dawes, 1999<br>
+Distributed under the Boost Software License, Version 1.0. See
+www.boost.org/LICENSE_1_0.txt</p>
+
+<p>Revised
+<!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%B %d, %Y" startspan -->September 14, 2007<!--webbot bot="Timestamp" endspan i-checksum="37985" --> </font>
+</p>
+
+</body>
+
+</html>
\ No newline at end of file

Added: trunk/libs/system/doc/reference.html
==============================================================================
--- (empty file)
+++ trunk/libs/system/doc/reference.html 2007-09-14 11:45:36 EDT (Fri, 14 Sep 2007)
@@ -0,0 +1,689 @@
+<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>System Library Reference</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" width="637">
+ <tr>
+ <td width="277">
+<a href="../../../index.htm">
+<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">System Library</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&nbsp;&nbsp;&nbsp; <a href="index.html">
+ Library Home</a>&nbsp;&nbsp; Tutorial&nbsp;&nbsp; <a href="reference.html">
+ Reference</a></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>
+ Header <boost/system/error_code.hpp><br>
+ Class error_category<br>
+ &nbsp;&nbsp;&nbsp;Class error_category synopsis<br>
+ &nbsp;&nbsp;&nbsp;Class error_category virtual members<br>
+ &nbsp;&nbsp;&nbsp;Class error_category non-virtual members<br>
+ &nbsp;&nbsp;&nbsp;Class error_category predefined objects<br>
+ Class error_code<br>
+ &nbsp;&nbsp;&nbsp;Class error_code synopsis<br>
+ &nbsp;&nbsp;&nbsp;Class error_code constructors<br>
+ &nbsp;&nbsp;&nbsp;Class error_code modifiers<br>
+ &nbsp;&nbsp;&nbsp;Class error_code observers<br>
+ Class error_condition<br>
+ &nbsp;&nbsp;&nbsp;Class error_condition synopsis<br>
+ &nbsp;&nbsp;&nbsp;Class error_condition constructors<br>
+ &nbsp;&nbsp;&nbsp;Class error_condition modifiers<br>
+ &nbsp;&nbsp;&nbsp;Class error_condition observers<br>
+ Non-member functions<br>
+ Header <boost/system/system_error.hpp><br>
+ &nbsp;&nbsp;&nbsp;Class system_error<br>
+ </td>
+ </tr>
+</table>
+
+<h2><a name="Introduction">Introduction</a></h2>
+
+<p>This reference documentation describes components that&nbsp;
+programs may use to report error conditions originating from the operating
+system or other low-level application program interfaces.</p>
+<p>System Library components do not change the value of <code>
+errno</code>.</p>
+<h2><a name="Header-error_code">Header &lt;boost/system/error_code.hpp&gt;</a></h2>
+<h3>&lt;boost/system/error_code.hpp&gt; synopsis</h3>
+<blockquote>
+<pre>namespace boost
+{
+ namespace system
+ {
+ class error_category;
+ class error_code;
+ class error_condition;
+
+ // "Concept" helpers
+ template< class T="" >
+ struct is_error_code_enum { static const bool value = false; };
+
+ template< class T="" >
+ struct is_error_condition_enum { static const bool value = false; };
+
+ // portable error_conditions
+ namespace posix
+ {
+ enum posix_errno
+ {
+ success = 0,
+ address_family_not_supported, //EAFNOSUPPORT
+ address_in_use, //EADDRINUSE
+ address_not_available, //EADDRNOTAVAIL
+ already_connected, //EISCONN
+ argument_list_too_long, //E2BIG
+ argument_out_of_domain, //EDOM
+ bad_address, //EFAULT
+ bad_file_descriptor, //EBADF
+ bad_message, //EBADMSG
+ broken_pipe, //EPIPE
+ connection_aborted, //ECONNABORTED
+ connection_already_in_progress, //EALREADY
+ connection_refused, //ECONNREFUSED
+ connection_reset, //ECONNRESET
+ cross_device_link, //EXDEV
+ destination_address_required, //EDESTADDRREQ
+ device_or_resource_busy, //EBUSY
+ directory_not_empty, //ENOTEMPTY
+ executable_format_error, //ENOEXEC
+ file_exists, //EEXIST
+ file_too_large, //EFBIG
+ filename_too_long, //ENAMETOOLONG
+ function_not_supported, //ENOSYS
+ host_unreachable, //EHOSTUNREACH
+ identifier_removed, //EIDRM
+ illegal_byte_sequence, //EILSEQ
+ inappropriate_io_control_operation,//ENOTTY
+ interrupted, //EINTR
+ invalid_argument, //EINVAL
+ invalid_seek, //ESPIPE
+ io_error, //EIO
+ is_a_directory, //EISDIR
+ message_size, //EMSGSIZE
+ network_down, //ENETDOWN
+ network_reset, //ENETRESET
+ network_unreachable, //ENETUNREACH
+ no_buffer_space, //ENOBUFS
+ no_child_process, //ECHILD
+ no_link, //ENOLINK
+ no_lock_available, //ENOLCK
+ no_message_available, //ENODATA
+ no_message, //ENOMSG
+ no_protocol_option, //ENOPROTOOPT
+ no_space_on_device, //ENOSPC
+ no_stream_resources, //ENOSR
+ no_such_device_or_address, //ENXIO
+ no_such_device, //ENODEV
+ no_such_file_or_directory, //ENOENT
+ no_such_process, //ESRCH
+ not_a_directory, //ENOTDIR
+ not_a_socket, //ENOTSOCK
+ not_a_stream, //ENOSTR
+ not_connected, //ENOTCONN
+ not_enough_memory, //ENOMEM
+ not_supported, //ENOTSUP
+ operation_canceled, //ECANCELED
+ operation_in_progress, //EINPROGRESS
+ operation_not_permitted, //EPERM
+ operation_not_supported, //EOPNOTSUPP
+ operation_would_block, //EWOULDBLOCK
+ owner_dead, //EOWNERDEAD
+ permission_denied, //EACCES
+ protocol_error, //EPROTO
+ protocol_not_supported, //EPROTONOSUPPORT
+ read_only_file_system, //EROFS
+ resource_deadlock_would_occur, //EDEADLK
+ resource_unavailable_try_again, //EAGAIN
+ result_out_of_range, //ERANGE
+ state_not_recoverable, //ENOTRECOVERABLE
+ stream_timeout, //ETIME
+ text_file_busy, //ETXTBSY
+ timed_out, //ETIMEDOUT
+ too_many_files_open_in_system, //ENFILE
+ too_many_files_open, //EMFILE
+ too_many_links, //EMLINK
+ too_many_synbolic_link_levels, //ELOOP
+ value_too_large, //EOVERFLOW
+ wrong_protocol_type //EPROTOTYPE
+ };
+
+ } // namespace posix
+
+ template<> struct is_error_condition_enum<posix::posix_errno>&lt;posix::posix_errno&gt;
+ { static const bool value = true; };
+
+ bool operator==( const error_code &amp; lhs, const error_code &amp; rhs );
+ bool operator==( const error_code &amp; code, const error_condition &amp; condition );
+ bool operator==( const error_condition &amp; condition, const error_code &amp; code );
+ bool operator==( const error_condition &amp; lhs, const error_condition &amp; rhs );
+
+ bool operator!=( const error_code &amp; lhs, const error_code &amp; rhs );
+ bool operator!=( const error_code &amp; code, const error_condition &amp; condition );
+ bool operator!=( const error_condition &amp; condition, const error_code &amp; code );
+ bool operator!=( const error_condition &amp; lhs, const error_condition &amp; rhs );
+
+ bool operator&lt;( const error_code &amp; lhs, const error_code &amp; rhs );
+ bool operator&lt;( const error_condition &amp; lhs, const error_condition &amp; rhs );
+
+ error_code make_error_code( posix::posix_errno e );
+ error_condition make_error_condition( posix::posix_errno e );
+
+ template &lt;class charT, class traits&gt;
+ std::basic_ostream&lt;charT,traits&gt;&amp;
+ operator&lt;&lt;( basic_ostream&lt;charT,traits&gt;&amp; os, const error_code &amp; ec );
+
+ size_t hash_value( const error_code &amp; ec );
+ }
+}</pre>
+</blockquote>
+<p>The value of each<code> posix_errno</code> constant shall be the same as the
+value of the <code>&lt;cerrno&gt;</code> macro shown in the above synopsis.</p>
+<p>Users may specialize <code>is_error_code_enum</code> and <code>
+is_error_condition_enum</code> templates to indicate that a type is eligible for
+class <code>error_code</code> and <code>error_condition</code> automatic
+conversions respectively.</p>
+
+<h2><a name="Class-error_category">Class <code>error_category</code></a></h2>
+<p>The class <code>error_category</code> defines the base class for types used
+to identify the source and encoding of a particular category of error code.</p>
+<p><i>[Note:</i> Classes may be derived from <code>error_category</code>
+to support additional categories of errors. <i>--end note]</i></p>
+<p>The class <code>error_category</code> serves as a base class for types used
+to identify the source and encoding of a particular category of error code.
+Classes may be derived from <code>error_category</code> to support categories of
+errors in addition to those defined in the Boost System library. Such classes
+shall behave as specified in this subclause. [<i> Note:</i> <code>error_category</code>
+objects are passed by reference, and two such objects are equal if they have the
+same address. This means that applications using custom <code>error_category</code>
+types should create a single object of each such type. <i>—end note</i> ]</p>
+<h3><a name="Class-error_category-synopsis">Class <code>error_category</code> synopsis</a></h3>
+<blockquote>
+<pre>namespace boost
+{
+ namespace system
+ {
+ class error_category : public noncopyable
+ {
+ public:
+ virtual ~error_category();
+
+ virtual const char * name() const = 0;
+ virtual string message( error_code::value_type ev ) const = 0;
+ virtual error_condition default_error_condition( int ev ) const;
+ virtual bool equivalent( int code, const error_condition &amp; condition ) const;
+ virtual bool equivalent( const error_code &amp; code, int condition ) const;
+
+ bool operator==( const error_category &amp; rhs ) const;
+ bool operator!=( const error_category &amp; rhs ) const;
+ bool operator&lt; ( const error_category &amp; rhs ) const;
+ };
+
+ extern const error_category &amp; posix_category;
+ extern const error_category &amp; system_category;
+ }
+}</pre>
+</blockquote>
+<h3><a name="Class-error_category-virtual-members">Class <code>error_category</code> virtual members</a></h3>
+<p>Classes derived from <code>error_category</code> shall behave as specified in
+this subclause.</p>
+<pre>virtual const char * name() const=0;</pre>
+<blockquote>
+ <p><i>Returns: </i>a string naming the error category.</p>
+ <p><i>Throws:</i> Nothing.</p>
+</blockquote>
+<pre>virtual string message( error_code::value_type ev ) const=0;</pre>
+<blockquote>
+ <p><i>Returns:</i> A string that describes the error denoted by
+ <code>ev</code>.</p>
+ <p><i>Throws:</i> Nothing.</p>
+</blockquote>
+<p><code>virtual error_condition default_error_condition( int ev ) const;</code></p>
+<blockquote>
+ <p><i>Returns:</i>&nbsp; <code>error_condition( ev, *this )</code>.</p>
+ <blockquote>
+ <p>&nbsp;[<i>--Note:</i> Derived classes will typically convert <code>ev</code>
+ to some portable <code>error_category</code>, such as <code>posix_category</code>,
+ and return it as an <code>error_condition</code> for that category. <i>--end
+ note</i>]</p>
+ </blockquote>
+ <p><i>Throws:</i> Nothing.</p>
+</blockquote>
+<p><code>virtual bool equivalent( int code, const error_condition &amp;
+condition )
+const;</code></p>
+<blockquote>
+ <p><i>Returns:</i> <code>default_error_condition( code ) == condition</code>.</p>
+ <p><i>Throws:</i> Nothing.</p>
+</blockquote>
+<p><code>virtual bool equivalent( const error_code &amp; code, int condition ) const;</code></p>
+<blockquote>
+ <p><i>Returns:</i> <code>*this == code.category() &amp;&amp; code.value() == condition</code>.</p>
+ <p><i>Throws:</i> Nothing.</p>
+</blockquote>
+<h3><a name="Class-error_category-non-virtual-members">Class <code>error_category</code> non-virtual members</a></h3>
+<p><code>bool operator==( const error_category &amp; rhs ) const;</code></p>
+<blockquote>
+<p><i>Returns:</i> <code>this == &amp;rhs</code>.</p>
+</blockquote>
+<p><code>bool operator!=( const error_category &amp; rhs ) const;</code></p>
+<blockquote>
+<p><i>Returns:</i> <code>this != &amp;rhs</code>.</p>
+</blockquote>
+
+<pre>bool operator&lt;( const error_category &amp; rhs ) const;</pre>
+<blockquote>
+ <p><i>Returns:</i> <code>std::less&lt;const error_category*&gt;()( this, &amp;rhs )</code>.</p>
+ <blockquote>
+ <p><i>[Note:</i> <code>std::less</code> provides a total ordering for
+ pointers. <i>--end note]</i></p>
+ </blockquote>
+ <p><i>Throws:</i> Nothing.</p>
+</blockquote>
+<h3><a name="Class-error_category-predefined-objects">Class <code>error_category</code>
+predefined objects</a></h3>
+<p>Predefined objects <code>posix_category</code>
+and <code>system_category</code> identify portable error conditions and system error
+codes, respectively.</p>
+<h2><a name="Class-error_code">Class <code>
+error_code</code></a></h2>
+<p>The class <code>error_code</code> describes an object used to hold error code
+values, such as those originating from the operating<br>
+system or other low-level application program interfaces. <i>[ Note: </i>Class
+<code>error_code</code> is an adjunct to error reporting by<br>
+exception. <i>—end note ]</i></p>
+<h3><a name="Class-error_code-synopsis">Class <code>
+error_code</code> synopsis</a></h3>
+<blockquote>
+<pre>namespace boost
+{
+ namespace system
+ {
+ class error_code {
+ public:
+
+ // constructors:
+ error_code();
+ error_code( val, const error_category &amp; cat );
+ template &lt;class <code>ErrorCodeEnum</code>&gt;
+ error_code(<code> errorCodeEnum</code> e,
+ typename enable_if&lt;is_error_code_enum&lt;<code>ErrorCodeEnum</code>&gt; &gt;::type* = 0);
+
+ // modifiers:
+ void assign( int val, const error_category &amp; cat );
+ template&lt;typename <code>ErrorCodeEnum</code>&gt;
+ typename enable_if&lt;is_error_code_enum&lt;<code>ErrorCodeEnum</code>&gt;, error_code&gt;::type &amp;
+ operator=( <code>ErrorCodeEnum</code> val );;
+ void clear();
+
+ // observers:
+ int value() const;
+ cont error_category &amp; category() const;
+ error_condition default_error_condition() const;
+ string message() const;
+ operator unspecified-bool-type() const;
+
+ private:
+ int val_; // <i>exposition only</i>
+ const error_category &amp; cat_; // <i>exposition only</i>
+ };
+ }
+}</pre>
+</blockquote>
+<h3><a name="Class-error_code-constructors">Class <code>
+error_code</code> constructors</a></h3>
+<pre>error_code();</pre>
+<blockquote>
+ <p><i>Effects: </i>Constructs an object of type <code>error_code</code>.</p>
+ <p><i>Postconditions:</i> <code>val_ == 0 &amp;&amp; cat_ == &amp;system_category</code>.</p>
+ <p><i>Throws:</i> Nothing.</p>
+</blockquote>
+<pre>error_code( int val, const error_category &amp; cat );</pre>
+<blockquote>
+ <p><i>Effects: </i>Constructs an object of type <code>error_code</code>.</p>
+ <p><i>Postconditions:</i> <code>val_ == val &amp;&amp; cat_ == &amp;cat</code>.</p>
+ <p><i>Throws:</i> Nothing.</p>
+</blockquote>
+<pre>template &lt;class <code>ErrorCodeEnum</code>&gt;
+ error_code(<code> errorCodeEnum</code> val,
+ typename enable_if&lt;is_error_code_enum&lt;<code>ErrorCodeEnum</code>&gt; &gt;::type* = 0);</pre>
+<blockquote>
+ <p><i>Effects: </i>Constructs an object of type <code>error_code</code>.</p>
+ <p><i>Postconditions:</i> <code>*this == make_error_code( val )</code>.</p>
+ <p><i>Throws:</i> Nothing.</p>
+</blockquote>
+<h3><a name="Class-error_code-modifiers">Class <code>
+error_code</code> modifiers</a></h3>
+<pre>void assign( int val, const error_category &amp; cat );</pre>
+<blockquote>
+ <p><i>Postconditions:</i> <code>val_ == val &amp;&amp; cat_ == cat</code>.</p>
+ <p><i>Throws:</i> Nothing.</p>
+</blockquote>
+<pre>template&lt;typename <code>ErrorCodeEnum</code>&gt;
+ typename enable_if&lt;is_error_code_enum&lt;<code>ErrorCodeEnum</code>&gt;, error_code&gt;::type &amp;
+ operator=( <code>ErrorCodeEnum</code> val );</pre>
+<blockquote>
+ <p><i>Postconditions:</i> <code>*this == make_error_code( val )</code>.</p>
+ <p><i>Throws:</i> Nothing.</p>
+</blockquote>
+<p><code>void clear();</code></p>
+<blockquote>
+ <p><i>postcondition:</i> <code>value() == 0 &amp;&amp; category() == posix_category</code></p>
+</blockquote>
+ <h3><a name="Class-error_code-observers">Class <code>
+error_code</code> observers</a></h3>
+ <p><code>int value() const;</code></p>
+<blockquote>
+<p><i>Returns:</i> <code>val_</code>.</p>
+ <p><i>Throws:</i> Nothing.</p>
+</blockquote>
+ <p><code>error_category category() const;</code></p>
+<blockquote>
+<p><i>Returns:</i> <code>cat_</code>.</p>
+ <p><i>Throws:</i> Nothing.</p>
+</blockquote>
+ <pre>error_condition default_error_condition() const;</pre>
+<blockquote>
+<p><i>Returns:</i>&nbsp; <code>category().default_error_condition( value())</code>.</p>
+ <p><i>Throws:</i> Nothing.</p>
+</blockquote>
+ <p><code>string message() const;</code></p>
+<blockquote>
+<p><i>Returns:</i>&nbsp; <code>category().message( value())</code>.</p>
+ <p><i>Throws:</i> Nothing.</p>
+</blockquote>
+<p><code>operator <i>unspecified-bool-type</i>() const;</code></p>
+<blockquote>
+<p><i>Returns:</i> if <code>value() != value_type()</code>, returns a value that will evaluate
+<code>true</code> in a boolean context; otherwise, returns a value that will
+evaluate <code>false</code> in a boolean context. The value type returned shall
+not be convertible to <code>int</code>.</p>
+<p><i>Throws:</i> nothing.</p>
+<p><i>[Note: </i>This conversion can be used in contexts where a <code>bool</code>
+is expected ( e.g., an <code>if</code> condition ); however, implicit conversions
+( e.g., to <code>int</code>) that can occur with <code>bool</code> are not
+allowed, eliminating some sources of user error. One possible implementation
+choice for this type is pointer-to-member. <i>--end note ]</i></p>
+</blockquote>
+<h2><a name="Class-error_condition">Class <code>error_condition</code></a></h2>
+<p>The class <code>error_condition</code> describes an object used to hold
+values identifying error conditions. <i>[ Note: </i><code>error_condition</code>
+values are portable abstractions, while <code>error_code</code> values are
+implementation specific. <i>--end note ]</i></p>
+<h3><a name="Class-error_condition-synopsis">Class <code>error_condition</code> synopsis</a></h3>
+<blockquote>
+<pre>namespace boost
+{
+ namespace system
+ {
+ class error_condition
+ {
+ public:
+
+ // constructors:
+ error_condition();
+ error_condition( int val, const error_category &amp; cat );
+ template &lt;class ErrorConditionEnum&gt;
+ error_condition( errorConditionEnum val,
+ typename enable_if&lt;is_error_condition_enum&lt;ErrorConditionEnum&gt; &gt;::type* = 0 );
+
+ // modifiers:
+ void assign( int val, const error_category &amp; cat );
+ template&lt;typename ErrorConditionEnum&gt;
+ typename enable_if&lt;is_error_condition_enum&lt;ErrorConditionEnum&gt;, error_code&gt;::type &amp;
+ operator=( ErrorConditionEnum val );
+ void clear();
+
+ // observers:
+ int value() const;
+ const error_category &amp; category() const;
+ string message() const;
+ operator unspecified-bool-type () const;
+
+ private:
+ int val_; // <i>exposition only</i>
+ const error_category &amp; cat_; // <i>exposition only</i>
+ };
+ }
+}</pre>
+</blockquote>
+<h3><a name="Class-error_condition-constructors">Class <code>error_condition</code>
+constructors</a></h3>
+<pre>error_condition(); </pre>
+<blockquote>
+ <p><i>Effects:</i> Constructs an object of type <code>error_condition</code>.</p>
+ <p><i>Postconditions:</i> <code>val_ == 0 and cat_ == posix_category</code>.</p>
+ <p><i>Throws:</i> Nothing.</p>
+</blockquote>
+<pre>error_condition( value_type val, const error_category &amp; cat );</pre>
+<blockquote>
+ <p><i>Effects: </i>Constructs an object of type error_condition.</p>
+ <p><i>Postconditions:</i> <code>val_ == val and cat_ == cat</code>.</p>
+ <p><i>Throws:</i> Nothing.</p>
+</blockquote>
+<pre>template &lt;class ErrorConditionEnum&gt;
+ error_condition( errorConditionEnum val,
+ typename enable_if&lt;is_error_condition_enum&lt;ErrorConditionEnum&gt; &gt;::type* = 0 );</pre>
+<blockquote>
+ <p><i>Effects:</i> Constructs an object of type <code>error_condition</code>.</p>
+ <p><i>Postconditions:</i> <code>*this == make_error_condition( val )</code>.</p>
+ <p><i>Throws:</i> Nothing.</p>
+</blockquote>
+<h3><a name="Class-error_condition-modifiers">Class <code>error_condition</code>
+modifiers</a></h3>
+<pre>void assign( value_type val, const error_category &amp; cat ); </pre>
+<blockquote>
+ <p><i>Postconditions:</i> <code>val_ == val and cat_ == cat</code>. </p>
+ <p><i>Throws:</i> Nothing.</p>
+</blockquote>
+<pre>template&lt;typename ErrorConditionEnum&gt;
+ typename enable_if&lt;is_error_condition_enum&lt;ErrorConditionEnum&gt;, error_code&gt;::type &amp;
+ operator=( ErrorConditionEnum val );</pre>
+<blockquote>
+ <p><i>Postconditions:</i> <code>*this == make_error_condition( val )</code>.</p>
+ <p><i>Throws:</i> Nothing.</p>
+</blockquote>
+<p><code>void clear();</code></p>
+<blockquote>
+ <p><i>postcondition:</i> <code>value() == 0 &amp;&amp; category() == posix_category</code></p>
+</blockquote>
+<h3><a name="Class-error_condition-observers">Class <code>error_condition</code>
+observers</a></h3>
+<pre>value_type value() const;</pre>
+<blockquote>
+ <p><i>Returns:</i> <code>val_</code>.</p>
+ <p><i>Throws:</i> Nothing</p>
+</blockquote>
+<pre>const error_category &amp; category() const;</pre>
+<blockquote>
+ <p><i>Returns:</i> <code>cat_</code>.</p>
+ <p>Throws: Nothing.</p>
+</blockquote>
+<pre>string message() const;</pre>
+<blockquote>
+ <p><i>Returns:</i> <code>category().message( value() )</code>.</p>
+ <p><i>Throws:</i> Nothing.</p>
+</blockquote>
+<pre>operator unspecified-bool-type () const;</pre>
+<blockquote>
+ <p><i>Returns: </i>If <code>value() != 0</code>, returns a value that will
+ evaluate <code>true</code> in a boolean context; otherwise, returns a value
+ that will evaluate <code>false</code>. The return type shall not be
+ convertible to <code>int</code>. </p>
+ <p><i>Throws:</i> Nothing.</p>
+ <p><i>&nbsp;[ Note:</i> This conversion can be used in contexts where a <code>bool</code>
+ is expected ( e.g., an if condition ); however, implicit conversions ( e.g., to
+ <code>int</code>) that can occur with <code>bool</code> are not allowed,
+ eliminating some sources of user error. One possible implementation choice for
+ this type is pointer to member. <i>--end note</i> <i>]</i></p>
+</blockquote>
+ <h2><a name="Non-member-functions">Non-member functions</a></h2>
+ <pre>bool operator==( const error_code &amp; lhs, const error_code &amp; rhs );</pre>
+<blockquote>
+ <p><i>Returns:</i> <code>lhs.category() == rhs.category() &amp;&amp; lhs.value() ==
+ rhs.value()</code>.</p>
+ <p><i>Throws: </i>Nothing.</p>
+</blockquote>
+<pre>bool operator==( const error_code &amp; code, const error_condition &amp; condition );
+bool operator==( const error_condition &amp; condition, const error_code &amp; code );</pre>
+<blockquote>
+ <p><i>Returns:</i> <code>code.category().equivalent( code.value(), condition )<br>
+ || condition.category().equivalent( code, condition.value() )</code>.</p>
+ <p><i>Throws: </i>Nothing.</p>
+</blockquote>
+<pre>bool operator==( const error_condition &amp; lhs, const error_condition &amp; rhs );</pre>
+<blockquote>
+ <p><i>Returns:</i> <code>lhs.category() == rhs.category() &amp;&amp; lhs.value() ==
+ rhs.value()</code>.</p>
+ <p><i>Throws: </i>Nothing.</p>
+</blockquote>
+<pre>bool operator!=( const error_code &amp; lhs, const error_code &amp; rhs );</pre>
+<blockquote>
+ <p><i>Returns:</i> <code>!(lhs == rhs )</code>.</p>
+ <p><i>Throws: </i>Nothing.</p>
+</blockquote>
+<pre>bool operator!=( const error_code &amp; code, const error_condition &amp; condition );
+bool operator!=( const error_condition &amp; condition, const error_code &amp; code );</pre>
+<blockquote>
+ <p><i>Returns:</i><code> !( code ==&nbsp; condition )</code>.</p>
+ <p><i>Throws: </i>Nothing.</p>
+</blockquote>
+<pre>bool operator!=( const error_condition &amp; lhs, const error_condition &amp; rhs );</pre>
+<blockquote>
+ <p><i>Returns:</i> <code>!(lhs == rhs )</code>.</p>
+ <p><i>Throws: </i>Nothing.</p>
+</blockquote>
+<pre>bool operator&lt;( const error_code &amp; lhs, const error_code &amp; rhs );</pre>
+<blockquote>
+ <p><i>Returns:</i> <code>lhs.category() &lt; rhs.category()<br>
+ &nbsp; || (lhs.category() == rhs.category() &amp;&amp; lhs.value() &lt; rhs.value())</code>.</p>
+ <p><i>Throws: </i>Nothing.</p>
+</blockquote>
+<pre>bool operator&lt;( const error_condition &amp; lhs, const error_condition &amp; rhs );</pre>
+<blockquote>
+ <p><i>Returns:</i> <code>lhs.category() &lt; rhs.category()<br>
+ &nbsp; || (lhs.category() == rhs.category() &amp;&amp; lhs.value() &lt; rhs.value())</code>.</p>
+ <p><i>Throws: </i>Nothing.</p>
+</blockquote>
+<pre>error_code make_error_code( posix::posix_errno e );</pre>
+<blockquote>
+ <p><i>Returns:</i> <code>error_code( e, posix_category)</code>.</p>
+</blockquote>
+<pre>error_condition make_error_condition( posix::posix_errno e );</pre>
+<blockquote>
+ <p><i>Returns:</i> <code>error_condition( e, posix_category)</code>.</p>
+</blockquote>
+
+<pre>template &lt;class charT, class traits&gt;
+ std::basic_ostream&lt;charT,traits&gt;&amp;
+ operator&lt;&lt;( basic_ostream&lt;charT,traits&gt;&amp; os, const error_code &amp; ec );</pre>
+<blockquote>
+<p><i>Effects:</i> <code>os &lt;&lt; ec.category().name() &lt;&lt; ':' &lt;&lt; ec.value()</code>.</p>
+<p><i>Returns:</i> <code>os</code>.</p>
+</blockquote>
+<pre>size_t <a name="hash_value">hash_value</a>( const error_code &amp; ec );</pre>
+<blockquote>
+ <p><i>Returns: </i>&nbsp;A hash value representing <code>ec</code>.</p>
+</blockquote>
+
+<h2><a name="Header-system_error">Header &lt;boost/system/system_error.hpp&gt;</a></h2>
+
+<h3><a name="Class-system_error">Class <code>
+system_error</code></a></h3>
+<p>The class <code>system_error</code> describes an exception object used to
+report error conditions that have an associated error code. Such error
+conditions typically originate from the operating system or other low-level
+application program interfaces.</p>
+<blockquote>
+<pre>namespace boost
+{
+ namespace system
+ {
+ class system_error : public std::runtime_error
+ {
+ public:
+ system_error( error_code ec );
+ system_error( error_code ec, const std::string &amp; what_arg );
+ system_error( error_code::value_type ev, const error_category &amp; ecat,
+ const std::string &amp; what_arg );
+ system_error( error_code::value_type ev, const error_category &amp; ecat);
+
+ const error_code &amp; code() const throw();
+ const char * what() const throw();
+ };
+ }
+}</pre>
+</blockquote>
+<pre>system_error( error_code ec );</pre>
+<blockquote>
+ <p><i>Effects:</i> Constructs an object of class <code>system_error</code>.</p>
+ <p><i>Postcondition:</i> <code>code() == ec <br>
+&nbsp; &amp;&amp; std::strcmp( this-&gt;runtime_error::what(), &quot;&quot; ) == 0</code></p>
+</blockquote>
+<pre>system_error( error_code ec, const std::string &amp; what_arg );</pre>
+<blockquote>
+ <p><i>Effects:</i> Constructs an object of class <code>system_error</code>.</p>
+ <p><i>Postcondition:</i> <code>code() == ec <br>
+&nbsp; &amp;&amp; std::strcmp( this-&gt;runtime_error::what(), what_arg.c_str() ) == 0</code></p>
+</blockquote>
+<pre>system_error( error_code::value_type ev, const error_category &amp; ecat,
+ const std::string &amp; what_arg );</pre>
+<blockquote>
+ <p><i>Effects:</i> Constructs an object of class <code>system_error</code>.</p>
+ <p><i>Postcondition:</i> <code>code() == error_code( ev, ecat )<br>
+&nbsp; &amp;&amp; std::strcmp( this-&gt;runtime_error::what(), what_arg.c_str() ) == 0</code></p>
+</blockquote>
+<pre>system_error( error_code::value_type ev, const error_category &amp; ecat );</pre>
+<blockquote>
+ <p><i>Effects:</i> Constructs an object of class <code>system_error</code>.</p>
+ <p><i>Postcondition:</i> <code>code() == error_code( ev, ecat )<br>
+&nbsp; &amp;&amp; std::strcmp( this-&gt;runtime_error::what(), &quot;&quot; ) == 0</code></p>
+</blockquote>
+<pre>const error_code &amp; code() const;</pre>
+<blockquote>
+ <p><i>Returns:</i> <code>ec</code> or <code>error_code( ev, ecat )</code>, from
+ the constructor, as appropriate.</p>
+</blockquote>
+<pre>const char * what() const;</pre>
+<blockquote>
+ <p><i>Returns: </i>A string incorporating <code>
+ this-&gt;runtime_error::what()</code> and <code>
+ code.message()</code>.</p>
+</blockquote>
+<hr>
+
+<p>© Copyright Beman Dawes, 2006, 2007<br>
+Distributed under the Boost Software License, Version 1.0. See
+www.boost.org/LICENSE_1_0.txt</p>
+
+<p>Revised
+<!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%B %d, %Y" startspan -->September 14, 2007<!--webbot bot="Timestamp" endspan i-checksum="37985" --> </font>
+</p>
+
+</body>
+
+</html>
\ No newline at end of file

Deleted: trunk/libs/system/doc/system_error.html
==============================================================================
--- trunk/libs/system/doc/system_error.html 2007-09-14 11:45:36 EDT (Fri, 14 Sep 2007)
+++ (empty file)
@@ -1,127 +0,0 @@
-<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 system/system_error.hpp documentation
-</title>
-</head>
-
-<body bgcolor="#FFFFFF">
-
-<h1>Header boost/system/system_error.hpp</h1>
-<p>Introduction<br>
-Synopsis<br>
-Class system_error<br>
-&nbsp;&nbsp;&nbsp; Members<br>
-Acknowledgements</p>
-<h2><a name="Introduction">Introduction</a></h2>
-<p>This header provides components used to report errors originating from the
-operating system or other low-level application program interfaces (API's). It is based on the <i>Diagnostics</i>
-portion of the TR2 filesystem proposal.</p>
-<h2><a name="Synopsis">Synopsis</a></h2>
-<pre>namespace boost
-{
- namespace system
- {
- enum message_action { append_message, no_message };
-
- class system_error : public std::runtime_error
- {
- public:
- explicit system_error( error_code ec );
-
- system_error( error_code ec, const std::string &amp; what_arg,
- message_action ma = append_message );
-
- system_error( error_code::value_type ev, error_category ecat );
-
- system_error( error_code::value_type ev, error_category ecat,
- const std::string &amp; what_arg, message_action ma = append_message );
-
- virtual ~system_error() throw() {}
-
- const error_code &amp; code() const throw();
-
- const char * what() const throw();
-
- private:
- error_code m_error_code; // for exposition only
- bool m_append_message; // for exposition only
- mutable std::string m_what; // for exposition only
- };
- } // namespace system
-} // namespace boost</pre>
-<h2><a name="Class-system_error">Class <code>system_error</code></a></h2>
-<p>Class <code>system_error</code> defines
-the type of an object that may be thrown as
-an exception to report errors originating from the operating system or other
-low-level API's, or used as a base class for more refined exception classes. It
-encapsulates an <code>error_code</code> object.</p>
-<blockquote>
-<p><i>[Note:</i> A single low-level class, rather than a higher level exception
-class hierarchy, is provided to allow users access to low-level error codes
-originating from the operating system or other low-level API's, and to
-accommodate the open-ended set of errors that may be reported by such API's. <i>
---end note.]</i></p>
-</blockquote>
-<h2><a name="Class-system_error-members">Class <code>system_error</code> Members</a></h2>
-<p><code>explicit <a name="system_error-1">system_error</a>( error_code ec );</code></p>
-<blockquote>
- <p><i>Effects:</i> Constructs an object of class <code>system_error</code>.</p>
- <p><i>Postcondition:</i> <code>code() == ec &amp;&amp; *runtime_error::what() == '\0'
- &amp;&amp; </code><code>m_append_message</code>.</p>
-</blockquote>
-<pre><a name="system_error-2">system_error</a>( error_code ec, const std::string &amp; what_arg, message_action ma = append_message );</pre>
-<blockquote>
- <p><i>Effects:</i> Constructs an object of class <code>system_error</code>.</p>
- <p><i>Postcondition:</i> <code>code() == ec &amp;&amp; std::string(runtime_error::what())
- == </code><code>what_arg</code><code> &amp;&amp; m_append_message == ma</code>.</p>
-</blockquote>
-<pre><a name="system_error-3">system_error</a>( error_code::value_type ev, error_category ecat );</pre>
-<blockquote>
- <p><i>Effects:</i> Constructs an object of class <code>system_error</code>.</p>
- <p><i>Postcondition:</i> <code>code() == error_code(ev,ecat) &amp;&amp; *runtime_error::what()
- == '\0' &amp;&amp; m_append_message</code>.</p>
-</blockquote>
-<pre><a name="system_error-4">system_error</a>( error_code::value_type ev, error_category ecat,
- const std::string &amp; what_arg, message_action ma = append_message );</pre>
-<blockquote>
- <p><i>Effects:</i> Constructs an object of class <code>system_error</code>.</p>
- <p><i>Postcondition:</i> <code>code() == error_code(ev,ecat) &amp;&amp; std::string(runtime_error::what())
- == </code><code>what_arg</code><code> &amp;&amp; m_append_message == ma</code>.</p>
-</blockquote>
-<pre>const error_code &amp; <a name="code">code</a>() const throw();</pre>
-<blockquote>
- <p><i>Returns: </i>&nbsp;<code>m_error_code</code></p>
-</blockquote>
-<pre>const char * <a name="what">what</a>() const throw();</pre>
-<blockquote>
- <p><i>Returns: </i>If <code>!m_error_code || !m_append_message</code>, <code>
- runtime_error::what()</code>. Otherwise, a string as if computed by:</p>
- <blockquote>
- <pre>m_what = runtime_error::what();
-if ( !m_what.empty() ) m_what += &quot;: &quot;;
-m_what += m_error_code.message();
-return m_what.c_str();</pre>
- </blockquote>
-</blockquote>
- <h2><a name="Acknowledgements">Acknowledgements</a></h2>
- <p>Christopher Kohlhoff and Peter Dimov made important contributions to the
- design. Comments and suggestions were also received from Pavel Vozenilek,
- Gennaro Prota, Dave Abrahams, Jeff Garland, Iain Hanson, Jeremy Day, Bo
- Persson, Oliver Kowalke, and
- Oleg Abrosimov.</p>
-<hr>
-<p>Last revised:
-<!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %B, %Y" startspan -->22 July, 2006<!--webbot bot="Timestamp" endspan i-checksum="21146" --></p>
-<p>© Copyright Beman Dawes, 2006</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


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