|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r60182 - in sandbox/filesystem-v3/libs/filesystem: doc example test/msvc
From: bdawes_at_[hidden]
Date: 2010-03-05 08:00:01
Author: bemandawes
Date: 2010-03-05 08:00:00 EST (Fri, 05 Mar 2010)
New Revision: 60182
URL: http://svn.boost.org/trac/boost/changeset/60182
Log:
path_table work-in-progress
Added:
sandbox/filesystem-v3/libs/filesystem/doc/Jamfile.v2 (contents, props changed)
sandbox/filesystem-v3/libs/filesystem/doc/path_table.cpp
- copied, changed from r60129, /sandbox/filesystem-v3/libs/filesystem/example/path_table.cpp
sandbox/filesystem-v3/libs/filesystem/doc/path_table.txt
- copied unchanged from r60128, /sandbox/filesystem-v3/libs/filesystem/doc/path_decomposition_table.txt
Removed:
sandbox/filesystem-v3/libs/filesystem/doc/path_decomposition_table.txt
sandbox/filesystem-v3/libs/filesystem/example/path_table.cpp
Text files modified:
sandbox/filesystem-v3/libs/filesystem/doc/do_list.html | 23
sandbox/filesystem-v3/libs/filesystem/doc/index.htm | 27
sandbox/filesystem-v3/libs/filesystem/doc/path_table.cpp | 62 ++
sandbox/filesystem-v3/libs/filesystem/doc/reference.html | 957 +++++++++++++++++++--------------------
sandbox/filesystem-v3/libs/filesystem/example/Jamfile.v2 | 1
sandbox/filesystem-v3/libs/filesystem/test/msvc/filesystem-v3-sandbox.sln | 10
6 files changed, 548 insertions(+), 532 deletions(-)
Added: sandbox/filesystem-v3/libs/filesystem/doc/Jamfile.v2
==============================================================================
--- (empty file)
+++ sandbox/filesystem-v3/libs/filesystem/doc/Jamfile.v2 2010-03-05 08:00:00 EST (Fri, 05 Mar 2010)
@@ -0,0 +1,19 @@
+# Boost Filesystem Library Example Jamfile
+
+# Copyright Beman Dawes 2010
+
+# Distributed under the Boost Software License, Version 1.0.
+# See www.boost.org/LICENSE_1_0.txt
+
+# Library home page: http://www.boost.org/libs/filesystem
+
+project
+ : requirements
+ <library>/boost/filesystem//boost_filesystem
+ <library>/boost/system//boost_system
+ <toolset>msvc:<asynch-exceptions>on
+ <link>static
+ ;
+
+exe path_table : path_table.cpp ;
+install path_table-copy : path_table : <location>. ;
\ No newline at end of file
Modified: sandbox/filesystem-v3/libs/filesystem/doc/do_list.html
==============================================================================
--- sandbox/filesystem-v3/libs/filesystem/doc/do_list.html (original)
+++ sandbox/filesystem-v3/libs/filesystem/doc/do_list.html 2010-03-05 08:00:00 EST (Fri, 05 Mar 2010)
@@ -16,12 +16,10 @@
<body>
<h1>Boost Filesystem Do List<br>
-<!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B %Y" startspan -->22 February 2010<!--webbot bot="Timestamp" endspan i-checksum="40543" --></h1>
+<!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B %Y" startspan -->03 March 2010<!--webbot bot="Timestamp" endspan i-checksum="27226" --></h1>
<h2>Beta 1 comments</h2>
<ul>
- <li>Add ack for commenters.<br>
- </li>
<li dir="ltr">
<p dir="ltr">Zach Laine:</li>
@@ -41,22 +39,6 @@
</blockquote>
<ul>
<li dir="ltr">
- <p dir="ltr">Zach Laine:</li>
-</ul>
-<blockquote>
- <pre>Also, in the tut3.cpp tutorial code, there's no mention of the dangers
-of using "*it" inside the directory_iterator loop. IIRC, in previous
-Filesystem revisions, this would throw if you did not have adequate
-permissions to see the file to which "it" refers. Has this changed?
-If not, I think that you should either wrap the body of the loop in a
-try-catch block, or use one of the non-throwing function overloads,
-and indicate to the user what the exception safety concerns are. I
-think the tutorial code should exhibit enough robustness that the user
-can just cut-and-paste to get the basic code needed to use the
-library.</pre>
-</blockquote>
-<ul>
- <li dir="ltr">
<p dir="ltr">Scott McMurray - treat as Wish List:</li>
</ul>
<blockquote>
@@ -95,8 +77,7 @@
</blockquote>
<h2 dir="ltr">Docs</h2>
<ul>
- <li>Reorganize files</li>
- <li>Create Jamfile for examples</li>
+ <li>Reorganize files - delete examples that no longer apply.</li>
<li>Should minimal.css be changed to used relative font sizes? See
<a href="http://www.w3schools.com/CSS/pr_font_font-size.asp/">http://www.w3schools.com/CSS/pr_font_font-size.asp\</a></li>
<li>Document behavior of path::replace_extension has change WRT argument w/o a
Modified: sandbox/filesystem-v3/libs/filesystem/doc/index.htm
==============================================================================
--- sandbox/filesystem-v3/libs/filesystem/doc/index.htm (original)
+++ sandbox/filesystem-v3/libs/filesystem/doc/index.htm 2010-03-05 08:00:00 EST (Fri, 05 Mar 2010)
@@ -298,32 +298,27 @@
macros. See the <a href="http://www.boost.org/development/separate_compilation.html">Separate
Compilation</a> page for a description of the techniques used.</p>
<h3>Note for <a name="Cgywin">Cygwin</a> users</h3>
-<p>The library's implementation code automatically detects the current platform,
-and compiles the POSIX or Windows implementation code accordingly. Automatic
+<p> Cygwin version 1.7 or later is
+required. The current platform (POSIX emulation via Cygwin, or Windows via MinGW)
+is detected automatically. Automatic
platform detection during object library compilation can be overridden by
-defining either BOOST_POSIX_API or BOOST_WINDOWS_API macros. With the exception of the Cygwin
-environment, there is usually no reason to define these macros, as the
+defining either BOOST_POSIX_API or BOOST_WINDOWS_API macros. There is usually no reason to define these macros, as the
software development kits supplied with most compilers only support a single
platform.</p>
-<p>The Cygwin package of tools supports
-traditional Windows usage, but also provides an emulation layer and other tools
-which can be used to make Windows act as Linux (and thus POSIX), and provide the
-Linux look-and-feel. GCC is usually the compiler of choice in this environment,
-as it can be installed via the Cygwin install process. Other compilers can also
-use the Cygwin emulation of POSIX, at least in theory.</p>
-<p>Those wishing to use the Cygwin POSIX emulation layer should define the
-BOOST_POSIX_API macro when compiling bother user programs and the
-Boost.Filesystem's object-library.</p>
<h2><a name="Change-history">Version history</a></h2>
<h3>Version 3</h3>
-<p>Boost 1.??.0 - ???, 2010 - Internationalization via single class <code>path</code>.</p>
+<p>Boost 1.??.0 - ???, 2010 - Internationalization via single class <code>path</code>.
+More uniform error handling.</p>
-<p>Peter Dimov suggested use of a single path class rather than a basic_path
+<p>Peter Dimov suggested use of a single path class rather than a <code>basic_path</code>
class template. That idea was the basis for the Version 3 redesign.</p>
+<p>Thanks for comments from Robert Stewart, Zach Laine, Peter Dimov, Gregory
+Peele, Scott McMurray, John Bytheway, Jeff Flinn, Jeffery Bosboom.</p>
+
<h3>Version 2</h3>
<p>Boost 1.34.0 - May, 2007 - Internationalization via <code>basic_path</code>
@@ -448,7 +443,7 @@
<hr>
<p>Revised
-<!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->18 February, 2010<!--webbot bot="Timestamp" endspan i-checksum="40538" --></p>
+<!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->03 March, 2010<!--webbot bot="Timestamp" endspan i-checksum="28754" --></p>
<p>© Copyright Beman Dawes, 2002-2005</p>
<p> Use, modification, and distribution are subject to the Boost Software
Deleted: sandbox/filesystem-v3/libs/filesystem/doc/path_decomposition_table.txt
==============================================================================
--- sandbox/filesystem-v3/libs/filesystem/doc/path_decomposition_table.txt 2010-03-05 08:00:00 EST (Fri, 05 Mar 2010)
+++ (empty file)
@@ -1,38 +0,0 @@
-
-.
-..
-foo
-/
-/foo
-foo/
-/foo/
-foo/bar
-/foo/bar
-///foo///
-///foo///bar
-/.
-./
-/..
-../
-foo/.
-foo/..
-foo/./
-foo/./bar
-foo/..
-foo/../
-foo/../bar
-c:
-c:/
-c:foo
-c:/foo
-c:foo/
-c:/foo/
-c:/foo/bar
-prn:
-c:\
-c:foo
-c:\foo
-c:foo\
-c:\foo\
-c:\foo/
-c:/foo\bar
Copied: sandbox/filesystem-v3/libs/filesystem/doc/path_table.cpp (from r60129, /sandbox/filesystem-v3/libs/filesystem/example/path_table.cpp)
==============================================================================
--- /sandbox/filesystem-v3/libs/filesystem/example/path_table.cpp (original)
+++ sandbox/filesystem-v3/libs/filesystem/doc/path_table.cpp 2010-03-05 08:00:00 EST (Fri, 05 Mar 2010)
@@ -20,8 +20,12 @@
namespace
{
std::ifstream infile;
+ std::ofstream posix_outfile;
+ std::ifstream posix_infile;
std::ofstream outfile;
+ bool posix;
+
const string empty_string;
struct column_base
@@ -83,7 +87,7 @@
struct c7 : public column_base
{
- string heading() const { return string("<code>parent_<br>path(</code>"); }
+ string heading() const { return string("<code>parent_<br>path()</code>"); }
string cell_value( const path & p ) const { return p.parent_path().string(); }
} o7;
@@ -99,11 +103,24 @@
void do_cell( const string & test_case, int i )
{
- string value = column[i]->cell_value(path(test_case));
- if (value.empty())
- outfile << "<td><font size=\"-1\"><i>empty</i></font></td>\n";
+ string temp = column[i]->cell_value(path(test_case));
+ string value;
+ outfile << "<td>";
+ if (temp.empty())
+ value = "<font size=\"-1\"><i>empty</i></font>";
+ else
+ value = string("<code>") + temp + "</code>";
+
+ if (posix)
+ posix_outfile << value << '\n';
else
- outfile << "<td><code>" << value << "</code></td>\n";
+ {
+ std::getline(posix_infile, temp);
+ value += "<br>";
+ value += temp;
+ outfile << value;
+ }
+ outfile << "</td>\n";
}
// do_row ------------------------------------------------------------------//
@@ -170,24 +187,49 @@
int cpp_main( int argc, char * argv[] ) // note name!
{
- if ( argc != 3 )
+ if ( argc != 5 )
{
std::cerr <<
- "Usage: path_table input-file output-file\n"
+ "Usage: path_table \"POSIX\"|\"Windows\" input-file posix-file output-file\n"
+ "Run on POSIX first, then on Windows\n"
+ " \"POSIX\" causes POSIX results to be save in posix-file;\n"
+ " \"Windows\" causes POSIX results read from posix-file\n"
" input-file contains the paths to appear in the table.\n"
+ " posix-file will be used for POSIX results\n"
" output-file will contain the generated HTML.\n"
;
return 1;
}
- infile.open( argv[1] );
+ infile.open( argv[2] );
if ( !infile )
{
- std::cerr << "Could not open input file: " << argv[1] << std::endl;
+ std::cerr << "Could not open input file: " << argv[2] << std::endl;
return 1;
}
- outfile.open( argv[2] );
+ if (string(argv[1]) == "POSIX")
+ {
+ posix = true;
+ posix_outfile.open( argv[3] );
+ if ( !posix_outfile )
+ {
+ std::cerr << "Could not open POSIX output file: " << argv[3] << std::endl;
+ return 1;
+ }
+ }
+ else
+ {
+ posix = false;
+ posix_infile.open( argv[3] );
+ if ( !posix_infile )
+ {
+ std::cerr << "Could not open POSIX input file: " << argv[3] << std::endl;
+ return 1;
+ }
+ }
+
+ outfile.open( argv[4] );
if ( !outfile )
{
std::cerr << "Could not open output file: " << argv[2] << std::endl;
Modified: sandbox/filesystem-v3/libs/filesystem/doc/reference.html
==============================================================================
--- sandbox/filesystem-v3/libs/filesystem/doc/reference.html (original)
+++ sandbox/filesystem-v3/libs/filesystem/doc/reference.html 2010-03-05 08:00:00 EST (Fri, 05 Mar 2010)
@@ -7,7 +7,12 @@
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Filesystem Reference
</title>
-<link rel="stylesheet" type="text/css" href="minimal.css">
+<style type="text/css">
+ ins {background-color:#A0FFA0}
+ del {background-color:#FFA0A0}
+ body { font-family: sans-serif;}
+
+</style>
</head>
<body>
@@ -2604,488 +2609,472 @@
<i>POSIX</i> result and the bottom value is the <i>Windows</i> result. <br>
<table border="1" cellspacing="0" cellpadding="5" width="1066">
<p>
-<tr><td width="112"><b>Constructor<br>argument</b></td>
-<td width="160"><b>Elements found<br>by iteration</b></td>
-<td width="112"><b><code>string()</code></b></td>
-<td width="112"><code><b>file_<br>string()</b></td>
-<td width="72"><b><code>root_<br>path()<br>.string()</code></b></td>
-<td width="48"><b><code>root_<br>name()</code></b></td>
-<td width="88"><b><code>root_<br>directory()</code></b></td>
-<td width="96"><b><code>relative_<br>path()<br>.string()</code></b></td>
-<td width="72"><b><code>parent_<br>path()<br>.string()</code></b></td>
-<td width="72"><b><code>filename()</code></b></td>
-</tr>
-<tr>
-<td width="112"><code>""</code></td>
-<td width="160"><code>""</code></td>
-<td width="112"><code>""</code></td>
-<td width="112"><code>""</code></td>
-<td width="72"><code>""</code></td>
-<td width="48"><code>""</code></td>
-<td width="88"><code>""</code></td>
-<td width="96"><code>""</code></td>
-<td width="72"><code>""</code></td>
-<td width="72"><code>""</code></td>
-</tr>
-<tr>
-<td width="112"><code>"."</code></td>
-<td width="160"><code>"."</code></td>
-<td width="112"><code>"."</code></td>
-<td width="112"><code>"."</code></td>
-<td width="72"><code>""</code></td>
-<td width="48"><code>""</code></td>
-<td width="88"><code>""</code></td>
-<td width="96"><code>"."</code></td>
-<td width="72"><code>""</code></td>
-<td width="72"><code>"."</code></td>
-</tr>
-<tr>
-<td width="112"><code>".."</code></td>
-<td width="160"><code>".."</code></td>
-<td width="112"><code>".."</code></td>
-<td width="112"><code>".."</code></td>
-<td width="72"><code>""</code></td>
-<td width="48"><code>""</code></td>
-<td width="88"><code>""</code></td>
-<td width="96"><code>".."</code></td>
-<td width="72"><code>""</code></td>
-<td width="72"><code>".."</code></td>
-</tr>
-<tr>
-<td width="112"><code>"foo"</code></td>
-<td width="160"><code>"foo"</code></td>
-<td width="112"><code>"foo"</code></td>
-<td width="112"><code>"foo"</code></td>
-<td width="72"><code>""</code></td>
-<td width="48"><code>""</code></td>
-<td width="88"><code>""</code></td>
-<td width="96"><code>"foo"</code></td>
-<td width="72"><code>""</code></td>
-<td width="72"><code>"foo"</code></td>
-</tr>
-<tr>
-<td width="112"><code>"/"</code></td>
-<td width="160"><code>"/"</code></td>
-<td width="112"><code>"/"</code></td>
-<td bgcolor="#99FF66" width="112"><code>"/"<br>"\"</code></td>
-<td width="72"><code>"/"</code></td>
-<td width="48"><code>""</code></td>
-<td width="88"><code>"/"</code></td>
-<td width="96"><code>""</code></td>
-<td width="72"><code>""</code></td>
-<td width="72"><code>"/"</code></td>
-</tr>
-<tr>
-<td width="112"><code>"/foo"</code></td>
-<td width="160"><code>"/","foo"</code></td>
-<td width="112"><code>"/foo"</code></td>
-<td bgcolor="#99FF66" width="112"><code>"/foo"<br>"\foo"</code></td>
-<td width="72"><code>"/"</code></td>
-<td width="48"><code>""</code></td>
-<td width="88"><code>"/"</code></td>
-<td width="96"><code>"foo"</code></td>
-<td width="72"><code>"/"</code></td>
-<td width="72"><code>"foo"</code></td>
-</tr>
-<tr>
-<td width="112"><code>"foo/"</code></td>
-<td width="160"><code>"foo","."</code></td>
-<td width="112"><code>"foo/"</code></td>
-<td bgcolor="#99FF66" width="112"><code>"foo/"<br>"foo\"</code></td>
-<td width="72"><code>""</code></td>
-<td width="48"><code>""</code></td>
-<td width="88"><code>""</code></td>
-<td width="96"><code>"foo/"</code></td>
-<td width="72"><code>"foo"</code></td>
-<td width="72"><code>"."</code></td>
-</tr>
-<tr>
-<td width="112"><code>"/foo/"</code></td>
-<td width="160"><code>"/","foo","."</code></td>
-<td width="112"><code>"/foo/"</code></td>
-<td bgcolor="#99FF66" width="112"><code>"/foo/"<br>"\foo\"</code></td>
-<td width="72"><code>"/"</code></td>
-<td width="48"><code>""</code></td>
-<td width="88"><code>"/"</code></td>
-<td width="96"><code>"foo/"</code></td>
-<td width="72"><code>"/foo"</code></td>
-<td width="72"><code>"."</code></td>
-</tr>
-<tr>
-<td width="112"><code>"foo/bar"</code></td>
-<td width="160"><code>"foo","bar"</code></td>
-<td width="112"><code>"foo/bar"</code></td>
-<td bgcolor="#99FF66" width="112"><code>"foo/bar"<br>"foo\bar"</code></td>
-<td width="72"><code>""</code></td>
-<td width="48"><code>""</code></td>
-<td width="88"><code>""</code></td>
-<td width="96"><code>"foo/bar"</code></td>
-<td width="72"><code>"foo"</code></td>
-<td width="72"><code>"bar"</code></td>
-</tr>
-<tr>
-<td width="112"><code>"/foo/bar"</code></td>
-<td width="160"><code>"/","foo","bar"</code></td>
-<td width="112"><code>"/foo/bar"</code></td>
-<td bgcolor="#99FF66" width="112"><code>"/foo/bar"<br>"\foo\bar"</code></td>
-<td width="72"><code>"/"</code></td>
-<td width="48"><code>""</code></td>
-<td width="88"><code>"/"</code></td>
-<td width="96"><code>"foo/bar"</code></td>
-<td width="72"><code>"/foo"</code></td>
-<td width="72"><code>"bar"</code></td>
-</tr>
-<tr>
-<td width="112"><code>"///foo///"</code></td>
-<td width="160"><code>"/","foo","."</code></td>
-<td width="112"><code>"///foo///"</code></td>
-<td bgcolor="#99FF66" width="112"><code>"///foo///"<br>"\foo\\\"</code></td>
-<td width="72"><code>"/"</code></td>
-<td width="48"><code>""</code></td>
-<td width="88"><code>"/"</code></td>
-<td width="96"><code>"foo///"</code></td>
-<td width="72"><code>"///foo"</code></td>
-<td width="72"><code>"."</code></td>
-</tr>
-<tr>
-<td width="112"><code>"///foo///bar"</code></td>
-<td width="160"><code>"/","foo","bar"</code></td>
-<td width="112"><code>"///foo///bar"</code></td>
-<td bgcolor="#99FF66" width="112"><code>"///foo///bar"<br>"\foo\\\bar"</code></td>
-<td width="72"><code>"/"</code></td>
-<td width="48"><code>""</code></td>
-<td width="88"><code>"/"</code></td>
-<td width="96"><code>"foo///bar"</code></td>
-<td width="72"><code>"///foo"</code></td>
-<td width="72"><code>"bar"</code></td>
-</tr>
-<tr>
-<td width="112"><code>"/."</code></td>
-<td width="160"><code>"/","."</code></td>
-<td width="112"><code>"/."</code></td>
-<td bgcolor="#99FF66" width="112"><code>"/."<br>"\."</code></td>
-<td width="72"><code>"/"</code></td>
-<td width="48"><code>""</code></td>
-<td width="88"><code>"/"</code></td>
-<td width="96"><code>"."</code></td>
-<td width="72"><code>"/"</code></td>
-<td width="72"><code>"."</code></td>
-</tr>
-<tr>
-<td width="112"><code>"./"</code></td>
-<td width="160"><code>".","."</code></td>
-<td width="112"><code>"./"</code></td>
-<td bgcolor="#99FF66" width="112"><code>"./"<br>".\"</code></td>
-<td width="72"><code>""</code></td>
-<td width="48"><code>""</code></td>
-<td width="88"><code>""</code></td>
-<td width="96"><code>"./"</code></td>
-<td width="72"><code>"."</code></td>
-<td width="72"><code>"."</code></td>
-</tr>
-<tr>
-<td width="112"><code>"/.."</code></td>
-<td width="160"><code>"/",".."</code></td>
-<td width="112"><code>"/.."</code></td>
-<td bgcolor="#99FF66" width="112"><code>"/.."<br>"\.."</code></td>
-<td width="72"><code>"/"</code></td>
-<td width="48"><code>""</code></td>
-<td width="88"><code>"/"</code></td>
-<td width="96"><code>".."</code></td>
-<td width="72"><code>"/"</code></td>
-<td width="72"><code>".."</code></td>
-</tr>
-<tr>
-<td width="112"><code>"../"</code></td>
-<td width="160"><code>"..","."</code></td>
-<td width="112"><code>"../"</code></td>
-<td bgcolor="#99FF66" width="112"><code>"../"<br>"..\"</code></td>
-<td width="72"><code>""</code></td>
-<td width="48"><code>""</code></td>
-<td width="88"><code>""</code></td>
-<td width="96"><code>"../"</code></td>
-<td width="72"><code>".."</code></td>
-<td width="72"><code>"."</code></td>
-</tr>
-<tr>
-<td width="112"><code>"foo/."</code></td>
-<td width="160"><code>"foo","."</code></td>
-<td width="112"><code>"foo/."</code></td>
-<td bgcolor="#99FF66" width="112"><code>"foo/."<br>"foo\."</code></td>
-<td width="72"><code>""</code></td>
-<td width="48"><code>""</code></td>
-<td width="88"><code>""</code></td>
-<td width="96"><code>"foo/."</code></td>
-<td width="72"><code>"foo"</code></td>
-<td width="72"><code>"."</code></td>
-</tr>
-<tr>
-<td width="112"><code>"foo/.."</code></td>
-<td width="160"><code>"foo",".."</code></td>
-<td width="112"><code>"foo/.."</code></td>
-<td bgcolor="#99FF66" width="112"><code>"foo/.."<br>"foo\.."</code></td>
-<td width="72"><code>""</code></td>
-<td width="48"><code>""</code></td>
-<td width="88"><code>""</code></td>
-<td width="96"><code>"foo/.."</code></td>
-<td width="72"><code>"foo"</code></td>
-<td width="72"><code>".."</code></td>
-</tr>
-<tr>
-<td width="112"><code>"foo/./"</code></td>
-<td width="160"><code>"foo",".","."</code></td>
-<td width="112"><code>"foo/./"</code></td>
-<td bgcolor="#99FF66" width="112"><code>"foo/./"<br>"foo\.\"</code></td>
-<td width="72"><code>""</code></td>
-<td width="48"><code>""</code></td>
-<td width="88"><code>""</code></td>
-<td width="96"><code>"foo/./"</code></td>
-<td width="72"><code>"foo/."</code></td>
-<td width="72"><code>"."</code></td>
-</tr>
-<tr>
-<td width="112"><code>"foo/./bar"</code></td>
-<td width="160"><code>"foo",".","bar"</code></td>
-<td width="112"><code>"foo/./bar"</code></td>
-<td bgcolor="#99FF66" width="112"><code>"foo/./bar"<br>"foo\.\bar"</code></td>
-<td width="72"><code>""</code></td>
-<td width="48"><code>""</code></td>
-<td width="88"><code>""</code></td>
-<td width="96"><code>"foo/./bar"</code></td>
-<td width="72"><code>"foo/."</code></td>
-<td width="72"><code>"bar"</code></td>
-</tr>
-<tr>
-<td width="112"><code>"foo/.."</code></td>
-<td width="160"><code>"foo",".."</code></td>
-<td width="112"><code>"foo/.."</code></td>
-<td bgcolor="#99FF66" width="112"><code>"foo/.."<br>"foo\.."</code></td>
-<td width="72"><code>""</code></td>
-<td width="48"><code>""</code></td>
-<td width="88"><code>""</code></td>
-<td width="96"><code>"foo/.."</code></td>
-<td width="72"><code>"foo"</code></td>
-<td width="72"><code>".."</code></td>
-</tr>
-<tr>
-<td width="112"><code>"foo/../"</code></td>
-<td width="160"><code>"foo","..","."</code></td>
-<td width="112"><code>"foo/../"</code></td>
-<td bgcolor="#99FF66" width="112"><code>"foo/../"<br>"foo\..\"</code></td>
-<td width="72"><code>""</code></td>
-<td width="48"><code>""</code></td>
-<td width="88"><code>""</code></td>
-<td width="96"><code>"foo/../"</code></td>
-<td width="72"><code>"foo/.."</code></td>
-<td width="72"><code>"."</code></td>
-</tr>
-<tr>
-<td width="112"><code>"foo/../bar"</code></td>
-<td width="160"><code>"foo","..","bar"</code></td>
-<td width="112"><code>"foo/../bar"</code></td>
-<td bgcolor="#99FF66" width="112"><code>"foo/../bar"<br>"foo\..\bar"</code></td>
-<td width="72"><code>""</code></td>
-<td width="48"><code>""</code></td>
-<td width="88"><code>""</code></td>
-<td width="96"><code>"foo/../bar"</code></td>
-<td width="72"><code>"foo/.."</code></td>
-<td width="72"><code>"bar"</code></td>
-</tr>
-<tr>
-<td width="112"><code>"c:"</code></td>
-<td width="160"><code>"c:"</code></td>
-<td width="112"><code>"c:"</code></td>
-<td width="112"><code>"c:"</code></td>
-<td bgcolor="#99FF66" width="72"><code>""<br>"c:"</code></td>
-<td bgcolor="#99FF66" style="border-left-style: solid; border-left-width: 1; border-right-style: solid; border-right-width: 1; border-top-style: solid; border-top-width: 1" width="48"><code>
-""<br>"c:"</code></td>
-<td width="88"><code>""</code></td>
-<td bgcolor="#99FF66" width="96"><code>"c:"<br>""</code></td>
-<td width="72"><code>""</code></td>
-<td width="72"><code>"c:"</code></td>
-</tr>
-<tr>
-<td width="112"><code>"c:/"</code></td>
-<td bgcolor="#99FF66" width="160"><code>"c:","."<br>"c:","/"</code></td>
-<td width="112"><code>"c:/"</code></td>
-<td bgcolor="#99FF66" width="112"><code><span style="background-color: #99FF66">
-"c:/"<br>"c:\"</span></code></td>
-<td bgcolor="#99FF66" width="72"><code>""<br>"c:/"</code></td>
-<td bgcolor="#99FF66" style="border-left-style: solid; border-left-width: 1; border-right-style: solid; border-right-width: 1" width="48"><code>
-""<br>"c:"</code></td>
-<td bgcolor="#99FF66" width="88"><code>""<br>"/"</code></td>
-<td bgcolor="#99FF66" width="96"><code>"c:/"<br>""</code></td>
-<td width="72"><code>"c:"</code></td>
-<td bgcolor="#99FF66" width="72"><code>"."<br>"/"</code></td>
-</tr>
-<tr>
-<td width="112"><code>"c:foo"</code></td>
-<td bgcolor="#99FF66" width="160"><code>"c:foo"<br>"c:","foo"</code></td>
-<td width="112"><code>"c:foo"</code></td>
-<td width="112"><code>"c:foo"</code></td>
-<td bgcolor="#99FF66" width="72"><code>""<br>"c:"</code></td>
-<td bgcolor="#99FF66" style="border-left-style: solid; border-left-width: 1; border-right-style: solid; border-right-width: 1" width="48"><code>
-""<br>"c:"</code></td>
-<td width="88"><code>""</code></td>
-<td bgcolor="#99FF66" width="96"><code>"c:foo"<br>"foo"</code></td>
-<td bgcolor="#99FF66" width="72"><code>""<br>"c:"</code></td>
-<td bgcolor="#99FF66" width="72"><code>"c:foo"<br>"foo"</code></td>
-</tr>
-<tr>
-<td width="112"><code>"c:/foo"</code></td>
-<td bgcolor="#99FF66" width="160"><code>"c:","foo"<br>"c:","/","foo"</code></td>
-<td width="112"><code>"c:/foo"</code></td>
-<td bgcolor="#99FF66" width="112"><code>"c:/foo"<br>"c:\foo"</code></td>
-<td bgcolor="#99FF66" width="72"><code>""<br>"c:/"</code></td>
-<td bgcolor="#99FF66" style="border-left-style: solid; border-left-width: 1; border-right-style: solid; border-right-width: 1" width="48"><code>
-""<br>"c:"</code></td>
-<td bgcolor="#99FF66" width="88"><code>""<br>"/"</code></td>
-<td bgcolor="#99FF66" width="96"><code>"c:/foo"<br>"foo"</code></td>
-<td bgcolor="#99FF66" width="72"><code>"c:"<br>"c:/"</code></td>
-<td width="72"><code>"foo"</code></td>
-</tr>
-<tr>
-<td width="112"><code>"c:foo/"</code></td>
-<td bgcolor="#99FF66" width="160"><code>"c:foo","."<br>"c:","foo","."</code></td>
-<td width="112"><code>"c:foo/"</code></td>
-<td bgcolor="#99FF66" width="112"><code>"c:foo/"<br>"c:foo\"</code></td>
-<td bgcolor="#99FF66" width="72"><code>""<br>"c:"</code></td>
-<td bgcolor="#99FF66" style="border-left-style: solid; border-left-width: 1; border-right-style: solid; border-right-width: 1" width="48"><code>
-""<br>"c:"</code></td>
-<td width="88"><code>""</code></td>
-<td bgcolor="#99FF66" width="96"><code>"c:foo/"<br>"foo/"</code></td>
-<td width="72"><code>"c:foo"</code></td>
-<td width="72"><code>"."</code></td>
-</tr>
-<tr>
-<td width="112"><code>"c:/foo/"</code></td>
-<td bgcolor="#99FF66" width="160"><code>"c:","foo","."<br>"c:","/","foo","."</code></td>
-<td width="112"><code>"c:/foo/"</code></td>
-<td bgcolor="#99FF66" width="112"><code>"c:/foo/"<br>"c:\foo\"</code></td>
-<td bgcolor="#99FF66" width="72"><code>""<br>"c:/"</code></td>
-<td bgcolor="#99FF66" style="border-left-style: solid; border-left-width: 1; border-right-style: solid; border-right-width: 1" width="48"><code>
-""<br>"c:"</code></td>
-<td bgcolor="#99FF66" width="88"><code>""<br>"/"</code></td>
-<td bgcolor="#99FF66" width="96"><code>"c:/foo/"<br>"foo/"</code></td>
-<td width="72"><code>"c:/foo"</code></td>
-<td width="72"><code>"."</code></td>
-</tr>
-<tr>
-<td width="112"><code>"c:/foo/bar"</code></td>
-<td bgcolor="#99FF66" width="160"><code>"c:","foo","bar"<br>"c:","/","foo","bar"</code></td>
-<td width="112"><code>"c:/foo/bar"</code></td>
-<td bgcolor="#99FF66" width="112"><code>"c:/foo/bar"<br>"c:\foo\bar"</code></td>
-<td bgcolor="#99FF66" width="72"><code>""<br>"c:/"</code></td>
-<td bgcolor="#99FF66" style="border-left-style: solid; border-left-width: 1; border-right-style: solid; border-right-width: 1" width="48"><code>
-""<br>"c:"</code></td>
-<td bgcolor="#99FF66" width="88"><code>""<br>"/"</code></td>
-<td bgcolor="#99FF66" width="96"><code>"c:/foo/bar"<br>"foo/bar"</code></td>
-<td width="72"><code>"c:/foo"</code></td>
-<td width="72"><code>"bar"</code></td>
-</tr>
-<tr>
-<td width="112"><code>"prn:"</code></td>
-<td width="160"><code>"prn:"</code></td>
-<td width="112"><code>"prn:"</code></td>
-<td width="112"><code>"prn:"</code></td>
-<td bgcolor="#99FF66" width="72"><code>""<br>"prn:"</code></td>
-<td bgcolor="#99FF66" style="border-left-style: solid; border-left-width: 1; border-right-style: solid; border-right-width: 1" width="48"><code>
-""<br>"prn:"</code></td>
-<td width="88"><code>""</code></td>
-<td bgcolor="#99FF66" width="96"><code>"prn:"<br>""</code></td>
-<td width="72"><code>""</code></td>
-<td width="72"><code>"prn:"</code></td>
-</tr>
-<tr>
-<td width="112"><code>"c:\"</code></td>
-<td bgcolor="#99FF66" width="160"><code>"c:\"<br>"c:","/"</code></td>
-<td bgcolor="#99FF66" width="112"><code>"c:\"<br>"c:/"</code></td>
-<td width="112"><code>"c:\"</code></td>
-<td bgcolor="#99FF66" width="72"><code>""<br>"c:/"</code></td>
-<td bgcolor="#99FF66" style="border-left-style: solid; border-left-width: 1; border-right-style: solid; border-right-width: 1" width="48"><code>
-""<br>"c:"</code></td>
-<td bgcolor="#99FF66" width="88"><code>""<br>"/"</code></td>
-<td bgcolor="#99FF66" width="96"><code>"c:\"<br>""</code></td>
-<td bgcolor="#99FF66" width="72"><code>""<br>"c:"</code></td>
-<td bgcolor="#99FF66" width="72"><code>"c:\"<br>"/"</code></td>
-</tr>
-<tr>
-<td width="112"><code>"c:foo"</code></td>
-<td bgcolor="#99FF66" width="160"><code>"c:foo"<br>"c:","foo"</code></td>
-<td width="112"><code>"c:foo"</code></td>
-<td width="112"><code>"c:foo"</code></td>
-<td bgcolor="#99FF66" width="72"><code>""<br>"c:"</code></td>
-<td bgcolor="#99FF66" style="border-left-style: solid; border-left-width: 1; border-right-style: solid; border-right-width: 1" width="48"><code>
-""<br>"c:"</code></td>
-<td width="88"><code>""</code></td>
-<td bgcolor="#99FF66" width="96"><code>"c:foo"<br>"foo"</code></td>
-<td bgcolor="#99FF66" width="72"><code>""<br>"c:"</code></td>
-<td bgcolor="#99FF66" width="72"><code>"c:foo"<br>"foo"</code></td>
-</tr>
-<tr>
-<td width="112"><code>"c:\foo"</code></td>
-<td bgcolor="#99FF66" width="160"><code>"c:\foo"<br>"c:","/","foo"</code></td>
-<td bgcolor="#99FF66" width="112"><code>"c:\foo"<br>"c:/foo"</code></td>
-<td width="112"><code>"c:\foo"</code></td>
-<td bgcolor="#99FF66" width="72"><code>""<br>"c:/"</code></td>
-<td bgcolor="#99FF66" style="border-left-style: solid; border-left-width: 1; border-right-style: solid; border-right-width: 1" width="48"><code>
-""<br>"c:"</code></td>
-<td bgcolor="#99FF66" width="88"><code>""<br>"/"</code></td>
-<td bgcolor="#99FF66" width="96"><code>"c:\foo"<br>"foo"</code></td>
-<td bgcolor="#99FF66" width="72"><code>""<br>"c:/"</code></td>
-<td bgcolor="#99FF66" width="72"><code>"c:\foo"<br>"foo"</code></td>
-</tr>
-<tr>
-<td width="112"><code>"c:foo\"</code></td>
-<td bgcolor="#99FF66" width="160"><code>"c:foo\"<br>"c:","foo","."</code></td>
-<td bgcolor="#99FF66" width="112"><code>"c:foo\"<br>"c:foo/"</code></td>
-<td width="112"><code>"c:foo\"</code></td>
-<td bgcolor="#99FF66" width="72"><code>""<br>"c:"</code></td>
-<td bgcolor="#99FF66" style="border-left-style: solid; border-left-width: 1; border-right-style: solid; border-right-width: 1" width="48"><code>
-""<br>"c:"</code></td>
-<td width="88"><code>""</code></td>
-<td bgcolor="#99FF66" width="96"><code>"c:foo\"<br>"foo/"</code></td>
-<td bgcolor="#99FF66" width="72"><code>""<br>"c:foo"</code></td>
-<td bgcolor="#99FF66" width="72"><code>"c:foo\"<br>"."</code></td>
-</tr>
-<tr>
-<td width="112"><code>"c:\foo\"</code></td>
-<td bgcolor="#99FF66" width="160"><code>"c:\foo\"<br>"c:","/","foo","."</code></td>
-<td bgcolor="#99FF66" width="112"><code>"c:\foo\"<br>"c:/foo/"</code></td>
-<td width="112"><code>"c:\foo\"</code></td>
-<td bgcolor="#99FF66" width="72"><code>""<br>"c:/"</code></td>
-<td bgcolor="#99FF66" style="border-left-style: solid; border-left-width: 1; border-right-style: solid; border-right-width: 1" width="48"><code>
-""<br>"c:"</code></td>
-<td bgcolor="#99FF66" width="88"><code>""<br>"/"</code></td>
-<td bgcolor="#99FF66" width="96"><code>"c:\foo\"<br>"foo/"</code></td>
-<td bgcolor="#99FF66" width="72"><code>""<br>"c:/foo"</code></td>
-<td bgcolor="#99FF66" width="72"><code>"c:\foo\"<br>"."</code></td>
-</tr>
-<tr>
-<td width="112"><code>"c:\foo/"</code></td>
-<td bgcolor="#99FF66" width="160"><code>"c:\foo","."<br>"c:","/","foo","."</code></td>
-<td bgcolor="#99FF66" width="112"><code>"c:\foo/"<br>"c:/foo/"</code></td>
-<td bgcolor="#99FF66" width="112"><code>"c:\foo/"<br>"c:\foo\"</code></td>
-<td bgcolor="#99FF66" width="72"><code>""<br>"c:/"</code></td>
-<td bgcolor="#99FF66" style="border-left-style: solid; border-left-width: 1; border-right-style: solid; border-right-width: 1" width="48"><code>
-""<br>"c:"</code></td>
-<td bgcolor="#99FF66" width="88"><code>""<br>"/"</code></td>
-<td bgcolor="#99FF66" width="96"><code>"c:\foo/"<br>"foo/"</code></td>
-<td bgcolor="#99FF66" width="72"><code>"c:\foo"<br>"c:/foo"</code></td>
-<td width="72"><code>"."</code></td>
-</tr>
-<tr>
-<td width="112"><code>"c:/foo\bar"</code></td>
-<td bgcolor="#99FF66" width="160"><code>"c:","foo\bar"<br>"c:","/","foo","bar"</code></td>
-<td bgcolor="#99FF66" width="112"><code>"c:/foo\bar"<br>"c:/foo/bar"</code></td>
-<td bgcolor="#99FF66" width="112"><code>"c:/foo\bar"<br>"c:\foo\bar"</code></td>
-<td bgcolor="#99FF66" width="72"><code>""<br>"c:/"</code></td>
-<td bgcolor="#99FF66" style="border-left-style: solid; border-left-width: 1; border-right-style: solid; border-right-width: 1; border-bottom-style: solid; border-bottom-width: 1" width="48"><code>
-""<br>"c:"</code></td>
-<td bgcolor="#99FF66" width="88"><code>""<br>"/"</code></td>
-<td bgcolor="#99FF66" width="96"><code>"c:/foo\bar"<br>"foo/bar"</code></td>
-<td bgcolor="#99FF66" width="72"><code>"c:"<br>"c:/foo"</code></td>
-<td bgcolor="#99FF66" width="72"><code>"foo\bar"<br>"bar"</code></td>
+<tr><td><b>Constructor<br>argument</b></td>
+<td><b>Iteration<br>over<br>Elements</b></td>
+<td><b><code>string()</code></b></td>
+<td><b><code>generic_<br>string()</code></b></td>
+<td><b><code>root_<br>path()</code></b></td>
+<td><b><code>root_<br>name()</code></b></td>
+<td><b><code>root_<br>directory()</code></b></td>
+<td><b><code>relative_<br>path()</code></b></td>
+<td><b><code>parent_<br>path(</code></b></td>
+<td><b><code>filename()</code></b></td>
+</tr>
+<tr>
+<td><font size="-1"><i>empty</i></font></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><font size="-1"><i>empty</i></font></td>
+</tr>
+<tr>
+<td><code>.</code></td>
+<td><code>.</code></td>
+<td><code>.</code></td>
+<td><code>.</code></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><code>.</code></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><code>.</code></td>
+</tr>
+<tr>
+<td><code>..</code></td>
+<td><code>..</code></td>
+<td><code>..</code></td>
+<td><code>..</code></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><code>..</code></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><code>..</code></td>
+</tr>
+<tr>
+<td><code>foo</code></td>
+<td><code>foo</code></td>
+<td><code>foo</code></td>
+<td><code>foo</code></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><code>foo</code></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><code>foo</code></td>
+</tr>
+<tr>
+<td><code>/</code></td>
+<td><code>/</code></td>
+<td><code>/</code></td>
+<td><code>/</code></td>
+<td><code>/</code></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><code>/</code></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><code>/</code></td>
+</tr>
+<tr>
+<td><code>/foo</code></td>
+<td><code>/,foo</code></td>
+<td><code>/foo</code></td>
+<td><code>/foo</code></td>
+<td><code>/</code></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><code>/</code></td>
+<td><code>foo</code></td>
+<td><code>/</code></td>
+<td><code>foo</code></td>
+</tr>
+<tr>
+<td><code>foo/</code></td>
+<td><code>foo,.</code></td>
+<td><code>foo/</code></td>
+<td><code>foo/</code></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><code>foo/</code></td>
+<td><code>foo</code></td>
+<td><code>.</code></td>
+</tr>
+<tr>
+<td><code>/foo/</code></td>
+<td><code>/,foo,.</code></td>
+<td><code>/foo/</code></td>
+<td><code>/foo/</code></td>
+<td><code>/</code></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><code>/</code></td>
+<td><code>foo/</code></td>
+<td><code>/foo</code></td>
+<td><code>.</code></td>
+</tr>
+<tr>
+<td><code>foo/bar</code></td>
+<td><code>foo,bar</code></td>
+<td><code>foo/bar</code></td>
+<td><code>foo/bar</code></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><code>foo/bar</code></td>
+<td><code>foo</code></td>
+<td><code>bar</code></td>
+</tr>
+<tr>
+<td><code>/foo/bar</code></td>
+<td><code>/,foo,bar</code></td>
+<td><code>/foo/bar</code></td>
+<td><code>/foo/bar</code></td>
+<td><code>/</code></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><code>/</code></td>
+<td><code>foo/bar</code></td>
+<td><code>/foo</code></td>
+<td><code>bar</code></td>
+</tr>
+<tr>
+<td><code>///foo///</code></td>
+<td><code>/,foo,.</code></td>
+<td><code>///foo///</code></td>
+<td><code>///foo///</code></td>
+<td><code>/</code></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><code>/</code></td>
+<td><code>foo///</code></td>
+<td><code>///foo</code></td>
+<td><code>.</code></td>
+</tr>
+<tr>
+<td><code>///foo///bar</code></td>
+<td><code>/,foo,bar</code></td>
+<td><code>///foo///bar</code></td>
+<td><code>///foo///bar</code></td>
+<td><code>/</code></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><code>/</code></td>
+<td><code>foo///bar</code></td>
+<td><code>///foo</code></td>
+<td><code>bar</code></td>
+</tr>
+<tr>
+<td><code>/.</code></td>
+<td><code>/,.</code></td>
+<td><code>/.</code></td>
+<td><code>/.</code></td>
+<td><code>/</code></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><code>/</code></td>
+<td><code>.</code></td>
+<td><code>/</code></td>
+<td><code>.</code></td>
+</tr>
+<tr>
+<td><code>./</code></td>
+<td><code>.,.</code></td>
+<td><code>./</code></td>
+<td><code>./</code></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><code>./</code></td>
+<td><code>.</code></td>
+<td><code>.</code></td>
+</tr>
+<tr>
+<td><code>/..</code></td>
+<td><code>/,..</code></td>
+<td><code>/..</code></td>
+<td><code>/..</code></td>
+<td><code>/</code></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><code>/</code></td>
+<td><code>..</code></td>
+<td><code>/</code></td>
+<td><code>..</code></td>
+</tr>
+<tr>
+<td><code>../</code></td>
+<td><code>..,.</code></td>
+<td><code>../</code></td>
+<td><code>../</code></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><code>../</code></td>
+<td><code>..</code></td>
+<td><code>.</code></td>
+</tr>
+<tr>
+<td><code>foo/.</code></td>
+<td><code>foo,.</code></td>
+<td><code>foo/.</code></td>
+<td><code>foo/.</code></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><code>foo/.</code></td>
+<td><code>foo</code></td>
+<td><code>.</code></td>
+</tr>
+<tr>
+<td><code>foo/..</code></td>
+<td><code>foo,..</code></td>
+<td><code>foo/..</code></td>
+<td><code>foo/..</code></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><code>foo/..</code></td>
+<td><code>foo</code></td>
+<td><code>..</code></td>
+</tr>
+<tr>
+<td><code>foo/./</code></td>
+<td><code>foo,.,.</code></td>
+<td><code>foo/./</code></td>
+<td><code>foo/./</code></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><code>foo/./</code></td>
+<td><code>foo/.</code></td>
+<td><code>.</code></td>
+</tr>
+<tr>
+<td><code>foo/./bar</code></td>
+<td><code>foo,.,bar</code></td>
+<td><code>foo/./bar</code></td>
+<td><code>foo/./bar</code></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><code>foo/./bar</code></td>
+<td><code>foo/.</code></td>
+<td><code>bar</code></td>
+</tr>
+<tr>
+<td><code>foo/..</code></td>
+<td><code>foo,..</code></td>
+<td><code>foo/..</code></td>
+<td><code>foo/..</code></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><code>foo/..</code></td>
+<td><code>foo</code></td>
+<td><code>..</code></td>
+</tr>
+<tr>
+<td><code>foo/../</code></td>
+<td><code>foo,..,.</code></td>
+<td><code>foo/../</code></td>
+<td><code>foo/../</code></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><code>foo/../</code></td>
+<td><code>foo/..</code></td>
+<td><code>.</code></td>
+</tr>
+<tr>
+<td><code>foo/../bar</code></td>
+<td><code>foo,..,bar</code></td>
+<td><code>foo/../bar</code></td>
+<td><code>foo/../bar</code></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><code>foo/../bar</code></td>
+<td><code>foo/..</code></td>
+<td><code>bar</code></td>
+</tr>
+<tr>
+<td><code>c:</code></td>
+<td><code>c:</code></td>
+<td><code>c:</code></td>
+<td><code>c:</code></td>
+<td><code>c:</code></td>
+<td><code>c:</code></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><code>c:</code></td>
+</tr>
+<tr>
+<td><code>c:/</code></td>
+<td><code>c:,/</code></td>
+<td><code>c:/</code></td>
+<td><code>c:/</code></td>
+<td><code>c:/</code></td>
+<td><code>c:</code></td>
+<td><code>/</code></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><code>c:</code></td>
+<td><code>/</code></td>
+</tr>
+<tr>
+<td><code>c:foo</code></td>
+<td><code>c:,foo</code></td>
+<td><code>c:foo</code></td>
+<td><code>c:foo</code></td>
+<td><code>c:</code></td>
+<td><code>c:</code></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><code>foo</code></td>
+<td><code>c:</code></td>
+<td><code>foo</code></td>
+</tr>
+<tr>
+<td><code>c:/foo</code></td>
+<td><code>c:,/,foo</code></td>
+<td><code>c:/foo</code></td>
+<td><code>c:/foo</code></td>
+<td><code>c:/</code></td>
+<td><code>c:</code></td>
+<td><code>/</code></td>
+<td><code>foo</code></td>
+<td><code>c:/</code></td>
+<td><code>foo</code></td>
+</tr>
+<tr>
+<td><code>c:foo/</code></td>
+<td><code>c:,foo,.</code></td>
+<td><code>c:foo/</code></td>
+<td><code>c:foo/</code></td>
+<td><code>c:</code></td>
+<td><code>c:</code></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><code>foo/</code></td>
+<td><code>c:foo</code></td>
+<td><code>.</code></td>
+</tr>
+<tr>
+<td><code>c:/foo/</code></td>
+<td><code>c:,/,foo,.</code></td>
+<td><code>c:/foo/</code></td>
+<td><code>c:/foo/</code></td>
+<td><code>c:/</code></td>
+<td><code>c:</code></td>
+<td><code>/</code></td>
+<td><code>foo/</code></td>
+<td><code>c:/foo</code></td>
+<td><code>.</code></td>
+</tr>
+<tr>
+<td><code>c:/foo/bar</code></td>
+<td><code>c:,/,foo,bar</code></td>
+<td><code>c:/foo/bar</code></td>
+<td><code>c:/foo/bar</code></td>
+<td><code>c:/</code></td>
+<td><code>c:</code></td>
+<td><code>/</code></td>
+<td><code>foo/bar</code></td>
+<td><code>c:/foo</code></td>
+<td><code>bar</code></td>
+</tr>
+<tr>
+<td><code>prn:</code></td>
+<td><code>prn:</code></td>
+<td><code>prn:</code></td>
+<td><code>prn:</code></td>
+<td><code>prn:</code></td>
+<td><code>prn:</code></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><code>prn:</code></td>
+</tr>
+<tr>
+<td><code>c:\</code></td>
+<td><code>c:,/</code></td>
+<td><code>c:\</code></td>
+<td><code>c:/</code></td>
+<td><code>c:\</code></td>
+<td><code>c:</code></td>
+<td><code>\</code></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><code>c:</code></td>
+<td><code>\</code></td>
+</tr>
+<tr>
+<td><code>c:foo</code></td>
+<td><code>c:,foo</code></td>
+<td><code>c:foo</code></td>
+<td><code>c:foo</code></td>
+<td><code>c:</code></td>
+<td><code>c:</code></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><code>foo</code></td>
+<td><code>c:</code></td>
+<td><code>foo</code></td>
+</tr>
+<tr>
+<td><code>c:\foo</code></td>
+<td><code>c:,/,foo</code></td>
+<td><code>c:\foo</code></td>
+<td><code>c:/foo</code></td>
+<td><code>c:\</code></td>
+<td><code>c:</code></td>
+<td><code>\</code></td>
+<td><code>foo</code></td>
+<td><code>c:\</code></td>
+<td><code>foo</code></td>
+</tr>
+<tr>
+<td><code>c:foo\</code></td>
+<td><code>c:,foo,.</code></td>
+<td><code>c:foo\</code></td>
+<td><code>c:foo/</code></td>
+<td><code>c:</code></td>
+<td><code>c:</code></td>
+<td><font size="-1"><i>empty</i></font></td>
+<td><code>foo\</code></td>
+<td><code>c:foo</code></td>
+<td><code>.</code></td>
+</tr>
+<tr>
+<td><code>c:\foo\</code></td>
+<td><code>c:,/,foo,.</code></td>
+<td><code>c:\foo\</code></td>
+<td><code>c:/foo/</code></td>
+<td><code>c:\</code></td>
+<td><code>c:</code></td>
+<td><code>\</code></td>
+<td><code>foo\</code></td>
+<td><code>c:\foo</code></td>
+<td><code>.</code></td>
+</tr>
+<tr>
+<td><code>c:\foo/</code></td>
+<td><code>c:,/,foo,.</code></td>
+<td><code>c:\foo/</code></td>
+<td><code>c:/foo/</code></td>
+<td><code>c:\</code></td>
+<td><code>c:</code></td>
+<td><code>\</code></td>
+<td><code>foo/</code></td>
+<td><code>c:\foo</code></td>
+<td><code>.</code></td>
+</tr>
+<tr>
+<td><code>c:/foo\bar</code></td>
+<td><code>c:,/,foo,bar</code></td>
+<td><code>c:/foo\bar</code></td>
+<td><code>c:/foo/bar</code></td>
+<td><code>c:/</code></td>
+<td><code>c:</code></td>
+<td><code>/</code></td>
+<td><code>foo\bar</code></td>
+<td><code>c:/foo</code></td>
+<td><code>bar</code></td>
</tr>
</table>
<h2><a name="Suggestions-for-fstream">Suggestions for <code><fstream></code></a>
@@ -3159,7 +3148,7 @@
<p>Distributed under the Boost Software License, Version 1.0. See
<a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a></p>
<p>Revised
-<!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B %Y" startspan -->23 February 2010<!--webbot bot="Timestamp" endspan i-checksum="40545" --></p>
+<!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B %Y" startspan -->03 March 2010<!--webbot bot="Timestamp" endspan i-checksum="27226" --></p>
</body>
Modified: sandbox/filesystem-v3/libs/filesystem/example/Jamfile.v2
==============================================================================
--- sandbox/filesystem-v3/libs/filesystem/example/Jamfile.v2 (original)
+++ sandbox/filesystem-v3/libs/filesystem/example/Jamfile.v2 2010-03-05 08:00:00 EST (Fri, 05 Mar 2010)
@@ -22,4 +22,3 @@
exe tut4 : tut4.cpp ;
exe tut5 : tut5.cpp ;
exe path_info : path_info.cpp ;
-exe path_table : path_table.cpp ;
Deleted: sandbox/filesystem-v3/libs/filesystem/example/path_table.cpp
==============================================================================
--- sandbox/filesystem-v3/libs/filesystem/example/path_table.cpp 2010-03-05 08:00:00 EST (Fri, 05 Mar 2010)
+++ (empty file)
@@ -1,211 +0,0 @@
-// Generate an HTML table showing path decomposition ---------------------------------//
-
-// Copyright Beman Dawes 2005.
-
-// Distributed under the Boost Software License, Version 1.0.
-// See http://www.boost.org/LICENSE_1_0.txt
-
-// See http://www.boost.org/libs/filesystem for documentation.
-
-// For purposes of generating the table, support both POSIX and Windows paths
-
-#include "boost/filesystem.hpp"
-#include <iostream>
-#include <fstream>
-
-using boost::filesystem::path;
-using std::string;
-using std::cout;
-
-namespace
-{
- std::ifstream infile;
- std::ofstream outfile;
-
- const string empty_string;
-
- struct column_base
- {
- virtual string heading() const = 0;
- virtual string cell_value( const path & p ) const = 0;
- };
-
- struct c0 : public column_base
- {
- string heading() const { return string("<code>string()</code>"); }
- string cell_value( const path & p ) const { return p.string(); }
- } o0;
-
- struct c1 : public column_base
- {
- string heading() const { return string("<code>generic_<br>string()</code>"); }
- string cell_value( const path & p ) const { return p.generic_string(); }
- } o1;
-
- struct c2 : public column_base
- {
- string heading() const { return string("Iteration<br>over<br>Elements"); }
- string cell_value( const path & p ) const
- {
- string s;
- for( path::iterator i(p.begin()); i != p.end(); ++i )
- {
- if ( i != p.begin() ) s += ',';
- s += (*i).string();
- }
- return s;
- }
- } o2;
-
- struct c3 : public column_base
- {
- string heading() const { return string("<code>root_<br>path()</code>"); }
- string cell_value( const path & p ) const { return p.root_path().string(); }
- } o3;
-
- struct c4 : public column_base
- {
- string heading() const { return string("<code>root_<br>name()</code>"); }
- string cell_value( const path & p ) const { return p.root_name().string(); }
- } o4;
-
- struct c5 : public column_base
- {
- string heading() const { return string("<code>root_<br>directory()</code>"); }
- string cell_value( const path & p ) const { return p.root_directory().string(); }
- } o5;
-
- struct c6 : public column_base
- {
- string heading() const { return string("<code>relative_<br>path()</code>"); }
- string cell_value( const path & p ) const { return p.relative_path().string(); }
- } o6;
-
- struct c7 : public column_base
- {
- string heading() const { return string("<code>parent_<br>path(</code>"); }
- string cell_value( const path & p ) const { return p.parent_path().string(); }
- } o7;
-
- struct c8 : public column_base
- {
- string heading() const { return string("<code>filename()</code>"); }
- string cell_value( const path & p ) const { return p.filename().string(); }
- } o8;
-
- const column_base * column[] = { &o2, &o0, &o1, &o3, &o4, &o5, &o6, &o7, &o8 };
-
- // do_cell ---------------------------------------------------------------//
-
- void do_cell( const string & test_case, int i )
- {
- string value = column[i]->cell_value(path(test_case));
- if (value.empty())
- outfile << "<td><font size=\"-1\"><i>empty</i></font></td>\n";
- else
- outfile << "<td><code>" << value << "</code></td>\n";
- }
-
-// do_row ------------------------------------------------------------------//
-
- void do_row( const string & test_case )
- {
- outfile << "<tr>\n";
-
- if (test_case.empty())
- outfile << "<td><font size=\"-1\"><i>empty</i></font></td>\n";
- else
- outfile << "<td><code>" << test_case << "</code></td>\n";
-
- for ( int i = 0; i < sizeof(column)/sizeof(column_base&); ++i )
- {
- do_cell( test_case, i );
- }
-
- outfile << "</tr>\n";
- }
-
-// do_table ----------------------------------------------------------------//
-
- void do_table()
- {
- outfile <<
- "<h1>Path Decomposition Table</h1>\n"
- "<p>Shaded entries indicate cases where <i>POSIX</i> and <i>Windows</i>\n"
- "implementations yield different results. The top value is the\n"
- "<i>POSIX</i> result and the bottom value is the <i>Windows</i> result.\n"
- "<table border=\"1\" cellspacing=\"0\" cellpadding=\"5\">\n"
- "<p>\n"
- ;
-
- // generate the column headings
-
- outfile << "<tr><td><b>Constructor<br>argument</b></td>\n";
-
- for ( int i = 0; i < sizeof(column)/sizeof(column_base&); ++i )
- {
- outfile << "<td><b>" << column[i]->heading() << "</b></td>\n";
- }
-
- outfile << "</tr>\n";
-
- // generate a row for each input line
-
- string test_case;
- while ( std::getline( infile, test_case ) )
- {
- if (test_case.empty() || test_case[0] != '#')
- do_row( test_case );
- }
-
- outfile << "</table>\n";
- }
-
-} // unnamed namespace
-
-// main ------------------------------------------------------------------------------//
-
-#define BOOST_NO_CPP_MAIN_SUCCESS_MESSAGE
-#include <boost/test/included/prg_exec_monitor.hpp>
-
-int cpp_main( int argc, char * argv[] ) // note name!
-{
- if ( argc != 3 )
- {
- std::cerr <<
- "Usage: path_table input-file output-file\n"
- " input-file contains the paths to appear in the table.\n"
- " output-file will contain the generated HTML.\n"
- ;
- return 1;
- }
-
- infile.open( argv[1] );
- if ( !infile )
- {
- std::cerr << "Could not open input file: " << argv[1] << std::endl;
- return 1;
- }
-
- outfile.open( argv[2] );
- if ( !outfile )
- {
- std::cerr << "Could not open output file: " << argv[2] << std::endl;
- return 1;
- }
-
- outfile << "<html>\n"
- "<head>\n"
- "<title>Path Decomposition Table</title>\n"
- "</head>\n"
- "<body bgcolor=\"#ffffff\" text=\"#000000\">\n"
- ;
-
- do_table();
-
- outfile << "</body>\n"
- "</html>\n"
- ;
-
- return 0;
-}
Modified: sandbox/filesystem-v3/libs/filesystem/test/msvc/filesystem-v3-sandbox.sln
==============================================================================
--- sandbox/filesystem-v3/libs/filesystem/test/msvc/filesystem-v3-sandbox.sln (original)
+++ sandbox/filesystem-v3/libs/filesystem/test/msvc/filesystem-v3-sandbox.sln 2010-03-05 08:00:00 EST (Fri, 05 Mar 2010)
@@ -100,6 +100,12 @@
{FFD738F7-96F0-445C-81EA-551665EF53D1} = {FFD738F7-96F0-445C-81EA-551665EF53D1}
EndProjectSection
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "path_table", "path_table\path_table.vcproj", "{0CAE0949-3678-4AC9-A17D-DFCD9F72C4B7}"
+ ProjectSection(ProjectDependencies) = postProject
+ {F94CCADD-A90B-480C-A304-C19D015D36B1} = {F94CCADD-A90B-480C-A304-C19D015D36B1}
+ {FFD738F7-96F0-445C-81EA-551665EF53D1} = {FFD738F7-96F0-445C-81EA-551665EF53D1}
+ EndProjectSection
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
@@ -193,6 +199,10 @@
{D2F172A6-1D20-458D-8C46-83A2FBAC73E4}.Debug|Win32.Build.0 = Debug|Win32
{D2F172A6-1D20-458D-8C46-83A2FBAC73E4}.Release|Win32.ActiveCfg = Release|Win32
{D2F172A6-1D20-458D-8C46-83A2FBAC73E4}.Release|Win32.Build.0 = Release|Win32
+ {0CAE0949-3678-4AC9-A17D-DFCD9F72C4B7}.Debug|Win32.ActiveCfg = Debug|Win32
+ {0CAE0949-3678-4AC9-A17D-DFCD9F72C4B7}.Debug|Win32.Build.0 = Debug|Win32
+ {0CAE0949-3678-4AC9-A17D-DFCD9F72C4B7}.Release|Win32.ActiveCfg = Release|Win32
+ {0CAE0949-3678-4AC9-A17D-DFCD9F72C4B7}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
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