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