]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/boost/boost/io/detail/quoted_manip.hpp
update source to Ceph Pacific 16.2.2
[ceph.git] / ceph / src / boost / boost / io / detail / quoted_manip.hpp
index 502f422aa1af66306bd2b6477db294c7fae02213..5b3c4fd1b5899e076926d012c6187c10ec1a0498 100644 (file)
-//  boost/io/quoted_manip.hpp  ---------------------------------------------------------//
+/*
+Copyright 2010 Beman Dawes
 
-//  Copyright Beman Dawes 2010
+Copyright 2019 Glen Joseph Fernandes
+(glenjofe@gmail.com)
 
-//  Distributed under the Boost Software License, Version 1.0.
-//  See http://www.boost.org/LICENSE_1_0.txt
+Distributed under the Boost Software License, Version 1.0.
+(http://www.boost.org/LICENSE_1_0.txt)
+*/
+#ifndef BOOST_IO_DETAIL_QUOTED_MANIP_HPP
+#define BOOST_IO_DETAIL_QUOTED_MANIP_HPP
 
-//  Library home page http://www.boost.org/libs/io
+#include <boost/config/header_deprecated.hpp>
 
-//--------------------------------------------------------------------------------------// 
+BOOST_HEADER_DEPRECATED("<boost/io/quoted.hpp>")
 
-#ifndef BOOST_IO_QUOTED_MANIP
-#define BOOST_IO_QUOTED_MANIP
+#include <boost/io/quoted.hpp>
 
-#include <iosfwd>
-#include <ios>
-#include <string>
-#include <iterator>
-#include <boost/io/ios_state.hpp>
-
-namespace boost
-{
-  namespace io
-  {
-    namespace detail { template <class String, class Char> struct quoted_proxy; }
-
-    //  ------------  public interface  ------------------------------------------------//
-
-    //  manipulator for const std::basic_string&
-    template <class Char, class Traits, class Alloc>
-      detail::quoted_proxy<std::basic_string<Char, Traits, Alloc> const &, Char>
-        quoted(const std::basic_string<Char, Traits, Alloc>& s,
-               Char escape='\\', Char delim='\"');
-
-    //  manipulator for non-const std::basic_string&
-    template <class Char, class Traits, class Alloc>
-      detail::quoted_proxy<std::basic_string<Char, Traits, Alloc> &, Char>
-        quoted(std::basic_string<Char, Traits, Alloc>& s,
-               Char escape='\\', Char delim='\"');
-
-    //  manipulator for const C-string*
-    template <class Char>
-      detail::quoted_proxy<const Char*, Char>
-        quoted(const Char* s, Char escape='\\', Char delim='\"');
-
-    //  -----------  implementation details  -------------------------------------------//
-
-    namespace detail
-    {
-      //  proxy used as an argument pack 
-      template <class String, class Char>
-      struct quoted_proxy
-      {
-        String  string;
-        Char    escape;
-        Char    delim;
-
-        quoted_proxy(String s_, Char escape_, Char delim_)
-          : string(s_), escape(escape_), delim(delim_) {}
-      private:
-        // String may be a const type, so disable the assignment operator
-        quoted_proxy& operator=(const quoted_proxy&);  // = deleted
-      };
-
-      //  abstract away difference between proxies with const or non-const basic_strings
-      template <class Char, class Traits, class Alloc>
-      std::basic_ostream<Char, Traits>&
-      basic_string_inserter_imp(std::basic_ostream<Char, Traits>& os,
-        std::basic_string<Char, Traits, Alloc> const & string, Char escape, Char delim)
-      {
-        os << delim;
-        typename std::basic_string<Char, Traits, Alloc>::const_iterator
-          end_it = string.end();
-        for (typename std::basic_string<Char, Traits, Alloc>::const_iterator
-          it = string.begin();
-          it != end_it;
-          ++it )
-        {
-          if (*it == delim || *it == escape)
-            os << escape;
-          os << *it;
-        }
-        os << delim;
-        return os;
-      }
-
-      //  inserter for const std::basic_string& proxies
-      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> const &, Char>& proxy)
-      {
-        return basic_string_inserter_imp(os, proxy.string, proxy.escape, proxy.delim);
-      }
-
-      //  inserter for non-const std::basic_string& proxies
-      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 basic_string_inserter_imp(os, proxy.string, proxy.escape, proxy.delim);
-      }
-      //  inserter for const C-string* proxies
-      template <class Char, class Traits>
-      std::basic_ostream<Char, Traits>& operator<<(std::basic_ostream<Char, Traits>& os, 
-        const quoted_proxy<const Char*, Char>& proxy)
-      {
-        os << proxy.delim;
-        for (const Char* it = proxy.string;
-          *it;
-          ++it )
-        {
-          if (*it == proxy.delim || *it == proxy.escape)
-            os << proxy.escape;
-          os << *it;
-        }
-        os << proxy.delim;
-        return os;
-      }
-
-      //  extractor for non-const std::basic_string& proxies
-      template <class Char, class Traits, class Alloc>
-      std::basic_istream<Char, Traits>& operator>>(std::basic_istream<Char, Traits>& is, 
-        const quoted_proxy<std::basic_string<Char, Traits, Alloc>&, Char>& proxy)
-      {
-        proxy.string.clear();
-        Char c;
-        is >> c;
-        if (c != proxy.delim)
-        {
-          is.unget();
-          is >> proxy.string;
-          return is;
-        }
-        {
-          boost::io::ios_flags_saver ifs(is);
-          is >> std::noskipws;
-          for (;;)  
-          {
-            is >> c;
-            if (!is.good())  // cope with I/O errors or end-of-file
-              break;
-            if (c == proxy.escape)
-            {
-              is >> c;
-              if (!is.good())  // cope with I/O errors or end-of-file
-                break;
-            }
-            else if (c == proxy.delim)
-              break;
-            proxy.string += c;
-          }
-        }
-        return is;
-      }
-
-    }  // namespace detail
-
-    //  manipulator implementation for const std::basic_string&
-    template <class Char, class Traits, class Alloc>
-    inline detail::quoted_proxy<std::basic_string<Char, Traits, Alloc> const &, Char>
-    quoted(const std::basic_string<Char, Traits, Alloc>& s, Char escape, Char delim)
-    {
-      return detail::quoted_proxy<std::basic_string<Char, Traits, Alloc> const &, Char>
-        (s, escape, delim);
-    }
-
-    //  manipulator implementation for non-const std::basic_string&
-    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)
-    {
-      return detail::quoted_proxy<std::basic_string<Char, Traits, Alloc>&, Char>
-        (s, escape, delim);
-    }
-
-    //  manipulator implementation for const C-string*
-    template <class Char>
-    inline detail::quoted_proxy<const Char*, Char>
-    quoted(const Char* s, Char escape, Char delim)
-    {
-      return detail::quoted_proxy<const Char*, Char> (s, escape, delim);
-    }
-
-  }  // namespace io
-}  // namespace boost
-
-#endif // BOOST_IO_QUOTED_MANIP
+#endif