17 template <
class Stream>
20 write_ = [](
void* p,
const char* data, std::size_t size) {
21 static_cast<Stream*
>(p)->
write(data, size);
23 flush_ = [](
void* p) {
static_cast<Stream*
>(p)->
flush(); };
25 template <
class Stream,
26 typename std::enable_if<!std::is_same<Stream, StringBuffer>::value,
int>::type = 0>
29 write_([](void* p, const char* data,
std::size_t size) {
30 static_cast<Stream*
>(p)->
write(data, size);
32 flush_([](
void* p) {
static_cast<Stream*
>(p)->
flush(); }) {}
46 typename std::enable_if<std::is_integral<T>::value && !std::is_same<T, char>::value,
49 unsigned long long bits =
static_cast<unsigned long long>(value);
50 if (format_.
base == 8 || format_.
base == 16)
51 bits &= (~0ull >> ((
sizeof(
unsigned long long) -
sizeof(T)) * 8));
52 return integer(bits, std::is_signed<T>::value && value < 0);
57 return floating(
static_cast<long double>(value));
61 return *this << static_cast<typename std::underlying_type<T>::type>(value);
65 StringBuffer& integer(
unsigned long long value,
bool negative);
69 void* target_ =
nullptr;
70 void (*write_)(
void*,
const char*, std::size_t) =
nullptr;
71 void (*flush_)(
void*) =
nullptr;
void clear()
Definition buffer.h:35
std::enable_if< std::is_enum< T >::value, StringBuffer & >::type operator<<(T value)
Definition buffer.h:60
void attach(Stream &stream)
Definition buffer.h:18
StringBuffer(Stream &stream)
Definition buffer.h:27
StringBuffer & operator<<(std::nullptr_t)
Definition buffer.h:44
const String & text() const
Definition buffer.h:37
const Format & format() const
Definition buffer.h:39
Format & format()
Definition buffer.h:38
StringBuffer & write(const char *data, std::size_t size)
Definition buffer.cpp:5
void flush()
Definition buffer.cpp:12
StringBuffer & operator<<(char value)
Definition buffer.h:42
StringBuffer & operator<<(const String &text)
Definition buffer.h:40
String str() const
Definition buffer.h:36
std::enable_if< std::is_floating_point< T >::value, StringBuffer & >::type operator<<(T value)
Definition buffer.h:55
const char * data() const noexcept
Definition string.h:76
void clear() noexcept
Definition string.cpp:50
size_type size() const noexcept
Definition string.h:78
Definition assert_text.cpp:5