summaryrefslogtreecommitdiffstats
path: root/src/boost/tools/quickbook/src/stream.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/boost/tools/quickbook/src/stream.hpp')
-rw-r--r--src/boost/tools/quickbook/src/stream.hpp85
1 files changed, 85 insertions, 0 deletions
diff --git a/src/boost/tools/quickbook/src/stream.hpp b/src/boost/tools/quickbook/src/stream.hpp
new file mode 100644
index 000000000..48d789710
--- /dev/null
+++ b/src/boost/tools/quickbook/src/stream.hpp
@@ -0,0 +1,85 @@
+/*=============================================================================
+ Copyright (c) 2009 Daniel James
+
+ Use, modification and distribution is subject to 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)
+=============================================================================*/
+
+// For handling native strings and streams.
+
+#if !defined(BOOST_QUICKBOOK_DETAIL_STREAM_HPP)
+#define BOOST_QUICKBOOK_DETAIL_STREAM_HPP
+
+#include <iostream>
+#include <boost/filesystem/path.hpp>
+#include "native_text.hpp"
+
+namespace quickbook
+{
+ namespace fs = boost::filesystem;
+
+ namespace detail
+ {
+ // A light wrapper around C++'s streams that gets things right
+ // in the quickbook context.
+ //
+ // This is far from perfect but it fixes some issues.
+ struct ostream
+ {
+ typedef stream_string string;
+#if QUICKBOOK_WIDE_STREAMS
+ typedef std::wostream base_ostream;
+ typedef std::wios base_ios;
+#else
+ typedef std::ostream base_ostream;
+ typedef std::ios base_ios;
+#endif
+ base_ostream& base;
+
+ explicit ostream(base_ostream& x) : base(x) {}
+
+ // C strings should always be ascii.
+ ostream& operator<<(char);
+ ostream& operator<<(char const*);
+
+ // std::string should be UTF-8 (what a mess!)
+ ostream& operator<<(std::string const&);
+ ostream& operator<<(quickbook::string_view);
+
+ // Other value types.
+ ostream& operator<<(int x);
+ ostream& operator<<(unsigned int x);
+ ostream& operator<<(long x);
+ ostream& operator<<(unsigned long x);
+
+#if !defined(BOOST_NO_LONG_LONG)
+ ostream& operator<<(boost::long_long_type x);
+ ostream& operator<<(boost::ulong_long_type x);
+#endif
+
+ ostream& operator<<(fs::path const&);
+
+ // Modifiers
+ ostream& operator<<(base_ostream& (*)(base_ostream&));
+ ostream& operator<<(base_ios& (*)(base_ios&));
+ };
+
+ void initialise_output();
+
+ ostream& out();
+
+ // Preformats an error/warning message so that it can be parsed by
+ // common IDEs. Set 'ms_errors' to determine if VS format
+ // or GCC format. Returns the stream to continue ouput of the verbose
+ // error message.
+ void set_ms_errors(bool);
+ ostream& outerr();
+ ostream& outerr(fs::path const& file, std::ptrdiff_t line = -1);
+ ostream& outwarn(fs::path const& file, std::ptrdiff_t line = -1);
+ ostream& outerr(file_ptr const&, string_iterator);
+ ostream& outwarn(file_ptr const&, string_iterator);
+ }
+}
+
+#endif