aboutsummaryrefslogtreecommitdiff
path: root/zencore/compactbinarybuilder.cpp
diff options
context:
space:
mode:
authorDan Engelbrecht <[email protected]>2022-04-26 00:40:36 +0200
committerDan Engelbrecht <[email protected]>2022-06-13 12:06:27 +0200
commit62e5a5a5537bfacd8e7dc8197b692763dce5bee4 (patch)
tree274e676c89c760dc62ad722b2df716d1460b5911 /zencore/compactbinarybuilder.cpp
parentmore WIP (diff)
downloadzen-62e5a5a5537bfacd8e7dc8197b692763dce5bee4.tar.xz
zen-62e5a5a5537bfacd8e7dc8197b692763dce5bee4.zip
WIP
Diffstat (limited to 'zencore/compactbinarybuilder.cpp')
-rw-r--r--zencore/compactbinarybuilder.cpp21
1 files changed, 15 insertions, 6 deletions
diff --git a/zencore/compactbinarybuilder.cpp b/zencore/compactbinarybuilder.cpp
index d4ccd434d..471bd62eb 100644
--- a/zencore/compactbinarybuilder.cpp
+++ b/zencore/compactbinarybuilder.cpp
@@ -148,6 +148,15 @@ CbWriter::Save(BinaryWriter& Writer)
Writer.Write(Data.data(), Data.size());
}
+IoBuffer
+CbWriter::SaveAsIoBuffer()
+{
+ ZEN_ASSERT(States.size() == 1 && States.back().Flags == StateFlags::None);
+ // TEXT("It is invalid to save while there are incomplete write operations."));
+ ZEN_ASSERT(Data.size() > 0); // TEXT("It is invalid to save when nothing has been written."));
+ return IoBufferBuilder::MakeCloneFromMemory(Data.data(), Data.size());
+}
+
uint64_t
CbWriter::GetSaveSize() const
{
@@ -468,9 +477,9 @@ void
CbWriter::AddString(const std::string_view Value)
{
BeginField();
- const uint64_t Size = uint64_t(Value.size());
- const uint32_t SizeByteCount = MeasureVarUInt(Size);
- const int64_t Offset = Data.size();
+ const size_t Size = Value.size();
+ const size_t SizeByteCount = MeasureVarUInt(Size);
+ const size_t Offset = Data.size();
Data.resize(Offset + SizeByteCount + Size);
@@ -491,9 +500,9 @@ CbWriter::AddString(const std::wstring_view Value)
ExtendableStringBuilder<128> Utf8;
WideToUtf8(Value, Utf8);
- const uint32_t Size = uint32_t(Utf8.Size());
- const uint32_t SizeByteCount = MeasureVarUInt(Size);
- const int64_t Offset = Data.size();
+ const size_t Size = Utf8.Size();
+ const size_t SizeByteCount = MeasureVarUInt(Size);
+ const size_t Offset = Data.size();
Data.resize(Offset + SizeByteCount + Size);
uint8_t* StringData = Data.data() + Offset;
WriteVarUInt(Size, StringData);