aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp/skiff/skiff.cpp
diff options
context:
space:
mode:
authorAlexander Smirnov <alex@ydb.tech>2024-10-16 12:11:24 +0000
committerAlexander Smirnov <alex@ydb.tech>2024-10-16 12:11:24 +0000
commit40811e93f3fdf9342a9295369994012420fac548 (patch)
treea8d85e094a9c21e10aa250f537c101fc2016a049 /library/cpp/skiff/skiff.cpp
parent30ebe5357bb143648c6be4d151ecd4944af81ada (diff)
parent28a0c4a9f297064538a018c512cd9bbd00a1a35d (diff)
downloadydb-40811e93f3fdf9342a9295369994012420fac548.tar.gz
Merge branch 'rightlib' into mergelibs-241016-1210
Diffstat (limited to 'library/cpp/skiff/skiff.cpp')
-rw-r--r--library/cpp/skiff/skiff.cpp70
1 files changed, 70 insertions, 0 deletions
diff --git a/library/cpp/skiff/skiff.cpp b/library/cpp/skiff/skiff.cpp
index cbdbdfe364..9b42628cc6 100644
--- a/library/cpp/skiff/skiff.cpp
+++ b/library/cpp/skiff/skiff.cpp
@@ -32,6 +32,18 @@ bool operator!=(TUint128 lhs, TUint128 rhs)
////////////////////////////////////////////////////////////////////////////////
+bool operator==(const TInt256& lhs, const TInt256& rhs)
+{
+ return lhs.Parts == rhs.Parts;
+}
+
+bool operator==(const TUint256& lhs, const TUint256& rhs)
+{
+ return lhs.Parts == rhs.Parts;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
TUncheckedSkiffParser::TUncheckedSkiffParser(IZeroCopyInput* underlying)
: Underlying_(underlying)
, Buffer_(512 * 1024)
@@ -95,6 +107,26 @@ TUint128 TUncheckedSkiffParser::ParseUint128()
return {low, high};
}
+TInt256 TUncheckedSkiffParser::ParseInt256()
+{
+ TInt256 result;
+ for (auto& part : result.Parts) {
+ part = ParseSimple<ui64>();
+ }
+
+ return result;
+}
+
+TUint256 TUncheckedSkiffParser::ParseUint256()
+{
+ TUint256 result;
+ for (auto& part : result.Parts) {
+ part = ParseSimple<ui64>();
+ }
+
+ return result;
+}
+
double TUncheckedSkiffParser::ParseDouble()
{
return ParseSimple<double>();
@@ -274,6 +306,18 @@ TUint128 TCheckedSkiffParser::ParseUint128()
return Parser_.ParseUint128();
}
+TInt256 TCheckedSkiffParser::ParseInt256()
+{
+ Validator_->OnSimpleType(EWireType::Int256);
+ return Parser_.ParseInt256();
+}
+
+TUint256 TCheckedSkiffParser::ParseUint256()
+{
+ Validator_->OnSimpleType(EWireType::Uint256);
+ return Parser_.ParseUint256();
+}
+
double TCheckedSkiffParser::ParseDouble()
{
Validator_->OnSimpleType(EWireType::Double);
@@ -389,6 +433,20 @@ void TUncheckedSkiffWriter::WriteUint128(TUint128 value)
WriteSimple<ui64>(value.High);
}
+void TUncheckedSkiffWriter::WriteInt256(const TInt256& value)
+{
+ for (auto part : value.Parts) {
+ WriteSimple<ui64>(part);
+ }
+}
+
+void TUncheckedSkiffWriter::WriteUint256(const TUint256& value)
+{
+ for (auto part : value.Parts) {
+ WriteSimple<ui64>(part);
+ }
+}
+
void TUncheckedSkiffWriter::WriteUint8(ui8 value)
{
WriteSimple<ui8>(value);
@@ -551,6 +609,18 @@ void TCheckedSkiffWriter::WriteUint128(TUint128 value)
Writer_.WriteUint128(value);
}
+void TCheckedSkiffWriter::WriteInt256(TInt256 value)
+{
+ Validator_->OnSimpleType(EWireType::Int256);
+ Writer_.WriteInt256(std::move(value));
+}
+
+void TCheckedSkiffWriter::WriteUint256(TUint256 value)
+{
+ Validator_->OnSimpleType(EWireType::Uint256);
+ Writer_.WriteUint256(std::move(value));
+}
+
void TCheckedSkiffWriter::WriteString32(TStringBuf value)
{
Validator_->OnSimpleType(EWireType::String32);