• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1  /* -*- c++ -*- */
2  /*
3   * Copyright (C) 2010 The Android Open Source Project
4   * All rights reserved.
5   *
6   * Redistribution and use in source and binary forms, with or without
7   * modification, are permitted provided that the following conditions
8   * are met:
9   *  * Redistributions of source code must retain the above copyright
10   *    notice, this list of conditions and the following disclaimer.
11   *  * Redistributions in binary form must reproduce the above copyright
12   *    notice, this list of conditions and the following disclaimer in
13   *    the documentation and/or other materials provided with the
14   *    distribution.
15   *
16   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17   * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18   * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
19   * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
20   * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
21   * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
22   * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
23   * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
24   * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
25   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
26   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27   * SUCH DAMAGE.
28   */
29  
30  #ifndef ANDROID_ASTL_STDIO_FILEBUF__
31  #define ANDROID_ASTL_STDIO_FILEBUF__
32  
33  #include <cstdio>
34  #include <streambuf>
35  #include <ios_pos_types.h>
36  
37  /**
38   * Implementation of the streambuf used to build the cout and cerr
39   * streams.
40   */
41  namespace android {
42  
43  class stdio_filebuf: public std::streambuf
44  {
45    public:
46      stdio_filebuf(std::FILE* stream);
47      virtual ~stdio_filebuf();
48  
49    protected:
50      // These are the concrete implementations declared in ostream.
51      virtual std::streamsize xsputn(const char_type* str, std::streamsize num);
52      virtual int sync();
53  
54    private:
55      FILE *mStream;
56  };
57  
58  }  // namespace android
59  
60  #endif
61