Skip to content
Merged
Show file tree
Hide file tree
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
4 changes: 2 additions & 2 deletions DEPENDENCIES
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
vendorpull https://github.com/sourcemeta/vendorpull 1dcbac42809cf87cb5b045106b863e17ad84ba02
core https://github.com/sourcemeta/core 7745054cc2334341799207eabd6cc13986023db8
blaze https://github.com/sourcemeta/blaze 93f98104ac0d2a62b3e0023077818cc7511fb6da
core https://github.com/sourcemeta/core ebd90cf348ed4700180f902a8af11068d7aece96
blaze https://github.com/sourcemeta/blaze 36e8c64529424ff590ddd9e17e23f0c9422c5f30
bootstrap https://github.com/twbs/bootstrap 1a6fdfae6be09b09eaced8f0e442ca6f7680a61e
8 changes: 5 additions & 3 deletions src/compiler/compiler.cc
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,11 @@
#include <type_traits> // std::true_type

static auto transformer_callback_noop(
const sourcemeta::core::Pointer &, const std::string_view,
const std::string_view,
const sourcemeta::blaze::SchemaTransformRule::Result &,
[[maybe_unused]] const sourcemeta::core::Pointer &pointer,
[[maybe_unused]] const std::string_view name,
[[maybe_unused]] const std::string_view message,
[[maybe_unused]] const sourcemeta::blaze::SchemaTransformRule::Result
&result,
[[maybe_unused]] const bool applied) -> void {
assert(applied);
}
Expand Down
8 changes: 4 additions & 4 deletions src/compiler/encoding.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,18 +13,18 @@ inline auto make_resolver(const sourcemeta::blaze::SchemaResolver &fallback)
return [&fallback](std::string_view identifier)
-> sourcemeta::blaze::SchemaResolverResult {
if (identifier == ENCODING_V1) {
static const auto schema{sourcemeta::core::parse_json(R"JSON({
static const auto SCHEMA{sourcemeta::core::parse_json(R"JSON({
"$id": "tag:sourcemeta.com,2024:jsonbinpack/encoding/v1",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$vocabulary": {
"https://json-schema.org/draft/2020-12/vocab/core": true,
"tag:sourcemeta.com,2024:jsonbinpack/encoding/v1": true
}
})JSON")};
return schema;
} else {
return fallback(identifier);
return SCHEMA;
}

return fallback(identifier);
};
}

