$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r60129 - sandbox/filesystem-v3/libs/filesystem/example
From: bdawes_at_[hidden]
Date: 2010-03-03 13:59:50
Author: bemandawes
Date: 2010-03-03 13:59:49 EST (Wed, 03 Mar 2010)
New Revision: 60129
URL: http://svn.boost.org/trac/boost/changeset/60129
Log:
Upgrade to V3
Text files modified: 
   sandbox/filesystem-v3/libs/filesystem/example/Jamfile.v2     |     1                                         
   sandbox/filesystem-v3/libs/filesystem/example/path_table.cpp |   157 +++++++++++++-------------------------- 
   2 files changed, 53 insertions(+), 105 deletions(-)
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-03 13:59:49 EST (Wed, 03 Mar 2010)
@@ -22,3 +22,4 @@
 exe tut4 : tut4.cpp ;
 exe tut5 : tut5.cpp ;
 exe path_info : path_info.cpp ;    
+exe path_table : path_table.cpp ;    
Modified: sandbox/filesystem-v3/libs/filesystem/example/path_table.cpp
==============================================================================
--- sandbox/filesystem-v3/libs/filesystem/example/path_table.cpp	(original)
+++ sandbox/filesystem-v3/libs/filesystem/example/path_table.cpp	2010-03-03 13:59:49 EST (Wed, 03 Mar 2010)
@@ -1,28 +1,19 @@
-//  Generate an HTML table showing path decomposition  -----------------------//
+//  Generate an HTML table showing path decomposition  ---------------------------------//
 
-//  Copyright Beman Dawes 2005.  Distributed under the Boost
-//  Software License, Version 1.0. (See accompanying file
-//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//  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
-#define BOOST_FILESYSTEM_NAMESPACE posix
-#define BOOST_POSIX_PATH
-#include "boost/filesystem/path.hpp"
-
-#undef BOOST_FILESYSTEM_PATH_HPP
-#undef BOOST_FILESYSTEM_NAMESPACE
-#define BOOST_FILESYSTEM_NAMESPACE windows
-#define BOOST_WINDOWS_PATH
-#include "boost/filesystem/path.hpp"
-
-namespace pos = boost::posix;
-namespace win = boost::windows;
 
+#include "boost/filesystem.hpp"
 #include <iostream>
 #include <fstream>
 
+using boost::filesystem::path;
 using std::string;
 using std::cout;
 
@@ -33,145 +24,100 @@
 
   const string empty_string;
 
-  struct column_abc
+  struct column_base
   {
     virtual string heading() const = 0;
-    virtual string cell_value( const pos::path & p ) const = 0;
-    virtual string cell_value( const win::path & p ) const = 0;
+    virtual string cell_value( const path & p ) const = 0;
   };
 
-  struct c0 : public column_abc
+  struct c0 : public column_base
   {
     string heading() const { return string("<code>string()</code>"); }
-    string cell_value( const pos::path & p ) const
-    { 
-      return p.string();
-    }
-    string cell_value( const win::path & p ) const
-    {
-      return p.string();
-    }
+    string cell_value( const path & p ) const { return p.string(); }
   } o0;
 
