104 lines
3.5 KiB
Plaintext
104 lines
3.5 KiB
Plaintext
// Filename: stringStream.I
|
|
// Created by: drose (03Jul07)
|
|
//
|
|
////////////////////////////////////////////////////////////////////
|
|
//
|
|
// PANDA 3D SOFTWARE
|
|
// Copyright (c) 2001 - 2004, Disney Enterprises, Inc. All rights reserved
|
|
//
|
|
// All use of this software is subject to the terms of the Panda 3d
|
|
// Software license. You should have received a copy of this license
|
|
// along with this source code; you will also find a current copy of
|
|
// the license at http://etc.cmu.edu/panda3d/docs/license/ .
|
|
//
|
|
// To contact the maintainers of this program write to
|
|
// panda3d-general@lists.sourceforge.net .
|
|
//
|
|
////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Function: StringStream::Constructor
|
|
// Access: Published
|
|
// Description:
|
|
////////////////////////////////////////////////////////////////////
|
|
INLINE StringStream::
|
|
StringStream() : iostream(&_buf) {
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Function: StringStream::Constructor
|
|
// Access: Published
|
|
// Description: This version of the constructor preloads the buffer
|
|
// with the indicated data.
|
|
////////////////////////////////////////////////////////////////////
|
|
INLINE StringStream::
|
|
StringStream(const string &source) : iostream(&_buf) {
|
|
set_data(source);
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Function: StringStream::clear_data
|
|
// Access: Published
|
|
// Description: Empties the buffer.
|
|
////////////////////////////////////////////////////////////////////
|
|
INLINE void StringStream::
|
|
clear_data() {
|
|
_buf.clear();
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Function: StringStream::get_data_size
|
|
// Access: Published
|
|
// Description: Returns the number of characters available to be read
|
|
// from the data stream.
|
|
////////////////////////////////////////////////////////////////////
|
|
INLINE size_t StringStream::
|
|
get_data_size() {
|
|
flush();
|
|
return _buf.get_data().size();
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Function: StringStream::get_data
|
|
// Access: Published
|
|
// Description: Returns the contents of the data stream as a string.
|
|
////////////////////////////////////////////////////////////////////
|
|
INLINE string StringStream::
|
|
get_data() {
|
|
flush();
|
|
const pvector<unsigned char> &data = _buf.get_data();
|
|
if (!data.empty()) {
|
|
return string((char *)&data[0], data.size());
|
|
}
|
|
return string();
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Function: StringStream::set_data
|
|
// Access: Published
|
|
// Description: Replaces the contents of the data stream. This
|
|
// implicitly reseeks to 0.
|
|
////////////////////////////////////////////////////////////////////
|
|
INLINE void StringStream::
|
|
set_data(const string &data) {
|
|
_buf.clear();
|
|
if (!data.empty()) {
|
|
pvector<unsigned char> pv;
|
|
pv.insert(pv.end(), (const unsigned char *)&data[0], (const unsigned char *)&data[0] + data.size());
|
|
_buf.swap_data(pv);
|
|
}
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Function: StringStream::swap_data
|
|
// Access: Published
|
|
// Description: Swaps the indicated buffer for the contents of the
|
|
// internal buffer.
|
|
////////////////////////////////////////////////////////////////////
|
|
INLINE void StringStream::
|
|
swap_data(pvector<unsigned char> &data) {
|
|
flush();
|
|
_buf.swap_data(data);
|
|
}
|