summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorljfa-ag <ljfa-ag@web.de>2015-08-12 14:13:22 +0200
committerljfa-ag <ljfa-ag@web.de>2015-08-12 14:13:22 +0200
commit5166cfb9b70f21b16193315cbdee69a507371a13 (patch)
tree2e6d7c00501563764ac277cacf11be47daa474dc /src
parent2f0bf929fcecc47c5a5d2b3f151d8f187fb5d7f9 (diff)
downloadProject-Tick-5166cfb9b70f21b16193315cbdee69a507371a13.tar.gz
Project-Tick-5166cfb9b70f21b16193315cbdee69a507371a13.zip
Implement basic stream_writer methods
Diffstat (limited to 'src')
-rw-r--r--src/io/stream_writer.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/io/stream_writer.cpp b/src/io/stream_writer.cpp
index dd90c83322..26a6a7eb65 100644
--- a/src/io/stream_writer.cpp
+++ b/src/io/stream_writer.cpp
@@ -18,13 +18,29 @@
* along with libnbt++. If not, see <http://www.gnu.org/licenses/>.
*/
#include "io/stream_writer.h"
+#include <sstream>
namespace nbt
{
namespace io
{
+void stream_writer::write_type(tag_type tt)
+{
+ write_num(static_cast<int8_t>(tt));
+}
+void stream_writer::write_string(const std::string& str)
+{
+ if(str.size() > max_string_len)
+ {
+ std::ostringstream sstr;
+ sstr << "String is too long for NBT (" << str.size() << " > " << max_string_len << ")";
+ throw std::length_error(sstr.str());
+ }
+ write_num(static_cast<uint16_t>(str.size()));
+ os.write(str.data(), str.size());
+}
}
}