BVB Source Codes

mars Show fstream.hpp Source code

Return Download mars: download fstream.hpp Source code - Download mars Source code - Type:.hpp
  1. //  boost/filesystem/fstream.hpp  ------------------------------------------------------//
  2.  
  3. //  Copyright Beman Dawes 2002
  4.  
  5. //  Distributed under the Boost Software License, Version 1.0.
  6. //  See http://www.boost.org/LICENSE_1_0.txt
  7.  
  8. //  Library home page: http://www.boost.org/libs/filesystem
  9.  
  10. //--------------------------------------------------------------------------------------//
  11.  
  12. #ifndef BOOST_FILESYSTEM3_FSTREAM_HPP
  13. #define BOOST_FILESYSTEM3_FSTREAM_HPP
  14.  
  15. #include <boost/config.hpp>
  16.  
  17. # if defined( BOOST_NO_STD_WSTRING )
  18. #   error Configuration not supported: Boost.Filesystem V3 and later requires std::wstring support
  19. # endif
  20.  
  21. #include <boost/filesystem/path.hpp>
  22. #include <iosfwd>
  23. #include <fstream>
  24.  
  25. #include <boost/config/abi_prefix.hpp> // must be the last #include
  26.  
  27. //  on Windows, except for standard libaries known to have wchar_t overloads for
  28. //  file stream I/O, use path::string() to get a narrow character c_str()
  29. #if defined(BOOST_WINDOWS_API) \
  30.   && (!defined(_CPPLIB_VER) || _CPPLIB_VER < 405 || defined(_STLPORT_VERSION))
  31.   // !Dinkumware || early Dinkumware || STLPort masquerading as Dinkumware
  32. # define BOOST_FILESYSTEM_C_STR string().c_str()  // use narrow, since wide not available
  33. #else  // use the native c_str, which will be narrow on POSIX, wide on Windows
  34. # define BOOST_FILESYSTEM_C_STR c_str()
  35. #endif
  36.  
  37. namespace mars_boost {} namespace boost = mars_boost; namespace mars_boost
  38. {
  39. namespace filesystem
  40. {
  41.  
  42. //--------------------------------------------------------------------------------------//
  43. //                                  basic_filebuf                                       //
  44. //--------------------------------------------------------------------------------------//
  45.  
  46.   template < class charT, class traits = std::char_traits<charT> >
  47.   class basic_filebuf : public std::basic_filebuf<charT,traits>
  48.   {
  49.   private: // disallow copying
  50.     basic_filebuf(const basic_filebuf&);
  51.     const basic_filebuf& operator=(const basic_filebuf&);
  52.  
  53.   public:
  54.     basic_filebuf() {}
  55.     virtual ~basic_filebuf() {}
  56.  
  57.     basic_filebuf<charT,traits>*
  58.       open(const path& p, std::ios_base::openmode mode)
  59.     {
  60.       return std::basic_filebuf<charT,traits>::open(p.BOOST_FILESYSTEM_C_STR, mode)
  61.         ? this : 0;
  62.     }
  63.   };
  64.  
  65. //--------------------------------------------------------------------------------------//
  66. //                                 basic_ifstream                                       //
  67. //--------------------------------------------------------------------------------------//
  68.  
  69.   template < class charT, class traits = std::char_traits<charT> >
  70.   class basic_ifstream : public std::basic_ifstream<charT,traits>
  71.   {
  72.   private: // disallow copying
  73.     basic_ifstream(const basic_ifstream&);
  74.     const basic_ifstream& operator=(const basic_ifstream&);
  75.  
  76.   public:
  77.     basic_ifstream() {}
  78.  
  79.     // use two signatures, rather than one signature with default second
  80.     // argument, to workaround VC++ 7.1 bug (ID VSWhidbey 38416)
  81.  
  82.     explicit basic_ifstream(const path& p)
  83.       : std::basic_ifstream<charT,traits>(p.BOOST_FILESYSTEM_C_STR, std::ios_base::in) {}
  84.  
  85.     basic_ifstream(const path& p, std::ios_base::openmode mode)
  86.       : std::basic_ifstream<charT,traits>(p.BOOST_FILESYSTEM_C_STR, mode) {}
  87.  
  88.     void open(const path& p)
  89.       { std::basic_ifstream<charT,traits>::open(p.BOOST_FILESYSTEM_C_STR, std::ios_base::in); }
  90.  
  91.     void open(const path& p, std::ios_base::openmode mode)
  92.       { std::basic_ifstream<charT,traits>::open(p.BOOST_FILESYSTEM_C_STR, mode); }
  93.  
  94.     virtual ~basic_ifstream() {}
  95.   };
  96.  
  97. //--------------------------------------------------------------------------------------//
  98. //                                 basic_ofstream                                       //
  99. //--------------------------------------------------------------------------------------//
  100.  
  101.   template < class charT, class traits = std::char_traits<charT> >
  102.   class basic_ofstream : public std::basic_ofstream<charT,traits>
  103.   {
  104.   private: // disallow copying
  105.     basic_ofstream(const basic_ofstream&);
  106.     const basic_ofstream& operator=(const basic_ofstream&);
  107.  
  108.   public:
  109.     basic_ofstream() {}
  110.  
  111.     // use two signatures, rather than one signature with default second
  112.     // argument, to workaround VC++ 7.1 bug (ID VSWhidbey 38416)
  113.  
  114.     explicit basic_ofstream(const path& p)
  115.       : std::basic_ofstream<charT,traits>(p.BOOST_FILESYSTEM_C_STR, std::ios_base::out) {}
  116.  
  117.     basic_ofstream(const path& p, std::ios_base::openmode mode)
  118.       : std::basic_ofstream<charT,traits>(p.BOOST_FILESYSTEM_C_STR, mode) {}
  119.  
  120.     void open(const path& p)
  121.       { std::basic_ofstream<charT,traits>::open(p.BOOST_FILESYSTEM_C_STR, std::ios_base::out); }
  122.  
  123.     void open(const path& p, std::ios_base::openmode mode)
  124.       { std::basic_ofstream<charT,traits>::open(p.BOOST_FILESYSTEM_C_STR, mode); }
  125.  
  126.     virtual ~basic_ofstream() {}
  127.   };
  128.  
  129. //--------------------------------------------------------------------------------------//
  130. //                                  basic_fstream                                       //
  131. //--------------------------------------------------------------------------------------//
  132.  
  133.   template < class charT, class traits = std::char_traits<charT> >
  134.   class basic_fstream : public std::basic_fstream<charT,traits>
  135.   {
  136.   private: // disallow copying
  137.     basic_fstream(const basic_fstream&);
  138.     const basic_fstream & operator=(const basic_fstream&);
  139.  
  140.   public:
  141.     basic_fstream() {}
  142.  
  143.     // use two signatures, rather than one signature with default second
  144.     // argument, to workaround VC++ 7.1 bug (ID VSWhidbey 38416)
  145.  
  146.     explicit basic_fstream(const path& p)
  147.       : std::basic_fstream<charT,traits>(p.BOOST_FILESYSTEM_C_STR,
  148.           std::ios_base::in | std::ios_base::out) {}
  149.  
  150.     basic_fstream(const path& p, std::ios_base::openmode mode)
  151.       : std::basic_fstream<charT,traits>(p.BOOST_FILESYSTEM_C_STR, mode) {}
  152.  
  153.     void open(const path& p)
  154.       { std::basic_fstream<charT,traits>::open(p.BOOST_FILESYSTEM_C_STR,
  155.           std::ios_base::in | std::ios_base::out); }
  156.  
  157.     void open(const path& p, std::ios_base::openmode mode)
  158.       { std::basic_fstream<charT,traits>::open(p.BOOST_FILESYSTEM_C_STR, mode); }
  159.  
  160.     virtual ~basic_fstream() {}
  161.  
  162.   };
  163.  
  164. //--------------------------------------------------------------------------------------//
  165. //                                    typedefs                                          //
  166. //--------------------------------------------------------------------------------------//
  167.  
  168.   typedef basic_filebuf<char> filebuf;
  169.   typedef basic_ifstream<char> ifstream;
  170.   typedef basic_ofstream<char> ofstream;
  171.   typedef basic_fstream<char> fstream;
  172.  
  173.   typedef basic_filebuf<wchar_t> wfilebuf;
  174.   typedef basic_ifstream<wchar_t> wifstream;
  175.   typedef basic_ofstream<wchar_t> wofstream;
  176.   typedef basic_fstream<wchar_t> wfstream;
  177.  
  178. } // namespace filesystem
  179. } // namespace mars_boost
  180.  
  181. #include <boost/config/abi_suffix.hpp> // pops abi_prefix.hpp pragmas
  182. #endif  // BOOST_FILESYSTEM3_FSTREAM_HPP
  183.  
