Patch boost to fix Boost-1.33.1 interoperability problem
[senf.git] / Utils / Console / STLSupport.ct
index ca7f599..18af3dc 100644 (file)
@@ -26,6 +26,7 @@
 //#include "VectorSupport.ih"
 
 // Custom includes
+#include <boost/format.hpp>
 
 #define prefix_
 ///////////////////////////////ct.p////////////////////////////////////////
@@ -82,6 +83,42 @@ prefix_ void senf::console::SequenceReturnValueTraits<Sequence>::format(type con
     os << ")";
 }
 
+template <class T1, class T2>
+prefix_ void senf::console::ArgumentTraits< std::pair<T1,T2> >::
+parse(ParseCommandInfo::TokensRange const & tokens, type & out)
+{
+    CheckedArgumentIteratorWrapper arg (tokens);
+    senf::console::parse( *(arg++), out.first );
+    senf::console::parse( *(arg++), out.second );
+}
+
+template <class T1, class T2>
+prefix_ std::string senf::console::ArgumentTraits< std::pair<T1,T2> >::description()
+{
+    return (boost::format("pair<%s,%s>")
+            % ArgumentTraits<T1>::description()
+            % ArgumentTraits<T2>::description()).str();
+}
+
+template <class T1, class T2>
+prefix_ std::string senf::console::ArgumentTraits< std::pair<T1,T2> >::str(type const & value)
+{
+    std::stringstream ss;
+    senf::console::format(value, ss);
+    return ss.str();
+}
+
+template <class T1, class T2>
+prefix_ void senf::console::ReturnValueTraits< std::pair<T1,T2> >::format(type const & value,
+                                                                          std::ostream & os)
+{
+    os << "(";
+    senf::console::format(value.first, os);
+    os << " ";
+    senf::console::format(value.second, os);
+    os << ")";
+}
+
 #endif
 
 ///////////////////////////////ct.e////////////////////////////////////////