50#if LASS_COMPILER_TYPE == LASS_COMPILER_TYPE_MSVC
51# pragma warning(disable: 4311)
61BinaryOStream::BinaryOStream():
68BinaryOStream::~BinaryOStream()
74BinaryOStream::pos_type BinaryOStream::tellp()
const
81BinaryOStream& BinaryOStream::seekp(pos_type position)
89BinaryOStream& BinaryOStream::seekp(off_type offset, std::ios_base::seekdir direction)
91 doSeekp(offset, direction);
97void BinaryOStream::flush()
103#if !defined(LASS_HAVE_STDINT_H_INT8_T_IS_CHAR)
105BinaryOStream& BinaryOStream::operator<<(
char x )
107 return writeValue(x);
113BinaryOStream& BinaryOStream::operator<<( num::Tint8 x )
115 return writeValue(x);
120BinaryOStream& BinaryOStream::operator<<( num::Tuint8 x )
122 return writeValue(x);
127BinaryOStream& BinaryOStream::operator<<( num::Tint16 x )
129 return writeValue(x);
134BinaryOStream& BinaryOStream::operator<<( num::Tuint16 x )
136 return writeValue(x);
141BinaryOStream& BinaryOStream::operator<<( num::Tint32 x )
143 return writeValue(x);
148BinaryOStream& BinaryOStream::operator<<( num::Tuint32 x )
150 return writeValue(x);
155BinaryOStream& BinaryOStream::operator<<( num::Tint64 x )
157 return writeValue(x);
162BinaryOStream& BinaryOStream::operator<<( num::Tuint64 x )
164 return writeValue(x);
169BinaryOStream& BinaryOStream::operator<<( num::Tfloat32 x )
171 return writeValue(x);
176BinaryOStream& BinaryOStream::operator<<( num::Tfloat64 x )
178 return writeValue(x);
183BinaryOStream& BinaryOStream::operator<<(
bool x)
185 return *
this << (x ? num::Tuint8(1) : num::Tuint8(0));
190BinaryOStream& BinaryOStream::operator<<(
const void* x)
192 static_assert(
sizeof(num::TintPtr) ==
sizeof(
const void*),
"TintPtr must have same size as pointers");
193 static_assert(
sizeof(num::TintPtr) <=
sizeof(num::Tint64),
"TintPtr must not be wider than 64-bits");
194 return *this << static_cast<num::Tint64>(
reinterpret_cast<num::TintPtr
>(x));
199BinaryOStream& BinaryOStream::operator<<(
const char* x)
201 return writeString(x, ::strlen(x));
206BinaryOStream& BinaryOStream::operator<<(
const std::string& x)
208 return writeString(x.data(), x.length());
213#if LASS_HAVE_WCHAR_SUPPORT
215BinaryOStream& BinaryOStream::operator<<(
const wchar_t* x)
218 util::wcharToUtf8(x, ::wcslen(x), utf8);
219 return writeString(utf8.data(), utf8.length());
224BinaryOStream& BinaryOStream::operator<<(
const std::wstring& x)
227 util::wcharToUtf8(x.data(), x.length(), utf8);
228 return writeString(utf8.data(), utf8.length());
241 return doWrite(bytes, numBytes);
249 const T temp = num::fixEndianness(x, endianness());
250 doWrite(&temp,
sizeof(T));
256BinaryOStream& BinaryOStream::writeString(
const char*
string,
size_t length)
258 static_assert(
sizeof(size_t) <=
sizeof(num::Tuint64),
"size_t must not be wider than 64-bit");
259 *this << static_cast<num::Tuint64>(length);
260 doWrite(
string, length);
base class of binary output streams.
size_t write(const void *buffer, size_t byteLength)
write a buffer of bytes to the stream
Base class for LASS binary streams with byte-order househoulding.
streams, binary streams, vrmlstreams, ...
Library for Assembled Shared Sources.