Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

update: qtils & scale #21

Merged
merged 4 commits into from
Mar 12, 2025
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
76 changes: 1 addition & 75 deletions src/executable/experiment.cpp
Original file line number Diff line number Diff line change
@@ -1,79 +1,5 @@
#include <iostream>

#include <qtils/tagged.hpp>
#include <scale/jam_scale.hpp>

struct S {
explicit operator int() const {
return 1;
}
S(int) {}
S &operator+=(auto i) {
return *this;
}
bool operator~() {
return true;
}
};

S &operator+=(S &s, auto i) {
return s;
}

struct Tag {};

// void encode(qtils::is_tagged_v auto &&tagged, scale::ScaleEncoder auto &encoder) {
// encode(untagged(tagged), encoder);
// }
// void decode(qtils::is_tagged_v auto &tagged, scale::ScaleDecoder auto &decoder) {
// decode(untagged(tagged), decoder);
// }

int main() {
qtils::Tagged<uint, Tag> x;
qtils::Tagged<S, Tag> s(1);
qtils::Tagged<std::vector<int>, Tag> v(1);
qtils::Tagged<std::string, Tag> ts;
int i;

auto us = untagged(s);

auto eq1x = 1 == x;
auto eqx1 = x == 1;
auto eqxx = x == x;
x = 1;
s = 1;
x += 1;
x += x;
s += 1;
s += x;
auto &cx = x;
s += cx;
s += std::move(x);
s += std::move(cx);
s += s;
// auto ss = x << 1;

++x;
--x;
auto ix = x++;
auto dx = x--;

scale::Encoder<scale::backend::ToBytes> es;
es << x;
es << v;

scale::Decoder<scale::backend::FromBytes> ds(es.backend().to_vector());
ds >> x;

auto lx = x << 1;
auto rx = x >> 1;

auto &&w = !x;
auto&&ww = s.operator~();
auto &&wwww = ~x;
auto z = ~i;
auto zzzz = not x;

// place for experiments
return 0;
}
11 changes: 5 additions & 6 deletions src/scale/jam_scale.hpp
Original file line number Diff line number Diff line change
@@ -15,21 +15,20 @@ namespace jam {
template <typename T, typename... Configs>
[[nodiscard]] outcome::result<std::vector<uint8_t>> encode_with_config(
T &&value, Configs &&...configs) {
scale::Encoder<scale::backend::ToBytes> encoder{
std::forward<Configs>(configs)...};
std::vector<uint8_t> out;
scale::backend::ToBytes encoder(out, std::forward<Configs>(configs)...);
try {
encode(std::forward<T>(value), encoder);
} catch (std::system_error &e) {
return outcome::failure(e.code());
}
return std::move(encoder).backend().to_vector();
return std::move(out);
}

template <typename T, typename... Configs>
[[nodiscard]] outcome::result<T> decode_with_config(
scale::ConstSpanOfBytes bytes, Configs &&...configs) {
scale::Decoder<scale::backend::FromBytes> decoder{
bytes, std::forward<Configs>(configs)...};
const auto &bytes, Configs &&...configs) {
scale::backend::FromBytes decoder(bytes, std::forward<Configs>(configs)...);
T value;
try {
decode(value, decoder);
4 changes: 2 additions & 2 deletions test-vectors/config-types.hpp
Original file line number Diff line number Diff line change
@@ -29,7 +29,7 @@ namespace jam {
using std::vector<T>::emplace;

public:
friend void encode(const ConfigVec &v, scale::ScaleEncoder auto &encoder) {
friend void encode(const ConfigVec &v, scale::Encoder &encoder) {
const auto &config = encoder.template getConfig<test_vectors::Config>();
auto n = v.configSize(config);
if (n == std::numeric_limits<decltype(n)>::max()) {
@@ -41,7 +41,7 @@ namespace jam {
}
}

friend void decode(ConfigVec &v, scale::ScaleDecoder auto &decoder) {
friend void decode(ConfigVec &v, scale::Decoder &decoder) {
const auto &config = decoder.template getConfig<test_vectors::Config>();
auto n = v.configSize(config);
if (n == std::numeric_limits<decltype(n)>::max()) {
4 changes: 2 additions & 2 deletions vcpkg-overlay/qtils/portfile.cmake
Original file line number Diff line number Diff line change
@@ -2,8 +2,8 @@ vcpkg_check_linkage(ONLY_STATIC_LIBRARY)
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO qdrvm/qtils
REF f5013e52027f6b3014c2ae902a94903583898639
SHA512 6492edc93437b8edc254014b5face0521f0fd46fce6e6cab4e577fc00b6964b5930c75fd228fd8f3bb10bf57a6dd8722dcf2912a488b3f1174a99ed991ae4c54
REF refs/tags/v0.1.0
SHA512 301987eefc98b66c42dcf731d73c11c3e9835098fc3d9a1b8e3adef9b73dad6b0198019d416e1809956620377b48e575157d56b278dcdcf65a24ecdfc134605e
)
vcpkg_cmake_configure(SOURCE_PATH "${SOURCE_PATH}")
vcpkg_cmake_install()
2 changes: 1 addition & 1 deletion vcpkg-overlay/qtils/vcpkg.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "qtils",
"version": "0.0.3",
"version": "0.1.0",
"dependencies": [
{ "name": "vcpkg-cmake", "host": true },
{ "name": "vcpkg-cmake-config", "host": true },
4 changes: 2 additions & 2 deletions vcpkg-overlay/scale/portfile.cmake
Original file line number Diff line number Diff line change
@@ -2,8 +2,8 @@ vcpkg_check_linkage(ONLY_STATIC_LIBRARY)
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO qdrvm/scale-codec-cpp
REF 6ecc0c67eadacc9ab8acdeb73488bdc4c6e30d1c
SHA512 22267674113f04fb9c4624bd2cb69e6f4053edd129bfa5ffb83136e4ce2c04f6fe3dce9c729d5df08c84fd92a8a69938c249fa5068132ebc4a42d205142fb921
REF refs/tags/v2.0.1
SHA512 cc5158cdfecea7f516e2f110adcc00f3024649507908b366ef34a76398efcb735011d8fcacd2f41016eb769dfa74e93ee3af20049560fafd1576b280fb92acc7
)
vcpkg_cmake_configure(
SOURCE_PATH "${SOURCE_PATH}"
2 changes: 1 addition & 1 deletion vcpkg-overlay/scale/vcpkg.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "scale",
"version": "1.1.3",
"version": "2.0.1",
"dependencies": [
{ "name": "vcpkg-cmake", "host": true },
{ "name": "vcpkg-cmake-config", "host": true },
9 changes: 4 additions & 5 deletions vcpkg-overlay/soralog/portfile.cmake
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
vcpkg_check_linkage(ONLY_STATIC_LIBRARY)
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO xDimon/soralog
REF 4dfffd3d949b1c16a04db2e5756555a4031732f7
SHA512 4a8f6066433e6bde504454ea256915e8e6975c060eabdaebd031df409d348b8c22ccd716ec11c4466b0f4322b1f2524350dcc77c3615a8511cba9886f88e7260
REPO qdrvm/soralog
REF refs/tags/v0.2.5
SHA512 47375cc61c78ebc4119781bf19ce3b92c4a5a40ed4dc77c0156ac0750df1e4d13455bf6f60d9ea2f0b7bf7dda75423eed320edce453617ab06d6c1c9a8a8843c
)
vcpkg_cmake_configure(SOURCE_PATH "${SOURCE_PATH}")
vcpkg_cmake_install()
#vcpkg_cmake_config_fixup(PACKAGE_NAME "soralog")
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")