Commit 3d5ee3ff authored by gabime's avatar gabime

small improvments

parent 0948a125
#pragma once #pragma once
// Faster than ostringstream--returns its string by ref // A faster-than-ostringstream class
// uses stack_buf as the underlying buffer (upto 192 bytes before using the heap)
#include <ostream> #include <ostream>
#include "stack_buf.h" #include "stack_buf.h"
...@@ -9,12 +11,12 @@ namespace c11log ...@@ -9,12 +11,12 @@ namespace c11log
namespace details namespace details
{ {
class stack_devicebuf :public std::streambuf class stack_devicebuf :public std::streambuf
{ {
public: public:
using Base = std::streambuf; static constexpr unsigned short stack_size = 192;
using stackbuf = stack_buf<192>; using stackbuf_t = stack_buf<stack_size>;
stack_devicebuf() = default; stack_devicebuf() = default;
~stack_devicebuf() = default; ~stack_devicebuf() = default;
stack_devicebuf& operator=(const stack_devicebuf&) = delete; stack_devicebuf& operator=(const stack_devicebuf&) = delete;
...@@ -29,7 +31,7 @@ public: ...@@ -29,7 +31,7 @@ public:
other.clear(); other.clear();
} }
stackbuf::bufpair_t buf() const stackbuf_t::bufpair_t buf() const
{ {
return _stackbuf.get(); return _stackbuf.get();
} }
...@@ -62,9 +64,10 @@ protected: ...@@ -62,9 +64,10 @@ protected:
return ch; return ch;
} }
private: private:
stackbuf _stackbuf; stackbuf_t _stackbuf;
}; };
class fast_oss :public std::ostream class fast_oss :public std::ostream
{ {
public: public:
...@@ -82,7 +85,6 @@ public: ...@@ -82,7 +85,6 @@ public:
other.clear(); other.clear();
} }
std::string str() std::string str()
{ {
auto buf = _dev.buf(); auto buf = _dev.buf();
...@@ -90,7 +92,6 @@ public: ...@@ -90,7 +92,6 @@ public:
} }
std::size_t size() const std::size_t size() const
{ {
return _dev.size(); return _dev.size();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment