
Vladimir, Some more patches for you, this time for cygwin, they don't get all the tests passing, in particular the dll doesn't build and all the wide character tests fail because there is no wstring support, but at least the library builds and some tests now pass, Regards, John. Index: boost/program_options/value_semantic.hpp =================================================================== RCS file: /cvsroot/boost/boost/boost/program_options/value_semantic.hpp,v retrieving revision 1.4 diff -u -r1.4 value_semantic.hpp --- boost/program_options/value_semantic.hpp 13 Jul 2004 15:12:25 -00001.4 +++ boost/program_options/value_semantic.hpp 14 Jul 2004 11:51:06 -0000 @@ -100,11 +100,12 @@ const std::vector<std::string>& new_tokens, bool utf8) const; protected: // interface for derived classes. +#if !defined(BOOST_NO_STD_WSTRING) virtual void xparse(boost::any& value_store, const std::vector<std::wstring>& new_tokens) const = 0; +#endif }; - /** Class which specify handling of value for which user did not specified anything. */ class BOOST_PROGRAM_OPTIONS_DECL cvs diff: Diffing boost/program_options/detail Index: boost/program_options/detail/convert.hpp =================================================================== RCS file: /cvsroot/boost/boost/boost/program_options/detail/convert.hpp,v retrieving revision 1.10 diff -u -r1.10 convert.hpp --- boost/program_options/detail/convert.hpp 13 Jul 2004 15:12:25 -00001.10 +++ boost/program_options/detail/convert.hpp 14 Jul 2004 11:51:06 -0000 @@ -8,6 +8,8 @@ #include <boost/program_options/config.hpp> +#if !defined(BOOST_NO_STD_WSTRING) + #include <boost/detail/workaround.hpp> #include <string> @@ -84,4 +86,22 @@ $ } +#else +#include <vector> +#include <string> +namespace boost{ + namespace program_options{ + BOOST_PROGRAM_OPTIONS_DECL std::string to_internal(const std::string&); + + template<class T> + std::vector<std::string> to_internal(const std::vector<T>& s) + { + std::vector<std::string> result; + for (unsigned i = 0; i < s.size(); ++i) + result.push_back(to_internal(s[i])); + return result; + } + } +} +#endif #endif Index: boost/program_options/detail/value_semantic.hpp =================================================================== RCS file: /cvsroot/boost/boost/boost/program_options/detail/value_semantic.hpp,v retrieving revision 1.7 diff -u -r1.7 value_semantic.hpp --- boost/program_options/detail/value_semantic.hpp 13 Jul 2004 15:12:25 -00 00 1.7 +++ boost/program_options/detail/value_semantic.hpp 14 Jul 2004 11:51:06 -00 00 @@ -90,11 +90,12 @@ bool*, int); +#if !defined(BOOST_NO_STD_WSTRING) BOOST_PROGRAM_OPTIONS_DECL void validate(boost::any& v, const std::vector<std::wstring>& xs, bool*, int); - +#endif // For some reason, this declaration, which is require by the standard, // cause gcc 3.2 to not generate code to specialization defined in // value_semantic.cpp @@ -107,11 +108,13 @@ std::string*, int); +#if !defined(BOOST_NO_STD_WSTRING) BOOST_PROGRAM_OPTIONS_DECL void validate(boost::any& v, const std::vector<std::wstring>& xs, std::string*, int); #endif +#endif /** Validates sequences. Allows multiple values per option occurence and multiple occurences. */ cvs diff: Diffing libs/program_options cvs diff: Diffing libs/program_options/build Index: libs/program_options/build/Jamfile =================================================================== RCS file: /cvsroot/boost/boost/libs/program_options/build/Jamfile,v retrieving revision 1.2 diff -u -r1.2 Jamfile --- libs/program_options/build/Jamfile 18 May 2004 06:38:17 -0000 1.2 +++ libs/program_options/build/Jamfile 14 Jul 2004 11:51:06 -0000 @@ -21,7 +21,7 @@ <define>BOOST_ALL_DYN_LINK=1 # tell source we're building dll's <runtime-link>dynamic # build only for dynamic runtimes <include>$(BOOST_ROOT) <sysinclude>$(BOOST_ROOT) - std::facet-support std::locale-support + #std::facet-support std::locale-support : debug release # build variants ; cvs diff: Diffing libs/program_options/doc cvs diff: Diffing libs/program_options/example cvs diff: Diffing libs/program_options/src Index: libs/program_options/src/value_semantic.cpp =================================================================== RCS file: /cvsroot/boost/boost/libs/program_options/src/value_semantic.cpp,v retrieving revision 1.7 diff -u -r1.7 value_semantic.cpp --- libs/program_options/src/value_semantic.cpp 13 Jul 2004 15:12:26 -00001.7 +++ libs/program_options/src/value_semantic.cpp 14 Jul 2004 11:51:07 -0000 @@ -123,6 +123,7 @@ // since wstring can't be constructed/compared with char*. We'd need to // create auxilliary 'widen' routine to convert from char* into // needed string type, and that's more work. +#if !defined(BOOST_NO_STD_WSTRING) BOOST_PROGRAM_OPTIONS_DECL void validate(any& v, const vector<wstring>& xs, bool*, int) { @@ -139,7 +140,7 @@ else throw validation_error("invalid bool value"); } - +#endif BOOST_PROGRAM_OPTIONS_DECL void validate(any& v, const vector<string>& xs, std::string*, int) { @@ -152,6 +153,7 @@ v = any(s); } +#if !defined(BOOST_NO_STD_WSTRING) BOOST_PROGRAM_OPTIONS_DECL void validate(any& v, const vector<wstring>& xs, std::string*, int) { @@ -163,7 +165,7 @@ else v = any(s); } - +#endif namespace validators { cvs diff: Diffing libs/program_options/test Index: libs/program_options/test/Jamfile =================================================================== RCS file: /cvsroot/boost/boost/libs/program_options/test/Jamfile,v retrieving revision 1.4 diff -u -r1.4 Jamfile --- libs/program_options/test/Jamfile 28 Jun 2004 09:31:28 -0000 1.4 +++ libs/program_options/test/Jamfile 14 Jul 2004 11:51:07 -0000 @@ -19,7 +19,9 @@ run $(name).cpp <dll>../build/boost_program_options <lib>../../test/build/boost_test_exec_monitor : : : <include>$(BOOST_ROOT) - std::facet-support std::locale-support + #std::facet-support std::locale-support + <define>BOOST_ALL_DYN_LINK=1 + <runtime-link>dynamic : $(name)_dll ] ; }