Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  1. // Wrapper of C-language FILE struct -*- C++ -*-
  2.  
  3. // Copyright (C) 2000-2015 Free Software Foundation, Inc.
  4. //
  5. // This file is part of the GNU ISO C++ Library.  This library is free
  6. // software; you can redistribute it and/or modify it under the
  7. // terms of the GNU General Public License as published by the
  8. // Free Software Foundation; either version 3, or (at your option)
  9. // any later version.
  10.  
  11. // This library is distributed in the hope that it will be useful,
  12. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. // GNU General Public License for more details.
  15.  
  16. // Under Section 7 of GPL version 3, you are granted additional
  17. // permissions described in the GCC Runtime Library Exception, version
  18. // 3.1, as published by the Free Software Foundation.
  19.  
  20. // You should have received a copy of the GNU General Public License and
  21. // a copy of the GCC Runtime Library Exception along with this program;
  22. // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
  23. // <http://www.gnu.org/licenses/>.
  24.  
  25. //
  26. // ISO C++ 14882: 27.8  File-based streams
  27. //
  28.  
  29. /** @file bits/basic_file.h
  30.  *  This is an internal header file, included by other library headers.
  31.  *  Do not attempt to use it directly. @headername{ios}
  32.  */
  33.  
  34. #ifndef _GLIBCXX_BASIC_FILE_STDIO_H
  35. #define _GLIBCXX_BASIC_FILE_STDIO_H 1
  36.  
  37. #pragma GCC system_header
  38.  
  39. #include <bits/c++config.h>
  40. #include <bits/c++io.h>  // for __c_lock and __c_file
  41. #include <bits/move.h>   // for swap
  42. #include <ios>
  43.  
  44. namespace std _GLIBCXX_VISIBILITY(default)
  45. {
  46. _GLIBCXX_BEGIN_NAMESPACE_VERSION
  47.  
  48.   // Generic declaration.
  49.   template<typename _CharT>
  50.     class __basic_file;
  51.  
  52.   // Specialization.
  53.   template<>
  54.     class __basic_file<char>
  55.     {
  56.       // Underlying data source/sink.
  57.       __c_file*         _M_cfile;
  58.  
  59.       // True iff we opened _M_cfile, and thus must close it ourselves.
  60.       bool              _M_cfile_created;
  61.  
  62.     public:
  63.       __basic_file(__c_lock* __lock = 0) throw ();
  64.  
  65. #if __cplusplus >= 201103L
  66.       __basic_file(__basic_file&& __rv, __c_lock* __lock = 0) noexcept
  67.       : _M_cfile(__rv._M_cfile), _M_cfile_created(__rv._M_cfile_created)
  68.       {
  69.         __rv._M_cfile = nullptr;
  70.         __rv._M_cfile_created = false;
  71.       }
  72.  
  73.       __basic_file& operator=(const __basic_file&) = delete;
  74.       __basic_file& operator=(__basic_file&&) = delete;
  75.  
  76.       void
  77.       swap(__basic_file& __f) noexcept
  78.       {
  79.         std::swap(_M_cfile, __f._M_cfile);
  80.         std::swap(_M_cfile_created, __f._M_cfile_created);
  81.       }
  82. #endif
  83.  
  84.       __basic_file*
  85.       open(const char* __name, ios_base::openmode __mode, int __prot = 0664);
  86.  
  87.       __basic_file*
  88.       sys_open(__c_file* __file, ios_base::openmode);
  89.  
  90.       __basic_file*
  91.       sys_open(int __fd, ios_base::openmode __mode) throw ();
  92.  
  93.       __basic_file*
  94.       close();
  95.  
  96.       _GLIBCXX_PURE bool
  97.       is_open() const throw ();
  98.  
  99.       _GLIBCXX_PURE int
  100.       fd() throw ();
  101.  
  102.       _GLIBCXX_PURE __c_file*
  103.       file() throw ();
  104.  
  105.       ~__basic_file();
  106.  
  107.       streamsize
  108.       xsputn(const char* __s, streamsize __n);
  109.  
  110.       streamsize
  111.       xsputn_2(const char* __s1, streamsize __n1,
  112.                const char* __s2, streamsize __n2);
  113.  
  114.       streamsize
  115.       xsgetn(char* __s, streamsize __n);
  116.  
  117.       streamoff
  118.       seekoff(streamoff __off, ios_base::seekdir __way) throw ();
  119.  
  120.       int
  121.       sync();
  122.  
  123.       streamsize
  124.       showmanyc();
  125.     };
  126.  
  127. _GLIBCXX_END_NAMESPACE_VERSION
  128. } // namespace
  129.  
  130. #endif 
  131.