downloadfstream.hpp Source code - Download mars Source code
Related Source Codes/Software:
Hero - Elegant transition library for iOS & tvOS 2017-06-09
deep-photo-styletransfer - Code and data for paper "Deep Photo Style Transfer... 2017-06-09
mastodon - A GNU Social-compatible microblogging server ... 2017-06-09
plyr - A simple HTML5, YouTube and Vimeo player ... 2017-06-08
prepack - Prepack is a partial evaluator for JavaScript. Pre... 2017-06-08
Public-APIs - 2017-06-09
lottie-ios - An iOS library to natively render After Effects ve... 2017-06-09
Awesome-Hacking - A collection of various awesome lists for hackers,... 2017-06-09
algorithms - Minimal examples of data structures and algorithms... 2017-06-10
lectures - Oxford Deep NLP 2017 course 2017-06-10
CRYENGINE - CRYENGINE is a powerful real-time game development... 2017-06-11
postal - 2017-06-11
reactide - Reactide is the first dedicated IDE for React web ... 2017-06-11
rkt - rkt is a pod-native container engine for Linux. It... 2017-06-11
uWebSockets - Tiny WebSockets https://for... 2017-06-11
realworld - TodoMVC for the RealWorld - Exemplary fullstack Me... 2017-06-11
goreplay - GoReplay is an open-source tool for capturing and ... 2017-06-10
pyenv - Simple Python version management 2017-06-10
redux-saga - An alternative side effect model for Redux apps ... 2017-06-10
angular-starter - 2017-06-10

 Back to top