home *** CD-ROM | disk | FTP | other *** search
/ Hackers Magazine 57 / CdHackersMagazineNr57.iso / Software / Multimedia / k3d-setup-0.7.11.0.exe / include / k3d / k3dsdk / fstream.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-11-07  |  3.9 KB  |  125 lines

  1. #ifndef K3DSDK_FSTREAM_H
  2. #define K3DSDK_FSTREAM_H
  3.  
  4. // K-3D
  5. // Copyright (c) 1995-2005, Timothy M. Shead
  6. //
  7. // Contact: tshead@k-3d.com
  8. //
  9. // This program is free software; you can redistribute it and/or
  10. // modify it under the terms of the GNU General Public
  11. // License as published by the Free Software Foundation; either
  12. // version 2 of the License, or (at your option) any later version.
  13. //
  14. // This program is distributed in the hope that it will be useful,
  15. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  16. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  17. // General Public License for more details.
  18. //
  19. // You should have received a copy of the GNU General Public
  20. // License along with this program; if not, write to the Free Software
  21. // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  22.  
  23. /** \file
  24.         \author Tim Shead (tshead@k-3d.com)
  25. */
  26.  
  27. #include "path.h"
  28. #include <fstream>
  29.  
  30. namespace k3d
  31. {
  32.  
  33. namespace filesystem
  34. {
  35.  
  36. /// Convenience wrapper for standard fstream that opens a k3d::filesystem::path in binary mode
  37. template< class charT, class traits = std::char_traits<charT> >
  38. class basic_ifstream : public std::basic_ifstream<charT,traits>
  39. {
  40. public:
  41.     basic_ifstream()
  42.     {
  43.     }
  44.  
  45.     explicit basic_ifstream(const path& file, std::ios_base::openmode mode = std::ios_base::in | std::ios_base::binary) :
  46.         std::basic_ifstream<charT,traits>(file.native_filesystem_string().c_str(), mode)
  47.     {
  48.     }
  49.  
  50.     virtual ~basic_ifstream()
  51.     {
  52.     }
  53.  
  54.     void open(const path& file, std::ios_base::openmode mode = std::ios_base::in | std::ios_base::binary)
  55.     {
  56.         std::basic_ifstream<charT,traits>::open(file.native_filesystem_string().c_str(), mode);
  57.     }
  58. };
  59.  
  60. /// Convenience wrapper for standard fstream that opens a k3d::filesystem::path in binary mode
  61. typedef basic_ifstream<char> ifstream;
  62. // typedef basic_ifstream<wchar_t> wifstream; // Why do you want to use this?  It isn't portable, and you should be using UTF-8!
  63.  
  64. /// Convenience wrapper for standard fstream that opens a k3d::filesystem::path in binary mode
  65. template < class charT, class traits = std::char_traits<charT> >
  66. class basic_ofstream : public std::basic_ofstream<charT,traits>
  67. {
  68. public:
  69.     basic_ofstream()
  70.     {
  71.     }
  72.  
  73.     explicit basic_ofstream(const path& file, std::ios_base::openmode mode = std::ios_base::out | std::ios_base::binary) :
  74.         std::basic_ofstream<charT,traits>(file.native_filesystem_string().c_str(), mode)
  75.     {
  76.     }
  77.  
  78.     virtual ~basic_ofstream()
  79.     {
  80.     }
  81.  
  82.     void open(const path& file, std::ios_base::openmode mode = std::ios_base::out | std::ios_base::binary)
  83.     {
  84.         std::basic_ofstream<charT,traits>::open(file.native_filesystem_string().c_str(), mode);
  85.     }
  86. };
  87.  
  88. /// Convenience wrapper for standard fstream that opens a k3d::filesystem::path in binary mode
  89. typedef basic_ofstream<char> ofstream;
  90. // typedef basic_ofstream<wchar_t> wofstream; // Why do you want to use this?  It isn't portable, and you should be using UTF-8!
  91.  
  92. /// Convenience wrapper for standard fstream that opens a k3d::filesystem::path in binary mode
  93. template < class charT, class traits = std::char_traits<charT> >
  94. class basic_fstream : public std::basic_fstream<charT,traits>
  95. {
  96. public:
  97.     basic_fstream()
  98.     {
  99.     }
  100.  
  101.     explicit basic_fstream(const path& file, std::ios_base::openmode mode = std::ios_base::in|std::ios_base::out | std::ios_base::binary) :
  102.         std::basic_fstream<charT,traits>(file.native_filesystem_string(), mode)
  103.     {
  104.     }
  105.  
  106.     virtual ~basic_fstream()
  107.     {
  108.     }
  109.  
  110.     void open(const path& file, std::ios_base::openmode mode = std::ios_base::in|std::ios_base::out | std::ios_base::binary)
  111.     {
  112.         std::basic_fstream<charT,traits>::open(file.native_filesystem_string().c_str(), mode);
  113.     }
  114. };
  115.  
  116. /// Convenience wrapper for standard fstream that opens a k3d::filesystem::path in binary mode
  117. typedef basic_fstream<char> fstream;
  118. // typedef basic_fstream<wchar_t> wfstream; // Why do you want to use this?  It isn't portable, and you should be using UTF-8!
  119.  
  120. } // namespace filesystem
  121.  
  122. } // namespace k3d
  123.  
  124. #endif // !K3DSDK_FSTREAM_H
  125.