|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r76416 - trunk/libs/filesystem/v3/doc/src
From: bdawes_at_[hidden]
Date: 2012-01-11 17:28:31
Author: bemandawes
Date: 2012-01-11 17:28:30 EST (Wed, 11 Jan 2012)
New Revision: 76416
URL: http://svn.boost.org/trac/boost/changeset/76416
Log:
Refine source.html and tr2_snippets.html, including the application of noexcept in more, but not all, of the applicable cases. Update do-list.
Text files modified:
trunk/libs/filesystem/v3/doc/src/source.html | 233 +++++++++++++++++++--------------------
trunk/libs/filesystem/v3/doc/src/tr2_snippets.html | 12 -
2 files changed, 116 insertions(+), 129 deletions(-)
Modified: trunk/libs/filesystem/v3/doc/src/source.html
==============================================================================
--- trunk/libs/filesystem/v3/doc/src/source.html (original)
+++ trunk/libs/filesystem/v3/doc/src/source.html 2012-01-11 17:28:30 EST (Wed, 11 Jan 2012)
@@ -47,7 +47,7 @@
<a href="#Definitions">Definitions</a><br>
<a href="#Conformance">Conformance</a><br>
<a href="#Header-filesystem-synopsis">
- Header <code><boost/filesystem.hpp></code> synopsis</a><br>
+ Header <code><$HEADER;></code> synopsis</a><br>
<a href="#Error-reporting">Error reporting</a><br>
<a href="#class-path">Class <code>path</code></a><br>
path
conversions<br>
@@ -382,21 +382,19 @@
uintmax_t available; // free space available to a non-privileged process
};
- BOOST_SCOPED_ENUM_START(<a name="copy_option">copy_option</a>)
+ enum class <a name="copy_option">copy_option</a>
{
none
fail_if_exists = none,
overwrite_if_exists
};
- BOOST_SCOPED_ENUM_END
- BOOST_SCOPED_ENUM_START(<a name="symlink_option">symlink_option</a>)
+ enum class <a name="symlink_option">symlink_option</a>
{
none
no_recurse = none,
recurse
};
- BOOST_SCOPED_ENUM_END
// operational functions
@@ -414,8 +412,8 @@
void copy_file(const path& from, const path& to);
void copy_file(const path& from, const path& to, system::error_code& ec);
- void copy_file(const path& from, const path& to, BOOST_SCOPED_ENUM(copy_option) option);
- void copy_file(const path& from, const path& to, BOOST_SCOPED_ENUM(copy_option) option,
+ void copy_file(const path& from, const path& to, copy_option option);
+ void copy_file(const path& from, const path& to, copy_option option,
system::error_code& ec);
void copy_symlink(const path& existing_symlink, const path& new_symlink);
@@ -441,39 +439,40 @@
void current_path(const path& p);
void current_path(const path& p, system::error_code& ec);
- bool exists(file_status s);
+ bool exists(file_status s) noexcept;
bool exists(const path& p);
- bool exists(const path& p, system::error_code& ec);
+ bool exists(const path& p, system::error_code& ec) noexcept;
bool equivalent(const path& p1, const path& p2);
bool equivalent(const path& p1, const path& p2, system::error_code& ec);
uintmax_t file_size(const path& p);
uintmax_t file_size(const path& p, system::error_code& ec);
+
uintmax_t hard_link_count(const path& p);
uintmax_t hard_link_count(const path& p, system::error_code& ec);
const path& initial_path();
const path& initial_path(<code>system::error_code& ec</code>);
- bool is_directory(file_status s);
+ bool is_directory(file_status s) noexcept;
bool is_directory(const path& p);
- bool is_directory(const path& p, system::error_code& ec);
+ bool is_directory(const path& p, system::error_code& ec) noexcept;
bool is_empty(const path& p);
bool is_empty(const path& p, system::error_code& ec);
- bool is_other(file_status s);
+ bool is_other(file_status s) noexcept;
bool is_other(const path& p,);
- bool is_other(const path& p, system::error_code& ec);
+ bool is_other(const path& p, system::error_code& ec) noexcept;
- bool is_regular_file(file_status s);
+ bool is_regular_file(file_status s) noexcept;
bool is_regular_file(const path& p);
- bool is_regular_file(const path& p, system::error_code& ec);
+ bool is_regular_file(const path& p, system::error_code& ec) noexcept;
- bool is_symlink(file_status s);
+ bool is_symlink(file_status s noexcept);
bool is_symlink(const path& p);
- bool is_symlink(const path& p, system::error_code& ec);
+ bool is_symlink(const path& p, system::error_code& ec) noexcept;
std::time_t last_write_time(const path& p);
std::time_t last_write_time(const path& p, system::error_code& ec);
@@ -497,13 +496,14 @@
<a href="#space_info">space_info</a> <a href="#space">space</a>(const path& p);
<a href="#space_info">space_info</a> <a href="#space">space</a>(const path& p, system::error_code& ec);
+
<a href="#file_status">file_status</a> <a href="#status">status</a>(const path& p);
- file_status status(const path& p, system::error_code& ec);
+ file_status status(const path& p, system::error_code& ec) noexcept;
- bool status_known(file_status s);
+ bool status_known(file_status s) noexcept;
<a href="#file_status">file_status</a> <a href="#symlink_status">symlink_status</a>(const path& p);
- file_status symlink_status(const path& p, system::error_code& ec);
+ file_status symlink_status(const path& p, system::error_code& ec) noexcept;
path system_complete(const path& p);
path system_complete(const path& p, system::error_code& ec);
@@ -586,6 +586,7 @@
// constructors and destructor
path();
path(const path& p);
+ path(path&& p) noexcept;
template <class Source>
path(Source const& source, const codecvt_type& cvt=codecvt());
@@ -597,6 +598,7 @@
// assignments
path& operator=(const path& p);
+ path& operator=(path&& p) noexcept;
template <class Source>
path& operator=(Source const& source);
@@ -628,8 +630,8 @@
void swap(path& rhs);
// native format observers
- const string_type& native() const; // native format, encoding
- const value_type* c_str() const; // native().c_str()
+ const string_type& native() const noexcept; // native format, encoding
+ const value_type* c_str() const noexcept; // native().c_str()
template <class String>
String string(const codecvt_type& cvt=codecvt()) const; // native format
@@ -723,7 +725,7 @@
<table align="center" border="1" cellpadding="3" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" bgcolor="#D7EEFF" width="90%">
<tr>
- <td style="font-size: 10pt">
+ <td>
Class <code>path</code> does not currently map invalid characters in
filenames to valid characters. In the future we might add something like
this:<blockquote>
@@ -958,12 +960,10 @@
<code>new_extension</code>.</p>
<p><i>Returns:</i> <code>*this</code></p>
</blockquote>
-<pre><code>void <a name="path-swap">swap</a>(path& rhs);</code></pre>
+<pre><code>void <a name="path-swap">swap</a>(path& rhs) noexcept;</code></pre>
<blockquote>
<p><i>Effects:</i>
Swaps the contents of the two paths.</p>
- <p><i>Throws: </i>
- nothing.</p>
<p><i>Complexity: </i>
constant time.</p>
</blockquote>
@@ -972,15 +972,13 @@
native format observers</a></h3>
<p>The string returned by all native format observers is in the
<a href="#native-pathname-format">native pathname format</a>.</p>
-<pre>const string_type& <a name="native">native</a>() const;</pre>
+<pre>const string_type& <a name="native">native</a>() const noexcept;</pre>
<blockquote>
<p><i>Returns:</i> <code>pathname</code>.</p>
-<p><i>Throws:</i> nothing.</p>
</blockquote>
-<pre>const value_type* <a name="c_str">c_str</a>() const;</pre>
+<pre>const value_type* <a name="c_str">c_str</a>() const noexcept;</pre>
<blockquote>
<p><i>Returns:</i> <code>pathname.c_str()</code>.</p>
-<p><i>Throws:</i> nothing.</p>
</blockquote>
<pre>template <class String>
String <a name="string-template">string</a>(const codecvt_type& cvt=codecvt()) const;</pre>
@@ -1209,6 +1207,8 @@
<p><i>Returns:</i> The <code>codecvt</code> facet for the default locale for
all objects of type <code>path</code>.</p>
</blockquote>
+
+$if $TARGET; == BOOST
<h3> <a name="path-deprecated-functions"><code><font size="4"> path</font></code> deprecated functions</a></h3>
<p> Several member functions from previous versions of <code>class path</code>
have been deprecated, either because they have been renamed or because the
@@ -1232,6 +1232,9 @@
const string_type external_file_string() const { return native(); }
const string_type external_directory_string() const { return native(); }</pre>
</blockquote>
+
+$endif
+
<h3> <a name="path-non-member-functions"> <code><font size="4">path</font></code>
non-member functions</a></h3>
<pre>void swap( path& lhs, path& rhs )</pre>
@@ -1929,14 +1932,11 @@
<a href="#Class-recursive_directory_iterator">recursive_directory_iterator</a></code>.</p>
<pre>$NAMESPACE_BEGIN;
class directory_iterator
- : public boost::iterator_facade< directory_iterator,
- directory_entry,
- boost::single_pass_traversal_tag >
{
public:
// member functions
- directory_iterator(); // creates the "end" iterator
+ directory_iterator() noexcept; // creates the "end" iterator
directory_iterator(const directory_iterator&);
explicit directory_iterator(const path& p);
directory_iterator(const path& p, system::error_code& ec);
@@ -2009,14 +2009,13 @@
</blockquote>
<h4><a name="directory_iterator-members"><code>directory_iterator</code> members</a></h4>
-<p><code><a name="directory_iterator-default-ctor">directory_iterator</a>();</code></p>
+<p><code><a name="directory_iterator-default-ctor">directory_iterator</a>()
+noexcept;</code></p>
<blockquote>
<p><i>Effects:</i> Constructs the end iterator.</p>
-<p><i>Throws:</i> Nothing.</p>
-
</blockquote>
<pre><code>explicit <a name="directory_iterator-ctor-path">directory_iterator</a>(</code>const path& p<code>);
@@ -2058,18 +2057,18 @@
public:
// constructors and destructor
- recursive_directory_iterator();
+ recursive_directory_iterator() noexcept;
recursive_directory_iterator(const recursive_directory_iterator&);
explicit recursive_directory_iterator(const path& p,
- BOOST_SCOPED_ENUM(symlink_option) opt = symlink_option::none);
+ symlink_option opt = symlink_option::none);
recursive_directory_iterator(const path& p,
- BOOST_SCOPED_ENUM(symlink_option) opt, system::error_code& ec);
+ symlink_option opt, system::error_code& ec);
recursive_directory_iterator(const path& p, system::error_code& ec);
~recursive_directory_iterator();
// observers
- int level() const;
- bool no_push<code>_pending</code>() const;
+ int level() const noexcept;
+ bool no_push<code>_pending</code>() const noexcept;
// modifiers
recursive_directory_iterator& operator=(const recursive_directory_iterator&);
@@ -2081,14 +2080,15 @@
void no_push(bool value=true);
// other members as required by
- // C++ Std, 24.1.2 Input iterators [input.iterators]
+ // C++ Std, Input iterators [input.iterators]
private:
-<i><b> // actual data members will probably be stored in a shared pimpl object,
- // or some similar mechanism, to achieve the required input iterator copy semantics
-</b></i> int m_level; <b><i> // for exposition only</i></b>
- bool m_no_<code>push</code>; <i><b> // for exposition only
- </b></i>BOOST_SCOPED_ENUM(symlink_option) m_options; <i><b>// for exposition only</b></i>
+<i><b> // actual data members will probably be stored in a shared object,
+ // or some similar mechanism, to achieve the required input iterator
+ // copy semantics
+</b></i> int m_level; <b><i> // for exposition only</i></b>
+ bool m_no_<code>push</code>; <i><b>// for exposition only
+ </b></i>symlink_option m_options; <i><b>// for exposition only</b></i>
};
$NAMESPACE_END;</pre>
@@ -2104,17 +2104,15 @@
over, or when <code>pop()</code> is called, <code>m_level</code> is
decremented, and iteration of the parent directory continues.</li>
</ul>
-<pre>recursive_directory_iterator();</pre>
+<pre>recursive_directory_iterator() noexcept;</pre>
<blockquote>
<p><i>Effects:</i> Constructs the end iterator.</p>
-<p><i>Throws:</i> Nothing.</p>
-
</blockquote>
-<pre>explicit recursive_directory_iterator(const path& p, BOOST_SCOPED_ENUM(symlink_option) opt = symlink_option::none);
-recursive_directory_iterator(const path& p, BOOST_SCOPED_ENUM(symlink_option) opt, system::error_code& ec);
+<pre>explicit recursive_directory_iterator(const path& p, symlink_option opt = symlink_option::none);
+recursive_directory_iterator(const path& p, symlink_option opt, system::error_code& ec);
recursive_<code>directory_iterator(</code>const path& p, system::error_code& ec<code>);</code></pre>
<blockquote>
@@ -2139,17 +2137,15 @@
as <code>symlink_option::recurse</code>
<i>-- end note</i>]</p>
</blockquote>
-<pre>int level() const;</pre>
+<pre>int level() const noexcept;</pre>
<blockquote>
<p><i>Requires:</i> <code>*this != recursive_directory_iterator()</code>.</p>
<p><i>Returns:</i> <code>m_level</code>.</p>
- <p><i>Throws:</i> Nothing.</p>
</blockquote>
-<pre>bool <code>no_push_pending</code>() const;</pre>
+<pre>bool <code>no_push_pending</code>() const noexcept;</pre>
<blockquote>
<p><i>Requires:</i> <code>*this != recursive_directory_iterator()</code>.</p>
<p><i>Returns:</i> <code>m_no_push</code>.</p>
- <p><i>Throws:</i> Nothing.</p>
</blockquote>
<pre><code>recursive_directory_iterator</code>& <a name="recursive_directory_iterator-increment">operator++</a>();
recursive_directory_iterator& increment(system::error_code& ec);</pre>
@@ -2187,20 +2183,18 @@
<p><i>Effects:</i> If <code>level() == 0</code>, set <code>*this</code> to <code>recursive_directory_iterator()</code>.
Otherwise, <code>--m_level</code>, cease iteration of the directory currently being
iterated over, and continue iteration over the parent directory.</p>
- <p><i>Throws:</i> Nothing.</p>
</blockquote>
<pre>void no_push(bool value=true);</pre>
<blockquote>
<p><i>Requires:</i> <code>*this != recursive_directory_iterator()</code>.</p>
<p><i>Postcondition:</i> <code>no_push_pending() == value</code>.</p>
- <p><i>Throws:</i> Nothing.</p>
<p>[<i>Note:</i> <code>no_push()</code> is used to prevent
unwanted recursion into a directory. <i>--end note</i>]</p>
</blockquote>
<h3><a name="Operational-functions">Operational functions</a></h3>
<p>Operational functions query or modify files, including directories, in external
storage.</p>
-<p style="font-size: 10pt">Operational functions access a file by resolving an
+<p>Operational functions access a file by resolving an
object of class <code>path</code> to a particular file in a file hierarchy. The
path is resolved as if by the <i>POSIX</i>
<a href="http://www.opengroup.org/onlinepubs/000095399/basedefs/xbd_chap04.html#tag_04_11">
@@ -2302,8 +2296,8 @@
Error reporting</a>.</p>
</blockquote>
-<pre>void <a name="copy_file">copy_file</a>(const path& from, const path& to, BOOST_SCOPED_ENUM(copy_option) option);
-void <a name="copy_file2">copy_file</a>(const path& from, const path& to, BOOST_SCOPED_ENUM(copy_option) option, system::error_code& ec);</pre>
+<pre>void <a name="copy_file">copy_file</a>(const path& from, const path& to, copy_option option);
+void <a name="copy_file2">copy_file</a>(const path& from, const path& to, copy_option option, system::error_code& ec);</pre>
<blockquote>
<p><i>Effects:</i> If <code>option == copy_option::</code><code>fail_if_exists
&& exists(to)</code>, an error is reported. Otherwise, the contents and attributes of the file <code>from</code>
@@ -2364,21 +2358,18 @@
<p><i>Throws:</i> As specified in
<a href="#Error-reporting">
Error reporting</a>.</p>
- <p>[<i>Note:</i>
- Some <b>operating systems</b>, such as Windows, require symlink creation to
+ <p dir="ltr">[<i>Note:</i>
+ Some operating systems, such as Windows, require symlink creation to
identify that the link is to a directory. Portable code should use <code>
create_directory_symlink()</code> to create directory symlinks rather than
<code>create_symlink()</code> <i>-- end note</i>]</p>
<p>[<i>Note:</i>
- Some <b>operating systems</b> do not support symbolic links at all or support
- them only for regular files. Windows prior to Vista, for example, did not
- support symbolic links.
- Some <b>file systems</b> do not
+ Some operating systems do not support symbolic links at all or support
+ them only for regular files.
+ Some file systems do not
support
- symbolic links regardless of the operating system - the FAT system used on floppy discs, memory cards and flash
- drives,
- for example. Thus symbolic links should only be used if these situations are
- not concerns, or if workarounds are provided. <i>-- end note</i>]</p>
+ symbolic links regardless of the operating system - the FAT file system used on
+ memory cards and flash drives, for example. <i>-- end note</i>]</p>
</blockquote>
<pre>void <a name="create_hard_link">create_hard_link</a>(const path& to, const path& new_hard_link);
void <a name="create_hard_link2">create_hard_link</a>(const path& to, const path& new_hard_link, system::error_code& ec);</pre>
@@ -2401,38 +2392,34 @@
<a href="#Error-reporting">
Error reporting</a>.</p>
<p>[<i>Note:</i>
- Some <b>operating systems</b> do not support hard links at all or support
- them only for regular files. Some <b>file systems</b> do not support hard
- links regardless of the operating system - the FAT system used on floppy
- discs, memory cards and flash drives, for example. Some file systems limit the
- number of links per file. Thus hard links should only be used if these
- situations are not concerns, or if workarounds are provided. <i>-- end note</i>]</p>
+ Some operating systems do not support hard links at all or support
+ them only for regular files. Some file systems do not support hard
+ links regardless of the operating system - the FAT file system used on memory
+ cards and flash drives, for example. Some file systems limit the number of
+ links per file. <i>-- end note</i>]</p>
</blockquote>
<pre>void <a name="create_symlink">create_symlink</a>(const path& to, const path& new_symlink);
void <a name="create_symlink2">create_symlink</a>(const path& to, const path& new_symlink, system::error_code& ec);</pre>
-<blockquote style="font-size: 10pt">
- <p style="font-size: 10pt"><i>Effects:</i>
+<blockquote>
+ <p><i>Effects:</i>
Establishes the postcondition, as if by <i>
POSIX</i>
<code>
<a href="http://www.opengroup.org/onlinepubs/000095399/functions/symlink.html">
symlink()</a></code>.</p>
- <p style="font-size: 10pt"><i>
+ <p><i>
Postcondition:</i> <code>new_symlink</code> resolves to a symbolic link file that
contains an unspecified representation of <code>to</code>.</p>
- <p style="font-size: 10pt"><i>Throws:</i> As specified in
+ <p><i>Throws:</i> As specified in
<a href="#Error-reporting">
Error reporting</a>.</p>
<p>[<i>Note:</i>
- Some <b>operating systems</b> do not support symbolic links at all or support
- them only for regular files. Windows prior to Vista, for example, did not
- support symbolic links.
- Some <b>file systems</b> do not
+ Some operating systems do not support symbolic links at all or support
+ them only for regular files.
+ Some file systems do not
support
- symbolic links regardless of the operating system - the FAT system used on floppy discs, memory cards and flash
- drives,
- for example. Thus symbolic links should only be used if these situations are
- not concerns, or if workarounds are provided. <i>-- end note</i>]</p>
+ symbolic links regardless of the operating system - the FAT system used on
+ memory cards and flash drives, for example. <i>-- end note</i>]</p>
</blockquote>
<pre>path <a name="current_path">current_path</a>();
path <a name="current_path2">current_path</a>(system::error_code& ec);</pre>
@@ -2454,7 +2441,7 @@
<pre>void current_path(const path& p);
void current_path(const path& p, system::error_code& ec);</pre>
<blockquote>
- <p style="font-size: 10pt"><i>Effects:</i>
+ <p><i>Effects:</i>
Establishes the postcondition, as if by <i>
POSIX</i>
<code>
@@ -2468,14 +2455,13 @@
global state. It may be changed unexpectedly by a third-party or system
library functions, or by another thread. <i>-- end note</i>]</p>
</blockquote>
-<pre>bool <a name="exists">exists</a>(file_status s);</pre>
+<pre>bool <a name="exists">exists</a>(file_status s) noexcept;</pre>
<blockquote>
<p><i>Returns:</i>
<code>status_known(s) && s.type() != file_not_found</code></p>
- <p><i>Throws:</i> Nothing.</p>
</blockquote>
<pre>bool <a name="exists2">exists</a>(const path& p);
-bool <a name="exists3">exists</a>(const path& p, system::error_code& ec);</pre>
+bool <a name="exists3">exists</a>(const path& p, system::error_code& ec) noexcept;</pre>
<blockquote>
<p><i>Returns:</i> <code>exists(status(p))</code> or <code>exists(status(p, ec))</code>,
respectively.</p>
@@ -2484,15 +2470,15 @@
</blockquote>
<pre><code>bool <a name="equivalent">equivalent</a>(const path& p1, const path& p2);
bool <a name="equivalent2">equivalent</a>(const path& p1, const path& p2, system::error_code& ec);</code></pre>
-<blockquote style="font-size: 10pt">
- <p style="font-size: 10pt"><i>Effects:</i> Determines <code>file_status s1</code>
+<blockquote>
+ <p><i>Effects:</i> Determines <code>file_status s1</code>
and <code>s2</code>, as if by <code>status(p1)</code> and <code>status(p2)</code>,
respectively.</p>
- <p style="font-size: 10pt"><i>Returns:</i> <code>true</code>, if <code>sf1 ==
+ <p><i>Returns:</i> <code>true</code>, if <code>sf1 ==
sf2</code> and <code>p1</code> and <code>p2</code> resolve to the same file
system entity, else <code>false</code>.</p>
<blockquote>
- <p style="font-size: 10pt">Two paths are considered to resolve to the same
+ <p>Two paths are considered to resolve to the same
file system entity if two candidate entities reside on the same device at the
same location. This is determined as if by the values of the <i>POSIX</i>
<code>
@@ -2501,7 +2487,7 @@
<a href="http://www.opengroup.org/onlinepubs/000095399/functions/stat.html">
stat()</a></code> for the two paths, having equal <code>st_dev</code> values
and equal <code>st_ino</code> values.</p>
- <p style="font-size: 10pt">[<i>Note:</i> <i>POSIX</i> requires that <i>"st_dev</i>
+ <p>[<i>Note:</i> <i>POSIX</i> requires that <i>"st_dev</i>
must be unique within a Local Area Network". Conservative <i>POSIX</i>
implementations may also wish to check for equal <code>st_size</code> and
<code>st_mtime</code> values. <i>Windows</i> implementations may use <code>
@@ -2511,7 +2497,7 @@
<code>nFileSizeLow</code>, <code>ftLastWriteTime.dwLowDateTime</code>, and
<code>ftLastWriteTime.dwHighDateTime</code>. <i>-- end note</i>]</p>
</blockquote>
- <p style="font-size: 10pt"><i>Throws:</i> <code>filesystem_error</code>
+ <p><i>Throws:</i> <code>filesystem_error</code>
if <code>(!exists(s1) && !exists(s2)) || (is_other(s1) && is_other(s2))</code>,
otherwise as specified in
<a href="#Error-reporting">
@@ -2533,7 +2519,7 @@
obtained as if by <i>POSIX</i> <code>
<a href="http://www.opengroup.org/onlinepubs/000095399/functions/stat.html">stat()</a></code>.
Otherwise, <code>static_cast<uintmax_t>(-1)</code>.</p>
- <p style="font-size: 10pt"><i>Throws:</i> As specified in
+ <p><i>Throws:</i> As specified in
<a href="#Error-reporting">
Error reporting</a>.</p>
</blockquote>
@@ -2542,7 +2528,7 @@
<blockquote>
<p><i>Returns:</i> The number of hard links for <code>p</code>.</p>
- <p style="font-size: 10pt"><i>Throws:</i> As specified in
+ <p><i>Throws:</i> As specified in
<a href="#Error-reporting">
Error reporting</a>.</p>
@@ -2562,14 +2548,13 @@
<a href="#Error-reporting">
Error reporting</a>. Subsequent calls throw nothing.</p>
</blockquote>
-<pre>bool <code><a name="is_directory">is_directory</a></code>(file_status s);</pre>
+<pre>bool <code><a name="is_directory">is_directory</a></code>(file_status s) noexcept;</pre>
<blockquote>
<p><i>Returns:</i>
<code>s.type() == directory_file</code></p>
- <p><i>Throws:</i> Nothing.</p>
</blockquote>
<pre><code>bool <a name="is_directory2">is_directory</a>(const path& p);
-bool <a name="is_directory3">is_directory</a>(const path& p, system::error_code& ec);</code></pre>
+bool <a name="is_directory3">is_directory</a>(const path& p, system::error_code& ec) noexcept;</code></pre>
<blockquote>
<p dir="ltr"><i>Returns:</i> <code>is_directory(status(p))</code> or <code>is_directory(status(p, ec))</code>,
respectively.</p>
@@ -2586,11 +2571,10 @@
directory_iterator(p) == directory_iterator()<br>
: file_size(p) == 0;</code></p>
</blockquote>
-<pre>bool <code><a name="is_regular_file">is_regular_file</a></code>(file_status s);</pre>
+<pre>bool <code><a name="is_regular_file">is_regular_file</a></code>(file_status s) noexcept;</pre>
<blockquote>
<p><i>Returns:</i>
<code>s.type() == regular_file</code></p>
- <p><i>Throws:</i> Nothing.</p>
</blockquote>
<pre><code>bool <a name="is_regular_file2">is_regular_file</a>(const path& p);</code></pre>
<blockquote>
@@ -2598,7 +2582,7 @@
<p><i>Throws:</i> <code>filesystem_error</code>
if <code>status(p)</code> would throw <code>filesystem_error.</code></p>
</blockquote>
-<pre><code>bool <a name="is_regular_file3">is_regular_file</a>(const path& p, system::error_code& ec);</code></pre>
+<pre><code>bool <a name="is_regular_file3">is_regular_file</a>(const path& p, system::error_code& ec) noexcept;</code></pre>
<blockquote>
<p><i>Effects:</i> Sets <code>ec</code> as if by <code>status(p, ec)</code>. [<i>Note:</i>
<code>status_error</code>,
@@ -2611,30 +2595,27 @@
function directly. <i>-- end
note</i>] </p>
<p><i>Returns:</i> <code>is_regular_file(status(p, ec))</code>.</p>
- <p><i>Throws:</i> Nothing.</p>
</blockquote>
-<pre>bool <a name="is_other">is_other</a>(file_status s);</pre>
+<pre>bool <a name="is_other">is_other</a>(file_status s) noexcept;</pre>
<blockquote>
<p><i>Returns:</i>
<code>return exists(s) && !is_regular_file(s) && !is_directory(s) && !is_symlink(s)</code></p>
- <p><i>Throws:</i> Nothing.</p>
</blockquote>
<pre><code>bool <a name="is_other2">is_other</a>(const path& p);
-bool <a name="is_other3">is_other</a>(const path& p, system::error_code& ec);</code></pre>
+bool <a name="is_other3">is_other</a>(const path& p, system::error_code& ec) noexcept;</code></pre>
<blockquote>
<p><i>Returns:</i> <code>is_other(status(p))</code> or <code>is_other(status(p, ec))</code>,
respectively.</p>
<p><i>Throws:</i> <code>filesystem_error</code>; overload with <code>error_code&</code> throws
nothing.</p>
</blockquote>
-<pre>bool <a name="is_symlink">is_symlink</a>(file_status s);</pre>
+<pre>bool <a name="is_symlink">is_symlink</a>(file_status s) noexcept;</pre>
<blockquote>
<p><i>Returns:</i>
<code>s.type() == symlink_file</code></p>
- <p><i>Throws:</i> Nothing.</p>
</blockquote>
<pre><code>bool <a name="is_symlink2">is_symlink</a>(const path& p);
-bool <a name="is_symlink3">is_symlink</a>(const path& p, system::error_code& ec);</code></pre>
+bool <a name="is_symlink3">is_symlink</a>(const path& p, system::error_code& ec) noexcept;</code></pre>
<blockquote>
<p><i>Returns:</i> <code>is_symlink(symlink_status(p))</code> or <code>is_symlink(symlink_status(p, ec))</code>,
respectively.</p>
@@ -2649,6 +2630,9 @@
<a href="http://www.opengroup.org/onlinepubs/000095399/basedefs/sys/stat.h.html">stat</a></code> structure member <code>st_mtime</code> obtained
as if by <i>POSIX</i> <code>
<a href="http://www.opengroup.org/onlinepubs/000095399/functions/stat.html">stat()</a></code>.</p>
+ <p><i>Throws:</i> As specified in
+ <a href="#Error-reporting">
+ Error reporting</a>.</p>
</blockquote>
<pre>void <a name="last_write_time3">last_write_time</a>(const path& p, const std::time_t new_time);
void <a name="last_write_time4">last_write_time</a>(const path& p, const std::time_t new_time<code>, system::error_code& ec</code>);</pre>
@@ -2703,6 +2687,9 @@
</table>
<p>[<i>Note:</i> Conceptually permissions are viewed as bits, but the actual
implementation may use some other mechanism. -- <i>end note</i>]</p>
+ <p><i>Throws:</i> As specified in
+ <a href="#Error-reporting">
+ Error reporting</a>.</p>
</blockquote>
<pre>path <a name="read_symlink">read_symlink</a>(const path& p);
path read_symlink(const path& p, system::error_code& ec);</pre>
@@ -2775,7 +2762,7 @@
<p><i>Throws:</i> As specified in
<a href="#Error-reporting">
Error reporting</a>.</p>
- <p style="font-size: 10pt"><i>Remarks:</i> Achieves its postconditions as if by
+ <p><i>Remarks:</i> Achieves its postconditions as if by
POSIX <code>
<a href="http://www.opengroup.org/onlinepubs/000095399/functions/truncate.html">
truncate()</a></code>.</p>
@@ -2816,7 +2803,7 @@
cause an exception to be
thrown.<i> -- end note</i>] </p>
</blockquote>
-<pre>file_status <a name="status2">status</a>(const path& p, system::error_code& ec);</pre>
+<pre>file_status <a name="status2">status</a>(const path& p, system::error_code& ec) noexcept;</pre>
<blockquote>
<p><i>Effects: </i></p>
<blockquote>
@@ -2905,19 +2892,17 @@
file_status(type_unknown)</code>.</li>
</ul>
</blockquote>
-<p><i>Throws:</i> Nothing.</p>
<p><i>Remarks:</i> If a symbolic link is encountered during pathname
resolution,
pathname resolution continues using the contents of the symbolic link.</p>
</blockquote>
-<pre>bool <a name="status_known">status_known</a>(file_status s);</pre>
+<pre>bool <a name="status_known">status_known</a>(file_status s) noexcept;</pre>
<blockquote>
<p><i>Returns:</i>
<code>s.type() != status_error</code></p>
- <p><i>Throws:</i> Nothing.</p>
</blockquote>
<pre>file_status <a name="symlink_status">symlink_status</a>(const path& p);
-file_status <a name="symlink_status2">symlink_status</a>(const path& p, system::error_code& ec);</pre>
+file_status <a name="symlink_status2">symlink_status</a>(const path& p, system::error_code& ec) noexcept;</pre>
<blockquote>
<p><i>Effects:</i> Same as status(), above,
except that the attributes
@@ -2931,8 +2916,9 @@
that if the attributes indicate a symbolic link, as if by <i>POSIX</i>
<a class="external" href="http://www.opengroup.org/onlinepubs/000095399/basedefs/sys/stat.h.html">
S_ISLNK()</a>, return <code>file_status(symlink_file)</code>.</p>
-<p><i>Throws:</i> Nothing.</p>
<p><i>Remarks:</i> Pathname resolution terminates if <code>p</code> names a symbolic link.</p>
+ <p><i>Throws:</i> <code>filesystem_error</code>; overload with <code>error_code&</code> throws
+ nothing.</p>
</blockquote>
<pre>path <a name="system_complete">system_complete</a>(const path& p);
path <a name="system_complete2">system_complete</a>(const path& p, system::error_code& ec);</pre>
@@ -2943,6 +2929,9 @@
<p><i>Returns:</i> The composed path.</p>
<p><i>Postcondition:</i> For the returned path, <code>rp,</code> <code>
rp.is_absolute()</code> is true.</p>
+ <p><i>Throws:</i> As specified in
+ <a href="#Error-reporting">
+ Error reporting</a>.</p>
<p>[<i>Note:</i> For <i>POSIX</i>, <code>system_complete(p)</code> has the same semantics as
<code>complete(p, current_path())</code>.</p>
<p><a name="windows_effects">For <i>Windows</i></a>, <code>system_complete(p)</code> has the
Modified: trunk/libs/filesystem/v3/doc/src/tr2_snippets.html
==============================================================================
--- trunk/libs/filesystem/v3/doc/src/tr2_snippets.html (original)
+++ trunk/libs/filesystem/v3/doc/src/tr2_snippets.html 2012-01-11 17:28:30 EST (Wed, 11 Jan 2012)
@@ -101,19 +101,17 @@
application is correct.</li>
<li>Boost.Filesystem needs to implement <code>char16_t</code> and <code>char32_t</code> support to verify the
specification for these is correct.</li>
- <li>Class <code>file_status</code> is overdesigned. It holds just a single <code>file_type</code> variable, and that's unlikely to change
- because of performance considerations. It would be simpler to eliminate class <code>
- file_status</code>, and just use <code>file_type</code> in its stead. Perhaps
- rename to <code>file_status</code>. This hasn't been done in the Boost
- because it would break existing code, albeit noisily.</li>
<li>Replace path inserter and extractor <i>Effects</i> with prose, since the
current wording relies on
<code>boost::io::quoted</code></span>.</li>
- <li>Replace uses of <code>boost::iterator_facade</code>.</li>
+ <li>The Boost implementation has more class path non-member relational
+ functions that shown in the docs, and the specific set of relational
+ functions varies between Windows and POSIX. Figure out what's happening and
+ document it.</li>
<li><code>Source</code> is not specified as actually
implemented. Expose <code>path_traits</code>?</li>
<li><i>Effects</i> for <code>copy</code> and <code>copy_directory</code>
- need to be reviewed, revised, tested.</li>
+ need to be reviewed, revised, tested, peer reviewed.</li>
<li>Review changes to header <fstream></li>
</ul>
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