MyGUI
3.2.0
|
00001 00006 /* 00007 This file is part of MyGUI. 00008 00009 MyGUI is free software: you can redistribute it and/or modify 00010 it under the terms of the GNU Lesser General Public License as published by 00011 the Free Software Foundation, either version 3 of the License, or 00012 (at your option) any later version. 00013 00014 MyGUI is distributed in the hope that it will be useful, 00015 but WITHOUT ANY WARRANTY; without even the implied warranty of 00016 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00017 GNU Lesser General Public License for more details. 00018 00019 You should have received a copy of the GNU Lesser General Public License 00020 along with MyGUI. If not, see <http://www.gnu.org/licenses/>. 00021 */ 00022 #include "MyGUI_Precompiled.h" 00023 #include "MyGUI_DataStream.h" 00024 00025 namespace MyGUI 00026 { 00027 00028 DataStream::DataStream() : 00029 mStream(nullptr), 00030 mSize((size_t) - 1) 00031 { 00032 } 00033 00034 DataStream::DataStream(std::istream* _stream) : 00035 mStream(_stream), 00036 mSize((size_t) - 1) 00037 { 00038 } 00039 00040 DataStream::~DataStream() 00041 { 00042 } 00043 00044 size_t DataStream::size() 00045 { 00046 if (mStream == nullptr) return 0; 00047 if (mSize == (size_t) - 1) 00048 { 00049 mStream->seekg (0, std::ios::end); 00050 mSize = (size_t)mStream->tellg(); 00051 mStream->seekg (0, std::ios::beg); 00052 } 00053 return mSize; 00054 } 00055 00056 bool DataStream::eof() 00057 { 00058 return mStream == nullptr ? true : mStream->eof(); 00059 } 00060 00061 void DataStream::readline(std::string& _source, Char _delim) 00062 { 00063 if (mStream == nullptr) return; 00064 std::getline(*mStream, _source, (char)_delim); 00065 } 00066 00067 size_t DataStream::read(void* _buf, size_t _count) 00068 { 00069 if (mStream == nullptr) return 0; 00070 size_t count = std::min(size(), _count); 00071 mStream->read((char*)_buf, count); 00072 return count; 00073 } 00074 00075 } // namespace MyGUI