MyGUI
3.2.1
|
00001 /* 00002 * This source file is part of MyGUI. For the latest info, see http://mygui.info/ 00003 * Distributed under the MIT License 00004 * (See accompanying file COPYING.MIT or copy at http://opensource.org/licenses/MIT) 00005 */ 00006 00007 #include "MyGUI_Precompiled.h" 00008 #include "MyGUI_DataStream.h" 00009 00010 namespace MyGUI 00011 { 00012 00013 DataStream::DataStream() : 00014 mStream(nullptr), 00015 mSize((size_t) - 1) 00016 { 00017 } 00018 00019 DataStream::DataStream(std::istream* _stream) : 00020 mStream(_stream), 00021 mSize((size_t) - 1) 00022 { 00023 } 00024 00025 DataStream::~DataStream() 00026 { 00027 } 00028 00029 size_t DataStream::size() 00030 { 00031 if (mStream == nullptr) return 0; 00032 if (mSize == (size_t) - 1) 00033 { 00034 mStream->seekg (0, std::ios::end); 00035 mSize = (size_t)mStream->tellg(); 00036 mStream->seekg (0, std::ios::beg); 00037 } 00038 return mSize; 00039 } 00040 00041 bool DataStream::eof() 00042 { 00043 return mStream == nullptr ? true : mStream->eof(); 00044 } 00045 00046 void DataStream::readline(std::string& _source, Char _delim) 00047 { 00048 if (mStream == nullptr) return; 00049 std::getline(*mStream, _source, (char)_delim); 00050 } 00051 00052 size_t DataStream::read(void* _buf, size_t _count) 00053 { 00054 if (mStream == nullptr) return 0; 00055 size_t count = std::min(size(), _count); 00056 mStream->read((char*)_buf, count); 00057 return count; 00058 } 00059 00060 } // namespace MyGUI