?????????? ????????? - ??????????????? - /home/agenciai/public_html/cd38d8/io.zip
???????
PK LR�[2�s�� � detail/ostream_guard.hppnu �[��� /* Copyright 2019-2020 Glen Joseph Fernandes (glenjofe@gmail.com) Distributed under the Boost Software License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt) */ #ifndef BOOST_IO_DETAIL_OSTREAM_GUARD_HPP #define BOOST_IO_DETAIL_OSTREAM_GUARD_HPP #include <boost/config.hpp> #include <iosfwd> namespace boost { namespace io { namespace detail { template<class Char, class Traits> class ostream_guard { public: explicit ostream_guard(std::basic_ostream<Char, Traits>& os) BOOST_NOEXCEPT : os_(&os) { } ~ostream_guard() BOOST_NOEXCEPT_IF(false) { if (os_) { os_->setstate(std::basic_ostream<Char, Traits>::badbit); } } void release() BOOST_NOEXCEPT { os_ = 0; } private: ostream_guard(const ostream_guard&); ostream_guard& operator=(const ostream_guard&); std::basic_ostream<Char, Traits>* os_; }; } /* detail */ } /* io */ } /* boost */ #endif PK LR�[`z�ge e detail/buffer_fill.hppnu �[��� /* Copyright 2019-2020 Glen Joseph Fernandes (glenjofe@gmail.com) Distributed under the Boost Software License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt) */ #ifndef BOOST_IO_DETAIL_BUFFER_FILL_HPP #define BOOST_IO_DETAIL_BUFFER_FILL_HPP #include <iosfwd> #include <cstddef> namespace boost { namespace io { namespace detail { template<class charT, class traits> inline bool buffer_fill(std::basic_streambuf<charT, traits>& buf, charT ch, std::size_t size) { charT fill[] = { ch, ch, ch, ch, ch, ch, ch, ch }; enum { chunk = sizeof fill / sizeof(charT) }; for (; size > chunk; size -= chunk) { if (static_cast<std::size_t>(buf.sputn(fill, chunk)) != chunk) { return false; } } return static_cast<std::size_t>(buf.sputn(fill, size)) == size; } } /* detail */ } /* io */ } /* boost */ #endif PK LR�[)��"� � ostream_joiner.hppnu �[��� /* Copyright 2019 Glen Joseph Fernandes (glenjofe@gmail.com) Distributed under the Boost Software License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt) */ #ifndef BOOST_IO_OSTREAM_JOINER_HPP #define BOOST_IO_OSTREAM_JOINER_HPP #include <boost/config.hpp> #include <ostream> #include <string> #if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) #if !defined(BOOST_NO_CXX11_HDR_TYPE_TRAITS) #include <type_traits> #endif #include <utility> #endif namespace boost { namespace io { namespace detail { #if !defined(BOOST_NO_CXX11_ADDRESSOF) template<class T> inline T* osj_address(T& o) { return std::addressof(o); } #else template<class T> inline T* osj_address(T& obj) { return &obj; } #endif } /* detail */ template<class Delim, class Char = char, class Traits = std::char_traits<Char> > class ostream_joiner { public: typedef Char char_type; typedef Traits traits_type; typedef std::basic_ostream<Char, Traits> ostream_type; typedef std::output_iterator_tag iterator_category; typedef void value_type; typedef void difference_type; typedef void pointer; typedef void reference; ostream_joiner(ostream_type& output, const Delim& delim) : output_(detail::osj_address(output)) , delim_(delim) , first_(true) { } #if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) ostream_joiner(ostream_type& output, Delim&& delim) : output_(detail::osj_address(output)) , delim_(std::move(delim)) , first_(true) { } #endif template<class T> ostream_joiner& operator=(const T& value) { if (!first_) { *output_ << delim_; } first_ = false; *output_ << value; return *this; } ostream_joiner& operator*() BOOST_NOEXCEPT { return *this; } ostream_joiner& operator++() BOOST_NOEXCEPT { return *this; } ostream_joiner& operator++(int) BOOST_NOEXCEPT { return *this; } private: ostream_type* output_; Delim delim_; bool first_; }; #if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && \ !defined(BOOST_NO_CXX11_HDR_TYPE_TRAITS) template<class Char, class Traits, class Delim> inline ostream_joiner<typename std::decay<Delim>::type, Char, Traits> make_ostream_joiner(std::basic_ostream<Char, Traits>& output, Delim&& delim) { return ostream_joiner<typename std::decay<Delim>::type, Char, Traits>(output, std::forward<Delim>(delim)); } #else template<class Char, class Traits, class Delim> inline ostream_joiner<Delim, Char, Traits> make_ostream_joiner(std::basic_ostream<Char, Traits>& output, const Delim& delim) { return ostream_joiner<Delim, Char, Traits>(output, delim); } #endif } /* io */ } /* boost */ #endif PK LR�[�'5�* �* ios_state.hppnu �[��� /* Copyright 2002, 2005 Daryle Walker Distributed under the Boost Software License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt) */ #ifndef BOOST_IO_IOS_STATE_HPP #define BOOST_IO_IOS_STATE_HPP #include <boost/config.hpp> #include <boost/io_fwd.hpp> #include <ios> #ifndef BOOST_NO_STD_LOCALE #include <locale> #endif #include <ostream> #include <streambuf> #include <string> namespace boost { namespace io { class ios_flags_saver { public: typedef std::ios_base state_type; typedef std::ios_base::fmtflags aspect_type; explicit ios_flags_saver(state_type& s) : s_save_(s) , a_save_(s.flags()) { } ios_flags_saver(state_type& s, aspect_type a) : s_save_(s) , a_save_(s.flags(a)) { } ~ios_flags_saver() { this->restore(); } void restore() { s_save_.flags(a_save_); } private: ios_flags_saver(const ios_flags_saver&); ios_flags_saver& operator=(const ios_flags_saver&); state_type& s_save_; aspect_type a_save_; }; class ios_precision_saver { public: typedef std::ios_base state_type; typedef std::streamsize aspect_type; explicit ios_precision_saver(state_type& s) : s_save_(s) , a_save_(s.precision()) { } ios_precision_saver(state_type& s, aspect_type a) : s_save_(s) , a_save_(s.precision(a)) { } ~ios_precision_saver() { this->restore(); } void restore() { s_save_.precision(a_save_); } private: ios_precision_saver(const ios_precision_saver&); ios_precision_saver& operator=(const ios_precision_saver&); state_type& s_save_; aspect_type a_save_; }; class ios_width_saver { public: typedef std::ios_base state_type; typedef std::streamsize aspect_type; explicit ios_width_saver(state_type& s) : s_save_(s) , a_save_(s.width()) { } ios_width_saver(state_type& s, aspect_type a) : s_save_(s) , a_save_(s.width(a)) { } ~ios_width_saver() { this->restore(); } void restore() { s_save_.width(a_save_); } private: ios_width_saver(const ios_width_saver&); ios_width_saver& operator=(const ios_width_saver&); state_type& s_save_; aspect_type a_save_; }; template<class Ch, class Tr> class basic_ios_iostate_saver { public: typedef std::basic_ios<Ch, Tr> state_type; typedef std::ios_base::iostate aspect_type; explicit basic_ios_iostate_saver(state_type& s) : s_save_(s) , a_save_(s.rdstate()) { } basic_ios_iostate_saver(state_type& s, aspect_type a) : s_save_(s) , a_save_(s.rdstate()) { s.clear(a); } ~basic_ios_iostate_saver() { this->restore(); } void restore() { s_save_.clear(a_save_); } private: basic_ios_iostate_saver(const basic_ios_iostate_saver&); basic_ios_iostate_saver& operator=(const basic_ios_iostate_saver&); state_type& s_save_; aspect_type a_save_; }; template<class Ch, class Tr> class basic_ios_exception_saver { public: typedef std::basic_ios<Ch, Tr> state_type; typedef std::ios_base::iostate aspect_type; explicit basic_ios_exception_saver(state_type& s) : s_save_(s) , a_save_(s.exceptions()) { } basic_ios_exception_saver(state_type& s, aspect_type a) : s_save_(s) , a_save_(s.exceptions()) { s.exceptions(a); } ~basic_ios_exception_saver() { this->restore(); } void restore() { s_save_.exceptions(a_save_); } private: basic_ios_exception_saver(const basic_ios_exception_saver&); basic_ios_exception_saver& operator=(const basic_ios_exception_saver&); state_type& s_save_; aspect_type a_save_; }; template<class Ch, class Tr> class basic_ios_tie_saver { public: typedef std::basic_ios<Ch, Tr> state_type; typedef std::basic_ostream<Ch, Tr>* aspect_type; explicit basic_ios_tie_saver(state_type& s) : s_save_(s) , a_save_(s.tie()) { } basic_ios_tie_saver(state_type& s, aspect_type a) : s_save_(s) , a_save_(s.tie(a)) { } ~basic_ios_tie_saver() { this->restore(); } void restore() { s_save_.tie(a_save_); } private: basic_ios_tie_saver(const basic_ios_tie_saver&); basic_ios_tie_saver& operator=(const basic_ios_tie_saver&); state_type& s_save_; aspect_type a_save_; }; template<class Ch, class Tr> class basic_ios_rdbuf_saver { public: typedef std::basic_ios<Ch, Tr> state_type; typedef std::basic_streambuf<Ch, Tr>* aspect_type; explicit basic_ios_rdbuf_saver(state_type& s) : s_save_(s) , a_save_(s.rdbuf()) { } basic_ios_rdbuf_saver(state_type& s, aspect_type a) : s_save_(s) , a_save_(s.rdbuf(a)) { } ~basic_ios_rdbuf_saver() { this->restore(); } void restore() { s_save_.rdbuf(a_save_); } private: basic_ios_rdbuf_saver(const basic_ios_rdbuf_saver&); basic_ios_rdbuf_saver& operator=(const basic_ios_rdbuf_saver&); state_type& s_save_; aspect_type a_save_; }; template<class Ch, class Tr> class basic_ios_fill_saver { public: typedef std::basic_ios<Ch, Tr> state_type; typedef typename state_type::char_type aspect_type; explicit basic_ios_fill_saver(state_type& s) : s_save_(s) , a_save_(s.fill()) { } basic_ios_fill_saver(state_type& s, aspect_type a) : s_save_(s) , a_save_(s.fill(a)) { } ~basic_ios_fill_saver() { this->restore(); } void restore() { s_save_.fill(a_save_); } private: basic_ios_fill_saver(const basic_ios_fill_saver&); basic_ios_fill_saver& operator=(const basic_ios_fill_saver&); state_type& s_save_; aspect_type a_save_; }; #ifndef BOOST_NO_STD_LOCALE template<class Ch, class Tr> class basic_ios_locale_saver { public: typedef std::basic_ios<Ch, Tr> state_type; typedef std::locale aspect_type; explicit basic_ios_locale_saver(state_type& s) : s_save_(s) , a_save_(s.getloc()) { } basic_ios_locale_saver(state_type& s, const aspect_type& a) : s_save_(s) , a_save_(s.imbue(a)) { } ~basic_ios_locale_saver() { this->restore(); } void restore() { s_save_.imbue(a_save_); } private: basic_ios_locale_saver(const basic_ios_locale_saver&); basic_ios_locale_saver& operator=(const basic_ios_locale_saver&); state_type& s_save_; aspect_type a_save_; }; #endif class ios_iword_saver { public: typedef std::ios_base state_type; typedef int index_type; typedef long aspect_type; explicit ios_iword_saver(state_type& s, index_type i) : s_save_(s) , a_save_(s.iword(i)) , i_save_(i) { } ios_iword_saver(state_type& s, index_type i, aspect_type a) : s_save_(s) , a_save_(s.iword(i)) , i_save_(i) { s.iword(i) = a; } ~ios_iword_saver() { this->restore(); } void restore() { s_save_.iword(i_save_) = a_save_; } private: ios_iword_saver(const ios_iword_saver&); ios_iword_saver& operator=(const ios_iword_saver&); state_type& s_save_; aspect_type a_save_; index_type i_save_; }; class ios_pword_saver { public: typedef std::ios_base state_type; typedef int index_type; typedef void* aspect_type; explicit ios_pword_saver(state_type& s, index_type i) : s_save_(s) , a_save_(s.pword(i)) , i_save_(i) { } ios_pword_saver(state_type& s, index_type i, aspect_type a) : s_save_(s) , a_save_(s.pword(i)) , i_save_(i) { s.pword(i) = a; } ~ios_pword_saver() { this->restore(); } void restore() { s_save_.pword(i_save_) = a_save_; } private: ios_pword_saver(const ios_pword_saver&); ios_pword_saver operator=(const ios_pword_saver&); state_type& s_save_; aspect_type a_save_; index_type i_save_; }; class ios_base_all_saver { public: typedef std::ios_base state_type; explicit ios_base_all_saver(state_type& s) : s_save_(s) , a1_save_(s.flags()) , a2_save_(s.precision()) , a3_save_(s.width()) { } ~ios_base_all_saver() { this->restore(); } void restore() { s_save_.width(a3_save_); s_save_.precision(a2_save_); s_save_.flags(a1_save_); } private: ios_base_all_saver(const ios_base_all_saver&); ios_base_all_saver& operator=(const ios_base_all_saver&); state_type& s_save_; state_type::fmtflags a1_save_; std::streamsize a2_save_; std::streamsize a3_save_; }; template<class Ch, class Tr> class basic_ios_all_saver { public: typedef std::basic_ios<Ch, Tr> state_type; explicit basic_ios_all_saver(state_type& s) : s_save_(s) , a1_save_(s.flags()) , a2_save_(s.precision()) , a3_save_(s.width()) , a4_save_(s.rdstate()) , a5_save_(s.exceptions()) , a6_save_(s.tie()) , a7_save_(s.rdbuf()) , a8_save_(s.fill()) #ifndef BOOST_NO_STD_LOCALE , a9_save_(s.getloc()) #endif { } ~basic_ios_all_saver() { this->restore(); } void restore() { #ifndef BOOST_NO_STD_LOCALE s_save_.imbue(a9_save_); #endif s_save_.fill(a8_save_); s_save_.rdbuf(a7_save_); s_save_.tie(a6_save_); s_save_.exceptions(a5_save_); s_save_.clear(a4_save_); s_save_.width(a3_save_); s_save_.precision(a2_save_); s_save_.flags(a1_save_); } private: basic_ios_all_saver(const basic_ios_all_saver&); basic_ios_all_saver& operator=(const basic_ios_all_saver&); state_type& s_save_; typename state_type::fmtflags a1_save_; std::streamsize a2_save_; std::streamsize a3_save_; typename state_type::iostate a4_save_; typename state_type::iostate a5_save_; std::basic_ostream<Ch, Tr>* a6_save_; std::basic_streambuf<Ch, Tr>* a7_save_; typename state_type::char_type a8_save_; #ifndef BOOST_NO_STD_LOCALE std::locale a9_save_; #endif }; class ios_all_word_saver { public: typedef std::ios_base state_type; typedef int index_type; ios_all_word_saver(state_type& s, index_type i) : s_save_(s) , i_save_(i) , a1_save_(s.iword(i)) , a2_save_(s.pword(i)) { } ~ios_all_word_saver() { this->restore(); } void restore() { s_save_.pword(i_save_) = a2_save_; s_save_.iword(i_save_) = a1_save_; } private: ios_all_word_saver(const ios_all_word_saver&); ios_all_word_saver& operator=(const ios_all_word_saver&); state_type& s_save_; index_type i_save_; long a1_save_; void* a2_save_; }; } /* io */ } /* boost */ #endif PK LR�[�� � quoted.hppnu �[��� /* Copyright 2010 Beman Dawes Copyright 2019-2020 Glen Joseph Fernandes (glenjofe@gmail.com) Distributed under the Boost Software License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt) */ #ifndef BOOST_IO_QUOTED_HPP #define BOOST_IO_QUOTED_HPP #include <boost/io/detail/buffer_fill.hpp> #include <boost/io/detail/ostream_guard.hpp> #include <boost/io/ios_state.hpp> namespace boost { namespace io { namespace detail { template<class String, class Char> struct quoted_proxy { String string; Char escape; Char delim; }; template<class Char> struct quoted_state { const Char* string; std::size_t size; std::size_t count; }; template<class Char> inline quoted_state<Char> quoted_start(const Char* string, Char escape, Char delim) { const Char* end = string; std::size_t count = 2; for (Char ch; (ch = *end) != 0; ++end) { count += 1 + (ch == escape || ch == delim); } quoted_state<Char> state = { string, static_cast<std::size_t>(end - string), count }; return state; } template<class Char, class String> inline quoted_state<Char> quoted_start(const String* string, Char escape, Char delim) { const Char* begin = string->data(); std::size_t size = string->size(); std::size_t count = 2; for (const Char *it = begin, *end = begin + size; it != end; ++it) { Char ch = *it; count += 1 + (ch == escape || ch == delim); } quoted_state<Char> state = { begin, size, count }; return state; } template<class Char, class Traits> inline bool quoted_put(std::basic_streambuf<Char, Traits>& buf, const Char* string, std::size_t size, std::size_t count, Char escape, Char delim) { if (buf.sputc(delim) == Traits::eof()) { return false; } if (size == count) { if (static_cast<std::size_t>(buf.sputn(string, size)) != size) { return false; } } else { for (const Char* end = string + size; string != end; ++string) { Char ch = *string; if ((ch == escape || ch == delim) && buf.sputc(escape) == Traits::eof()) { return false; } if (buf.sputc(ch) == Traits::eof()) { return false; } } } return buf.sputc(delim) != Traits::eof(); } template<class Char, class Traits, class String> inline std::basic_ostream<Char, Traits>& quoted_out(std::basic_ostream<Char, Traits>& os, String* string, Char escape, Char delim) { typedef std::basic_ostream<Char, Traits> stream; ostream_guard<Char, Traits> guard(os); typename stream::sentry entry(os); if (entry) { quoted_state<Char> state = boost::io::detail::quoted_start(string, escape, delim); std::basic_streambuf<Char, Traits>& buf = *os.rdbuf(); std::size_t width = static_cast<std::size_t>(os.width()); if (width <= state.count) { if (!boost::io::detail::quoted_put(buf, state.string, state.size, state.count, escape, delim)) { return os; } } else if ((os.flags() & stream::adjustfield) == stream::left) { if (!boost::io::detail::quoted_put(buf, state.string, state.size, state.count, escape, delim) || !boost::io::detail::buffer_fill(buf, os.fill(), width - state.count)) { return os; } } else if (!boost::io::detail::buffer_fill(buf, os.fill(), width - state.count) || !boost::io::detail::quoted_put(buf, state.string, state.size, state.count, escape, delim)) { return os; } os.width(0); } guard.release(); return os; } template<class Char, class Traits> inline std::basic_ostream<Char, Traits>& operator<<(std::basic_ostream<Char, Traits>& os, const quoted_proxy<const Char*, Char>& proxy) { return boost::io::detail::quoted_out(os, proxy.string, proxy.escape, proxy.delim); } template <class Char, class Traits, class Alloc> inline std::basic_ostream<Char, Traits>& operator<<(std::basic_ostream<Char, Traits>& os, const quoted_proxy<const std::basic_string<Char, Traits, Alloc>*, Char>& proxy) { return boost::io::detail::quoted_out(os, proxy.string, proxy.escape, proxy.delim); } template<class Char, class Traits, class Alloc> inline std::basic_ostream<Char, Traits>& operator<<(std::basic_ostream<Char, Traits>& os, const quoted_proxy<std::basic_string<Char, Traits, Alloc>*, Char>& proxy) { return boost::io::detail::quoted_out(os, proxy.string, proxy.escape, proxy.delim); } template<class Char, class Traits, class Alloc> inline std::basic_istream<Char, Traits>& operator>>(std::basic_istream<Char, Traits>& is, const quoted_proxy<std::basic_string<Char, Traits, Alloc>*, Char>& proxy) { Char ch; if (!(is >> ch)) { return is; } if (ch != proxy.delim) { is.unget(); return is >> *proxy.string; } { boost::io::ios_flags_saver ifs(is); std::noskipws(is); proxy.string->clear(); while ((is >> ch) && ch != proxy.delim) { if (ch == proxy.escape && !(is >> ch)) { break; } proxy.string->push_back(ch); } } return is; } } /* detail */ template<class Char, class Traits, class Alloc> inline detail::quoted_proxy<const std::basic_string<Char, Traits, Alloc>*, Char> quoted(const std::basic_string<Char, Traits, Alloc>& s, Char escape='\\', Char delim='\"') { detail::quoted_proxy<const std::basic_string<Char, Traits, Alloc>*, Char> proxy = { &s, escape, delim }; return proxy; } template<class Char, class Traits, class Alloc> inline detail::quoted_proxy<std::basic_string<Char, Traits, Alloc>*, Char> quoted(std::basic_string<Char, Traits, Alloc>& s, Char escape='\\', Char delim='\"') { detail::quoted_proxy<std::basic_string<Char, Traits, Alloc>*, Char> proxy = { &s, escape, delim }; return proxy; } template<class Char> inline detail::quoted_proxy<const Char*, Char> quoted(const Char* s, Char escape='\\', Char delim='\"') { detail::quoted_proxy<const Char*, Char> proxy = { s, escape, delim }; return proxy; } } /* io */ } /* boost */ #endif PK LR�[A�o�� � ostream_put.hppnu �[��� /* Copyright 2019 Glen Joseph Fernandes (glenjofe@gmail.com) Distributed under the Boost Software License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt) */ #ifndef BOOST_IO_OSTREAM_PUT_HPP #define BOOST_IO_OSTREAM_PUT_HPP #include <boost/io/detail/buffer_fill.hpp> #include <boost/io/detail/ostream_guard.hpp> namespace boost { namespace io { template<class charT, class traits> inline std::basic_ostream<charT, traits>& ostream_put(std::basic_ostream<charT, traits>& os, const charT* data, std::size_t size) { typedef std::basic_ostream<charT, traits> stream; detail::ostream_guard<charT, traits> guard(os); typename stream::sentry entry(os); if (entry) { std::basic_streambuf<charT, traits>& buf = *os.rdbuf(); std::size_t width = static_cast<std::size_t>(os.width()); if (width <= size) { if (static_cast<std::size_t>(buf.sputn(data, size)) != size) { return os; } } else if ((os.flags() & stream::adjustfield) == stream::left) { if (static_cast<std::size_t>(buf.sputn(data, size)) != size || !detail::buffer_fill(buf, os.fill(), width - size)) { return os; } } else if (!detail::buffer_fill(buf, os.fill(), width - size) || static_cast<std::size_t>(buf.sputn(data, size)) != size) { return os; } os.width(0); } guard.release(); return os; } } /* io */ } /* boost */ #endif PK M!\k7��S'