Expand Down
16 changes: 9 additions & 7 deletions src/compiler/mapper/enum_8_bit.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,13 @@ class Enum8Bit final : public sourcemeta::blaze::SchemaTransformRule {

[[nodiscard]] auto
condition(const sourcemeta::core::JSON &schema,
const sourcemeta::core::JSON &,
[[maybe_unused]] const sourcemeta::core::JSON &root,
const sourcemeta::blaze::SchemaVocabularies &vocabularies,
const sourcemeta::blaze::SchemaFrame &,
[[maybe_unused]] const sourcemeta::blaze::SchemaFrame &frame,
const sourcemeta::blaze::SchemaFrame::Location &location,
const sourcemeta::blaze::SchemaWalker &,
const sourcemeta::blaze::SchemaResolver &, const bool) const
[[maybe_unused]] const sourcemeta::blaze::SchemaWalker &walker,
[[maybe_unused]] const sourcemeta::blaze::SchemaResolver &resolver,
[[maybe_unused]] const bool is_metaschema) const
-> sourcemeta::blaze::SchemaTransformRule::Result override {
return location.dialect == "https://json-schema.org/draft/2020-12/schema" &&
vocabularies.contains(sourcemeta::blaze::SchemaVocabularies::Known::
Expand All @@ -23,9 +24,10 @@ class Enum8Bit final : public sourcemeta::blaze::SchemaTransformRule {
sourcemeta::core::is_byte(schema.at("enum").size() - 1);
}

auto transform(sourcemeta::core::JSON &schema,
const sourcemeta::blaze::SchemaTransformRule::Result &) const
-> void override {
auto transform(
sourcemeta::core::JSON &schema,
[[maybe_unused]] const sourcemeta::blaze::SchemaTransformRule::Result
&result) const -> void override {
auto options = sourcemeta::core::JSON::make_object();
options.assign("choices", schema.at("enum"));
make_encoding(schema, "BYTE_CHOICE_INDEX", options);
Expand Down
16 changes: 9 additions & 7 deletions src/compiler/mapper/enum_8_bit_top_level.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,13 @@ class Enum8BitTopLevel final : public sourcemeta::blaze::SchemaTransformRule {

[[nodiscard]] auto
condition(const sourcemeta::core::JSON &schema,
const sourcemeta::core::JSON &,
[[maybe_unused]] const sourcemeta::core::JSON &root,
const sourcemeta::blaze::SchemaVocabularies &vocabularies,
const sourcemeta::blaze::SchemaFrame &,
[[maybe_unused]] const sourcemeta::blaze::SchemaFrame &frame,
const sourcemeta::blaze::SchemaFrame::Location &location,
const sourcemeta::blaze::SchemaWalker &,
const sourcemeta::blaze::SchemaResolver &, const bool) const
[[maybe_unused]] const sourcemeta::blaze::SchemaWalker &walker,
[[maybe_unused]] const sourcemeta::blaze::SchemaResolver &resolver,
[[maybe_unused]] const bool is_metaschema) const
-> sourcemeta::blaze::SchemaTransformRule::Result override {
return location.dialect == "https://json-schema.org/draft/2020-12/schema" &&
vocabularies.contains(sourcemeta::blaze::SchemaVocabularies::Known::
Expand All @@ -23,9 +24,10 @@ class Enum8BitTopLevel final : public sourcemeta::blaze::SchemaTransformRule {
sourcemeta::core::is_byte(schema.at("enum").size() - 1);
}

auto transform(sourcemeta::core::JSON &schema,
const sourcemeta::blaze::SchemaTransformRule::Result &) const
-> void override {
auto transform(
sourcemeta::core::JSON &schema,
[[maybe_unused]] const sourcemeta::blaze::SchemaTransformRule::Result
&result) const -> void override {
auto options = sourcemeta::core::JSON::make_object();
options.assign("choices", schema.at("enum"));
make_encoding(schema, "TOP_LEVEL_BYTE_CHOICE_INDEX", options);
Expand Down
16 changes: 9 additions & 7 deletions src/compiler/mapper/enum_arbitrary.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,13 @@ class EnumArbitrary final : public sourcemeta::blaze::SchemaTransformRule {

[[nodiscard]] auto
condition(const sourcemeta::core::JSON &schema,
const sourcemeta::core::JSON &,
[[maybe_unused]] const sourcemeta::core::JSON &root,
const sourcemeta::blaze::SchemaVocabularies &vocabularies,
const sourcemeta::blaze::SchemaFrame &,
[[maybe_unused]] const sourcemeta::blaze::SchemaFrame &frame,
const sourcemeta::blaze::SchemaFrame::Location &location,
const sourcemeta::blaze::SchemaWalker &,
const sourcemeta::blaze::SchemaResolver &, const bool) const
[[maybe_unused]] const sourcemeta::blaze::SchemaWalker &walker,
[[maybe_unused]] const sourcemeta::blaze::SchemaResolver &resolver,
[[maybe_unused]] const bool is_metaschema) const
-> sourcemeta::blaze::SchemaTransformRule::Result override {
return location.dialect == "https://json-schema.org/draft/2020-12/schema" &&
vocabularies.contains(sourcemeta::blaze::SchemaVocabularies::Known::
Expand All @@ -24,9 +25,10 @@ class EnumArbitrary final : public sourcemeta::blaze::SchemaTransformRule {
!sourcemeta::core::is_byte(schema.at("enum").size() - 1);
}

auto transform(sourcemeta::core::JSON &schema,
const sourcemeta::blaze::SchemaTransformRule::Result &) const
-> void override {
auto transform(
sourcemeta::core::JSON &schema,
[[maybe_unused]] const sourcemeta::blaze::SchemaTransformRule::Result
&result) const -> void override {
auto options = sourcemeta::core::JSON::make_object();
options.assign("choices", schema.at("enum"));
make_encoding(schema, "LARGE_CHOICE_INDEX", options);
Expand Down
16 changes: 9 additions & 7 deletions src/compiler/mapper/enum_singleton.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,13 @@ class EnumSingleton final : public sourcemeta::blaze::SchemaTransformRule {

[[nodiscard]] auto
condition(const sourcemeta::core::JSON &schema,
const sourcemeta::core::JSON &,
[[maybe_unused]] const sourcemeta::core::JSON &root,
const sourcemeta::blaze::SchemaVocabularies &vocabularies,
const sourcemeta::blaze::SchemaFrame &,
[[maybe_unused]] const sourcemeta::blaze::SchemaFrame &frame,
const sourcemeta::blaze::SchemaFrame::Location &location,
const sourcemeta::blaze::SchemaWalker &,
const sourcemeta::blaze::SchemaResolver &, const bool) const
[[maybe_unused]] const sourcemeta::blaze::SchemaWalker &walker,
[[maybe_unused]] const sourcemeta::blaze::SchemaResolver &resolver,
[[maybe_unused]] const bool is_metaschema) const
-> sourcemeta::blaze::SchemaTransformRule::Result override {
return location.dialect == "https://json-schema.org/draft/2020-12/schema" &&
vocabularies.contains(sourcemeta::blaze::SchemaVocabularies::Known::
Expand All @@ -21,9 +22,10 @@ class EnumSingleton final : public sourcemeta::blaze::SchemaTransformRule {
schema.at("enum").is_array() && schema.at("enum").size() == 1;
}

auto transform(sourcemeta::core::JSON &schema,
const sourcemeta::blaze::SchemaTransformRule::Result &) const
-> void override {
auto transform(
sourcemeta::core::JSON &schema,
[[maybe_unused]] const sourcemeta::blaze::SchemaTransformRule::Result
&result) const -> void override {
auto options = sourcemeta::core::JSON::make_object();
options.assign("value", schema.at("enum").at(0));
make_encoding(schema, "CONST_NONE", options);
Expand Down
16 changes: 9 additions & 7 deletions src/compiler/mapper/integer_bounded_8_bit.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,13 @@ class IntegerBounded8Bit final : public sourcemeta::blaze::SchemaTransformRule {

[[nodiscard]] auto
condition(const sourcemeta::core::JSON &schema,
const sourcemeta::core::JSON &,
[[maybe_unused]] const sourcemeta::core::JSON &root,
const sourcemeta::blaze::SchemaVocabularies &vocabularies,
const sourcemeta::blaze::SchemaFrame &,
[[maybe_unused]] const sourcemeta::blaze::SchemaFrame &frame,
const sourcemeta::blaze::SchemaFrame::Location &location,
const sourcemeta::blaze::SchemaWalker &,
const sourcemeta::blaze::SchemaResolver &, const bool) const
[[maybe_unused]] const sourcemeta::blaze::SchemaWalker &walker,
[[maybe_unused]] const sourcemeta::blaze::SchemaResolver &resolver,
[[maybe_unused]] const bool is_metaschema) const
-> sourcemeta::blaze::SchemaTransformRule::Result override {
return location.dialect == "https://json-schema.org/draft/2020-12/schema" &&
vocabularies.contains(sourcemeta::blaze::SchemaVocabularies::Known::
Expand All @@ -25,9 +26,10 @@ class IntegerBounded8Bit final : public sourcemeta::blaze::SchemaTransformRule {
!schema.defines("multipleOf");
}

auto transform(sourcemeta::core::JSON &schema,
const sourcemeta::blaze::SchemaTransformRule::Result &) const
-> void override {
auto transform(
sourcemeta::core::JSON &schema,
[[maybe_unused]] const sourcemeta::blaze::SchemaTransformRule::Result
&result) const -> void override {
auto minimum = schema.at("minimum");
auto maximum = schema.at("maximum");
auto options = sourcemeta::core::JSON::make_object();
Expand Down
16 changes: 9 additions & 7 deletions src/compiler/mapper/integer_bounded_greater_than_8_bit.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,13 @@ class IntegerBoundedGreaterThan8Bit final

[[nodiscard]] auto
condition(const sourcemeta::core::JSON &schema,
const sourcemeta::core::JSON &,
[[maybe_unused]] const sourcemeta::core::JSON &root,
const sourcemeta::blaze::SchemaVocabularies &vocabularies,
const sourcemeta::blaze::SchemaFrame &,
[[maybe_unused]] const sourcemeta::blaze::SchemaFrame &frame,
const sourcemeta::blaze::SchemaFrame::Location &location,
const sourcemeta::blaze::SchemaWalker &,
const sourcemeta::blaze::SchemaResolver &, const bool) const
[[maybe_unused]] const sourcemeta::blaze::SchemaWalker &walker,
[[maybe_unused]] const sourcemeta::blaze::SchemaResolver &resolver,
[[maybe_unused]] const bool is_metaschema) const
-> sourcemeta::blaze::SchemaTransformRule::Result override {
return location.dialect == "https://json-schema.org/draft/2020-12/schema" &&
vocabularies.contains(sourcemeta::blaze::SchemaVocabularies::Known::
Expand All @@ -27,9 +28,10 @@ class IntegerBoundedGreaterThan8Bit final
!schema.defines("multipleOf");
}

auto transform(sourcemeta::core::JSON &schema,
const sourcemeta::blaze::SchemaTransformRule::Result &) const
-> void override {
auto transform(
sourcemeta::core::JSON &schema,
[[maybe_unused]] const sourcemeta::blaze::SchemaTransformRule::Result
&result) const -> void override {
auto minimum = schema.at("minimum");
auto options = sourcemeta::core::JSON::make_object();
options.assign("minimum", std::move(minimum));
Expand Down
16 changes: 9 additions & 7 deletions src/compiler/mapper/integer_bounded_multiplier_8_bit.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,13 @@ class IntegerBoundedMultiplier8Bit final

[[nodiscard]] auto
condition(const sourcemeta::core::JSON &schema,
const sourcemeta::core::JSON &,
[[maybe_unused]] const sourcemeta::core::JSON &root,
const sourcemeta::blaze::SchemaVocabularies &vocabularies,
const sourcemeta::blaze::SchemaFrame &,
[[maybe_unused]] const sourcemeta::blaze::SchemaFrame &frame,
const sourcemeta::blaze::SchemaFrame::Location &location,
const sourcemeta::blaze::SchemaWalker &,
const sourcemeta::blaze::SchemaResolver &, const bool) const
[[maybe_unused]] const sourcemeta::blaze::SchemaWalker &walker,
[[maybe_unused]] const sourcemeta::blaze::SchemaResolver &resolver,
[[maybe_unused]] const bool is_metaschema) const
-> sourcemeta::blaze::SchemaTransformRule::Result override {
if (location.dialect != "https://json-schema.org/draft/2020-12/schema" ||
!vocabularies.contains(sourcemeta::blaze::SchemaVocabularies::Known::
Expand All @@ -33,9 +34,10 @@ class IntegerBoundedMultiplier8Bit final
schema.at("multipleOf").to_integer()));
}

auto transform(sourcemeta::core::JSON &schema,
const sourcemeta::blaze::SchemaTransformRule::Result &) const
-> void override {
auto transform(
sourcemeta::core::JSON &schema,
[[maybe_unused]] const sourcemeta::blaze::SchemaTransformRule::Result
&result) const -> void override {
auto minimum = schema.at("minimum");
auto maximum = schema.at("maximum");
auto multiplier = schema.at("multipleOf");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,13 @@ class IntegerBoundedMultiplierGreaterThan8Bit final

[[nodiscard]] auto
condition(const sourcemeta::core::JSON &schema,
const sourcemeta::core::JSON &,
[[maybe_unused]] const sourcemeta::core::JSON &root,
const sourcemeta::blaze::SchemaVocabularies &vocabularies,
const sourcemeta::blaze::SchemaFrame &,
[[maybe_unused]] const sourcemeta::blaze::SchemaFrame &frame,
const sourcemeta::blaze::SchemaFrame::Location &location,
const sourcemeta::blaze::SchemaWalker &,
const sourcemeta::blaze::SchemaResolver &, const bool) const
[[maybe_unused]] const sourcemeta::blaze::SchemaWalker &walker,
[[maybe_unused]] const sourcemeta::blaze::SchemaResolver &resolver,
[[maybe_unused]] const bool is_metaschema) const
-> sourcemeta::blaze::SchemaTransformRule::Result override {
if (location.dialect != "https://json-schema.org/draft/2020-12/schema" ||
!vocabularies.contains(sourcemeta::blaze::SchemaVocabularies::Known::
Expand All @@ -33,9 +34,10 @@ class IntegerBoundedMultiplierGreaterThan8Bit final
schema.at("multipleOf").to_integer()));
}

auto transform(sourcemeta::core::JSON &schema,
const sourcemeta::blaze::SchemaTransformRule::Result &) const
-> void override {
auto transform(
sourcemeta::core::JSON &schema,
[[maybe_unused]] const sourcemeta::blaze::SchemaTransformRule::Result
&result) const -> void override {
auto minimum = schema.at("minimum");
auto multiplier = schema.at("multipleOf");
auto options = sourcemeta::core::JSON::make_object();
Expand Down
16 changes: 9 additions & 7 deletions src/compiler/mapper/integer_lower_bound.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,13 @@ class IntegerLowerBound final : public sourcemeta::blaze::SchemaTransformRule {

[[nodiscard]] auto
condition(const sourcemeta::core::JSON &schema,
const sourcemeta::core::JSON &,
[[maybe_unused]] const sourcemeta::core::JSON &root,
const sourcemeta::blaze::SchemaVocabularies &vocabularies,
const sourcemeta::blaze::SchemaFrame &,
[[maybe_unused]] const sourcemeta::blaze::SchemaFrame &frame,
const sourcemeta::blaze::SchemaFrame::Location &location,
const sourcemeta::blaze::SchemaWalker &,
const sourcemeta::blaze::SchemaResolver &, const bool) const
[[maybe_unused]] const sourcemeta::blaze::SchemaWalker &walker,
[[maybe_unused]] const sourcemeta::blaze::SchemaResolver &resolver,
[[maybe_unused]] const bool is_metaschema) const
-> sourcemeta::blaze::SchemaTransformRule::Result override {
return location.dialect == "https://json-schema.org/draft/2020-12/schema" &&
vocabularies.contains(sourcemeta::blaze::SchemaVocabularies::Known::
Expand All @@ -23,9 +24,10 @@ class IntegerLowerBound final : public sourcemeta::blaze::SchemaTransformRule {
!schema.defines("multipleOf");
}

auto transform(sourcemeta::core::JSON &schema,
const sourcemeta::blaze::SchemaTransformRule::Result &) const
-> void override {
auto transform(
sourcemeta::core::JSON &schema,
[[maybe_unused]] const sourcemeta::blaze::SchemaTransformRule::Result
&result) const -> void override {
auto minimum = schema.at("minimum");
auto options = sourcemeta::core::JSON::make_object();
options.assign("minimum", std::move(minimum));
Expand Down
16 changes: 9 additions & 7 deletions src/compiler/mapper/integer_lower_bound_multiplier.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,13 @@ class IntegerLowerBoundMultiplier final

[[nodiscard]] auto
condition(const sourcemeta::core::JSON &schema,
const sourcemeta::core::JSON &,
[[maybe_unused]] const sourcemeta::core::JSON &root,
const sourcemeta::blaze::SchemaVocabularies &vocabularies,
const sourcemeta::blaze::SchemaFrame &,
[[maybe_unused]] const sourcemeta::blaze::SchemaFrame &frame,
const sourcemeta::blaze::SchemaFrame::Location &location,
const sourcemeta::blaze::SchemaWalker &,
const sourcemeta::blaze::SchemaResolver &, const bool) const
[[maybe_unused]] const sourcemeta::blaze::SchemaWalker &walker,
[[maybe_unused]] const sourcemeta::blaze::SchemaResolver &resolver,
[[maybe_unused]] const bool is_metaschema) const
-> sourcemeta::blaze::SchemaTransformRule::Result override {
return location.dialect == "https://json-schema.org/draft/2020-12/schema" &&
vocabularies.contains(sourcemeta::blaze::SchemaVocabularies::Known::
Expand All @@ -25,9 +26,10 @@ class IntegerLowerBoundMultiplier final
schema.defines("multipleOf") && schema.at("multipleOf").is_integer();
}

auto transform(sourcemeta::core::JSON &schema,
const sourcemeta::blaze::SchemaTransformRule::Result &) const
-> void override {
auto transform(
sourcemeta::core::JSON &schema,
[[maybe_unused]] const sourcemeta::blaze::SchemaTransformRule::Result
&result) const -> void override {
auto minimum = schema.at("minimum");
auto multiplier = schema.at("multipleOf");
auto options = sourcemeta::core::JSON::make_object();
Expand Down
Loading
Loading