$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
From: az_sw_dude_at_[hidden]
Date: 2007-05-22 23:58:03
Author: az_sw_dude
Date: 2007-05-22 23:58:02 EDT (Tue, 22 May 2007)
New Revision: 4204
URL: http://svn.boost.org/trac/boost/changeset/4204
Log:
Various changes for g++4 on linux - including adding new line to end of file, refactoring of template specialization, and changing header include to ios.
Text files modified: 
   sandbox/explore/boost/explore/explore.hpp          |     3                                         
   sandbox/explore/boost/explore/stream_container.hpp |    89 +++++++++++++++++++++++++++++++-------- 
   sandbox/explore/boost/explore/stream_state.hpp     |     2                                         
   3 files changed, 72 insertions(+), 22 deletions(-)
Modified: sandbox/explore/boost/explore/explore.hpp
==============================================================================
--- sandbox/explore/boost/explore/explore.hpp	(original)
+++ sandbox/explore/boost/explore/explore.hpp	2007-05-22 23:58:02 EDT (Tue, 22 May 2007)
@@ -349,4 +349,5 @@
 
 }
 
-#endif //__EXPLORE_HPP_INCLUDED__
\ No newline at end of file
+#endif //__EXPLORE_HPP_INCLUDED__
+
Modified: sandbox/explore/boost/explore/stream_container.hpp
==============================================================================
--- sandbox/explore/boost/explore/stream_container.hpp	(original)
+++ sandbox/explore/boost/explore/stream_container.hpp	2007-05-22 23:58:02 EDT (Tue, 22 May 2007)
@@ -24,6 +24,65 @@
 
 namespace boost
 {
+
+  
+  namespace detail 
+  {
+  
+    template<typename charType>
+    std::basic_string<charType> init_separator();
+    
+    template<>
+    std::basic_string<char> 
+    init_separator<char>()
+    {
+      return ", ";
+    }
+
+    template<>
+    std::basic_string<wchar_t> 
+    init_separator<wchar_t>()
+    {
+      return L", ";
+    }
+
+    template<typename charType>
+    std::basic_string<charType> init_start();
+    
+    template<>
+    std::basic_string<char> 
+    init_start<char>()
+    {
+      return "[";
+    }
+
+    template<>
+    std::basic_string<wchar_t> 
+    init_start<wchar_t>()
+    {
+      return L"[";
+    }
+
+    template<typename charType>
+    std::basic_string<charType> init_end();
+    
+    template<>
+    std::basic_string<char> 
+    init_end<char>()
+    {
+      return "]";
+    }
+
+    template<>
+    std::basic_string<wchar_t> 
+    init_end<wchar_t>()
+    {
+      return L"]";
+    }
+
+    
+  }
+
         // A simple collection of additional stream state
         template<typename Elem, typename Tr>
         struct container_stream_state
@@ -37,23 +96,12 @@
                 // is there an easier way to specialize between char and wchar_t?
                 // Concern: this is only specialized for char and wchar_t streams.
                 template<typename El>
-		void init();
-
-		template<>
-		void init<char>()
-		{
-			separator = ", ";
-			start = "[";
-			end = "]";
-		}
-
-		template<>
-		void init<wchar_t>()
-		{
-			separator = L", ";
-			start = L"[";
-			end = L"]";
-		}
+		void init()
+                {
+                  separator = detail::init_separator<El>();
+                  start = detail::init_start<El>();
+                  end = detail::init_end<El>();
+                }
 
                 str_typ separator;
                 str_typ start;
@@ -105,8 +153,8 @@
                 // starting delimiter
                 ostr << state->start;
 
-		C::const_iterator first = c.begin();
-		C::const_iterator last = c.end();
+		typename C::const_iterator first = c.begin();
+		typename C::const_iterator last = c.end();
                 while( first != last )
                 {
                         // value
@@ -125,8 +173,9 @@
         template<typename Elem, typename Tr, typename C>
         void stream_container(std::basic_ostream<Elem, Tr>& ostr, const C& c)
         {
+          typedef typename C::value_type value_type;
                 // redirect with "normal" streaming.
-		stream_container(ostr, c, &stream_normal_value<Elem, Tr, C::value_type>);
+		stream_container(ostr, c, &stream_normal_value<Elem, Tr, value_type>);
         }
 
         // concern: this will match everything that does not have a streaming operator.  I'm not sure this is
Modified: sandbox/explore/boost/explore/stream_state.hpp
==============================================================================
--- sandbox/explore/boost/explore/stream_state.hpp	(original)
+++ sandbox/explore/boost/explore/stream_state.hpp	2007-05-22 23:58:02 EDT (Tue, 22 May 2007)
@@ -15,7 +15,7 @@
 #ifndef stream_state_h_
 #define stream_state_h_
 
-#include <xiosbase> // TODO: is this a standard header?
+#include <ios> 
 #include <memory>
 
 namespace explore