This commit is contained in:
Timur A. Fatkhullin
2026-06-27 00:00:54 +03:00
parent 5f26dadad2
commit 700d5bed10
2 changed files with 15 additions and 7 deletions

View File

@@ -69,6 +69,7 @@ int main()
std::println("key = '{}'", kv.key()); std::println("key = '{}'", kv.key());
std::println("value = '{}'", kv.value()); std::println("value = '{}'", kv.value());
std::println("valueSeq = '{}'", kv.valueSeq()); std::println("valueSeq = '{}'", kv.valueSeq());
std::println("valueSeq(4,2) = '{}'", kv.valueSeq(4, 2));
std::println("valueJoinSeq = '{}'", kv.valueJoinSeq<std::string_view>(3, 3)); std::println("valueJoinSeq = '{}'", kv.valueJoinSeq<std::string_view>(3, 3));
std::println("valueJoinSeq = '{}'", kv.valueJoinSeq<std::string_view>(3, 30)); std::println("valueJoinSeq = '{}'", kv.valueJoinSeq<std::string_view>(3, 30));
kv.setKeyValue("VAL", std::make_tuple(1, std::string{"RRR"}, 10.24)); kv.setKeyValue("VAL", std::make_tuple(1, std::string{"RRR"}, 10.24));
@@ -81,6 +82,7 @@ int main()
std::println("key = '{}'", kvl.key<std::string>()); std::println("key = '{}'", kvl.key<std::string>());
std::println("value = '{}'", kvl.value()); std::println("value = '{}'", kvl.value());
std::println("valueSeq = '{}'", kvl.valueSeq()); std::println("valueSeq = '{}'", kvl.valueSeq());
std::println("valueSeq(4,2) = '{}'", kvl.valueSeq(4, 2));
std::println("valueSeq = '{}'", kvl.valueSeq<std::list<std::string>>()); std::println("valueSeq = '{}'", kvl.valueSeq<std::list<std::string>>());

View File

@@ -187,7 +187,8 @@ public:
// std::vector<std::string_view> valueSeq(size_t start = 0, size_t N = std::numeric_limits<size_t>::max()) const // std::vector<std::string_view> valueSeq(size_t start = 0, size_t N = std::numeric_limits<size_t>::max()) const
{ {
// return valueSeq<std::vector<std::string_view>>(start, N); // return valueSeq<std::vector<std::string_view>>(start, N);
return _valueSeq; return valueSeq<decltype(_valueSeq)>(start, N);
// return _valueSeq;
} }
@@ -227,8 +228,8 @@ public:
auto err = snplib_serializer_t<std::remove_cvref_t<KeyT>>{}(_byteSeq, std::forward<KeyT>(key), sparams); auto err = snplib_serializer_t<std::remove_cvref_t<KeyT>>{}(_byteSeq, std::forward<KeyT>(key), sparams);
if (err) { if (err) {
// return snplib_deduced_error(err, std::errc::invalid_argument); // return snplib_deduced_error(err, std::errc::invalid_argument);
// return snplib_deduced_error(err, std::make_error_code(std::errc::invalid_argument)); return snplib_deduced_error(err, std::make_error_code(std::errc::invalid_argument));
return std::make_error_code(std::errc::invalid_argument); // return std::make_error_code(std::errc::invalid_argument);
} }
return {}; return {};
@@ -237,12 +238,13 @@ public:
template <snplib_serializable_c ValueT, snplib_serialization_params_c SParT = snplib_serialization_params_t> template <snplib_serializable_c ValueT, snplib_serialization_params_c SParT = snplib_serialization_params_t>
requires mutableContent requires mutableContent
error_t setValue(ValueT&& value, SParT const& sparams = snplib_serialization_params_t{}) error_t setValue(ValueT&& value, SParT sparams = snplib_serialization_params_t{})
{ {
auto err = snplib_serializer_t<std::remove_cvref_t<ValueT>>{}(_byteSeq, std::forward<ValueT>(value), sparams); auto err = snplib_serializer_t<std::remove_cvref_t<ValueT>>{}(_byteSeq, std::forward<ValueT>(value), sparams);
if (err) { if (err) {
// return snplib_deduced_error(err, std::make_error_code(std::errc::invalid_argument)); // return snplib_deduced_error(err, std::errc::invalid_argument);
return std::make_error_code(std::errc::invalid_argument); return snplib_deduced_error(err, std::make_error_code(std::errc::invalid_argument));
// return std::make_error_code(std::errc::invalid_argument);
} }
return {}; return {};
@@ -254,13 +256,17 @@ public:
snplib_serializable_c ValueT, snplib_serializable_c ValueT,
snplib_serialization_params_c SParT = snplib_serialization_params_t> snplib_serialization_params_c SParT = snplib_serialization_params_t>
requires mutableContent requires mutableContent
error_t setKeyValue(KeyT&& key, ValueT&& value, SParT const& sparams = snplib_serialization_params_t{}) error_t setKeyValue(KeyT&& key, ValueT&& value, SParT sparams = snplib_serialization_params_t{})
{ {
auto err = setKey(std::forward<KeyT>(key), sparams); auto err = setKey(std::forward<KeyT>(key), sparams);
if (err) { if (err) {
return err; return err;
} }
std::ranges::copy(_config.keyval_delim, std::back_inserter(_byteSeq));
sparams.elem_delim = _config.valseq_delim;
return setValue(std::forward<ValueT>(value), sparams); return setValue(std::forward<ValueT>(value), sparams);
} }