-    struct c1 : public column_abc
+    struct c1 : public column_base
   {
-    string heading() const { return string("<code>file_<br>string()"); }
-    string cell_value( const pos::path & p ) const { return p.file_string(); }
-    string cell_value( const win::path & p ) const { return p.file_string(); }
+    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_abc
+  struct c2 : public column_base
   {
-    string heading() const { return string("Elements found<br>by iteration"); }
-    string cell_value( const pos::path & p ) const
+    string heading() const { return string("Iteration<br>over<br>Elements"); }
+    string cell_value( const path & p ) const
     {
       string s;
-      for( pos::path::iterator i(p.begin()); i != p.end(); ++i )
+      for( path::iterator i(p.begin()); i != p.end(); ++i )
       {
         if ( i != p.begin() ) s += ',';
-        s += '\"';
-        s += *i;
-        s += '\"';
+        s += (*i).string();
       }
-      if ( s.empty() ) s += "\"\"";
-      return s;
-    }
-    string cell_value( const win::path & p ) const
-    {
-      string s;
-      for( win::path::iterator i(p.begin()); i != p.end(); ++i )
-      {
-        if ( i != p.begin() ) s += ',';
-        s += '\"';
-        s += *i;
-        s += '\"';
-      }
-      if ( s.empty() ) s += "\"\"";
       return s;
     }
   } o2;
 
-  struct c3 : public column_abc
+  struct c3 : public column_base
   {
-    string heading() const { return string("<code>root_<br>path()<br>.string()</code>"); }
-    string cell_value( const pos::path & p ) const { return p.root_path().string(); }
-    string cell_value( const win::path & p ) const { return p.root_path().string(); }
+    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_abc
+  struct c4 : public column_base
   {
     string heading() const { return string("<code>root_<br>name()</code>"); }
-    string cell_value( const pos::path & p ) const { return p.root_name(); }
-    string cell_value( const win::path & p ) const { return p.root_name(); }
+    string cell_value( const path & p ) const { return p.root_name().string(); }
   } o4;
 
-  struct c5 : public column_abc
+  struct c5 : public column_base
   {
     string heading() const { return string("<code>root_<br>directory()</code>"); }
-    string cell_value( const pos::path & p ) const { return p.root_directory(); }
-    string cell_value( const win::path & p ) const { return p.root_directory(); }
+    string cell_value( const path & p ) const { return p.root_directory().string(); }
   } o5;
 
-  struct c6 : public column_abc
+  struct c6 : public column_base
   {
-    string heading() const { return string("<code>relative_<br>path()<br>.string()</code>"); }
-    string cell_value( const pos::path & p ) const { return p.relative_path().string(); }
-    string cell_value( const win::path & p ) const { return p.relative_path().string(); }
+    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_abc
+  struct c7 : public column_base
   {
-    string heading() const { return string("<code>branch_<br>path()<br>.string()</code>"); }
-    string cell_value( const pos::path & p ) const { return p.branch_path().string(); }
-    string cell_value( const win::path & p ) const { return p.branch_path().string(); }
+    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_abc
+  struct c8 : public column_base
   {
-    string heading() const { return string("<code>leaf()</code>"); }
-    string cell_value( const pos::path & p ) const { return p.leaf(); }
-    string cell_value( const win::path & p ) const { return p.leaf(); }
+    string heading() const { return string("<code>filename()</code>"); }
+    string cell_value( const path & p ) const { return p.filename().string(); }
   } o8;
 
-  const column_abc * column[] = { &o2, &o0, &o1, &o3, &o4, &o5, &o6, &o7, &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 posix_result( column[i]->cell_value( pos::path(test_case) ) );
-    string windows_result( column[i]->cell_value( win::path(test_case) ) );
-
-    outfile <<
-      (posix_result != windows_result
-        ? "<td bgcolor=\"#CCFF99\"><code>"
-        : "<td><code>");
-
-    if ( posix_result.empty() || posix_result[0] != '\"' )
-      outfile << '\"' << posix_result << '\"';
+    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 << posix_result;
-
-    if ( posix_result != windows_result )
-    {
-      outfile << "<br>";
-      if ( windows_result.empty() || windows_result[0] != '\"' )
-        outfile << '\"' << windows_result << '\"';
-      else
-        outfile << windows_result;
-    }
-
-    outfile << "</code></td>\n";
+      outfile << "<td><code>" << value << "</code></td>\n";
   }
 
 //  do_row  ------------------------------------------------------------------//
 
   void do_row( const string & test_case )
   {
-    outfile << "<tr>\n<td><code>\"" << test_case << "\"</code></td>\n";
+    outfile << "<tr>\n";
 
-    for ( int i = 0; i < sizeof(column)/sizeof(column_abc&); ++i )
+    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 );
     }
@@ -184,7 +130,7 @@
   void do_table()
   {
     outfile <<
-      "<h1>Path Decomposition Table for <i>POSIX</i> and <i>Windows</i></h1>\n"
+      "<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" 
@@ -196,7 +142,7 @@
 
     outfile << "<tr><td><b>Constructor<br>argument</b></td>\n";
 
-    for ( int i = 0; i < sizeof(column)/sizeof(column_abc&); ++i )
+    for ( int i = 0; i < sizeof(column)/sizeof(column_base&); ++i )
     {
       outfile << "<td><b>" << column[i]->heading() << "</b></td>\n";
     }
@@ -208,7 +154,8 @@
     string test_case;
     while ( std::getline( infile, test_case ) )
     {
-      do_row( test_case );
+      if (test_case.empty() || test_case[0] != '#')
+        do_row( test_case );
     }
 
     outfile << "</table>\n";
@@ -216,7 +163,7 @@
 
 } // unnamed namespace
 
-//  main  --------------------------------------------------------------------//
+//  main  ------------------------------------------------------------------------------//
 
 #define BOOST_NO_CPP_MAIN_SUCCESS_MESSAGE
 #include <boost/test/included/prg_exec_monitor.hpp>