├── .ackrc ├── .editorconfig ├── .gitattributes ├── .github └── workflows │ ├── ci.yml │ ├── website-build.yml │ └── website-deploy.yml ├── .gitignore ├── Brewfile ├── CMakeLists.txt ├── DEPENDENCIES ├── LICENSE ├── Makefile ├── README.markdown ├── assets ├── artwork.sketch ├── banner.png ├── example.png └── timeline.sketch ├── cmake └── FindCore.cmake ├── config.cmake.in ├── doxygen ├── Doxyfile.in ├── logo.png └── todo.markdown ├── src ├── compiler │ ├── CMakeLists.txt │ ├── compiler.cc │ ├── encoding.h │ ├── include │ │ └── sourcemeta │ │ │ └── jsonbinpack │ │ │ └── compiler.h │ └── mapper │ │ ├── enum_8_bit.h │ │ ├── enum_8_bit_top_level.h │ │ ├── enum_arbitrary.h │ │ ├── enum_singleton.h │ │ ├── integer_bounded_8_bit.h │ │ ├── integer_bounded_greater_than_8_bit.h │ │ ├── integer_bounded_multiplier_8_bit.h │ │ ├── integer_bounded_multiplier_greater_than_8_bit.h │ │ ├── integer_lower_bound.h │ │ ├── integer_lower_bound_multiplier.h │ │ ├── integer_unbound.h │ │ ├── integer_unbound_multiplier.h │ │ ├── integer_upper_bound.h │ │ ├── integer_upper_bound_multiplier.h │ │ └── number_arbitrary.h ├── numeric │ ├── CMakeLists.txt │ └── include │ │ └── sourcemeta │ │ └── jsonbinpack │ │ ├── numeric.h │ │ ├── numeric_integral.h │ │ ├── numeric_real.h │ │ └── numeric_zigzag.h └── runtime │ ├── CMakeLists.txt │ ├── cache.cc │ ├── decoder_any.cc │ ├── decoder_array.cc │ ├── decoder_common.cc │ ├── decoder_integer.cc │ ├── decoder_number.cc │ ├── decoder_object.cc │ ├── decoder_string.cc │ ├── encoder_any.cc │ ├── encoder_array.cc │ ├── encoder_common.cc │ ├── encoder_integer.cc │ ├── encoder_number.cc │ ├── encoder_object.cc │ ├── encoder_string.cc │ ├── include │ └── sourcemeta │ │ └── jsonbinpack │ │ ├── runtime.h │ │ ├── runtime_decoder.h │ │ ├── runtime_encoder.h │ │ ├── runtime_encoder_cache.h │ │ ├── runtime_encoding.h │ │ ├── runtime_input_stream.h │ │ └── runtime_output_stream.h │ ├── input_stream.cc │ ├── loader.cc │ ├── loader_v1_any.h │ ├── loader_v1_array.h │ ├── loader_v1_integer.h │ ├── loader_v1_number.h │ ├── loader_v1_string.h │ ├── output_stream.cc │ ├── unreachable.h │ └── varint.h ├── test ├── compiler │ ├── 2020_12_canonicalizer_any_test.cc │ ├── 2020_12_canonicalizer_array_test.cc │ ├── 2020_12_canonicalizer_boolean_test.cc │ ├── 2020_12_canonicalizer_null_test.cc │ ├── 2020_12_canonicalizer_number_test.cc │ ├── 2020_12_canonicalizer_object_test.cc │ ├── 2020_12_canonicalizer_string_test.cc │ ├── 2020_12_compiler_any_test.cc │ ├── 2020_12_compiler_integer_test.cc │ ├── 2020_12_compiler_number_test.cc │ ├── CMakeLists.txt │ ├── canonicalizer_test.cc │ └── compiler_test.cc ├── e2e │ ├── CMakeLists.txt │ ├── circleciblank │ │ ├── document.json │ │ └── schema-less │ │ │ ├── canonical.json │ │ │ ├── encoding.json │ │ │ ├── output.bin │ │ │ ├── schema.json │ │ │ └── size.txt │ ├── circlecimatrix │ │ ├── document.json │ │ └── schema-less │ │ │ ├── canonical.json │ │ │ ├── encoding.json │ │ │ ├── output.bin │ │ │ ├── schema.json │ │ │ └── size.txt │ ├── commitlint │ │ ├── document.json │ │ └── schema-less │ │ │ ├── canonical.json │ │ │ ├── encoding.json │ │ │ ├── output.bin │ │ │ ├── schema.json │ │ │ └── size.txt │ ├── commitlintbasic │ │ ├── document.json │ │ └── schema-less │ │ │ ├── canonical.json │ │ │ ├── encoding.json │ │ │ ├── output.bin │ │ │ ├── schema.json │ │ │ └── size.txt │ ├── epr │ │ ├── document.json │ │ └── schema-less │ │ │ ├── canonical.json │ │ │ ├── encoding.json │ │ │ ├── output.bin │ │ │ ├── schema.json │ │ │ └── size.txt │ ├── eslintrc │ │ ├── document.json │ │ └── schema-less │ │ │ ├── canonical.json │ │ │ ├── encoding.json │ │ │ ├── output.bin │ │ │ ├── schema.json │ │ │ └── size.txt │ ├── esmrc │ │ ├── document.json │ │ └── schema-less │ │ │ ├── canonical.json │ │ │ ├── encoding.json │ │ │ ├── output.bin │ │ │ ├── schema.json │ │ │ └── size.txt │ ├── geojson │ │ ├── document.json │ │ └── schema-less │ │ │ ├── canonical.json │ │ │ ├── encoding.json │ │ │ ├── output.bin │ │ │ ├── schema.json │ │ │ └── size.txt │ ├── githubfundingblank │ │ ├── document.json │ │ └── schema-less │ │ │ ├── canonical.json │ │ │ ├── encoding.json │ │ │ ├── output.bin │ │ │ ├── schema.json │ │ │ └── size.txt │ ├── githubworkflow │ │ ├── document.json │ │ └── schema-less │ │ │ ├── canonical.json │ │ │ ├── encoding.json │ │ │ ├── output.bin │ │ │ ├── schema.json │ │ │ └── size.txt │ ├── gruntcontribclean │ │ ├── document.json │ │ └── schema-less │ │ │ ├── canonical.json │ │ │ ├── encoding.json │ │ │ ├── output.bin │ │ │ ├── schema.json │ │ │ └── size.txt │ ├── imageoptimizerwebjob │ │ ├── document.json │ │ └── schema-less │ │ │ ├── canonical.json │ │ │ ├── encoding.json │ │ │ ├── output.bin │ │ │ ├── schema.json │ │ │ └── size.txt │ ├── jsonereversesort │ │ ├── document.json │ │ └── schema-less │ │ │ ├── canonical.json │ │ │ ├── encoding.json │ │ │ ├── output.bin │ │ │ ├── schema.json │ │ │ └── size.txt │ ├── jsonesort │ │ ├── document.json │ │ └── schema-less │ │ │ ├── canonical.json │ │ │ ├── encoding.json │ │ │ ├── output.bin │ │ │ ├── schema.json │ │ │ └── size.txt │ ├── jsonfeed │ │ ├── document.json │ │ └── schema-less │ │ │ ├── canonical.json │ │ │ ├── encoding.json │ │ │ ├── output.bin │ │ │ ├── schema.json │ │ │ └── size.txt │ ├── jsonresume │ │ ├── document.json │ │ └── schema-less │ │ │ ├── canonical.json │ │ │ ├── encoding.json │ │ │ ├── output.bin │ │ │ ├── schema.json │ │ │ └── size.txt │ ├── mixed-bounded-object │ │ ├── document.json │ │ └── schema-less │ │ │ ├── canonical.json │ │ │ ├── encoding.json │ │ │ ├── output.bin │ │ │ ├── schema.json │ │ │ └── size.txt │ ├── netcoreproject │ │ ├── document.json │ │ └── schema-less │ │ │ ├── canonical.json │ │ │ ├── encoding.json │ │ │ ├── output.bin │ │ │ ├── schema.json │ │ │ └── size.txt │ ├── nightwatch │ │ ├── document.json │ │ └── schema-less │ │ │ ├── canonical.json │ │ │ ├── encoding.json │ │ │ ├── output.bin │ │ │ ├── schema.json │ │ │ └── size.txt │ ├── openweathermap │ │ ├── document.json │ │ └── schema-less │ │ │ ├── canonical.json │ │ │ ├── encoding.json │ │ │ ├── output.bin │ │ │ ├── schema.json │ │ │ └── size.txt │ ├── openweatherroadrisk │ │ ├── document.json │ │ └── schema-less │ │ │ ├── canonical.json │ │ │ ├── encoding.json │ │ │ ├── output.bin │ │ │ ├── schema.json │ │ │ └── size.txt │ ├── ox-test │ │ ├── document.json │ │ └── schema-less │ │ │ ├── canonical.json │ │ │ ├── encoding.json │ │ │ ├── output.bin │ │ │ ├── schema.json │ │ │ └── size.txt │ ├── packagejson │ │ ├── document.json │ │ └── schema-less │ │ │ ├── canonical.json │ │ │ ├── encoding.json │ │ │ ├── output.bin │ │ │ ├── schema.json │ │ │ └── size.txt │ ├── packagejsonlintrc │ │ ├── document.json │ │ └── schema-less │ │ │ ├── canonical.json │ │ │ ├── encoding.json │ │ │ ├── output.bin │ │ │ ├── schema.json │ │ │ └── size.txt │ ├── runner.cc │ ├── sapcloudsdkpipeline │ │ ├── document.json │ │ └── schema-less │ │ │ ├── canonical.json │ │ │ ├── encoding.json │ │ │ ├── output.bin │ │ │ ├── schema.json │ │ │ └── size.txt │ ├── travisnotifications │ │ ├── document.json │ │ └── schema-less │ │ │ ├── canonical.json │ │ │ ├── encoding.json │ │ │ ├── output.bin │ │ │ ├── schema.json │ │ │ └── size.txt │ ├── tslintbasic │ │ ├── document.json │ │ └── schema-less │ │ │ ├── canonical.json │ │ │ ├── encoding.json │ │ │ ├── output.bin │ │ │ ├── schema.json │ │ │ └── size.txt │ ├── tslintextend │ │ ├── document.json │ │ └── schema-less │ │ │ ├── canonical.json │ │ │ ├── encoding.json │ │ │ ├── output.bin │ │ │ ├── schema.json │ │ │ └── size.txt │ └── tslintmulti │ │ ├── document.json │ │ └── schema-less │ │ ├── canonical.json │ │ ├── encoding.json │ │ ├── output.bin │ │ ├── schema.json │ │ └── size.txt ├── numeric │ ├── CMakeLists.txt │ ├── closest_smallest_exponent_test.cc │ ├── divide_ceil_test.cc │ ├── divide_floor_test.cc │ ├── uint_max_test.cc │ └── zigzag_test.cc ├── packaging │ ├── CMakeLists.txt │ └── find_package │ │ ├── CMakeLists.txt │ │ └── hello.cc └── runtime │ ├── CMakeLists.txt │ ├── decode_any_test.cc │ ├── decode_array_test.cc │ ├── decode_integer_test.cc │ ├── decode_number_test.cc │ ├── decode_object_test.cc │ ├── decode_string_test.cc │ ├── decode_test.cc │ ├── decode_traits_test.cc │ ├── decode_utils.h │ ├── encode_any_test.cc │ ├── encode_array_test.cc │ ├── encode_cache_test.cc │ ├── encode_integer_test.cc │ ├── encode_number_test.cc │ ├── encode_object_test.cc │ ├── encode_real_test.cc │ ├── encode_string_test.cc │ ├── encode_test.cc │ ├── encode_traits_test.cc │ ├── encode_utils.h │ ├── encoding_traits_test.cc │ ├── input_stream_varint_test.cc │ ├── output_stream_varint_test.cc │ ├── v1_any_loader_test.cc │ ├── v1_array_loader_test.cc │ ├── v1_integer_loader_test.cc │ ├── v1_loader_test.cc │ ├── v1_number_loader_test.cc │ └── v1_string_loader_test.cc ├── vendor ├── alterschema │ ├── CMakeLists.txt │ ├── LICENSE │ ├── config.cmake.in │ └── src │ │ ├── engine │ │ ├── CMakeLists.txt │ │ ├── bundle.cc │ │ ├── include │ │ │ └── sourcemeta │ │ │ │ └── alterschema │ │ │ │ ├── engine.h │ │ │ │ ├── engine_bundle.h │ │ │ │ ├── engine_rule.h │ │ │ │ └── engine_transformer.h │ │ ├── rule.cc │ │ └── transformer.cc │ │ └── linter │ │ ├── CMakeLists.txt │ │ ├── antipattern │ │ ├── const_with_type.h │ │ ├── duplicate_enum_values.h │ │ ├── duplicate_required_values.h │ │ ├── enum_with_type.h │ │ ├── exclusive_maximum_number_and_maximum.h │ │ └── exclusive_minimum_number_and_minimum.h │ │ ├── desugar │ │ ├── boolean_true.h │ │ ├── const_as_enum.h │ │ ├── exclusive_maximum_integer_to_maximum.h │ │ ├── exclusive_minimum_integer_to_minimum.h │ │ ├── type_array_to_any_of_2020_12.h │ │ ├── type_boolean_as_enum.h │ │ └── type_null_as_enum.h │ │ ├── implicit │ │ ├── max_contains_covered_by_max_items.h │ │ ├── min_items_given_min_contains.h │ │ ├── min_items_implicit.h │ │ ├── min_length_implicit.h │ │ ├── min_properties_covered_by_required.h │ │ ├── min_properties_implicit.h │ │ ├── multiple_of_implicit.h │ │ ├── properties_implicit.h │ │ └── type_union_implicit.h │ │ ├── include │ │ └── sourcemeta │ │ │ └── alterschema │ │ │ └── linter.h │ │ ├── linter.cc │ │ ├── redundant │ │ ├── additional_properties_default.h │ │ ├── content_schema_default.h │ │ ├── dependencies_default.h │ │ ├── dependent_required_default.h │ │ ├── items_array_default.h │ │ ├── items_schema_default.h │ │ ├── pattern_properties_default.h │ │ ├── properties_default.h │ │ ├── unevaluated_items_default.h │ │ ├── unevaluated_properties_default.h │ │ ├── unsatisfiable_max_contains.h │ │ └── unsatisfiable_min_properties.h │ │ ├── simplify │ │ ├── dependencies_property_tautology.h │ │ ├── dependent_required_tautology.h │ │ ├── equal_numeric_bounds_to_enum.h │ │ ├── maximum_real_for_integer.h │ │ ├── minimum_real_for_integer.h │ │ └── single_type_array.h │ │ ├── superfluous │ │ ├── content_media_type_without_encoding.h │ │ ├── content_schema_without_media_type.h │ │ ├── drop_non_array_keywords_applicator_2019_09.h │ │ ├── drop_non_array_keywords_applicator_2020_12.h │ │ ├── drop_non_array_keywords_content_2019_09.h │ │ ├── drop_non_array_keywords_content_2020_12.h │ │ ├── drop_non_array_keywords_draft0.h │ │ ├── drop_non_array_keywords_draft1.h │ │ ├── drop_non_array_keywords_draft2.h │ │ ├── drop_non_array_keywords_draft3.h │ │ ├── drop_non_array_keywords_draft4.h │ │ ├── drop_non_array_keywords_draft6.h │ │ ├── drop_non_array_keywords_draft7.h │ │ ├── drop_non_array_keywords_format_2019_09.h │ │ ├── drop_non_array_keywords_format_2020_12.h │ │ ├── drop_non_array_keywords_unevaluated_2020_12.h │ │ ├── drop_non_array_keywords_validation_2019_09.h │ │ ├── drop_non_array_keywords_validation_2020_12.h │ │ ├── drop_non_boolean_keywords_applicator_2019_09.h │ │ ├── drop_non_boolean_keywords_applicator_2020_12.h │ │ ├── drop_non_boolean_keywords_content_2019_09.h │ │ ├── drop_non_boolean_keywords_content_2020_12.h │ │ ├── drop_non_boolean_keywords_draft0.h │ │ ├── drop_non_boolean_keywords_draft1.h │ │ ├── drop_non_boolean_keywords_draft2.h │ │ ├── drop_non_boolean_keywords_draft3.h │ │ ├── drop_non_boolean_keywords_draft4.h │ │ ├── drop_non_boolean_keywords_draft6.h │ │ ├── drop_non_boolean_keywords_draft7.h │ │ ├── drop_non_boolean_keywords_format_2019_09.h │ │ ├── drop_non_boolean_keywords_format_2020_12.h │ │ ├── drop_non_boolean_keywords_unevaluated_2020_12.h │ │ ├── drop_non_boolean_keywords_validation_2019_09.h │ │ ├── drop_non_boolean_keywords_validation_2020_12.h │ │ ├── drop_non_null_keywords_applicator_2019_09.h │ │ ├── drop_non_null_keywords_applicator_2020_12.h │ │ ├── drop_non_null_keywords_content_2019_09.h │ │ ├── drop_non_null_keywords_content_2020_12.h │ │ ├── drop_non_null_keywords_draft0.h │ │ ├── drop_non_null_keywords_draft1.h │ │ ├── drop_non_null_keywords_draft2.h │ │ ├── drop_non_null_keywords_draft3.h │ │ ├── drop_non_null_keywords_draft4.h │ │ ├── drop_non_null_keywords_draft6.h │ │ ├── drop_non_null_keywords_draft7.h │ │ ├── drop_non_null_keywords_format_2019_09.h │ │ ├── drop_non_null_keywords_format_2020_12.h │ │ ├── drop_non_null_keywords_unevaluated_2020_12.h │ │ ├── drop_non_null_keywords_validation_2019_09.h │ │ ├── drop_non_null_keywords_validation_2020_12.h │ │ ├── drop_non_numeric_keywords_applicator_2019_09.h │ │ ├── drop_non_numeric_keywords_applicator_2020_12.h │ │ ├── drop_non_numeric_keywords_content_2019_09.h │ │ ├── drop_non_numeric_keywords_content_2020_12.h │ │ ├── drop_non_numeric_keywords_draft0.h │ │ ├── drop_non_numeric_keywords_draft1.h │ │ ├── drop_non_numeric_keywords_draft2.h │ │ ├── drop_non_numeric_keywords_draft3.h │ │ ├── drop_non_numeric_keywords_draft4.h │ │ ├── drop_non_numeric_keywords_draft6.h │ │ ├── drop_non_numeric_keywords_draft7.h │ │ ├── drop_non_numeric_keywords_format_2019_09.h │ │ ├── drop_non_numeric_keywords_format_2020_12.h │ │ ├── drop_non_numeric_keywords_unevaluated_2020_12.h │ │ ├── drop_non_numeric_keywords_validation_2019_09.h │ │ ├── drop_non_numeric_keywords_validation_2020_12.h │ │ ├── drop_non_object_keywords_applicator_2019_09.h │ │ ├── drop_non_object_keywords_applicator_2020_12.h │ │ ├── drop_non_object_keywords_content_2019_09.h │ │ ├── drop_non_object_keywords_content_2020_12.h │ │ ├── drop_non_object_keywords_draft0.h │ │ ├── drop_non_object_keywords_draft1.h │ │ ├── drop_non_object_keywords_draft2.h │ │ ├── drop_non_object_keywords_draft3.h │ │ ├── drop_non_object_keywords_draft4.h │ │ ├── drop_non_object_keywords_draft6.h │ │ ├── drop_non_object_keywords_draft7.h │ │ ├── drop_non_object_keywords_format_2019_09.h │ │ ├── drop_non_object_keywords_format_2020_12.h │ │ ├── drop_non_object_keywords_unevaluated_2020_12.h │ │ ├── drop_non_object_keywords_validation_2019_09.h │ │ ├── drop_non_object_keywords_validation_2020_12.h │ │ ├── drop_non_string_keywords_applicator_2019_09.h │ │ ├── drop_non_string_keywords_applicator_2020_12.h │ │ ├── drop_non_string_keywords_draft0.h │ │ ├── drop_non_string_keywords_draft1.h │ │ ├── drop_non_string_keywords_draft2.h │ │ ├── drop_non_string_keywords_draft3.h │ │ ├── drop_non_string_keywords_draft4.h │ │ ├── drop_non_string_keywords_draft6.h │ │ ├── drop_non_string_keywords_draft7.h │ │ ├── drop_non_string_keywords_unevaluated_2020_12.h │ │ ├── drop_non_string_keywords_validation_2019_09.h │ │ ├── drop_non_string_keywords_validation_2020_12.h │ │ ├── duplicate_allof_branches.h │ │ ├── duplicate_anyof_branches.h │ │ ├── else_without_if.h │ │ ├── if_without_then_else.h │ │ ├── max_contains_without_contains.h │ │ ├── min_contains_without_contains.h │ │ └── then_without_if.h │ │ └── syntax_sugar │ │ └── enum_to_const.h ├── bootstrap.mask ├── bootstrap │ └── scss │ │ ├── _accordion.scss │ │ ├── _alert.scss │ │ ├── _badge.scss │ │ ├── _breadcrumb.scss │ │ ├── _button-group.scss │ │ ├── _buttons.scss │ │ ├── _card.scss │ │ ├── _carousel.scss │ │ ├── _close.scss │ │ ├── _containers.scss │ │ ├── _dropdown.scss │ │ ├── _forms.scss │ │ ├── _functions.scss │ │ ├── _grid.scss │ │ ├── _helpers.scss │ │ ├── _images.scss │ │ ├── _list-group.scss │ │ ├── _mixins.scss │ │ ├── _modal.scss │ │ ├── _nav.scss │ │ ├── _navbar.scss │ │ ├── _offcanvas.scss │ │ ├── _pagination.scss │ │ ├── _placeholders.scss │ │ ├── _popover.scss │ │ ├── _progress.scss │ │ ├── _reboot.scss │ │ ├── _root.scss │ │ ├── _spinners.scss │ │ ├── _tables.scss │ │ ├── _toasts.scss │ │ ├── _tooltip.scss │ │ ├── _transitions.scss │ │ ├── _type.scss │ │ ├── _utilities.scss │ │ ├── _variables.scss │ │ ├── bootstrap-grid.scss │ │ ├── bootstrap-reboot.scss │ │ ├── bootstrap-utilities.scss │ │ ├── bootstrap.scss │ │ ├── forms │ │ ├── _floating-labels.scss │ │ ├── _form-check.scss │ │ ├── _form-control.scss │ │ ├── _form-range.scss │ │ ├── _form-select.scss │ │ ├── _form-text.scss │ │ ├── _input-group.scss │ │ ├── _labels.scss │ │ └── _validation.scss │ │ ├── helpers │ │ ├── _clearfix.scss │ │ ├── _colored-links.scss │ │ ├── _position.scss │ │ ├── _ratio.scss │ │ ├── _stacks.scss │ │ ├── _stretched-link.scss │ │ ├── _text-truncation.scss │ │ ├── _visually-hidden.scss │ │ └── _vr.scss │ │ ├── mixins │ │ ├── _alert.scss │ │ ├── _backdrop.scss │ │ ├── _border-radius.scss │ │ ├── _box-shadow.scss │ │ ├── _breakpoints.scss │ │ ├── _buttons.scss │ │ ├── _caret.scss │ │ ├── _clearfix.scss │ │ ├── _color-scheme.scss │ │ ├── _container.scss │ │ ├── _deprecate.scss │ │ ├── _forms.scss │ │ ├── _gradients.scss │ │ ├── _grid.scss │ │ ├── _image.scss │ │ ├── _list-group.scss │ │ ├── _lists.scss │ │ ├── _pagination.scss │ │ ├── _reset-text.scss │ │ ├── _resize.scss │ │ ├── _table-variants.scss │ │ ├── _text-truncate.scss │ │ ├── _transition.scss │ │ ├── _utilities.scss │ │ └── _visually-hidden.scss │ │ ├── utilities │ │ └── _api.scss │ │ └── vendor │ │ └── _rfs.scss ├── core │ ├── CMakeLists.txt │ ├── LICENSE │ ├── cmake │ │ ├── FindBoostRegex.cmake │ │ ├── FindGoogleBenchmark.cmake │ │ ├── FindGoogleTest.cmake │ │ ├── FindUriParser.cmake │ │ ├── Findyaml.cmake │ │ ├── Sourcemeta.cmake │ │ └── common │ │ │ ├── commands │ │ │ └── copy-file.cmake │ │ │ ├── compiler │ │ │ ├── options.cmake │ │ │ ├── sanitizer.cmake │ │ │ └── simd.cmake │ │ │ ├── defaults.cmake │ │ │ ├── options │ │ │ └── enum.cmake │ │ │ ├── shim.cmake │ │ │ ├── targets │ │ │ ├── clang-format.cmake │ │ │ ├── clang-format.config │ │ │ ├── clang-tidy.cmake │ │ │ ├── clang-tidy.config │ │ │ ├── doxygen.cmake │ │ │ ├── executable.cmake │ │ │ ├── googlebenchmark.cmake │ │ │ ├── googletest.cmake │ │ │ ├── library.cmake │ │ │ └── shellcheck.cmake │ │ │ └── variables.cmake │ ├── config.cmake.in │ ├── src │ │ ├── core │ │ │ ├── json │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── grammar.h │ │ │ │ ├── include │ │ │ │ │ └── sourcemeta │ │ │ │ │ │ └── core │ │ │ │ │ │ ├── json.h │ │ │ │ │ │ ├── json_array.h │ │ │ │ │ │ ├── json_error.h │ │ │ │ │ │ ├── json_hash.h │ │ │ │ │ │ ├── json_object.h │ │ │ │ │ │ └── json_value.h │ │ │ │ ├── json.cc │ │ │ │ ├── json_value.cc │ │ │ │ ├── parser.h │ │ │ │ └── stringify.h │ │ │ ├── jsonl │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── grammar.h │ │ │ │ ├── include │ │ │ │ │ └── sourcemeta │ │ │ │ │ │ └── core │ │ │ │ │ │ ├── jsonl.h │ │ │ │ │ │ └── jsonl_iterator.h │ │ │ │ ├── iterator.cc │ │ │ │ └── jsonl.cc │ │ │ ├── jsonpointer │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── grammar.h │ │ │ │ ├── include │ │ │ │ │ └── sourcemeta │ │ │ │ │ │ └── core │ │ │ │ │ │ ├── jsonpointer.h │ │ │ │ │ │ ├── jsonpointer_error.h │ │ │ │ │ │ ├── jsonpointer_pointer.h │ │ │ │ │ │ ├── jsonpointer_position.h │ │ │ │ │ │ ├── jsonpointer_subpointer_walker.h │ │ │ │ │ │ ├── jsonpointer_template.h │ │ │ │ │ │ ├── jsonpointer_token.h │ │ │ │ │ │ └── jsonpointer_walker.h │ │ │ │ ├── jsonpointer.cc │ │ │ │ ├── parser.h │ │ │ │ ├── position.cc │ │ │ │ └── stringify.h │ │ │ ├── jsonschema │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── bundle.cc │ │ │ │ ├── frame.cc │ │ │ │ ├── include │ │ │ │ │ └── sourcemeta │ │ │ │ │ │ └── core │ │ │ │ │ │ ├── jsonschema.h │ │ │ │ │ │ ├── jsonschema_error.h │ │ │ │ │ │ ├── jsonschema_frame.h │ │ │ │ │ │ ├── jsonschema_resolver.h │ │ │ │ │ │ ├── jsonschema_transform.h │ │ │ │ │ │ ├── jsonschema_types.h │ │ │ │ │ │ └── jsonschema_walker.h │ │ │ │ ├── jsonschema.cc │ │ │ │ ├── official_resolver.cmake │ │ │ │ ├── official_resolver.in.cc │ │ │ │ ├── official_walker.cc │ │ │ │ ├── resolver.cc │ │ │ │ ├── transformer.cc │ │ │ │ └── walker.cc │ │ │ ├── regex │ │ │ │ ├── CMakeLists.txt │ │ │ │ └── include │ │ │ │ │ └── sourcemeta │ │ │ │ │ └── core │ │ │ │ │ └── regex.h │ │ │ ├── uri │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── escaping.cc │ │ │ │ ├── include │ │ │ │ │ └── sourcemeta │ │ │ │ │ │ └── core │ │ │ │ │ │ ├── uri.h │ │ │ │ │ │ └── uri_error.h │ │ │ │ └── uri.cc │ │ │ └── yaml │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── include │ │ │ │ └── sourcemeta │ │ │ │ │ └── core │ │ │ │ │ ├── yaml.h │ │ │ │ │ └── yaml_error.h │ │ │ │ └── yaml.cc │ │ └── extension │ │ │ └── alterschema │ │ │ ├── CMakeLists.txt │ │ │ ├── alterschema.cc │ │ │ ├── antipattern │ │ │ ├── const_with_type.h │ │ │ ├── duplicate_enum_values.h │ │ │ ├── duplicate_required_values.h │ │ │ ├── enum_with_type.h │ │ │ ├── exclusive_maximum_number_and_maximum.h │ │ │ └── exclusive_minimum_number_and_minimum.h │ │ │ ├── desugar │ │ │ ├── boolean_true.h │ │ │ ├── const_as_enum.h │ │ │ ├── exclusive_maximum_integer_to_maximum.h │ │ │ ├── exclusive_minimum_integer_to_minimum.h │ │ │ ├── type_array_to_any_of_2020_12.h │ │ │ ├── type_boolean_as_enum.h │ │ │ └── type_null_as_enum.h │ │ │ ├── implicit │ │ │ ├── max_contains_covered_by_max_items.h │ │ │ ├── min_items_given_min_contains.h │ │ │ ├── min_items_implicit.h │ │ │ ├── min_length_implicit.h │ │ │ ├── min_properties_covered_by_required.h │ │ │ ├── min_properties_implicit.h │ │ │ ├── multiple_of_implicit.h │ │ │ ├── properties_implicit.h │ │ │ └── type_union_implicit.h │ │ │ ├── include │ │ │ └── sourcemeta │ │ │ │ └── core │ │ │ │ └── alterschema.h │ │ │ ├── redundant │ │ │ ├── additional_properties_default.h │ │ │ ├── content_schema_default.h │ │ │ ├── dependencies_default.h │ │ │ ├── dependent_required_default.h │ │ │ ├── items_array_default.h │ │ │ ├── items_schema_default.h │ │ │ ├── pattern_properties_default.h │ │ │ ├── properties_default.h │ │ │ ├── unevaluated_items_default.h │ │ │ ├── unevaluated_properties_default.h │ │ │ ├── unsatisfiable_max_contains.h │ │ │ └── unsatisfiable_min_properties.h │ │ │ ├── simplify │ │ │ ├── dependencies_property_tautology.h │ │ │ ├── dependent_required_tautology.h │ │ │ ├── equal_numeric_bounds_to_enum.h │ │ │ ├── maximum_real_for_integer.h │ │ │ ├── minimum_real_for_integer.h │ │ │ └── single_type_array.h │ │ │ ├── superfluous │ │ │ ├── content_media_type_without_encoding.h │ │ │ ├── content_schema_without_media_type.h │ │ │ ├── drop_non_array_keywords_applicator_2019_09.h │ │ │ ├── drop_non_array_keywords_applicator_2020_12.h │ │ │ ├── drop_non_array_keywords_content_2019_09.h │ │ │ ├── drop_non_array_keywords_content_2020_12.h │ │ │ ├── drop_non_array_keywords_draft0.h │ │ │ ├── drop_non_array_keywords_draft1.h │ │ │ ├── drop_non_array_keywords_draft2.h │ │ │ ├── drop_non_array_keywords_draft3.h │ │ │ ├── drop_non_array_keywords_draft4.h │ │ │ ├── drop_non_array_keywords_draft6.h │ │ │ ├── drop_non_array_keywords_draft7.h │ │ │ ├── drop_non_array_keywords_format_2019_09.h │ │ │ ├── drop_non_array_keywords_format_2020_12.h │ │ │ ├── drop_non_array_keywords_unevaluated_2020_12.h │ │ │ ├── drop_non_array_keywords_validation_2019_09.h │ │ │ ├── drop_non_array_keywords_validation_2020_12.h │ │ │ ├── drop_non_boolean_keywords_applicator_2019_09.h │ │ │ ├── drop_non_boolean_keywords_applicator_2020_12.h │ │ │ ├── drop_non_boolean_keywords_content_2019_09.h │ │ │ ├── drop_non_boolean_keywords_content_2020_12.h │ │ │ ├── drop_non_boolean_keywords_draft0.h │ │ │ ├── drop_non_boolean_keywords_draft1.h │ │ │ ├── drop_non_boolean_keywords_draft2.h │ │ │ ├── drop_non_boolean_keywords_draft3.h │ │ │ ├── drop_non_boolean_keywords_draft4.h │ │ │ ├── drop_non_boolean_keywords_draft6.h │ │ │ ├── drop_non_boolean_keywords_draft7.h │ │ │ ├── drop_non_boolean_keywords_format_2019_09.h │ │ │ ├── drop_non_boolean_keywords_format_2020_12.h │ │ │ ├── drop_non_boolean_keywords_unevaluated_2020_12.h │ │ │ ├── drop_non_boolean_keywords_validation_2019_09.h │ │ │ ├── drop_non_boolean_keywords_validation_2020_12.h │ │ │ ├── drop_non_null_keywords_applicator_2019_09.h │ │ │ ├── drop_non_null_keywords_applicator_2020_12.h │ │ │ ├── drop_non_null_keywords_content_2019_09.h │ │ │ ├── drop_non_null_keywords_content_2020_12.h │ │ │ ├── drop_non_null_keywords_draft0.h │ │ │ ├── drop_non_null_keywords_draft1.h │ │ │ ├── drop_non_null_keywords_draft2.h │ │ │ ├── drop_non_null_keywords_draft3.h │ │ │ ├── drop_non_null_keywords_draft4.h │ │ │ ├── drop_non_null_keywords_draft6.h │ │ │ ├── drop_non_null_keywords_draft7.h │ │ │ ├── drop_non_null_keywords_format_2019_09.h │ │ │ ├── drop_non_null_keywords_format_2020_12.h │ │ │ ├── drop_non_null_keywords_unevaluated_2020_12.h │ │ │ ├── drop_non_null_keywords_validation_2019_09.h │ │ │ ├── drop_non_null_keywords_validation_2020_12.h │ │ │ ├── drop_non_numeric_keywords_applicator_2019_09.h │ │ │ ├── drop_non_numeric_keywords_applicator_2020_12.h │ │ │ ├── drop_non_numeric_keywords_content_2019_09.h │ │ │ ├── drop_non_numeric_keywords_content_2020_12.h │ │ │ ├── drop_non_numeric_keywords_draft0.h │ │ │ ├── drop_non_numeric_keywords_draft1.h │ │ │ ├── drop_non_numeric_keywords_draft2.h │ │ │ ├── drop_non_numeric_keywords_draft3.h │ │ │ ├── drop_non_numeric_keywords_draft4.h │ │ │ ├── drop_non_numeric_keywords_draft6.h │ │ │ ├── drop_non_numeric_keywords_draft7.h │ │ │ ├── drop_non_numeric_keywords_format_2019_09.h │ │ │ ├── drop_non_numeric_keywords_format_2020_12.h │ │ │ ├── drop_non_numeric_keywords_unevaluated_2020_12.h │ │ │ ├── drop_non_numeric_keywords_validation_2019_09.h │ │ │ ├── drop_non_numeric_keywords_validation_2020_12.h │ │ │ ├── drop_non_object_keywords_applicator_2019_09.h │ │ │ ├── drop_non_object_keywords_applicator_2020_12.h │ │ │ ├── drop_non_object_keywords_content_2019_09.h │ │ │ ├── drop_non_object_keywords_content_2020_12.h │ │ │ ├── drop_non_object_keywords_draft0.h │ │ │ ├── drop_non_object_keywords_draft1.h │ │ │ ├── drop_non_object_keywords_draft2.h │ │ │ ├── drop_non_object_keywords_draft3.h │ │ │ ├── drop_non_object_keywords_draft4.h │ │ │ ├── drop_non_object_keywords_draft6.h │ │ │ ├── drop_non_object_keywords_draft7.h │ │ │ ├── drop_non_object_keywords_format_2019_09.h │ │ │ ├── drop_non_object_keywords_format_2020_12.h │ │ │ ├── drop_non_object_keywords_unevaluated_2020_12.h │ │ │ ├── drop_non_object_keywords_validation_2019_09.h │ │ │ ├── drop_non_object_keywords_validation_2020_12.h │ │ │ ├── drop_non_string_keywords_applicator_2019_09.h │ │ │ ├── drop_non_string_keywords_applicator_2020_12.h │ │ │ ├── drop_non_string_keywords_draft0.h │ │ │ ├── drop_non_string_keywords_draft1.h │ │ │ ├── drop_non_string_keywords_draft2.h │ │ │ ├── drop_non_string_keywords_draft3.h │ │ │ ├── drop_non_string_keywords_draft4.h │ │ │ ├── drop_non_string_keywords_draft6.h │ │ │ ├── drop_non_string_keywords_draft7.h │ │ │ ├── drop_non_string_keywords_unevaluated_2020_12.h │ │ │ ├── drop_non_string_keywords_validation_2019_09.h │ │ │ ├── drop_non_string_keywords_validation_2020_12.h │ │ │ ├── duplicate_allof_branches.h │ │ │ ├── duplicate_anyof_branches.h │ │ │ ├── else_without_if.h │ │ │ ├── if_without_then_else.h │ │ │ ├── max_contains_without_contains.h │ │ │ ├── min_contains_without_contains.h │ │ │ └── then_without_if.h │ │ │ └── syntax_sugar │ │ │ └── enum_to_const.h │ └── vendor │ │ ├── boost-regex.mask │ │ ├── boost-regex │ │ └── include │ │ │ └── boost │ │ │ ├── cregex.hpp │ │ │ ├── regex.h │ │ │ ├── regex.hpp │ │ │ ├── regex │ │ │ ├── concepts.hpp │ │ │ ├── config.hpp │ │ │ ├── config │ │ │ │ ├── borland.hpp │ │ │ │ └── cwchar.hpp │ │ │ ├── icu.hpp │ │ │ ├── mfc.hpp │ │ │ ├── pattern_except.hpp │ │ │ ├── pending │ │ │ │ ├── object_cache.hpp │ │ │ │ ├── static_mutex.hpp │ │ │ │ └── unicode_iterator.hpp │ │ │ ├── regex_traits.hpp │ │ │ ├── user.hpp │ │ │ ├── v4 │ │ │ │ ├── basic_regex.hpp │ │ │ │ ├── basic_regex_creator.hpp │ │ │ │ ├── basic_regex_parser.hpp │ │ │ │ ├── c_regex_traits.hpp │ │ │ │ ├── char_regex_traits.hpp │ │ │ │ ├── cpp_regex_traits.hpp │ │ │ │ ├── cregex.hpp │ │ │ │ ├── error_type.hpp │ │ │ │ ├── icu.hpp │ │ │ │ ├── indexed_bit_flag.hpp │ │ │ │ ├── iterator_category.hpp │ │ │ │ ├── iterator_traits.hpp │ │ │ │ ├── match_flags.hpp │ │ │ │ ├── match_results.hpp │ │ │ │ ├── mem_block_cache.hpp │ │ │ │ ├── object_cache.hpp │ │ │ │ ├── pattern_except.hpp │ │ │ │ ├── perl_matcher.hpp │ │ │ │ ├── perl_matcher_common.hpp │ │ │ │ ├── perl_matcher_non_recursive.hpp │ │ │ │ ├── perl_matcher_recursive.hpp │ │ │ │ ├── primary_transform.hpp │ │ │ │ ├── protected_call.hpp │ │ │ │ ├── regbase.hpp │ │ │ │ ├── regex.hpp │ │ │ │ ├── regex_format.hpp │ │ │ │ ├── regex_fwd.hpp │ │ │ │ ├── regex_grep.hpp │ │ │ │ ├── regex_iterator.hpp │ │ │ │ ├── regex_match.hpp │ │ │ │ ├── regex_merge.hpp │ │ │ │ ├── regex_raw_buffer.hpp │ │ │ │ ├── regex_replace.hpp │ │ │ │ ├── regex_search.hpp │ │ │ │ ├── regex_split.hpp │ │ │ │ ├── regex_token_iterator.hpp │ │ │ │ ├── regex_traits.hpp │ │ │ │ ├── regex_traits_defaults.hpp │ │ │ │ ├── regex_workaround.hpp │ │ │ │ ├── states.hpp │ │ │ │ ├── sub_match.hpp │ │ │ │ ├── syntax_type.hpp │ │ │ │ ├── u32regex_iterator.hpp │ │ │ │ ├── u32regex_token_iterator.hpp │ │ │ │ ├── unicode_iterator.hpp │ │ │ │ └── w32_regex_traits.hpp │ │ │ └── v5 │ │ │ │ ├── basic_regex.hpp │ │ │ │ ├── basic_regex_creator.hpp │ │ │ │ ├── basic_regex_parser.hpp │ │ │ │ ├── c_regex_traits.hpp │ │ │ │ ├── char_regex_traits.hpp │ │ │ │ ├── cpp_regex_traits.hpp │ │ │ │ ├── cregex.hpp │ │ │ │ ├── error_type.hpp │ │ │ │ ├── icu.hpp │ │ │ │ ├── iterator_category.hpp │ │ │ │ ├── iterator_traits.hpp │ │ │ │ ├── match_flags.hpp │ │ │ │ ├── match_results.hpp │ │ │ │ ├── mem_block_cache.hpp │ │ │ │ ├── object_cache.hpp │ │ │ │ ├── pattern_except.hpp │ │ │ │ ├── perl_matcher.hpp │ │ │ │ ├── perl_matcher_common.hpp │ │ │ │ ├── perl_matcher_non_recursive.hpp │ │ │ │ ├── primary_transform.hpp │ │ │ │ ├── regbase.hpp │ │ │ │ ├── regex.hpp │ │ │ │ ├── regex_format.hpp │ │ │ │ ├── regex_fwd.hpp │ │ │ │ ├── regex_grep.hpp │ │ │ │ ├── regex_iterator.hpp │ │ │ │ ├── regex_match.hpp │ │ │ │ ├── regex_merge.hpp │ │ │ │ ├── regex_raw_buffer.hpp │ │ │ │ ├── regex_replace.hpp │ │ │ │ ├── regex_search.hpp │ │ │ │ ├── regex_split.hpp │ │ │ │ ├── regex_token_iterator.hpp │ │ │ │ ├── regex_traits.hpp │ │ │ │ ├── regex_traits_defaults.hpp │ │ │ │ ├── regex_workaround.hpp │ │ │ │ ├── states.hpp │ │ │ │ ├── sub_match.hpp │ │ │ │ ├── syntax_type.hpp │ │ │ │ ├── u32regex_iterator.hpp │ │ │ │ ├── u32regex_token_iterator.hpp │ │ │ │ ├── unicode_iterator.hpp │ │ │ │ └── w32_regex_traits.hpp │ │ │ └── regex_fwd.hpp │ │ ├── googlebenchmark │ │ ├── CMakeLists.txt │ │ ├── LICENSE │ │ ├── cmake │ │ │ ├── AddCXXCompilerFlag.cmake │ │ │ ├── CXXFeatureCheck.cmake │ │ │ ├── Config.cmake.in │ │ │ ├── GetGitVersion.cmake │ │ │ ├── GoogleTest.cmake │ │ │ ├── GoogleTest.cmake.in │ │ │ ├── Modules │ │ │ │ ├── FindLLVMAr.cmake │ │ │ │ ├── FindLLVMNm.cmake │ │ │ │ ├── FindLLVMRanLib.cmake │ │ │ │ └── FindPFM.cmake │ │ │ ├── benchmark.pc.in │ │ │ ├── benchmark_main.pc.in │ │ │ ├── gnu_posix_regex.cpp │ │ │ ├── llvm-toolchain.cmake │ │ │ ├── posix_regex.cpp │ │ │ ├── pthread_affinity.cpp │ │ │ ├── split_list.cmake │ │ │ ├── std_regex.cpp │ │ │ ├── steady_clock.cpp │ │ │ └── thread_safety_attributes.cpp │ │ ├── include │ │ │ └── benchmark │ │ │ │ ├── benchmark.h │ │ │ │ └── export.h │ │ └── src │ │ │ ├── CMakeLists.txt │ │ │ ├── arraysize.h │ │ │ ├── benchmark.cc │ │ │ ├── benchmark_api_internal.cc │ │ │ ├── benchmark_api_internal.h │ │ │ ├── benchmark_main.cc │ │ │ ├── benchmark_name.cc │ │ │ ├── benchmark_register.cc │ │ │ ├── benchmark_register.h │ │ │ ├── benchmark_runner.cc │ │ │ ├── benchmark_runner.h │ │ │ ├── check.cc │ │ │ ├── check.h │ │ │ ├── colorprint.cc │ │ │ ├── colorprint.h │ │ │ ├── commandlineflags.cc │ │ │ ├── commandlineflags.h │ │ │ ├── complexity.cc │ │ │ ├── complexity.h │ │ │ ├── console_reporter.cc │ │ │ ├── counter.cc │ │ │ ├── counter.h │ │ │ ├── csv_reporter.cc │ │ │ ├── cycleclock.h │ │ │ ├── internal_macros.h │ │ │ ├── json_reporter.cc │ │ │ ├── log.h │ │ │ ├── mutex.h │ │ │ ├── perf_counters.cc │ │ │ ├── perf_counters.h │ │ │ ├── re.h │ │ │ ├── reporter.cc │ │ │ ├── statistics.cc │ │ │ ├── statistics.h │ │ │ ├── string_util.cc │ │ │ ├── string_util.h │ │ │ ├── sysinfo.cc │ │ │ ├── thread_manager.h │ │ │ ├── thread_timer.h │ │ │ ├── timers.cc │ │ │ └── timers.h │ │ ├── googletest │ │ ├── CMakeLists.txt │ │ ├── LICENSE │ │ ├── googlemock │ │ │ ├── CMakeLists.txt │ │ │ ├── cmake │ │ │ │ ├── gmock.pc.in │ │ │ │ └── gmock_main.pc.in │ │ │ ├── include │ │ │ │ └── gmock │ │ │ │ │ ├── gmock-actions.h │ │ │ │ │ ├── gmock-cardinalities.h │ │ │ │ │ ├── gmock-function-mocker.h │ │ │ │ │ ├── gmock-matchers.h │ │ │ │ │ ├── gmock-more-actions.h │ │ │ │ │ ├── gmock-more-matchers.h │ │ │ │ │ ├── gmock-nice-strict.h │ │ │ │ │ ├── gmock-spec-builders.h │ │ │ │ │ ├── gmock.h │ │ │ │ │ └── internal │ │ │ │ │ ├── custom │ │ │ │ │ ├── README.md │ │ │ │ │ ├── gmock-generated-actions.h │ │ │ │ │ ├── gmock-matchers.h │ │ │ │ │ └── gmock-port.h │ │ │ │ │ ├── gmock-internal-utils.h │ │ │ │ │ ├── gmock-port.h │ │ │ │ │ └── gmock-pp.h │ │ │ └── src │ │ │ │ ├── gmock-all.cc │ │ │ │ ├── gmock-cardinalities.cc │ │ │ │ ├── gmock-internal-utils.cc │ │ │ │ ├── gmock-matchers.cc │ │ │ │ ├── gmock-spec-builders.cc │ │ │ │ ├── gmock.cc │ │ │ │ └── gmock_main.cc │ │ └── googletest │ │ │ ├── CMakeLists.txt │ │ │ ├── cmake │ │ │ ├── Config.cmake.in │ │ │ ├── gtest.pc.in │ │ │ ├── gtest_main.pc.in │ │ │ ├── internal_utils.cmake │ │ │ └── libgtest.la.in │ │ │ ├── include │ │ │ └── gtest │ │ │ │ ├── gtest-assertion-result.h │ │ │ │ ├── gtest-death-test.h │ │ │ │ ├── gtest-matchers.h │ │ │ │ ├── gtest-message.h │ │ │ │ ├── gtest-param-test.h │ │ │ │ ├── gtest-printers.h │ │ │ │ ├── gtest-spi.h │ │ │ │ ├── gtest-test-part.h │ │ │ │ ├── gtest-typed-test.h │ │ │ │ ├── gtest.h │ │ │ │ ├── gtest_pred_impl.h │ │ │ │ ├── gtest_prod.h │ │ │ │ └── internal │ │ │ │ ├── custom │ │ │ │ ├── README.md │ │ │ │ ├── gtest-port.h │ │ │ │ ├── gtest-printers.h │ │ │ │ └── gtest.h │ │ │ │ ├── gtest-death-test-internal.h │ │ │ │ ├── gtest-filepath.h │ │ │ │ ├── gtest-internal.h │ │ │ │ ├── gtest-param-util.h │ │ │ │ ├── gtest-port-arch.h │ │ │ │ ├── gtest-port.h │ │ │ │ ├── gtest-string.h │ │ │ │ └── gtest-type-util.h │ │ │ └── src │ │ │ ├── gtest-all.cc │ │ │ ├── gtest-assertion-result.cc │ │ │ ├── gtest-death-test.cc │ │ │ ├── gtest-filepath.cc │ │ │ ├── gtest-internal-inl.h │ │ │ ├── gtest-matchers.cc │ │ │ ├── gtest-port.cc │ │ │ ├── gtest-printers.cc │ │ │ ├── gtest-test-part.cc │ │ │ ├── gtest-typed-test.cc │ │ │ ├── gtest.cc │ │ │ └── gtest_main.cc │ │ ├── jsonschema-2019-09 │ │ ├── hyper-schema.json │ │ ├── links.json │ │ ├── meta │ │ │ ├── applicator.json │ │ │ ├── content.json │ │ │ ├── core.json │ │ │ ├── format.json │ │ │ ├── hyper-schema.json │ │ │ ├── meta-data.json │ │ │ └── validation.json │ │ ├── output │ │ │ ├── hyper-schema.json │ │ │ └── schema.json │ │ └── schema.json │ │ ├── jsonschema-2020-12 │ │ ├── hyper-schema.json │ │ ├── links.json │ │ ├── meta │ │ │ ├── applicator.json │ │ │ ├── content.json │ │ │ ├── core.json │ │ │ ├── format-annotation.json │ │ │ ├── format-assertion.json │ │ │ ├── hyper-schema.json │ │ │ ├── meta-data.json │ │ │ ├── unevaluated.json │ │ │ └── validation.json │ │ ├── output │ │ │ └── schema.json │ │ └── schema.json │ │ ├── jsonschema-draft0 │ │ ├── hyper-schema.json │ │ ├── json-ref.json │ │ ├── links.json │ │ └── schema.json │ │ ├── jsonschema-draft1 │ │ ├── hyper-schema.json │ │ ├── json-ref.json │ │ ├── links.json │ │ └── schema.json │ │ ├── jsonschema-draft2 │ │ ├── hyper-schema.json │ │ ├── json-ref.json │ │ ├── links.json │ │ └── schema.json │ │ ├── jsonschema-draft3 │ │ ├── hyper-schema.json │ │ ├── json-ref.json │ │ ├── links.json │ │ └── schema.json │ │ ├── jsonschema-draft4 │ │ ├── hyper-schema.json │ │ ├── links.json │ │ └── schema.json │ │ ├── jsonschema-draft6 │ │ ├── hyper-schema.json │ │ ├── links.json │ │ └── schema.json │ │ ├── jsonschema-draft7 │ │ ├── hyper-schema-output.json │ │ ├── hyper-schema.json │ │ ├── links.json │ │ └── schema.json │ │ ├── uriparser │ │ ├── COPYING │ │ ├── include │ │ │ └── uriparser │ │ │ │ ├── Uri.h │ │ │ │ ├── UriBase.h │ │ │ │ ├── UriDefsAnsi.h │ │ │ │ ├── UriDefsConfig.h │ │ │ │ ├── UriDefsUnicode.h │ │ │ │ └── UriIp4.h │ │ └── src │ │ │ ├── UriCommon.c │ │ │ ├── UriCommon.h │ │ │ ├── UriCompare.c │ │ │ ├── UriConfig.h.in │ │ │ ├── UriEscape.c │ │ │ ├── UriFile.c │ │ │ ├── UriIp4.c │ │ │ ├── UriIp4Base.c │ │ │ ├── UriIp4Base.h │ │ │ ├── UriMemory.c │ │ │ ├── UriMemory.h │ │ │ ├── UriNormalize.c │ │ │ ├── UriNormalizeBase.c │ │ │ ├── UriNormalizeBase.h │ │ │ ├── UriParse.c │ │ │ ├── UriParseBase.c │ │ │ ├── UriParseBase.h │ │ │ ├── UriQuery.c │ │ │ ├── UriRecompose.c │ │ │ ├── UriResolve.c │ │ │ └── UriShorten.c │ │ ├── yaml.mask │ │ └── yaml │ │ ├── License │ │ ├── include │ │ └── yaml.h │ │ └── src │ │ ├── api.c │ │ ├── dumper.c │ │ ├── emitter.c │ │ ├── loader.c │ │ ├── parser.c │ │ ├── reader.c │ │ ├── scanner.c │ │ ├── writer.c │ │ └── yaml_private.h ├── noa │ ├── CMakeLists.txt │ ├── LICENSE │ ├── cmake │ │ ├── FindBoostRegex.cmake │ │ ├── FindGoogleBenchmark.cmake │ │ ├── FindGoogleTest.cmake │ │ ├── noa.cmake │ │ └── noa │ │ │ ├── commands │ │ │ └── copy-file.cmake │ │ │ ├── compiler │ │ │ ├── options.cmake │ │ │ └── sanitizer.cmake │ │ │ ├── defaults.cmake │ │ │ ├── options │ │ │ └── enum.cmake │ │ │ ├── shim.cmake │ │ │ ├── targets │ │ │ ├── clang-format.cmake │ │ │ ├── clang-format.config │ │ │ ├── clang-tidy.cmake │ │ │ ├── clang-tidy.config │ │ │ ├── doxygen.cmake │ │ │ ├── executable.cmake │ │ │ ├── googlebenchmark.cmake │ │ │ ├── googletest.cmake │ │ │ ├── library.cmake │ │ │ └── shellcheck.cmake │ │ │ └── variables.cmake │ ├── config.cmake.in │ ├── src │ │ ├── flat_map │ │ │ ├── CMakeLists.txt │ │ │ └── include │ │ │ │ └── sourcemeta │ │ │ │ └── noa │ │ │ │ └── flat_map.h │ │ ├── hash │ │ │ ├── CMakeLists.txt │ │ │ └── include │ │ │ │ └── sourcemeta │ │ │ │ └── noa │ │ │ │ └── hash.h │ │ └── regex │ │ │ ├── CMakeLists.txt │ │ │ └── include │ │ │ └── sourcemeta │ │ │ └── noa │ │ │ └── regex.h │ └── vendor │ │ ├── boost-regex │ │ └── include │ │ │ └── boost │ │ │ ├── cregex.hpp │ │ │ ├── regex.h │ │ │ ├── regex.hpp │ │ │ ├── regex │ │ │ ├── concepts.hpp │ │ │ ├── config.hpp │ │ │ ├── config │ │ │ │ ├── borland.hpp │ │ │ │ └── cwchar.hpp │ │ │ ├── icu.hpp │ │ │ ├── mfc.hpp │ │ │ ├── pattern_except.hpp │ │ │ ├── pending │ │ │ │ ├── object_cache.hpp │ │ │ │ ├── static_mutex.hpp │ │ │ │ └── unicode_iterator.hpp │ │ │ ├── regex_traits.hpp │ │ │ ├── user.hpp │ │ │ ├── v4 │ │ │ │ ├── basic_regex.hpp │ │ │ │ ├── basic_regex_creator.hpp │ │ │ │ ├── basic_regex_parser.hpp │ │ │ │ ├── c_regex_traits.hpp │ │ │ │ ├── char_regex_traits.hpp │ │ │ │ ├── cpp_regex_traits.hpp │ │ │ │ ├── cregex.hpp │ │ │ │ ├── error_type.hpp │ │ │ │ ├── icu.hpp │ │ │ │ ├── indexed_bit_flag.hpp │ │ │ │ ├── iterator_category.hpp │ │ │ │ ├── iterator_traits.hpp │ │ │ │ ├── match_flags.hpp │ │ │ │ ├── match_results.hpp │ │ │ │ ├── mem_block_cache.hpp │ │ │ │ ├── object_cache.hpp │ │ │ │ ├── pattern_except.hpp │ │ │ │ ├── perl_matcher.hpp │ │ │ │ ├── perl_matcher_common.hpp │ │ │ │ ├── perl_matcher_non_recursive.hpp │ │ │ │ ├── perl_matcher_recursive.hpp │ │ │ │ ├── primary_transform.hpp │ │ │ │ ├── protected_call.hpp │ │ │ │ ├── regbase.hpp │ │ │ │ ├── regex.hpp │ │ │ │ ├── regex_format.hpp │ │ │ │ ├── regex_fwd.hpp │ │ │ │ ├── regex_grep.hpp │ │ │ │ ├── regex_iterator.hpp │ │ │ │ ├── regex_match.hpp │ │ │ │ ├── regex_merge.hpp │ │ │ │ ├── regex_raw_buffer.hpp │ │ │ │ ├── regex_replace.hpp │ │ │ │ ├── regex_search.hpp │ │ │ │ ├── regex_split.hpp │ │ │ │ ├── regex_token_iterator.hpp │ │ │ │ ├── regex_traits.hpp │ │ │ │ ├── regex_traits_defaults.hpp │ │ │ │ ├── regex_workaround.hpp │ │ │ │ ├── states.hpp │ │ │ │ ├── sub_match.hpp │ │ │ │ ├── syntax_type.hpp │ │ │ │ ├── u32regex_iterator.hpp │ │ │ │ ├── u32regex_token_iterator.hpp │ │ │ │ ├── unicode_iterator.hpp │ │ │ │ └── w32_regex_traits.hpp │ │ │ └── v5 │ │ │ │ ├── basic_regex.hpp │ │ │ │ ├── basic_regex_creator.hpp │ │ │ │ ├── basic_regex_parser.hpp │ │ │ │ ├── c_regex_traits.hpp │ │ │ │ ├── char_regex_traits.hpp │ │ │ │ ├── cpp_regex_traits.hpp │ │ │ │ ├── cregex.hpp │ │ │ │ ├── error_type.hpp │ │ │ │ ├── icu.hpp │ │ │ │ ├── iterator_category.hpp │ │ │ │ ├── iterator_traits.hpp │ │ │ │ ├── match_flags.hpp │ │ │ │ ├── match_results.hpp │ │ │ │ ├── mem_block_cache.hpp │ │ │ │ ├── object_cache.hpp │ │ │ │ ├── pattern_except.hpp │ │ │ │ ├── perl_matcher.hpp │ │ │ │ ├── perl_matcher_common.hpp │ │ │ │ ├── perl_matcher_non_recursive.hpp │ │ │ │ ├── primary_transform.hpp │ │ │ │ ├── regbase.hpp │ │ │ │ ├── regex.hpp │ │ │ │ ├── regex_format.hpp │ │ │ │ ├── regex_fwd.hpp │ │ │ │ ├── regex_grep.hpp │ │ │ │ ├── regex_iterator.hpp │ │ │ │ ├── regex_match.hpp │ │ │ │ ├── regex_merge.hpp │ │ │ │ ├── regex_raw_buffer.hpp │ │ │ │ ├── regex_replace.hpp │ │ │ │ ├── regex_search.hpp │ │ │ │ ├── regex_split.hpp │ │ │ │ ├── regex_token_iterator.hpp │ │ │ │ ├── regex_traits.hpp │ │ │ │ ├── regex_traits_defaults.hpp │ │ │ │ ├── regex_workaround.hpp │ │ │ │ ├── states.hpp │ │ │ │ ├── sub_match.hpp │ │ │ │ ├── syntax_type.hpp │ │ │ │ ├── u32regex_iterator.hpp │ │ │ │ ├── u32regex_token_iterator.hpp │ │ │ │ ├── unicode_iterator.hpp │ │ │ │ └── w32_regex_traits.hpp │ │ │ └── regex_fwd.hpp │ │ ├── googlebenchmark │ │ ├── CMakeLists.txt │ │ ├── LICENSE │ │ ├── cmake │ │ │ ├── AddCXXCompilerFlag.cmake │ │ │ ├── CXXFeatureCheck.cmake │ │ │ ├── Config.cmake.in │ │ │ ├── GetGitVersion.cmake │ │ │ ├── GoogleTest.cmake │ │ │ ├── GoogleTest.cmake.in │ │ │ ├── Modules │ │ │ │ ├── FindLLVMAr.cmake │ │ │ │ ├── FindLLVMNm.cmake │ │ │ │ ├── FindLLVMRanLib.cmake │ │ │ │ └── FindPFM.cmake │ │ │ ├── benchmark.pc.in │ │ │ ├── benchmark_main.pc.in │ │ │ ├── gnu_posix_regex.cpp │ │ │ ├── llvm-toolchain.cmake │ │ │ ├── posix_regex.cpp │ │ │ ├── pthread_affinity.cpp │ │ │ ├── split_list.cmake │ │ │ ├── std_regex.cpp │ │ │ ├── steady_clock.cpp │ │ │ └── thread_safety_attributes.cpp │ │ ├── include │ │ │ └── benchmark │ │ │ │ ├── benchmark.h │ │ │ │ └── export.h │ │ └── src │ │ │ ├── CMakeLists.txt │ │ │ ├── arraysize.h │ │ │ ├── benchmark.cc │ │ │ ├── benchmark_api_internal.cc │ │ │ ├── benchmark_api_internal.h │ │ │ ├── benchmark_main.cc │ │ │ ├── benchmark_name.cc │ │ │ ├── benchmark_register.cc │ │ │ ├── benchmark_register.h │ │ │ ├── benchmark_runner.cc │ │ │ ├── benchmark_runner.h │ │ │ ├── check.cc │ │ │ ├── check.h │ │ │ ├── colorprint.cc │ │ │ ├── colorprint.h │ │ │ ├── commandlineflags.cc │ │ │ ├── commandlineflags.h │ │ │ ├── complexity.cc │ │ │ ├── complexity.h │ │ │ ├── console_reporter.cc │ │ │ ├── counter.cc │ │ │ ├── counter.h │ │ │ ├── csv_reporter.cc │ │ │ ├── cycleclock.h │ │ │ ├── internal_macros.h │ │ │ ├── json_reporter.cc │ │ │ ├── log.h │ │ │ ├── mutex.h │ │ │ ├── perf_counters.cc │ │ │ ├── perf_counters.h │ │ │ ├── re.h │ │ │ ├── reporter.cc │ │ │ ├── statistics.cc │ │ │ ├── statistics.h │ │ │ ├── string_util.cc │ │ │ ├── string_util.h │ │ │ ├── sysinfo.cc │ │ │ ├── thread_manager.h │ │ │ ├── thread_timer.h │ │ │ ├── timers.cc │ │ │ └── timers.h │ │ ├── googletest │ │ ├── CMakeLists.txt │ │ ├── LICENSE │ │ ├── googlemock │ │ │ ├── CMakeLists.txt │ │ │ ├── cmake │ │ │ │ ├── gmock.pc.in │ │ │ │ └── gmock_main.pc.in │ │ │ ├── include │ │ │ │ └── gmock │ │ │ │ │ ├── gmock-actions.h │ │ │ │ │ ├── gmock-cardinalities.h │ │ │ │ │ ├── gmock-function-mocker.h │ │ │ │ │ ├── gmock-matchers.h │ │ │ │ │ ├── gmock-more-actions.h │ │ │ │ │ ├── gmock-more-matchers.h │ │ │ │ │ ├── gmock-nice-strict.h │ │ │ │ │ ├── gmock-spec-builders.h │ │ │ │ │ ├── gmock.h │ │ │ │ │ └── internal │ │ │ │ │ ├── custom │ │ │ │ │ ├── README.md │ │ │ │ │ ├── gmock-generated-actions.h │ │ │ │ │ ├── gmock-matchers.h │ │ │ │ │ └── gmock-port.h │ │ │ │ │ ├── gmock-internal-utils.h │ │ │ │ │ ├── gmock-port.h │ │ │ │ │ └── gmock-pp.h │ │ │ └── src │ │ │ │ ├── gmock-all.cc │ │ │ │ ├── gmock-cardinalities.cc │ │ │ │ ├── gmock-internal-utils.cc │ │ │ │ ├── gmock-matchers.cc │ │ │ │ ├── gmock-spec-builders.cc │ │ │ │ ├── gmock.cc │ │ │ │ └── gmock_main.cc │ │ └── googletest │ │ │ ├── CMakeLists.txt │ │ │ ├── cmake │ │ │ ├── Config.cmake.in │ │ │ ├── gtest.pc.in │ │ │ ├── gtest_main.pc.in │ │ │ ├── internal_utils.cmake │ │ │ └── libgtest.la.in │ │ │ ├── include │ │ │ └── gtest │ │ │ │ ├── gtest-assertion-result.h │ │ │ │ ├── gtest-death-test.h │ │ │ │ ├── gtest-matchers.h │ │ │ │ ├── gtest-message.h │ │ │ │ ├── gtest-param-test.h │ │ │ │ ├── gtest-printers.h │ │ │ │ ├── gtest-spi.h │ │ │ │ ├── gtest-test-part.h │ │ │ │ ├── gtest-typed-test.h │ │ │ │ ├── gtest.h │ │ │ │ ├── gtest_pred_impl.h │ │ │ │ ├── gtest_prod.h │ │ │ │ └── internal │ │ │ │ ├── custom │ │ │ │ ├── README.md │ │ │ │ ├── gtest-port.h │ │ │ │ ├── gtest-printers.h │ │ │ │ └── gtest.h │ │ │ │ ├── gtest-death-test-internal.h │ │ │ │ ├── gtest-filepath.h │ │ │ │ ├── gtest-internal.h │ │ │ │ ├── gtest-param-util.h │ │ │ │ ├── gtest-port-arch.h │ │ │ │ ├── gtest-port.h │ │ │ │ ├── gtest-string.h │ │ │ │ └── gtest-type-util.h │ │ │ └── src │ │ │ ├── gtest-all.cc │ │ │ ├── gtest-assertion-result.cc │ │ │ ├── gtest-death-test.cc │ │ │ ├── gtest-filepath.cc │ │ │ ├── gtest-internal-inl.h │ │ │ ├── gtest-matchers.cc │ │ │ ├── gtest-port.cc │ │ │ ├── gtest-printers.cc │ │ │ ├── gtest-test-part.cc │ │ │ ├── gtest-typed-test.cc │ │ │ ├── gtest.cc │ │ │ └── gtest_main.cc │ │ └── vendorpull │ │ ├── LICENSE │ │ └── pull └── vendorpull │ ├── LICENSE │ └── pull └── vendorpull.mask /.ackrc: -------------------------------------------------------------------------------- 1 | --ignore-dir=vendor 2 | --ignore-dir=build 3 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # editorconfig.org 2 | root = true 3 | 4 | [*] 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | charset = utf-8 9 | trim_trailing_whitespace = true 10 | insert_final_newline = true 11 | 12 | [Makefile] 13 | indent_style = tab 14 | 15 | [*.mk] 16 | indent_style = tab 17 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | /vendor/** linguist-generated=true 2 | *.bin binary diff=hex 3 | * -text 4 | -------------------------------------------------------------------------------- /.github/workflows/website-build.yml: -------------------------------------------------------------------------------- 1 | name: website 2 | on: 3 | pull_request: 4 | 5 | concurrency: 6 | group: website-build-${{ github.ref }} 7 | cancel-in-progress: true 8 | 9 | jobs: 10 | build: 11 | runs-on: ubuntu-latest 12 | steps: 13 | - name: Checkout 14 | uses: actions/checkout@v3 15 | - run: sudo apt update 16 | - run: sudo apt-get install --yes doxygen 17 | - run: > 18 | cmake -S . -B ./build 19 | -DCMAKE_BUILD_TYPE:STRING=Release 20 | -DJSONBINPACK_NUMERIC:BOOL=OFF 21 | -DJSONBINPACK_RUNTIME:BOOL=OFF 22 | -DJSONBINPACK_COMPILER:BOOL=OFF 23 | -DJSONBINPACK_TESTS:BOOL=OFF 24 | -DJSONBINPACK_DOCS:BOOL=ON 25 | - run: cmake --build ./build --config Release --target doxygen 26 | -------------------------------------------------------------------------------- /Brewfile: -------------------------------------------------------------------------------- 1 | brew "cmake" 2 | brew "gcc@13" 3 | -------------------------------------------------------------------------------- /DEPENDENCIES: -------------------------------------------------------------------------------- 1 | vendorpull https://github.com/sourcemeta/vendorpull 70342aaf458e6cb80baeb5b718901075fc42ede6 2 | core https://github.com/sourcemeta/core 1aa4a617548bf482420e8757ecd10308cddae7a2 3 | bootstrap https://github.com/twbs/bootstrap 1a6fdfae6be09b09eaced8f0e442ca6f7680a61e 4 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | This software is dual-licensed: you can redistribute it and/or modify it under 2 | the terms of the GNU Affero General Public License as published by the Free 3 | Software Foundation, either version 3 of the License, or (at your option) any 4 | later version. For the terms of this license, see 5 | . 6 | 7 | You are free to use this software under the terms of the GNU Affero General 8 | Public License WITHOUT ANY WARRANTY; without even the implied warranty of 9 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 10 | 11 | Alternatively, you can use this software under a commercial license, as set out 12 | in . 13 | -------------------------------------------------------------------------------- /assets/artwork.sketch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sourcemeta/jsonbinpack/c0503bd6f27f2bcbfe547d923713161d771ca0c4/assets/artwork.sketch -------------------------------------------------------------------------------- /assets/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sourcemeta/jsonbinpack/c0503bd6f27f2bcbfe547d923713161d771ca0c4/assets/banner.png -------------------------------------------------------------------------------- /assets/example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sourcemeta/jsonbinpack/c0503bd6f27f2bcbfe547d923713161d771ca0c4/assets/example.png -------------------------------------------------------------------------------- /assets/timeline.sketch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sourcemeta/jsonbinpack/c0503bd6f27f2bcbfe547d923713161d771ca0c4/assets/timeline.sketch -------------------------------------------------------------------------------- /cmake/FindCore.cmake: -------------------------------------------------------------------------------- 1 | if(NOT Core_FOUND) 2 | if(JSONBINPACK_INSTALL) 3 | set(SOURCEMETA_CORE_INSTALL ON CACHE BOOL "enable installation") 4 | else() 5 | set(SOURCEMETA_CORE_INSTALL OFF CACHE BOOL "disable installation") 6 | endif() 7 | 8 | set(SOURCEMETA_CORE_JSONL OFF CACHE BOOL "disable JSONL support") 9 | set(SOURCEMETA_CORE_YAML OFF CACHE BOOL "disable YAML support") 10 | set(SOURCEMETA_CORE_CONTRIB_GOOGLETEST ${JSONBINPACK_TESTS} CACHE BOOL "GoogleTest") 11 | set(SOURCEMETA_CORE_CONTRIB_GOOGLEBENCHMARK OFF CACHE BOOL "GoogleBenchmark") 12 | add_subdirectory("${PROJECT_SOURCE_DIR}/vendor/core") 13 | include(Sourcemeta) 14 | set(Core_FOUND ON) 15 | endif() 16 | -------------------------------------------------------------------------------- /doxygen/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sourcemeta/jsonbinpack/c0503bd6f27f2bcbfe547d923713161d771ca0c4/doxygen/logo.png -------------------------------------------------------------------------------- /src/compiler/encoding.h: -------------------------------------------------------------------------------- 1 | #ifndef SOURCEMETA_JSONBINPACK_COMPILER_ENCODING_H_ 2 | #define SOURCEMETA_JSONBINPACK_COMPILER_ENCODING_H_ 3 | 4 | #include 5 | #include 6 | 7 | namespace sourcemeta::jsonbinpack { 8 | 9 | constexpr auto ENCODING_V1{"tag:sourcemeta.com,2024:jsonbinpack/encoding/v1"}; 10 | 11 | inline auto make_resolver(const sourcemeta::core::SchemaResolver &fallback) 12 | -> auto { 13 | return [&fallback](std::string_view identifier) 14 | -> std::optional { 15 | if (identifier == ENCODING_V1) { 16 | return sourcemeta::core::parse_json(R"JSON({ 17 | "$id": "tag:sourcemeta.com,2024:jsonbinpack/encoding/v1", 18 | "$schema": "https://json-schema.org/draft/2020-12/schema", 19 | "$vocabulary": { 20 | "https://json-schema.org/draft/2020-12/vocab/core": true, 21 | "tag:sourcemeta.com,2024:jsonbinpack/encoding/v1": true 22 | } 23 | })JSON"); 24 | } else { 25 | return fallback(identifier); 26 | } 27 | }; 28 | } 29 | 30 | } // namespace sourcemeta::jsonbinpack 31 | 32 | #endif 33 | -------------------------------------------------------------------------------- /src/numeric/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | sourcemeta_library(NAMESPACE sourcemeta PROJECT jsonbinpack NAME numeric 2 | FOLDER "JSON BinPack/Numeric" 3 | PRIVATE_HEADERS integral.h real.h zigzag.h) 4 | 5 | if(JSONBINPACK_INSTALL) 6 | sourcemeta_library_install(NAMESPACE sourcemeta PROJECT jsonbinpack NAME numeric) 7 | endif() 8 | -------------------------------------------------------------------------------- /src/numeric/include/sourcemeta/jsonbinpack/numeric.h: -------------------------------------------------------------------------------- 1 | #ifndef SOURCEMETA_JSONBINPACK_NUMERIC_H_ 2 | #define SOURCEMETA_JSONBINPACK_NUMERIC_H_ 3 | 4 | /// @defgroup numeric Numeric 5 | /// @brief A comprehensive numeric library for JSON BinPack 6 | /// 7 | /// This functionality is included as follows: 8 | /// 9 | /// ```cpp 10 | /// #include 11 | /// ``` 12 | 13 | #include 14 | #include 15 | #include 16 | 17 | #endif 18 | -------------------------------------------------------------------------------- /src/numeric/include/sourcemeta/jsonbinpack/numeric_zigzag.h: -------------------------------------------------------------------------------- 1 | #ifndef SOURCEMETA_JSONBINPACK_NUMERIC_ZIGZAG_H_ 2 | #define SOURCEMETA_JSONBINPACK_NUMERIC_ZIGZAG_H_ 3 | 4 | #include // std::abs 5 | #include // std::uint64_t, std::int64_t 6 | 7 | namespace sourcemeta::jsonbinpack { 8 | 9 | /// @ingroup numeric 10 | constexpr auto zigzag_encode(const std::int64_t value) noexcept 11 | -> std::uint64_t { 12 | if (value >= 0) { 13 | return static_cast(value * 2); 14 | } 15 | 16 | return (static_cast(std::abs(value)) * 2) - 1; 17 | } 18 | 19 | /// @ingroup numeric 20 | constexpr auto zigzag_decode(const std::uint64_t value) noexcept 21 | -> std::int64_t { 22 | if (value % 2 == 0) { 23 | return static_cast(value / 2); 24 | } 25 | 26 | return -(static_cast((value + 1) / 2)); 27 | } 28 | 29 | } // namespace sourcemeta::jsonbinpack 30 | 31 | #endif 32 | -------------------------------------------------------------------------------- /src/runtime/decoder_number.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #include // std::pow 4 | #include // std::int64_t, std::uint64_t 5 | 6 | namespace sourcemeta::jsonbinpack { 7 | 8 | auto Decoder::DOUBLE_VARINT_TUPLE(const struct DOUBLE_VARINT_TUPLE &) 9 | -> sourcemeta::core::JSON { 10 | const std::int64_t digits{this->get_varint_zigzag()}; 11 | const std::uint64_t point{this->get_varint()}; 12 | const double divisor{std::pow(10, static_cast(point))}; 13 | return sourcemeta::core::JSON{static_cast(digits) / divisor}; 14 | } 15 | 16 | } // namespace sourcemeta::jsonbinpack 17 | -------------------------------------------------------------------------------- /src/runtime/encoder_number.cc: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | #include // assert 5 | #include // std::uint64_t 6 | 7 | namespace sourcemeta::jsonbinpack { 8 | 9 | auto Encoder::DOUBLE_VARINT_TUPLE(const sourcemeta::core::JSON &document, 10 | const struct DOUBLE_VARINT_TUPLE &) -> void { 11 | assert(document.is_real()); 12 | const auto value{document.to_real()}; 13 | std::uint64_t point_position; 14 | const std::int64_t integral{ 15 | real_digits(value, &point_position)}; 16 | this->put_varint_zigzag(integral); 17 | this->put_varint(point_position); 18 | } 19 | 20 | } // namespace sourcemeta::jsonbinpack 21 | -------------------------------------------------------------------------------- /src/runtime/encoder_object.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #include // assert 4 | 5 | namespace sourcemeta::jsonbinpack { 6 | 7 | auto Encoder::FIXED_TYPED_ARBITRARY_OBJECT( 8 | const sourcemeta::core::JSON &document, 9 | const struct FIXED_TYPED_ARBITRARY_OBJECT &options) -> void { 10 | assert(document.is_object()); 11 | assert(document.size() == options.size); 12 | 13 | for (const auto &entry : document.as_object()) { 14 | this->write(sourcemeta::core::JSON{entry.first}, *(options.key_encoding)); 15 | this->write(entry.second, *(options.encoding)); 16 | } 17 | } 18 | 19 | auto Encoder::VARINT_TYPED_ARBITRARY_OBJECT( 20 | const sourcemeta::core::JSON &document, 21 | const struct VARINT_TYPED_ARBITRARY_OBJECT &options) -> void { 22 | assert(document.is_object()); 23 | const auto size{document.size()}; 24 | this->put_varint(size); 25 | 26 | for (const auto &entry : document.as_object()) { 27 | this->write(sourcemeta::core::JSON{entry.first}, *(options.key_encoding)); 28 | this->write(entry.second, *(options.encoding)); 29 | } 30 | } 31 | 32 | } // namespace sourcemeta::jsonbinpack 33 | -------------------------------------------------------------------------------- /src/runtime/loader_v1_number.h: -------------------------------------------------------------------------------- 1 | #ifndef SOURCEMETA_JSONBINPACK_RUNTIME_LOADER_V1_NUMBER_H_ 2 | #define SOURCEMETA_JSONBINPACK_RUNTIME_LOADER_V1_NUMBER_H_ 3 | 4 | #include 5 | 6 | #include 7 | 8 | namespace sourcemeta::jsonbinpack::v1 { 9 | 10 | auto DOUBLE_VARINT_TUPLE(const sourcemeta::core::JSON &) -> Encoding { 11 | return sourcemeta::jsonbinpack::DOUBLE_VARINT_TUPLE{}; 12 | } 13 | 14 | } // namespace sourcemeta::jsonbinpack::v1 15 | 16 | #endif 17 | -------------------------------------------------------------------------------- /src/runtime/unreachable.h: -------------------------------------------------------------------------------- 1 | #ifndef SOURCEMETA_JSONBINPACK_RUNTIME_UNREACHABLE_H_ 2 | #define SOURCEMETA_JSONBINPACK_RUNTIME_UNREACHABLE_H_ 3 | 4 | #include // assert 5 | 6 | // Until we are on C++23 and can use std::unreachable 7 | // See https://en.cppreference.com/w/cpp/utility/unreachable 8 | [[noreturn]] inline void unreachable() { 9 | assert(false); 10 | #if defined(_MSC_VER) && !defined(__clang__) 11 | __assume(false); 12 | #else 13 | __builtin_unreachable(); 14 | #endif 15 | } 16 | 17 | #endif 18 | -------------------------------------------------------------------------------- /test/compiler/2020_12_compiler_number_test.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #include 4 | #include 5 | 6 | TEST(JSONBinPack_Compiler_Number_2020_12, arbitrary) { 7 | auto schema = sourcemeta::core::parse_json(R"JSON({ 8 | "$schema": "https://json-schema.org/draft/2020-12/schema", 9 | "type": "number" 10 | })JSON"); 11 | 12 | sourcemeta::jsonbinpack::compile(schema, 13 | sourcemeta::core::schema_official_walker, 14 | sourcemeta::core::schema_official_resolver); 15 | 16 | const auto expected = sourcemeta::core::parse_json(R"JSON({ 17 | "$schema": "tag:sourcemeta.com,2024:jsonbinpack/encoding/v1", 18 | "binpackEncoding": "DOUBLE_VARINT_TUPLE", 19 | "binpackOptions": {} 20 | })JSON"); 21 | 22 | EXPECT_EQ(schema, expected); 23 | } 24 | -------------------------------------------------------------------------------- /test/compiler/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | sourcemeta_googletest(NAMESPACE sourcemeta PROJECT jsonbinpack NAME compiler 2 | FOLDER "JSON BinPack/Compiler" 3 | SOURCES 4 | canonicalizer_test.cc compiler_test.cc 5 | 6 | 2020_12_canonicalizer_any_test.cc 7 | 2020_12_canonicalizer_array_test.cc 8 | 2020_12_canonicalizer_boolean_test.cc 9 | 2020_12_canonicalizer_null_test.cc 10 | 2020_12_canonicalizer_number_test.cc 11 | 2020_12_canonicalizer_object_test.cc 12 | 2020_12_canonicalizer_string_test.cc 13 | 14 | 2020_12_compiler_any_test.cc 15 | 2020_12_compiler_integer_test.cc 16 | 2020_12_compiler_number_test.cc) 17 | 18 | target_link_libraries(sourcemeta_jsonbinpack_compiler_unit 19 | PRIVATE sourcemeta::jsonbinpack::compiler) 20 | target_link_libraries(sourcemeta_jsonbinpack_compiler_unit 21 | PRIVATE sourcemeta::core::json) 22 | target_link_libraries(sourcemeta_jsonbinpack_compiler_unit 23 | PRIVATE sourcemeta::core::jsonschema) 24 | -------------------------------------------------------------------------------- /test/e2e/circleciblank/document.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 2.0 3 | } 4 | -------------------------------------------------------------------------------- /test/e2e/circleciblank/schema-less/canonical.json: -------------------------------------------------------------------------------- 1 | { 2 | "anyOf": [ 3 | { 4 | "enum": [ null ] 5 | }, 6 | { 7 | "enum": [ false, true ] 8 | }, 9 | { 10 | "type": "object", 11 | "minProperties": 0, 12 | "properties": {} 13 | }, 14 | { 15 | "type": "array", 16 | "minItems": 0 17 | }, 18 | { 19 | "type": "string", 20 | "minLength": 0 21 | }, 22 | { 23 | "type": "number", 24 | "multipleOf": 1 25 | }, 26 | { 27 | "type": "integer", 28 | "multipleOf": 1 29 | } 30 | ] 31 | } 32 | -------------------------------------------------------------------------------- /test/e2e/circleciblank/schema-less/encoding.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "tag:sourcemeta.com,2024:jsonbinpack/encoding/v1", 3 | "binpackEncoding": "ANY_PACKED_TYPE_TAG_BYTE_PREFIX", 4 | "binpackOptions": {} 5 | } 6 | -------------------------------------------------------------------------------- /test/e2e/circleciblank/schema-less/output.bin: -------------------------------------------------------------------------------- 1 | version7 -------------------------------------------------------------------------------- /test/e2e/circleciblank/schema-less/schema.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /test/e2e/circleciblank/schema-less/size.txt: -------------------------------------------------------------------------------- 1 | 11 2 | -------------------------------------------------------------------------------- /test/e2e/circlecimatrix/document.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 2.1, 3 | "workflows": { 4 | "test": { 5 | "jobs": [ 6 | { 7 | "m1": { 8 | "matrix": { 9 | "parameters": { 10 | "a": [1, 2, 3] 11 | } 12 | } 13 | } 14 | } 15 | ] 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /test/e2e/circlecimatrix/schema-less/canonical.json: -------------------------------------------------------------------------------- 1 | { 2 | "anyOf": [ 3 | { 4 | "enum": [ null ] 5 | }, 6 | { 7 | "enum": [ false, true ] 8 | }, 9 | { 10 | "type": "object", 11 | "minProperties": 0, 12 | "properties": {} 13 | }, 14 | { 15 | "type": "array", 16 | "minItems": 0 17 | }, 18 | { 19 | "type": "string", 20 | "minLength": 0 21 | }, 22 | { 23 | "type": "number", 24 | "multipleOf": 1 25 | }, 26 | { 27 | "type": "integer", 28 | "multipleOf": 1 29 | } 30 | ] 31 | } 32 | -------------------------------------------------------------------------------- /test/e2e/circlecimatrix/schema-less/encoding.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "tag:sourcemeta.com,2024:jsonbinpack/encoding/v1", 3 | "binpackEncoding": "ANY_PACKED_TYPE_TAG_BYTE_PREFIX", 4 | "binpackOptions": {} 5 | } 6 | -------------------------------------------------------------------------------- /test/e2e/circlecimatrix/schema-less/output.bin: -------------------------------------------------------------------------------- 1 | version/* 2 | workflowstestjobsm1matrix parametersa$% -------------------------------------------------------------------------------- /test/e2e/circlecimatrix/schema-less/schema.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /test/e2e/circlecimatrix/schema-less/size.txt: -------------------------------------------------------------------------------- 1 | 66 2 | -------------------------------------------------------------------------------- /test/e2e/commitlint/document.json: -------------------------------------------------------------------------------- 1 | { 2 | "rules": { 3 | "scope-case": [2, "always", ["lower-case"]], 4 | "subject-case": [2, "always", ["lower-case"]] 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /test/e2e/commitlint/schema-less/canonical.json: -------------------------------------------------------------------------------- 1 | { 2 | "anyOf": [ 3 | { 4 | "enum": [ null ] 5 | }, 6 | { 7 | "enum": [ false, true ] 8 | }, 9 | { 10 | "type": "object", 11 | "minProperties": 0, 12 | "properties": {} 13 | }, 14 | { 15 | "type": "array", 16 | "minItems": 0 17 | }, 18 | { 19 | "type": "string", 20 | "minLength": 0 21 | }, 22 | { 23 | "type": "number", 24 | "multipleOf": 1 25 | }, 26 | { 27 | "type": "integer", 28 | "multipleOf": 1 29 | } 30 | ] 31 | } 32 | -------------------------------------------------------------------------------- /test/e2e/commitlint/schema-less/encoding.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "tag:sourcemeta.com,2024:jsonbinpack/encoding/v1", 3 | "binpackEncoding": "ANY_PACKED_TYPE_TAG_BYTE_PREFIX", 4 | "binpackOptions": {} 5 | } 6 | -------------------------------------------------------------------------------- /test/e2e/commitlint/schema-less/output.bin: -------------------------------------------------------------------------------- 1 | rules scope-case$9alwaysYlower-case subject-case$8"X -------------------------------------------------------------------------------- /test/e2e/commitlint/schema-less/schema.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /test/e2e/commitlint/schema-less/size.txt: -------------------------------------------------------------------------------- 1 | 60 2 | -------------------------------------------------------------------------------- /test/e2e/commitlintbasic/document.json: -------------------------------------------------------------------------------- 1 | { 2 | "defaultIgnores": false 3 | } 4 | -------------------------------------------------------------------------------- /test/e2e/commitlintbasic/schema-less/canonical.json: -------------------------------------------------------------------------------- 1 | { 2 | "anyOf": [ 3 | { 4 | "enum": [ null ] 5 | }, 6 | { 7 | "enum": [ false, true ] 8 | }, 9 | { 10 | "type": "object", 11 | "minProperties": 0, 12 | "properties": {} 13 | }, 14 | { 15 | "type": "array", 16 | "minItems": 0 17 | }, 18 | { 19 | "type": "string", 20 | "minLength": 0 21 | }, 22 | { 23 | "type": "number", 24 | "multipleOf": 1 25 | }, 26 | { 27 | "type": "integer", 28 | "multipleOf": 1 29 | } 30 | ] 31 | } 32 | -------------------------------------------------------------------------------- /test/e2e/commitlintbasic/schema-less/encoding.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "tag:sourcemeta.com,2024:jsonbinpack/encoding/v1", 3 | "binpackEncoding": "ANY_PACKED_TYPE_TAG_BYTE_PREFIX", 4 | "binpackOptions": {} 5 | } 6 | -------------------------------------------------------------------------------- /test/e2e/commitlintbasic/schema-less/output.bin: -------------------------------------------------------------------------------- 1 | defaultIgnores -------------------------------------------------------------------------------- /test/e2e/commitlintbasic/schema-less/schema.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /test/e2e/commitlintbasic/schema-less/size.txt: -------------------------------------------------------------------------------- 1 | 17 2 | -------------------------------------------------------------------------------- /test/e2e/epr/document.json: -------------------------------------------------------------------------------- 1 | { 2 | "site": "https://eample.com", 3 | "maxAge": 31536000, 4 | "reportUrl": "https://example.com", 5 | "defaultNavBehavior": "block", 6 | "defaultResBehavior": "block", 7 | "rules": [ 8 | { "path": "/", "types": [ "navigation" ], "allowData": false }, 9 | { "regex": "^/\\d+$", "types": [ "navigation" ], "allowData": false }, 10 | { "path": "/image", "types": [ "image" ], "allowData": true }, 11 | { "regex": "^/(scoreboard|random|favorites|recentvisits|create)$", "types": [ "navigation" ], "allowData": false }, 12 | { "regex": "^/(recent|popular|metrics|template|search)$", "types": [ "navigation" ], "allowData": true } 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /test/e2e/epr/schema-less/canonical.json: -------------------------------------------------------------------------------- 1 | { 2 | "anyOf": [ 3 | { 4 | "enum": [ null ] 5 | }, 6 | { 7 | "enum": [ false, true ] 8 | }, 9 | { 10 | "type": "object", 11 | "minProperties": 0, 12 | "properties": {} 13 | }, 14 | { 15 | "type": "array", 16 | "minItems": 0 17 | }, 18 | { 19 | "type": "string", 20 | "minLength": 0 21 | }, 22 | { 23 | "type": "number", 24 | "multipleOf": 1 25 | }, 26 | { 27 | "type": "integer", 28 | "multipleOf": 1 29 | } 30 | ] 31 | } 32 | -------------------------------------------------------------------------------- /test/e2e/epr/schema-less/encoding.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "tag:sourcemeta.com,2024:jsonbinpack/encoding/v1", 3 | "binpackEncoding": "ANY_PACKED_TYPE_TAG_BYTE_PREFIX", 4 | "binpackOptions": {} 5 | } 6 | -------------------------------------------------------------------------------- /test/e2e/epr/schema-less/output.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sourcemeta/jsonbinpack/c0503bd6f27f2bcbfe547d923713161d771ca0c4/test/e2e/epr/schema-less/output.bin -------------------------------------------------------------------------------- /test/e2e/epr/schema-less/schema.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /test/e2e/epr/schema-less/size.txt: -------------------------------------------------------------------------------- 1 | 321 2 | -------------------------------------------------------------------------------- /test/e2e/eslintrc/schema-less/canonical.json: -------------------------------------------------------------------------------- 1 | { 2 | "anyOf": [ 3 | { 4 | "enum": [ null ] 5 | }, 6 | { 7 | "enum": [ false, true ] 8 | }, 9 | { 10 | "type": "object", 11 | "minProperties": 0, 12 | "properties": {} 13 | }, 14 | { 15 | "type": "array", 16 | "minItems": 0 17 | }, 18 | { 19 | "type": "string", 20 | "minLength": 0 21 | }, 22 | { 23 | "type": "number", 24 | "multipleOf": 1 25 | }, 26 | { 27 | "type": "integer", 28 | "multipleOf": 1 29 | } 30 | ] 31 | } 32 | -------------------------------------------------------------------------------- /test/e2e/eslintrc/schema-less/encoding.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "tag:sourcemeta.com,2024:jsonbinpack/encoding/v1", 3 | "binpackEncoding": "ANY_PACKED_TYPE_TAG_BYTE_PREFIX", 4 | "binpackOptions": {} 5 | } 6 | -------------------------------------------------------------------------------- /test/e2e/eslintrc/schema-less/output.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sourcemeta/jsonbinpack/c0503bd6f27f2bcbfe547d923713161d771ca0c4/test/e2e/eslintrc/schema-less/output.bin -------------------------------------------------------------------------------- /test/e2e/eslintrc/schema-less/schema.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /test/e2e/eslintrc/schema-less/size.txt: -------------------------------------------------------------------------------- 1 | 969 2 | -------------------------------------------------------------------------------- /test/e2e/esmrc/document.json: -------------------------------------------------------------------------------- 1 | { 2 | "cjs": false, 3 | "mainFields": [ 4 | "main", 5 | "app" 6 | ], 7 | "mode": "strict", 8 | "force": true, 9 | "cache": false, 10 | "sourceMap": true 11 | } 12 | -------------------------------------------------------------------------------- /test/e2e/esmrc/schema-less/canonical.json: -------------------------------------------------------------------------------- 1 | { 2 | "anyOf": [ 3 | { 4 | "enum": [ null ] 5 | }, 6 | { 7 | "enum": [ false, true ] 8 | }, 9 | { 10 | "type": "object", 11 | "minProperties": 0, 12 | "properties": {} 13 | }, 14 | { 15 | "type": "array", 16 | "minItems": 0 17 | }, 18 | { 19 | "type": "string", 20 | "minLength": 0 21 | }, 22 | { 23 | "type": "number", 24 | "multipleOf": 1 25 | }, 26 | { 27 | "type": "integer", 28 | "multipleOf": 1 29 | } 30 | ] 31 | } 32 | -------------------------------------------------------------------------------- /test/e2e/esmrc/schema-less/encoding.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "tag:sourcemeta.com,2024:jsonbinpack/encoding/v1", 3 | "binpackEncoding": "ANY_PACKED_TYPE_TAG_BYTE_PREFIX", 4 | "binpackOptions": {} 5 | } 6 | -------------------------------------------------------------------------------- /test/e2e/esmrc/schema-less/output.bin: -------------------------------------------------------------------------------- 1 | ;cjs mainFields)main!appmode9strictforcecache 2 | sourceMap -------------------------------------------------------------------------------- /test/e2e/esmrc/schema-less/schema.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /test/e2e/esmrc/schema-less/size.txt: -------------------------------------------------------------------------------- 1 | 64 2 | -------------------------------------------------------------------------------- /test/e2e/geojson/document.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "MultiPolygon", 3 | "coordinates": [ 4 | [ 5 | [ 6 | [102.0, 2.0], 7 | [103.0, 2.0], 8 | [103.0, 3.0], 9 | [102.0, 3.0], 10 | [102.0, 2.0] 11 | ] 12 | ], 13 | [ 14 | [ 15 | [100.0, 0.0], 16 | [101.0, 0.0], 17 | [101.0, 1.0], 18 | [100.0, 1.0], 19 | [100.0, 0.0] 20 | ], 21 | [ 22 | [100.2, 0.2], 23 | [100.2, 0.8], 24 | [100.8, 0.8], 25 | [100.8, 0.2], 26 | [100.2, 0.2] 27 | ] 28 | ] 29 | ] 30 | } 31 | -------------------------------------------------------------------------------- /test/e2e/geojson/schema-less/canonical.json: -------------------------------------------------------------------------------- 1 | { 2 | "anyOf": [ 3 | { 4 | "enum": [ null ] 5 | }, 6 | { 7 | "enum": [ false, true ] 8 | }, 9 | { 10 | "type": "object", 11 | "minProperties": 0, 12 | "properties": {} 13 | }, 14 | { 15 | "type": "array", 16 | "minItems": 0 17 | }, 18 | { 19 | "type": "string", 20 | "minLength": 0 21 | }, 22 | { 23 | "type": "number", 24 | "multipleOf": 1 25 | }, 26 | { 27 | "type": "integer", 28 | "multipleOf": 1 29 | } 30 | ] 31 | } 32 | -------------------------------------------------------------------------------- /test/e2e/geojson/schema-less/encoding.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "tag:sourcemeta.com,2024:jsonbinpack/encoding/v1", 3 | "binpackEncoding": "ANY_PACKED_TYPE_TAG_BYTE_PREFIX", 4 | "binpackOptions": {} 5 | } 6 | -------------------------------------------------------------------------------- /test/e2e/geojson/schema-less/output.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sourcemeta/jsonbinpack/c0503bd6f27f2bcbfe547d923713161d771ca0c4/test/e2e/geojson/schema-less/output.bin -------------------------------------------------------------------------------- /test/e2e/geojson/schema-less/schema.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /test/e2e/geojson/schema-less/size.txt: -------------------------------------------------------------------------------- 1 | 127 2 | -------------------------------------------------------------------------------- /test/e2e/githubfundingblank/document.json: -------------------------------------------------------------------------------- 1 | { 2 | "github": "EbookFoundation", 3 | "patreon": null, 4 | "open_collective": null, 5 | "ko_fi": null, 6 | "tidelift": null, 7 | "community_bridge": null, 8 | "liberapay": null, 9 | "issuehunt": null, 10 | "otechie": null, 11 | "custom": null 12 | } 13 | -------------------------------------------------------------------------------- /test/e2e/githubfundingblank/schema-less/canonical.json: -------------------------------------------------------------------------------- 1 | { 2 | "anyOf": [ 3 | { 4 | "enum": [ null ] 5 | }, 6 | { 7 | "enum": [ false, true ] 8 | }, 9 | { 10 | "type": "object", 11 | "minProperties": 0, 12 | "properties": {} 13 | }, 14 | { 15 | "type": "array", 16 | "minItems": 0 17 | }, 18 | { 19 | "type": "string", 20 | "minLength": 0 21 | }, 22 | { 23 | "type": "number", 24 | "multipleOf": 1 25 | }, 26 | { 27 | "type": "integer", 28 | "multipleOf": 1 29 | } 30 | ] 31 | } 32 | -------------------------------------------------------------------------------- /test/e2e/githubfundingblank/schema-less/encoding.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "tag:sourcemeta.com,2024:jsonbinpack/encoding/v1", 3 | "binpackEncoding": "ANY_PACKED_TYPE_TAG_BYTE_PREFIX", 4 | "binpackOptions": {} 5 | } 6 | -------------------------------------------------------------------------------- /test/e2e/githubfundingblank/schema-less/output.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sourcemeta/jsonbinpack/c0503bd6f27f2bcbfe547d923713161d771ca0c4/test/e2e/githubfundingblank/schema-less/output.bin -------------------------------------------------------------------------------- /test/e2e/githubfundingblank/schema-less/schema.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /test/e2e/githubfundingblank/schema-less/size.txt: -------------------------------------------------------------------------------- 1 | 124 2 | -------------------------------------------------------------------------------- /test/e2e/githubworkflow/document.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Test on Pull", 3 | "on": [ 4 | "push" 5 | ], 6 | "jobs": { 7 | "build": { 8 | "runs-on": "ubuntu-latest", 9 | "env": { 10 | "build-suite-dir": "./build-suite" 11 | }, 12 | "steps": [ 13 | { 14 | "uses": "actions/checkout@v1" 15 | }, 16 | { 17 | "uses": "actions/setup-node@v1", 18 | "with": { 19 | "node-version": "10.x" 20 | } 21 | }, 22 | { 23 | "name": "starting directory", 24 | "run": "ls" 25 | }, 26 | { 27 | "name": "build directory", 28 | "run": "ls", 29 | "working-directory": "${{env.build-suite-dir}}" 30 | } 31 | ] 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /test/e2e/githubworkflow/schema-less/canonical.json: -------------------------------------------------------------------------------- 1 | { 2 | "anyOf": [ 3 | { 4 | "enum": [ null ] 5 | }, 6 | { 7 | "enum": [ false, true ] 8 | }, 9 | { 10 | "type": "object", 11 | "minProperties": 0, 12 | "properties": {} 13 | }, 14 | { 15 | "type": "array", 16 | "minItems": 0 17 | }, 18 | { 19 | "type": "string", 20 | "minLength": 0 21 | }, 22 | { 23 | "type": "number", 24 | "multipleOf": 1 25 | }, 26 | { 27 | "type": "integer", 28 | "multipleOf": 1 29 | } 30 | ] 31 | } 32 | -------------------------------------------------------------------------------- /test/e2e/githubworkflow/schema-less/encoding.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "tag:sourcemeta.com,2024:jsonbinpack/encoding/v1", 3 | "binpackEncoding": "ANY_PACKED_TYPE_TAG_BYTE_PREFIX", 4 | "binpackOptions": {} 5 | } 6 | -------------------------------------------------------------------------------- /test/e2e/githubworkflow/schema-less/output.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sourcemeta/jsonbinpack/c0503bd6f27f2bcbfe547d923713161d771ca0c4/test/e2e/githubworkflow/schema-less/output.bin -------------------------------------------------------------------------------- /test/e2e/githubworkflow/schema-less/schema.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /test/e2e/githubworkflow/schema-less/size.txt: -------------------------------------------------------------------------------- 1 | 277 2 | -------------------------------------------------------------------------------- /test/e2e/gruntcontribclean/document.json: -------------------------------------------------------------------------------- 1 | { 2 | "foo": [ "path" ], 3 | "main": { 4 | "files": { }, 5 | "src": [ "path" ] 6 | }, 7 | "options": { 8 | "force": true, 9 | "no-write": true 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /test/e2e/gruntcontribclean/schema-less/canonical.json: -------------------------------------------------------------------------------- 1 | { 2 | "anyOf": [ 3 | { 4 | "enum": [ null ] 5 | }, 6 | { 7 | "enum": [ false, true ] 8 | }, 9 | { 10 | "type": "object", 11 | "minProperties": 0, 12 | "properties": {} 13 | }, 14 | { 15 | "type": "array", 16 | "minItems": 0 17 | }, 18 | { 19 | "type": "string", 20 | "minLength": 0 21 | }, 22 | { 23 | "type": "number", 24 | "multipleOf": 1 25 | }, 26 | { 27 | "type": "integer", 28 | "multipleOf": 1 29 | } 30 | ] 31 | } 32 | -------------------------------------------------------------------------------- /test/e2e/gruntcontribclean/schema-less/encoding.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "tag:sourcemeta.com,2024:jsonbinpack/encoding/v1", 3 | "binpackEncoding": "ANY_PACKED_TYPE_TAG_BYTE_PREFIX", 4 | "binpackOptions": {} 5 | } 6 | -------------------------------------------------------------------------------- /test/e2e/gruntcontribclean/schema-less/output.bin: -------------------------------------------------------------------------------- 1 | #foo)pathmainfiles src(optionsforce no-write -------------------------------------------------------------------------------- /test/e2e/gruntcontribclean/schema-less/schema.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /test/e2e/gruntcontribclean/schema-less/size.txt: -------------------------------------------------------------------------------- 1 | 57 2 | -------------------------------------------------------------------------------- /test/e2e/imageoptimizerwebjob/document.json: -------------------------------------------------------------------------------- 1 | { 2 | "optimizations": [ 3 | { 4 | "includes": [ "node_modules" ], 5 | "excludes": [ "ost" ], 6 | "lossy": true 7 | } 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /test/e2e/imageoptimizerwebjob/schema-less/canonical.json: -------------------------------------------------------------------------------- 1 | { 2 | "anyOf": [ 3 | { 4 | "enum": [ null ] 5 | }, 6 | { 7 | "enum": [ false, true ] 8 | }, 9 | { 10 | "type": "object", 11 | "minProperties": 0, 12 | "properties": {} 13 | }, 14 | { 15 | "type": "array", 16 | "minItems": 0 17 | }, 18 | { 19 | "type": "string", 20 | "minLength": 0 21 | }, 22 | { 23 | "type": "number", 24 | "multipleOf": 1 25 | }, 26 | { 27 | "type": "integer", 28 | "multipleOf": 1 29 | } 30 | ] 31 | } 32 | -------------------------------------------------------------------------------- /test/e2e/imageoptimizerwebjob/schema-less/encoding.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "tag:sourcemeta.com,2024:jsonbinpack/encoding/v1", 3 | "binpackEncoding": "ANY_PACKED_TYPE_TAG_BYTE_PREFIX", 4 | "binpackOptions": {} 5 | } 6 | -------------------------------------------------------------------------------- /test/e2e/imageoptimizerwebjob/schema-less/output.bin: -------------------------------------------------------------------------------- 1 | optimizations# includesinode_modules excludes!ostlossy -------------------------------------------------------------------------------- /test/e2e/imageoptimizerwebjob/schema-less/schema.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /test/e2e/imageoptimizerwebjob/schema-less/size.txt: -------------------------------------------------------------------------------- 1 | 61 2 | -------------------------------------------------------------------------------- /test/e2e/jsonereversesort/document.json: -------------------------------------------------------------------------------- 1 | { 2 | "$let": { 3 | "x": [10,30,10,10,10] 4 | }, 5 | "in": { 6 | "$reverse": { 7 | "$sort": { "$eval": "x" }, 8 | "by(x)": "x" 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /test/e2e/jsonereversesort/schema-less/canonical.json: -------------------------------------------------------------------------------- 1 | { 2 | "anyOf": [ 3 | { 4 | "enum": [ null ] 5 | }, 6 | { 7 | "enum": [ false, true ] 8 | }, 9 | { 10 | "type": "object", 11 | "minProperties": 0, 12 | "properties": {} 13 | }, 14 | { 15 | "type": "array", 16 | "minItems": 0 17 | }, 18 | { 19 | "type": "string", 20 | "minLength": 0 21 | }, 22 | { 23 | "type": "number", 24 | "multipleOf": 1 25 | }, 26 | { 27 | "type": "integer", 28 | "multipleOf": 1 29 | } 30 | ] 31 | } 32 | -------------------------------------------------------------------------------- /test/e2e/jsonereversesort/schema-less/encoding.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "tag:sourcemeta.com,2024:jsonbinpack/encoding/v1", 3 | "binpackEncoding": "ANY_PACKED_TYPE_TAG_BYTE_PREFIX", 4 | "binpackOptions": {} 5 | } 6 | -------------------------------------------------------------------------------- /test/e2e/jsonereversesort/schema-less/output.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sourcemeta/jsonbinpack/c0503bd6f27f2bcbfe547d923713161d771ca0c4/test/e2e/jsonereversesort/schema-less/output.bin -------------------------------------------------------------------------------- /test/e2e/jsonereversesort/schema-less/schema.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /test/e2e/jsonereversesort/schema-less/size.txt: -------------------------------------------------------------------------------- 1 | 52 2 | -------------------------------------------------------------------------------- /test/e2e/jsonesort/document.json: -------------------------------------------------------------------------------- 1 | { 2 | "$sort": [1,2,1,3,1], 3 | "by(x)": "x" 4 | } 5 | -------------------------------------------------------------------------------- /test/e2e/jsonesort/schema-less/canonical.json: -------------------------------------------------------------------------------- 1 | { 2 | "anyOf": [ 3 | { 4 | "enum": [ null ] 5 | }, 6 | { 7 | "enum": [ false, true ] 8 | }, 9 | { 10 | "type": "object", 11 | "minProperties": 0, 12 | "properties": {} 13 | }, 14 | { 15 | "type": "array", 16 | "minItems": 0 17 | }, 18 | { 19 | "type": "string", 20 | "minLength": 0 21 | }, 22 | { 23 | "type": "number", 24 | "multipleOf": 1 25 | }, 26 | { 27 | "type": "integer", 28 | "multipleOf": 1 29 | } 30 | ] 31 | } 32 | -------------------------------------------------------------------------------- /test/e2e/jsonesort/schema-less/encoding.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "tag:sourcemeta.com,2024:jsonbinpack/encoding/v1", 3 | "binpackEncoding": "ANY_PACKED_TYPE_TAG_BYTE_PREFIX", 4 | "binpackOptions": {} 5 | } 6 | -------------------------------------------------------------------------------- /test/e2e/jsonesort/schema-less/output.bin: -------------------------------------------------------------------------------- 1 | $sort4%by(x)x -------------------------------------------------------------------------------- /test/e2e/jsonesort/schema-less/schema.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /test/e2e/jsonesort/schema-less/size.txt: -------------------------------------------------------------------------------- 1 | 21 2 | -------------------------------------------------------------------------------- /test/e2e/jsonfeed/document.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "https://jsonfeed.org/version/1", 3 | "user_comment": "This is a microblog feed. You can add this to your feed reader using the following URL: https://example.org/feed.json", 4 | "title": "Brent Simmons’s Microblog", 5 | "home_page_url": "https://example.org/", 6 | "feed_url": "https://example.org/feed.json", 7 | "author": { 8 | "name": "Brent Simmons", 9 | "url": "http://example.org/", 10 | "avatar": "https://example.org/avatar.png" 11 | }, 12 | "items": [ 13 | { 14 | "id": "2347259", 15 | "url": "https://example.org/2347259", 16 | "content_text": "Cats are neat. \n\nhttps://example.org/cats", 17 | "date_published": "2016-02-09T14:22:00-07:00" 18 | } 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /test/e2e/jsonfeed/schema-less/canonical.json: -------------------------------------------------------------------------------- 1 | { 2 | "anyOf": [ 3 | { 4 | "enum": [ null ] 5 | }, 6 | { 7 | "enum": [ false, true ] 8 | }, 9 | { 10 | "type": "object", 11 | "minProperties": 0, 12 | "properties": {} 13 | }, 14 | { 15 | "type": "array", 16 | "minItems": 0 17 | }, 18 | { 19 | "type": "string", 20 | "minLength": 0 21 | }, 22 | { 23 | "type": "number", 24 | "multipleOf": 1 25 | }, 26 | { 27 | "type": "integer", 28 | "multipleOf": 1 29 | } 30 | ] 31 | } 32 | -------------------------------------------------------------------------------- /test/e2e/jsonfeed/schema-less/encoding.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "tag:sourcemeta.com,2024:jsonbinpack/encoding/v1", 3 | "binpackEncoding": "ANY_PACKED_TYPE_TAG_BYTE_PREFIX", 4 | "binpackOptions": {} 5 | } 6 | -------------------------------------------------------------------------------- /test/e2e/jsonfeed/schema-less/output.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sourcemeta/jsonbinpack/c0503bd6f27f2bcbfe547d923713161d771ca0c4/test/e2e/jsonfeed/schema-less/output.bin -------------------------------------------------------------------------------- /test/e2e/jsonfeed/schema-less/schema.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /test/e2e/jsonfeed/schema-less/size.txt: -------------------------------------------------------------------------------- 1 | 514 2 | -------------------------------------------------------------------------------- /test/e2e/jsonresume/schema-less/canonical.json: -------------------------------------------------------------------------------- 1 | { 2 | "anyOf": [ 3 | { 4 | "enum": [ null ] 5 | }, 6 | { 7 | "enum": [ false, true ] 8 | }, 9 | { 10 | "type": "object", 11 | "minProperties": 0, 12 | "properties": {} 13 | }, 14 | { 15 | "type": "array", 16 | "minItems": 0 17 | }, 18 | { 19 | "type": "string", 20 | "minLength": 0 21 | }, 22 | { 23 | "type": "number", 24 | "multipleOf": 1 25 | }, 26 | { 27 | "type": "integer", 28 | "multipleOf": 1 29 | } 30 | ] 31 | } 32 | -------------------------------------------------------------------------------- /test/e2e/jsonresume/schema-less/encoding.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "tag:sourcemeta.com,2024:jsonbinpack/encoding/v1", 3 | "binpackEncoding": "ANY_PACKED_TYPE_TAG_BYTE_PREFIX", 4 | "binpackOptions": {} 5 | } 6 | -------------------------------------------------------------------------------- /test/e2e/jsonresume/schema-less/output.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sourcemeta/jsonbinpack/c0503bd6f27f2bcbfe547d923713161d771ca0c4/test/e2e/jsonresume/schema-less/output.bin -------------------------------------------------------------------------------- /test/e2e/jsonresume/schema-less/schema.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /test/e2e/jsonresume/schema-less/size.txt: -------------------------------------------------------------------------------- 1 | 2619 2 | -------------------------------------------------------------------------------- /test/e2e/mixed-bounded-object/document.json: -------------------------------------------------------------------------------- 1 | { 2 | "foo": "bar", 3 | "baz": { 4 | "qux": [ 1, 2 ] 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /test/e2e/mixed-bounded-object/schema-less/canonical.json: -------------------------------------------------------------------------------- 1 | { 2 | "anyOf": [ 3 | { 4 | "enum": [ null ] 5 | }, 6 | { 7 | "enum": [ false, true ] 8 | }, 9 | { 10 | "type": "object", 11 | "minProperties": 0, 12 | "properties": {} 13 | }, 14 | { 15 | "type": "array", 16 | "minItems": 0 17 | }, 18 | { 19 | "type": "string", 20 | "minLength": 0 21 | }, 22 | { 23 | "type": "number", 24 | "multipleOf": 1 25 | }, 26 | { 27 | "type": "integer", 28 | "multipleOf": 1 29 | } 30 | ] 31 | } 32 | -------------------------------------------------------------------------------- /test/e2e/mixed-bounded-object/schema-less/encoding.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "tag:sourcemeta.com,2024:jsonbinpack/encoding/v1", 3 | "binpackEncoding": "ANY_PACKED_TYPE_TAG_BYTE_PREFIX", 4 | "binpackOptions": {} 5 | } 6 | -------------------------------------------------------------------------------- /test/e2e/mixed-bounded-object/schema-less/output.bin: -------------------------------------------------------------------------------- 1 | foo!barbazqux -------------------------------------------------------------------------------- /test/e2e/mixed-bounded-object/schema-less/schema.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /test/e2e/mixed-bounded-object/schema-less/size.txt: -------------------------------------------------------------------------------- 1 | 21 2 | -------------------------------------------------------------------------------- /test/e2e/netcoreproject/schema-less/canonical.json: -------------------------------------------------------------------------------- 1 | { 2 | "anyOf": [ 3 | { 4 | "enum": [ null ] 5 | }, 6 | { 7 | "enum": [ false, true ] 8 | }, 9 | { 10 | "type": "object", 11 | "minProperties": 0, 12 | "properties": {} 13 | }, 14 | { 15 | "type": "array", 16 | "minItems": 0 17 | }, 18 | { 19 | "type": "string", 20 | "minLength": 0 21 | }, 22 | { 23 | "type": "number", 24 | "multipleOf": 1 25 | }, 26 | { 27 | "type": "integer", 28 | "multipleOf": 1 29 | } 30 | ] 31 | } 32 | -------------------------------------------------------------------------------- /test/e2e/netcoreproject/schema-less/encoding.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "tag:sourcemeta.com,2024:jsonbinpack/encoding/v1", 3 | "binpackEncoding": "ANY_PACKED_TYPE_TAG_BYTE_PREFIX", 4 | "binpackOptions": {} 5 | } 6 | -------------------------------------------------------------------------------- /test/e2e/netcoreproject/schema-less/output.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sourcemeta/jsonbinpack/c0503bd6f27f2bcbfe547d923713161d771ca0c4/test/e2e/netcoreproject/schema-less/output.bin -------------------------------------------------------------------------------- /test/e2e/netcoreproject/schema-less/schema.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /test/e2e/netcoreproject/schema-less/size.txt: -------------------------------------------------------------------------------- 1 | 748 2 | -------------------------------------------------------------------------------- /test/e2e/nightwatch/schema-less/canonical.json: -------------------------------------------------------------------------------- 1 | { 2 | "anyOf": [ 3 | { 4 | "enum": [ null ] 5 | }, 6 | { 7 | "enum": [ false, true ] 8 | }, 9 | { 10 | "type": "object", 11 | "minProperties": 0, 12 | "properties": {} 13 | }, 14 | { 15 | "type": "array", 16 | "minItems": 0 17 | }, 18 | { 19 | "type": "string", 20 | "minLength": 0 21 | }, 22 | { 23 | "type": "number", 24 | "multipleOf": 1 25 | }, 26 | { 27 | "type": "integer", 28 | "multipleOf": 1 29 | } 30 | ] 31 | } 32 | -------------------------------------------------------------------------------- /test/e2e/nightwatch/schema-less/encoding.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "tag:sourcemeta.com,2024:jsonbinpack/encoding/v1", 3 | "binpackEncoding": "ANY_PACKED_TYPE_TAG_BYTE_PREFIX", 4 | "binpackOptions": {} 5 | } 6 | -------------------------------------------------------------------------------- /test/e2e/nightwatch/schema-less/output.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sourcemeta/jsonbinpack/c0503bd6f27f2bcbfe547d923713161d771ca0c4/test/e2e/nightwatch/schema-less/output.bin -------------------------------------------------------------------------------- /test/e2e/nightwatch/schema-less/schema.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /test/e2e/nightwatch/schema-less/size.txt: -------------------------------------------------------------------------------- 1 | 1085 2 | -------------------------------------------------------------------------------- /test/e2e/openweathermap/document.json: -------------------------------------------------------------------------------- 1 | { 2 | "coord": { 3 | "lon": -122.08, 4 | "lat": 37.39 5 | }, 6 | "weather": [ 7 | { 8 | "id": 800, 9 | "main": "Clear", 10 | "description": "clear sky", 11 | "icon": "01d" 12 | } 13 | ], 14 | "base": "stations", 15 | "main": { 16 | "temp": 282.55, 17 | "feels_like": 281.86, 18 | "temp_min": 280.37, 19 | "temp_max": 284.26, 20 | "pressure": 1023, 21 | "humidity": 100 22 | }, 23 | "visibility": 16093, 24 | "wind": { 25 | "speed": 1.5, 26 | "deg": 350 27 | }, 28 | "clouds": { 29 | "all": 1 30 | }, 31 | "dt": 1560350645, 32 | "sys": { 33 | "type": 1, 34 | "id": 5122, 35 | "message": 0.0139, 36 | "country": "US", 37 | "sunrise": 1560343627, 38 | "sunset": 1560396563 39 | }, 40 | "timezone": -25200, 41 | "id": 420006353, 42 | "name": "Mountain View", 43 | "cod": 200 44 | } 45 | -------------------------------------------------------------------------------- /test/e2e/openweathermap/schema-less/canonical.json: -------------------------------------------------------------------------------- 1 | { 2 | "anyOf": [ 3 | { 4 | "enum": [ null ] 5 | }, 6 | { 7 | "enum": [ false, true ] 8 | }, 9 | { 10 | "type": "object", 11 | "minProperties": 0, 12 | "properties": {} 13 | }, 14 | { 15 | "type": "array", 16 | "minItems": 0 17 | }, 18 | { 19 | "type": "string", 20 | "minLength": 0 21 | }, 22 | { 23 | "type": "number", 24 | "multipleOf": 1 25 | }, 26 | { 27 | "type": "integer", 28 | "multipleOf": 1 29 | } 30 | ] 31 | } 32 | -------------------------------------------------------------------------------- /test/e2e/openweathermap/schema-less/encoding.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "tag:sourcemeta.com,2024:jsonbinpack/encoding/v1", 3 | "binpackEncoding": "ANY_PACKED_TYPE_TAG_BYTE_PREFIX", 4 | "binpackOptions": {} 5 | } 6 | -------------------------------------------------------------------------------- /test/e2e/openweathermap/schema-less/output.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sourcemeta/jsonbinpack/c0503bd6f27f2bcbfe547d923713161d771ca0c4/test/e2e/openweathermap/schema-less/output.bin -------------------------------------------------------------------------------- /test/e2e/openweathermap/schema-less/schema.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /test/e2e/openweathermap/schema-less/size.txt: -------------------------------------------------------------------------------- 1 | 349 2 | -------------------------------------------------------------------------------- /test/e2e/openweatherroadrisk/document.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "dt": 1602702000, 4 | "coord": [ 5 | 7.27, 6 | 44.04 7 | ], 8 | "weather": { 9 | "temp": 278.44, 10 | "wind_speed": 2.27, 11 | "wind_deg": 7, 12 | "precipitation_intensity": 0.38, 13 | "dew_point": 276.13 14 | }, 15 | "alerts": [ 16 | { 17 | "sender_name": "METEO-FRANCE", 18 | "event": "Moderate thunderstorm warning", 19 | "event_level": 2 20 | } 21 | ] 22 | }, 23 | { 24 | "dt": 1602702400, 25 | "coord": [ 26 | 7.37, 27 | 45.04 28 | ], 29 | "weather": { 30 | "temp": 282.44, 31 | "wind_speed": 1.84, 32 | "wind_deg": 316, 33 | "dew_point": 275.99 34 | }, 35 | "alerts": [ 36 | 37 | ] 38 | } 39 | ] 40 | -------------------------------------------------------------------------------- /test/e2e/openweatherroadrisk/schema-less/canonical.json: -------------------------------------------------------------------------------- 1 | { 2 | "anyOf": [ 3 | { 4 | "enum": [ null ] 5 | }, 6 | { 7 | "enum": [ false, true ] 8 | }, 9 | { 10 | "type": "object", 11 | "minProperties": 0, 12 | "properties": {} 13 | }, 14 | { 15 | "type": "array", 16 | "minItems": 0 17 | }, 18 | { 19 | "type": "string", 20 | "minLength": 0 21 | }, 22 | { 23 | "type": "number", 24 | "multipleOf": 1 25 | }, 26 | { 27 | "type": "integer", 28 | "multipleOf": 1 29 | } 30 | ] 31 | } 32 | -------------------------------------------------------------------------------- /test/e2e/openweatherroadrisk/schema-less/encoding.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "tag:sourcemeta.com,2024:jsonbinpack/encoding/v1", 3 | "binpackEncoding": "ANY_PACKED_TYPE_TAG_BYTE_PREFIX", 4 | "binpackOptions": {} 5 | } 6 | -------------------------------------------------------------------------------- /test/e2e/openweatherroadrisk/schema-less/output.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sourcemeta/jsonbinpack/c0503bd6f27f2bcbfe547d923713161d771ca0c4/test/e2e/openweatherroadrisk/schema-less/output.bin -------------------------------------------------------------------------------- /test/e2e/openweatherroadrisk/schema-less/schema.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /test/e2e/openweatherroadrisk/schema-less/size.txt: -------------------------------------------------------------------------------- 1 | 254 2 | -------------------------------------------------------------------------------- /test/e2e/ox-test/document.json: -------------------------------------------------------------------------------- 1 | { 2 | "tags": [], 3 | "tz": -25200, 4 | "days": [ 1, 1, 2, 1 ], 5 | "coord": [ -90.0715, 29.9510 ], 6 | "data": [ 7 | { "name": "ox03", "staff": true }, 8 | { 9 | "name": null, 10 | "staff": false, 11 | "extra": { "info": "" } 12 | }, 13 | { "name": "ox03", "staff": true }, 14 | {} 15 | ] 16 | } 17 | -------------------------------------------------------------------------------- /test/e2e/ox-test/schema-less/canonical.json: -------------------------------------------------------------------------------- 1 | { 2 | "anyOf": [ 3 | { 4 | "enum": [ null ] 5 | }, 6 | { 7 | "enum": [ false, true ] 8 | }, 9 | { 10 | "type": "object", 11 | "minProperties": 0, 12 | "properties": {} 13 | }, 14 | { 15 | "type": "array", 16 | "minItems": 0 17 | }, 18 | { 19 | "type": "string", 20 | "minLength": 0 21 | }, 22 | { 23 | "type": "number", 24 | "multipleOf": 1 25 | }, 26 | { 27 | "type": "integer", 28 | "multipleOf": 1 29 | } 30 | ] 31 | } 32 | -------------------------------------------------------------------------------- /test/e2e/ox-test/schema-less/encoding.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "tag:sourcemeta.com,2024:jsonbinpack/encoding/v1", 3 | "binpackEncoding": "ANY_PACKED_TYPE_TAG_BYTE_PREFIX", 4 | "binpackOptions": {} 5 | } 6 | -------------------------------------------------------------------------------- /test/e2e/ox-test/schema-less/output.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sourcemeta/jsonbinpack/c0503bd6f27f2bcbfe547d923713161d771ca0c4/test/e2e/ox-test/schema-less/output.bin -------------------------------------------------------------------------------- /test/e2e/ox-test/schema-less/schema.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /test/e2e/ox-test/schema-less/size.txt: -------------------------------------------------------------------------------- 1 | 94 2 | -------------------------------------------------------------------------------- /test/e2e/packagejson/schema-less/canonical.json: -------------------------------------------------------------------------------- 1 | { 2 | "anyOf": [ 3 | { 4 | "enum": [ null ] 5 | }, 6 | { 7 | "enum": [ false, true ] 8 | }, 9 | { 10 | "type": "object", 11 | "minProperties": 0, 12 | "properties": {} 13 | }, 14 | { 15 | "type": "array", 16 | "minItems": 0 17 | }, 18 | { 19 | "type": "string", 20 | "minLength": 0 21 | }, 22 | { 23 | "type": "number", 24 | "multipleOf": 1 25 | }, 26 | { 27 | "type": "integer", 28 | "multipleOf": 1 29 | } 30 | ] 31 | } 32 | -------------------------------------------------------------------------------- /test/e2e/packagejson/schema-less/encoding.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "tag:sourcemeta.com,2024:jsonbinpack/encoding/v1", 3 | "binpackEncoding": "ANY_PACKED_TYPE_TAG_BYTE_PREFIX", 4 | "binpackOptions": {} 5 | } 6 | -------------------------------------------------------------------------------- /test/e2e/packagejson/schema-less/output.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sourcemeta/jsonbinpack/c0503bd6f27f2bcbfe547d923713161d771ca0c4/test/e2e/packagejson/schema-less/output.bin -------------------------------------------------------------------------------- /test/e2e/packagejson/schema-less/schema.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /test/e2e/packagejson/schema-less/size.txt: -------------------------------------------------------------------------------- 1 | 1957 2 | -------------------------------------------------------------------------------- /test/e2e/packagejsonlintrc/schema-less/canonical.json: -------------------------------------------------------------------------------- 1 | { 2 | "anyOf": [ 3 | { 4 | "enum": [ null ] 5 | }, 6 | { 7 | "enum": [ false, true ] 8 | }, 9 | { 10 | "type": "object", 11 | "minProperties": 0, 12 | "properties": {} 13 | }, 14 | { 15 | "type": "array", 16 | "minItems": 0 17 | }, 18 | { 19 | "type": "string", 20 | "minLength": 0 21 | }, 22 | { 23 | "type": "number", 24 | "multipleOf": 1 25 | }, 26 | { 27 | "type": "integer", 28 | "multipleOf": 1 29 | } 30 | ] 31 | } 32 | -------------------------------------------------------------------------------- /test/e2e/packagejsonlintrc/schema-less/encoding.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "tag:sourcemeta.com,2024:jsonbinpack/encoding/v1", 3 | "binpackEncoding": "ANY_PACKED_TYPE_TAG_BYTE_PREFIX", 4 | "binpackOptions": {} 5 | } 6 | -------------------------------------------------------------------------------- /test/e2e/packagejsonlintrc/schema-less/output.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sourcemeta/jsonbinpack/c0503bd6f27f2bcbfe547d923713161d771ca0c4/test/e2e/packagejsonlintrc/schema-less/output.bin -------------------------------------------------------------------------------- /test/e2e/packagejsonlintrc/schema-less/schema.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /test/e2e/packagejsonlintrc/schema-less/size.txt: -------------------------------------------------------------------------------- 1 | 791 2 | -------------------------------------------------------------------------------- /test/e2e/sapcloudsdkpipeline/document.json: -------------------------------------------------------------------------------- 1 | { 2 | "general": null, 3 | "stages": null, 4 | "steps": null 5 | } 6 | -------------------------------------------------------------------------------- /test/e2e/sapcloudsdkpipeline/schema-less/canonical.json: -------------------------------------------------------------------------------- 1 | { 2 | "anyOf": [ 3 | { 4 | "enum": [ null ] 5 | }, 6 | { 7 | "enum": [ false, true ] 8 | }, 9 | { 10 | "type": "object", 11 | "minProperties": 0, 12 | "properties": {} 13 | }, 14 | { 15 | "type": "array", 16 | "minItems": 0 17 | }, 18 | { 19 | "type": "string", 20 | "minLength": 0 21 | }, 22 | { 23 | "type": "number", 24 | "multipleOf": 1 25 | }, 26 | { 27 | "type": "integer", 28 | "multipleOf": 1 29 | } 30 | ] 31 | } 32 | -------------------------------------------------------------------------------- /test/e2e/sapcloudsdkpipeline/schema-less/encoding.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "tag:sourcemeta.com,2024:jsonbinpack/encoding/v1", 3 | "binpackEncoding": "ANY_PACKED_TYPE_TAG_BYTE_PREFIX", 4 | "binpackOptions": {} 5 | } 6 | -------------------------------------------------------------------------------- /test/e2e/sapcloudsdkpipeline/schema-less/output.bin: -------------------------------------------------------------------------------- 1 | #generalstagessteps -------------------------------------------------------------------------------- /test/e2e/sapcloudsdkpipeline/schema-less/schema.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /test/e2e/sapcloudsdkpipeline/schema-less/size.txt: -------------------------------------------------------------------------------- 1 | 25 2 | -------------------------------------------------------------------------------- /test/e2e/travisnotifications/document.json: -------------------------------------------------------------------------------- 1 | { 2 | "notifications": { 3 | "campfire": { 4 | "secure": "sdfusdhfsdofguhdfgubdsifgudfbgs3453durghssecurestringidsuag34522irueg=" 5 | }, 6 | "irc": { 7 | "secure": "sdfusdhfsdofguhdfgubdsifgudfbgs3453durghssecurestringidsuag34522irueg=" 8 | }, 9 | "flowdock": { 10 | "secure": "sdfusdhfsdofguhdfgubdsifgudfbgs3453durghssecurestringidsuag34522irueg=" 11 | }, 12 | "hipchat": { 13 | "secure": "sdfusdhfsdofguhdfgubdsifgudfbgs3453durghssecurestringidsuag34522irueg=" 14 | }, 15 | "slack": { 16 | "secure": "sdfusdhfsdofguhdfgubdsifgudfbgs3453durghssecurestringidsuag34522irueg=" 17 | }, 18 | "webhooks": { 19 | "secure": "sdfusdhfsdofguhdfgubdsifgudfbgs3453durghssecurestringidsuag34522irueg=" 20 | }, 21 | "email": { 22 | "secure": "sdfusdhfsdofguhdfgubdsifgudfbgs3453durghssecurestringidsuag34522irueg=" 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /test/e2e/travisnotifications/schema-less/canonical.json: -------------------------------------------------------------------------------- 1 | { 2 | "anyOf": [ 3 | { 4 | "enum": [ null ] 5 | }, 6 | { 7 | "enum": [ false, true ] 8 | }, 9 | { 10 | "type": "object", 11 | "minProperties": 0, 12 | "properties": {} 13 | }, 14 | { 15 | "type": "array", 16 | "minItems": 0 17 | }, 18 | { 19 | "type": "string", 20 | "minLength": 0 21 | }, 22 | { 23 | "type": "number", 24 | "multipleOf": 1 25 | }, 26 | { 27 | "type": "integer", 28 | "multipleOf": 1 29 | } 30 | ] 31 | } 32 | -------------------------------------------------------------------------------- /test/e2e/travisnotifications/schema-less/encoding.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "tag:sourcemeta.com,2024:jsonbinpack/encoding/v1", 3 | "binpackEncoding": "ANY_PACKED_TYPE_TAG_BYTE_PREFIX", 4 | "binpackOptions": {} 5 | } 6 | -------------------------------------------------------------------------------- /test/e2e/travisnotifications/schema-less/output.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sourcemeta/jsonbinpack/c0503bd6f27f2bcbfe547d923713161d771ca0c4/test/e2e/travisnotifications/schema-less/output.bin -------------------------------------------------------------------------------- /test/e2e/travisnotifications/schema-less/schema.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /test/e2e/travisnotifications/schema-less/size.txt: -------------------------------------------------------------------------------- 1 | 185 2 | -------------------------------------------------------------------------------- /test/e2e/tslintbasic/document.json: -------------------------------------------------------------------------------- 1 | { 2 | "rules": { 3 | "ordered-imports": { 4 | "options": { 5 | "grouped-imports": true 6 | } 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /test/e2e/tslintbasic/schema-less/canonical.json: -------------------------------------------------------------------------------- 1 | { 2 | "anyOf": [ 3 | { 4 | "enum": [ null ] 5 | }, 6 | { 7 | "enum": [ false, true ] 8 | }, 9 | { 10 | "type": "object", 11 | "minProperties": 0, 12 | "properties": {} 13 | }, 14 | { 15 | "type": "array", 16 | "minItems": 0 17 | }, 18 | { 19 | "type": "string", 20 | "minLength": 0 21 | }, 22 | { 23 | "type": "number", 24 | "multipleOf": 1 25 | }, 26 | { 27 | "type": "integer", 28 | "multipleOf": 1 29 | } 30 | ] 31 | } 32 | -------------------------------------------------------------------------------- /test/e2e/tslintbasic/schema-less/encoding.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "tag:sourcemeta.com,2024:jsonbinpack/encoding/v1", 3 | "binpackEncoding": "ANY_PACKED_TYPE_TAG_BYTE_PREFIX", 4 | "binpackOptions": {} 5 | } 6 | -------------------------------------------------------------------------------- /test/e2e/tslintbasic/schema-less/output.bin: -------------------------------------------------------------------------------- 1 | rulesordered-importsoptionsgrouped-imports -------------------------------------------------------------------------------- /test/e2e/tslintbasic/schema-less/schema.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /test/e2e/tslintbasic/schema-less/size.txt: -------------------------------------------------------------------------------- 1 | 51 2 | -------------------------------------------------------------------------------- /test/e2e/tslintextend/document.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["tslint-config-unional", "tslint-config-standard"] 3 | } 4 | -------------------------------------------------------------------------------- /test/e2e/tslintextend/schema-less/canonical.json: -------------------------------------------------------------------------------- 1 | { 2 | "anyOf": [ 3 | { 4 | "enum": [ null ] 5 | }, 6 | { 7 | "enum": [ false, true ] 8 | }, 9 | { 10 | "type": "object", 11 | "minProperties": 0, 12 | "properties": {} 13 | }, 14 | { 15 | "type": "array", 16 | "minItems": 0 17 | }, 18 | { 19 | "type": "string", 20 | "minLength": 0 21 | }, 22 | { 23 | "type": "number", 24 | "multipleOf": 1 25 | }, 26 | { 27 | "type": "integer", 28 | "multipleOf": 1 29 | } 30 | ] 31 | } 32 | -------------------------------------------------------------------------------- /test/e2e/tslintextend/schema-less/encoding.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "tag:sourcemeta.com,2024:jsonbinpack/encoding/v1", 3 | "binpackEncoding": "ANY_PACKED_TYPE_TAG_BYTE_PREFIX", 4 | "binpackOptions": {} 5 | } 6 | -------------------------------------------------------------------------------- /test/e2e/tslintextend/schema-less/output.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sourcemeta/jsonbinpack/c0503bd6f27f2bcbfe547d923713161d771ca0c4/test/e2e/tslintextend/schema-less/output.bin -------------------------------------------------------------------------------- /test/e2e/tslintextend/schema-less/schema.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /test/e2e/tslintextend/schema-less/size.txt: -------------------------------------------------------------------------------- 1 | 55 2 | -------------------------------------------------------------------------------- /test/e2e/tslintmulti/document.json: -------------------------------------------------------------------------------- 1 | { 2 | "rules": { 3 | "no-any": [true], 4 | "radix": [true], 5 | "ordered-imports": { 6 | "options": { 7 | "grouped-imports": true 8 | } 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /test/e2e/tslintmulti/schema-less/canonical.json: -------------------------------------------------------------------------------- 1 | { 2 | "anyOf": [ 3 | { 4 | "enum": [ null ] 5 | }, 6 | { 7 | "enum": [ false, true ] 8 | }, 9 | { 10 | "type": "object", 11 | "minProperties": 0, 12 | "properties": {} 13 | }, 14 | { 15 | "type": "array", 16 | "minItems": 0 17 | }, 18 | { 19 | "type": "string", 20 | "minLength": 0 21 | }, 22 | { 23 | "type": "number", 24 | "multipleOf": 1 25 | }, 26 | { 27 | "type": "integer", 28 | "multipleOf": 1 29 | } 30 | ] 31 | } 32 | -------------------------------------------------------------------------------- /test/e2e/tslintmulti/schema-less/encoding.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "tag:sourcemeta.com,2024:jsonbinpack/encoding/v1", 3 | "binpackEncoding": "ANY_PACKED_TYPE_TAG_BYTE_PREFIX", 4 | "binpackOptions": {} 5 | } 6 | -------------------------------------------------------------------------------- /test/e2e/tslintmulti/schema-less/output.bin: -------------------------------------------------------------------------------- 1 | rules#no-anyradixordered-importsoptionsgrouped-imports -------------------------------------------------------------------------------- /test/e2e/tslintmulti/schema-less/schema.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /test/e2e/tslintmulti/schema-less/size.txt: -------------------------------------------------------------------------------- 1 | 68 2 | -------------------------------------------------------------------------------- /test/numeric/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | sourcemeta_googletest(NAMESPACE sourcemeta PROJECT jsonbinpack NAME numeric 2 | FOLDER "JSON BinPack/Numeric" 3 | SOURCES 4 | zigzag_test.cc 5 | closest_smallest_exponent_test.cc 6 | divide_ceil_test.cc 7 | divide_floor_test.cc 8 | uint_max_test.cc) 9 | 10 | target_link_libraries(sourcemeta_jsonbinpack_numeric_unit 11 | PRIVATE sourcemeta::jsonbinpack::numeric) 12 | -------------------------------------------------------------------------------- /test/numeric/closest_smallest_exponent_test.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #include 4 | 5 | TEST(JSONBinPack_numeric, closest_smallest_exponent_2_2_1_2) { 6 | EXPECT_EQ(sourcemeta::jsonbinpack::closest_smallest_exponent(2, 2, 1, 2), 1); 7 | } 8 | 9 | TEST(JSONBinPack_numeric, closest_smallest_exponent_20_2_1_6) { 10 | EXPECT_EQ(sourcemeta::jsonbinpack::closest_smallest_exponent(20, 2, 1, 6), 4); 11 | } 12 | 13 | TEST(JSONBinPack_numeric, closest_smallest_exponent_20_3_1_6) { 14 | EXPECT_EQ(sourcemeta::jsonbinpack::closest_smallest_exponent(20, 3, 1, 6), 2); 15 | } 16 | -------------------------------------------------------------------------------- /test/numeric/uint_max_test.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #include 4 | 5 | TEST(JSONBinPack_numeric, uint_max_8) { 6 | EXPECT_EQ(sourcemeta::jsonbinpack::uint_max<8>, 7 | std::numeric_limits::max()); 8 | } 9 | 10 | TEST(JSONBinPack_numeric, uint_max_5) { 11 | EXPECT_EQ(sourcemeta::jsonbinpack::uint_max<5>, 31); 12 | } 13 | 14 | TEST(JSONBinPack_numeric, uint_max_3) { 15 | EXPECT_EQ(sourcemeta::jsonbinpack::uint_max<3>, 7); 16 | } 17 | 18 | TEST(JSONBinPack_numeric, uint_max_2) { 19 | EXPECT_EQ(sourcemeta::jsonbinpack::uint_max<2>, 3); 20 | } 21 | -------------------------------------------------------------------------------- /test/packaging/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # TODO: Get install path from a variable? 2 | add_test(NAME packaging.find_package_configure COMMAND 3 | "${CMAKE_COMMAND}" 4 | -S "${CMAKE_CURRENT_SOURCE_DIR}/find_package" 5 | -B "${CMAKE_CURRENT_BINARY_DIR}/find_package" 6 | "-DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}" 7 | "-DCMAKE_PREFIX_PATH:PATH=${CMAKE_PREFIX_PATH};${PROJECT_SOURCE_DIR}/build/dist" 8 | "-DCMAKE_TOOLCHAIN_FILE:PATH=${CMAKE_TOOLCHAIN_FILE}") 9 | add_test(NAME packaging.find_package_build COMMAND 10 | "${CMAKE_COMMAND}" 11 | --build "${CMAKE_CURRENT_BINARY_DIR}/find_package" 12 | --config "${CMAKE_BUILD_TYPE}") 13 | set_tests_properties(packaging.find_package_build 14 | PROPERTIES DEPENDS packaging.find_package_configure) 15 | -------------------------------------------------------------------------------- /test/packaging/find_package/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.18) 2 | project(jsonbinpack_hello VERSION 0.0.1 LANGUAGES CXX) 3 | set(CMAKE_CXX_STANDARD 20) 4 | set(CMAKE_CXX_STANDARD_REQUIRED ON) 5 | set(CMAKE_CXX_EXTENSIONS OFF) 6 | find_package(JSONBinPack REQUIRED) 7 | add_executable(jsonbinpack_hello hello.cc) 8 | target_link_libraries(jsonbinpack_hello PRIVATE sourcemeta::jsonbinpack::runtime) 9 | target_link_libraries(jsonbinpack_hello PRIVATE sourcemeta::jsonbinpack::compiler) 10 | -------------------------------------------------------------------------------- /test/packaging/find_package/hello.cc: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | #include 5 | #include 6 | 7 | #include // EXIT_SUCCESS 8 | #include // std::cout 9 | 10 | auto main() -> int { 11 | sourcemeta::core::JSON schema = sourcemeta::core::parse_json(R"JSON({ 12 | "$schema": "https://json-schema.org/draft/2020-12/schema", 13 | "type": "integer", 14 | "minimum": -100, 15 | "maximum": 100 16 | })JSON"); 17 | 18 | sourcemeta::jsonbinpack::compile(schema, 19 | sourcemeta::core::schema_official_walker, 20 | sourcemeta::core::schema_official_resolver); 21 | 22 | const sourcemeta::jsonbinpack::Encoding encoding{ 23 | sourcemeta::jsonbinpack::load(schema)}; 24 | sourcemeta::jsonbinpack::Encoder encoder{std::cout}; 25 | 26 | const sourcemeta::core::JSON instance{5}; 27 | encoder.write(instance, encoding); 28 | 29 | std::cout << std::endl; 30 | return EXIT_SUCCESS; 31 | } 32 | -------------------------------------------------------------------------------- /test/runtime/decode_utils.h: -------------------------------------------------------------------------------- 1 | #ifndef SOURCEMETA_JSONBINPACK_TEST_RUNTIME_DECODE_UTILS_H_ 2 | #define SOURCEMETA_JSONBINPACK_TEST_RUNTIME_DECODE_UTILS_H_ 3 | 4 | #include 5 | 6 | #include // std::uint8_t 7 | #include // std::initializer_list 8 | #include // std::basic_ostringstream, std::basic_istringstream 9 | 10 | static auto bytes_to_string(std::initializer_list bytes) 11 | -> sourcemeta::core::JSON::String { 12 | std::basic_ostringstream 14 | output{}; 15 | for (const auto byte : bytes) { 16 | output.put(static_cast(byte)); 17 | } 18 | return output.str(); 19 | } 20 | 21 | class InputByteStream 22 | : public std::basic_istringstream { 23 | public: 24 | InputByteStream(std::initializer_list bytes) 25 | : std::basic_istringstream{ 26 | bytes_to_string(bytes)} {} 27 | }; 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /test/runtime/encode_test.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #include "encode_utils.h" 4 | #include 5 | #include 6 | 7 | TEST(JSONBinPack_Encoder, generic_encode_BOUNDED_MULTIPLE_8BITS_ENUM_FIXED) { 8 | using namespace sourcemeta::jsonbinpack; 9 | const sourcemeta::core::JSON document{-5}; 10 | OutputByteStream stream{}; 11 | Encoder encoder{stream}; 12 | BOUNDED_MULTIPLE_8BITS_ENUM_FIXED options{-5, -1, 1}; 13 | encoder.write(document, options); 14 | EXPECT_BYTES(stream, {0x00}); 15 | } 16 | 17 | TEST(JSONBinPack_Encoder, ANY_PACKED_TYPE_TAG_BYTE_PREFIX_many) { 18 | using namespace sourcemeta::jsonbinpack; 19 | OutputByteStream stream{}; 20 | Encoder encoder{stream}; 21 | ANY_PACKED_TYPE_TAG_BYTE_PREFIX options; 22 | encoder.write(sourcemeta::core::JSON{1}, options); 23 | encoder.write(sourcemeta::core::JSON{2}, options); 24 | encoder.write(sourcemeta::core::JSON{3}, options); 25 | EXPECT_BYTES(stream, {0x15, 0x1d, 0x25}); 26 | } 27 | -------------------------------------------------------------------------------- /test/runtime/encoding_traits_test.cc: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | #include 5 | #include 6 | 7 | TEST(JSONBinPack_Encoding, encoding_movable) { 8 | using namespace sourcemeta::jsonbinpack; 9 | EXPECT_TRUE(std::is_move_constructible_v); 10 | } 11 | 12 | TEST(JSONBinPack_Encoding, encoding_no_nothrow_movable) { 13 | using namespace sourcemeta::jsonbinpack; 14 | EXPECT_FALSE(std::is_nothrow_move_constructible_v); 15 | } 16 | 17 | TEST(JSONBinPack_Encoding, encoding_copyable) { 18 | using namespace sourcemeta::jsonbinpack; 19 | EXPECT_TRUE(std::is_copy_constructible_v); 20 | } 21 | -------------------------------------------------------------------------------- /test/runtime/v1_loader_test.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #include 4 | #include 5 | 6 | TEST(JSONBinPack_Loader_v1, invalid_encoding_name) { 7 | const sourcemeta::core::JSON input = sourcemeta::core::parse_json(R"JSON({ 8 | "$schema": "tag:sourcemeta.com,2024:jsonbinpack/encoding/v1", 9 | "binpackEncoding": "FOO_BAR", 10 | "binpackOptions": {} 11 | })JSON"); 12 | 13 | EXPECT_THROW(sourcemeta::jsonbinpack::load(input), 14 | sourcemeta::jsonbinpack::EncodingError); 15 | } 16 | -------------------------------------------------------------------------------- /test/runtime/v1_number_loader_test.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #include 4 | #include 5 | 6 | #include 7 | 8 | TEST(JSONBinPack_Loader_v1, DOUBLE_VARINT_TUPLE) { 9 | const sourcemeta::core::JSON input = sourcemeta::core::parse_json(R"JSON({ 10 | "$schema": "tag:sourcemeta.com,2024:jsonbinpack/encoding/v1", 11 | "binpackEncoding": "DOUBLE_VARINT_TUPLE", 12 | "binpackOptions": {} 13 | })JSON"); 14 | 15 | const auto result{sourcemeta::jsonbinpack::load(input)}; 16 | using namespace sourcemeta::jsonbinpack; 17 | EXPECT_TRUE(std::holds_alternative(result)); 18 | } 19 | -------------------------------------------------------------------------------- /vendor/alterschema/LICENSE: -------------------------------------------------------------------------------- 1 | This software is dual-licensed: you can redistribute it and/or modify it under 2 | the terms of the GNU Affero General Public License as published by the Free 3 | Software Foundation, either version 3 of the License, or (at your option) any 4 | later version. For the terms of this license, see 5 | . 6 | 7 | You are free to use this software under the terms of the GNU Affero General 8 | Public License WITHOUT ANY WARRANTY; without even the implied warranty of 9 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 10 | 11 | Alternatively, you can use this software under a commercial license, as set out 12 | in . 13 | -------------------------------------------------------------------------------- /vendor/alterschema/config.cmake.in: -------------------------------------------------------------------------------- 1 | @PACKAGE_INIT@ 2 | 3 | # Support both casing styles 4 | list(APPEND ALTERSCHEMA_COMPONENTS ${AlterSchema_FIND_COMPONENTS}) 5 | list(APPEND ALTERSCHEMA_COMPONENTS ${alterschema_FIND_COMPONENTS}) 6 | if(NOT ALTERSCHEMA_COMPONENTS) 7 | list(APPEND ALTERSCHEMA_COMPONENTS engine) 8 | list(APPEND ALTERSCHEMA_COMPONENTS linter) 9 | endif() 10 | 11 | include(CMakeFindDependencyMacro) 12 | 13 | foreach(component ${ALTERSCHEMA_COMPONENTS}) 14 | if(component STREQUAL "engine") 15 | find_dependency(JSONToolkit COMPONENTS uri json jsonpointer jsonschema) 16 | include("${CMAKE_CURRENT_LIST_DIR}/sourcemeta_alterschema_engine.cmake") 17 | elseif(component STREQUAL "linter") 18 | include("${CMAKE_CURRENT_LIST_DIR}/sourcemeta_alterschema_linter.cmake") 19 | else() 20 | message(FATAL_ERROR "Unknown AlterSchema component: ${component}") 21 | endif() 22 | endforeach() 23 | 24 | check_required_components("@PROJECT_NAME@") 25 | -------------------------------------------------------------------------------- /vendor/alterschema/src/engine/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | noa_library(NAMESPACE sourcemeta PROJECT alterschema NAME engine 2 | FOLDER "AlterSchema/Engine" 3 | PRIVATE_HEADERS bundle.h rule.h transformer.h 4 | SOURCES bundle.cc rule.cc transformer.cc) 5 | 6 | if(ALTERSCHEMA_INSTALL) 7 | noa_library_install(NAMESPACE sourcemeta PROJECT alterschema NAME engine) 8 | endif() 9 | 10 | target_link_libraries(sourcemeta_alterschema_engine PUBLIC 11 | sourcemeta::jsontoolkit::json) 12 | target_link_libraries(sourcemeta_alterschema_engine PUBLIC 13 | sourcemeta::jsontoolkit::jsonpointer) 14 | target_link_libraries(sourcemeta_alterschema_engine PUBLIC 15 | sourcemeta::jsontoolkit::jsonschema) 16 | -------------------------------------------------------------------------------- /vendor/alterschema/src/engine/include/sourcemeta/alterschema/engine.h: -------------------------------------------------------------------------------- 1 | #ifndef SOURCEMETA_ALTERSCHEMA_ENGINE_H_ 2 | #define SOURCEMETA_ALTERSCHEMA_ENGINE_H_ 3 | 4 | /// @defgroup engine Engine 5 | /// @brief A general-purpose extensible schema transformation engine. 6 | /// 7 | /// This functionality is included as follows: 8 | /// 9 | /// ```cpp 10 | /// #include 11 | /// ``` 12 | 13 | #include 14 | #include 15 | #include 16 | 17 | #endif 18 | -------------------------------------------------------------------------------- /vendor/alterschema/src/linter/desugar/boolean_true.h: -------------------------------------------------------------------------------- 1 | class BooleanTrue final : public Rule { 2 | public: 3 | BooleanTrue() 4 | : Rule{"boolean_true", 5 | "The boolean schema `true` is syntax sugar for the empty schema"} { 6 | }; 7 | 8 | [[nodiscard]] auto condition(const sourcemeta::jsontoolkit::JSON &schema, 9 | const std::string &, 10 | const std::set &, 11 | const sourcemeta::jsontoolkit::Pointer &) const 12 | -> bool override { 13 | return schema.is_boolean() && schema.to_boolean(); 14 | } 15 | 16 | auto transform(Transformer &transformer) const -> void override { 17 | transformer.replace(sourcemeta::jsontoolkit::JSON::make_object()); 18 | } 19 | }; 20 | -------------------------------------------------------------------------------- /vendor/alterschema/src/linter/superfluous/content_schema_without_media_type.h: -------------------------------------------------------------------------------- 1 | class ContentSchemaWithoutMediaType final : public Rule { 2 | public: 3 | ContentSchemaWithoutMediaType() 4 | : Rule{"content_schema_without_media_type", 5 | "The `contentSchema` keyword is meaningless without the presence " 6 | "of the `contentMediaType` keyword"} {}; 7 | 8 | [[nodiscard]] auto condition(const sourcemeta::jsontoolkit::JSON &schema, 9 | const std::string &, 10 | const std::set &vocabularies, 11 | const sourcemeta::jsontoolkit::Pointer &) const 12 | -> bool override { 13 | return contains_any( 14 | vocabularies, 15 | {"https://json-schema.org/draft/2020-12/vocab/content", 16 | "https://json-schema.org/draft/2019-09/vocab/content"}) && 17 | schema.is_object() && schema.defines("contentSchema") && 18 | !schema.defines("contentMediaType"); 19 | } 20 | 21 | auto transform(Transformer &transformer) const -> void override { 22 | transformer.erase("contentSchema"); 23 | } 24 | }; 25 | -------------------------------------------------------------------------------- /vendor/alterschema/src/linter/superfluous/else_without_if.h: -------------------------------------------------------------------------------- 1 | class ElseWithoutIf final : public Rule { 2 | public: 3 | ElseWithoutIf() 4 | : Rule{"else_without_if", "The `else` keyword is meaningless " 5 | "without the presence of the `if` keyword"} {}; 6 | 7 | [[nodiscard]] auto condition(const sourcemeta::jsontoolkit::JSON &schema, 8 | const std::string &, 9 | const std::set &vocabularies, 10 | const sourcemeta::jsontoolkit::Pointer &) const 11 | -> bool override { 12 | return contains_any( 13 | vocabularies, 14 | {"https://json-schema.org/draft/2020-12/vocab/applicator", 15 | "https://json-schema.org/draft/2019-09/vocab/applicator", 16 | "http://json-schema.org/draft-07/schema#"}) && 17 | schema.is_object() && schema.defines("else") && 18 | !schema.defines("if"); 19 | } 20 | 21 | auto transform(Transformer &transformer) const -> void override { 22 | transformer.erase("else"); 23 | } 24 | }; 25 | -------------------------------------------------------------------------------- /vendor/alterschema/src/linter/superfluous/if_without_then_else.h: -------------------------------------------------------------------------------- 1 | class IfWithoutThenElse final : public Rule { 2 | public: 3 | IfWithoutThenElse() 4 | : Rule{"if_without_then_else", 5 | "The `if` keyword is meaningless " 6 | "without the presence of the `then` or `else` keywords"} {}; 7 | 8 | [[nodiscard]] auto condition(const sourcemeta::jsontoolkit::JSON &schema, 9 | const std::string &, 10 | const std::set &vocabularies, 11 | const sourcemeta::jsontoolkit::Pointer &) const 12 | -> bool override { 13 | return contains_any( 14 | vocabularies, 15 | {"https://json-schema.org/draft/2020-12/vocab/applicator", 16 | "https://json-schema.org/draft/2019-09/vocab/applicator", 17 | "http://json-schema.org/draft-07/schema#"}) && 18 | schema.is_object() && schema.defines("if") && 19 | !schema.defines("then") && !schema.defines("else"); 20 | } 21 | 22 | auto transform(Transformer &transformer) const -> void override { 23 | transformer.erase("if"); 24 | } 25 | }; 26 | -------------------------------------------------------------------------------- /vendor/alterschema/src/linter/superfluous/max_contains_without_contains.h: -------------------------------------------------------------------------------- 1 | class MaxContainsWithoutContains final : public Rule { 2 | public: 3 | MaxContainsWithoutContains() 4 | : Rule{"max_contains_without_contains", 5 | "The `maxContains` keyword is meaningless " 6 | "without the presence of the `contains` keyword"} {}; 7 | 8 | [[nodiscard]] auto condition(const sourcemeta::jsontoolkit::JSON &schema, 9 | const std::string &, 10 | const std::set &vocabularies, 11 | const sourcemeta::jsontoolkit::Pointer &) const 12 | -> bool override { 13 | return contains_any( 14 | vocabularies, 15 | {"https://json-schema.org/draft/2020-12/vocab/validation", 16 | "https://json-schema.org/draft/2019-09/vocab/validation"}) && 17 | schema.is_object() && schema.defines("maxContains") && 18 | !schema.defines("contains"); 19 | } 20 | 21 | auto transform(Transformer &transformer) const -> void override { 22 | transformer.erase("maxContains"); 23 | } 24 | }; 25 | -------------------------------------------------------------------------------- /vendor/alterschema/src/linter/superfluous/min_contains_without_contains.h: -------------------------------------------------------------------------------- 1 | class MinContainsWithoutContains final : public Rule { 2 | public: 3 | MinContainsWithoutContains() 4 | : Rule{"min_contains_without_contains", 5 | "The `minContains` keyword is meaningless " 6 | "without the presence of the `contains` keyword"} {}; 7 | 8 | [[nodiscard]] auto condition(const sourcemeta::jsontoolkit::JSON &schema, 9 | const std::string &, 10 | const std::set &vocabularies, 11 | const sourcemeta::jsontoolkit::Pointer &) const 12 | -> bool override { 13 | return contains_any( 14 | vocabularies, 15 | {"https://json-schema.org/draft/2020-12/vocab/validation", 16 | "https://json-schema.org/draft/2019-09/vocab/validation"}) && 17 | schema.is_object() && schema.defines("minContains") && 18 | !schema.defines("contains"); 19 | } 20 | 21 | auto transform(Transformer &transformer) const -> void override { 22 | transformer.erase("minContains"); 23 | } 24 | }; 25 | -------------------------------------------------------------------------------- /vendor/alterschema/src/linter/superfluous/then_without_if.h: -------------------------------------------------------------------------------- 1 | class ThenWithoutIf final : public Rule { 2 | public: 3 | ThenWithoutIf() 4 | : Rule{"then_without_if", "The `then` keyword is meaningless " 5 | "without the presence of the `if` keyword"} {}; 6 | 7 | [[nodiscard]] auto condition(const sourcemeta::jsontoolkit::JSON &schema, 8 | const std::string &, 9 | const std::set &vocabularies, 10 | const sourcemeta::jsontoolkit::Pointer &) const 11 | -> bool override { 12 | return contains_any( 13 | vocabularies, 14 | {"https://json-schema.org/draft/2020-12/vocab/applicator", 15 | "https://json-schema.org/draft/2019-09/vocab/applicator", 16 | "http://json-schema.org/draft-07/schema#"}) && 17 | schema.is_object() && schema.defines("then") && 18 | !schema.defines("if"); 19 | } 20 | 21 | auto transform(Transformer &transformer) const -> void override { 22 | transformer.erase("then"); 23 | } 24 | }; 25 | -------------------------------------------------------------------------------- /vendor/bootstrap.mask: -------------------------------------------------------------------------------- 1 | .github 2 | build 3 | dist 4 | nuget 5 | site 6 | js 7 | .babelrc.js 8 | .browserslistrc 9 | .bundlewatch.config.json 10 | .cspell.json 11 | .editorconfig 12 | .eslintignore 13 | .eslintrc.json 14 | .gitattributes 15 | .stylelintignore 16 | .stylelintrc 17 | CODE_OF_CONDUCT.md 18 | LICENSE 19 | README.md 20 | SECURITY.md 21 | composer.json 22 | config.yml 23 | package-lock.json 24 | package.js 25 | package.json 26 | -------------------------------------------------------------------------------- /vendor/bootstrap/scss/_badge.scss: -------------------------------------------------------------------------------- 1 | // Base class 2 | // 3 | // Requires one of the contextual, color modifier classes for `color` and 4 | // `background-color`. 5 | 6 | .badge { 7 | display: inline-block; 8 | padding: $badge-padding-y $badge-padding-x; 9 | @include font-size($badge-font-size); 10 | font-weight: $badge-font-weight; 11 | line-height: 1; 12 | color: $badge-color; 13 | text-align: center; 14 | white-space: nowrap; 15 | vertical-align: baseline; 16 | @include border-radius($badge-border-radius); 17 | @include gradient-bg(); 18 | 19 | // Empty badges collapse automatically 20 | &:empty { 21 | display: none; 22 | } 23 | } 24 | 25 | // Quick fix for badges in buttons 26 | .btn .badge { 27 | position: relative; 28 | top: -1px; 29 | } 30 | -------------------------------------------------------------------------------- /vendor/bootstrap/scss/_breadcrumb.scss: -------------------------------------------------------------------------------- 1 | .breadcrumb { 2 | display: flex; 3 | flex-wrap: wrap; 4 | padding: $breadcrumb-padding-y $breadcrumb-padding-x; 5 | margin-bottom: $breadcrumb-margin-bottom; 6 | @include font-size($breadcrumb-font-size); 7 | list-style: none; 8 | background-color: $breadcrumb-bg; 9 | @include border-radius($breadcrumb-border-radius); 10 | } 11 | 12 | .breadcrumb-item { 13 | // The separator between breadcrumbs (by default, a forward-slash: "/") 14 | + .breadcrumb-item { 15 | padding-left: $breadcrumb-item-padding-x; 16 | 17 | &::before { 18 | float: left; // Suppress inline spacings and underlining of the separator 19 | padding-right: $breadcrumb-item-padding-x; 20 | color: $breadcrumb-divider-color; 21 | content: var(--#{$variable-prefix}breadcrumb-divider, escape-svg($breadcrumb-divider)) #{"/* rtl:"} var(--#{$variable-prefix}breadcrumb-divider, escape-svg($breadcrumb-divider-flipped)) #{"*/"}; 22 | } 23 | } 24 | 25 | &.active { 26 | color: $breadcrumb-active-color; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /vendor/bootstrap/scss/_forms.scss: -------------------------------------------------------------------------------- 1 | @import "forms/labels"; 2 | @import "forms/form-text"; 3 | @import "forms/form-control"; 4 | @import "forms/form-select"; 5 | @import "forms/form-check"; 6 | @import "forms/form-range"; 7 | @import "forms/floating-labels"; 8 | @import "forms/input-group"; 9 | @import "forms/validation"; 10 | -------------------------------------------------------------------------------- /vendor/bootstrap/scss/_grid.scss: -------------------------------------------------------------------------------- 1 | // Row 2 | // 3 | // Rows contain your columns. 4 | 5 | @if $enable-grid-classes { 6 | .row { 7 | @include make-row(); 8 | 9 | > * { 10 | @include make-col-ready(); 11 | } 12 | } 13 | } 14 | 15 | @if $enable-cssgrid { 16 | .grid { 17 | display: grid; 18 | grid-template-rows: repeat(var(--#{$variable-prefix}rows, 1), 1fr); 19 | grid-template-columns: repeat(var(--#{$variable-prefix}columns, #{$grid-columns}), 1fr); 20 | gap: var(--#{$variable-prefix}gap, #{$grid-gutter-width}); 21 | 22 | @include make-cssgrid(); 23 | } 24 | } 25 | 26 | 27 | // Columns 28 | // 29 | // Common styles for small and large grid columns 30 | 31 | @if $enable-grid-classes { 32 | @include make-grid-columns(); 33 | } 34 | -------------------------------------------------------------------------------- /vendor/bootstrap/scss/_helpers.scss: -------------------------------------------------------------------------------- 1 | @import "helpers/clearfix"; 2 | @import "helpers/colored-links"; 3 | @import "helpers/ratio"; 4 | @import "helpers/position"; 5 | @import "helpers/stacks"; 6 | @import "helpers/visually-hidden"; 7 | @import "helpers/stretched-link"; 8 | @import "helpers/text-truncation"; 9 | @import "helpers/vr"; 10 | -------------------------------------------------------------------------------- /vendor/bootstrap/scss/_mixins.scss: -------------------------------------------------------------------------------- 1 | // Toggles 2 | // 3 | // Used in conjunction with global variables to enable certain theme features. 4 | 5 | // Vendor 6 | @import "vendor/rfs"; 7 | 8 | // Deprecate 9 | @import "mixins/deprecate"; 10 | 11 | // Helpers 12 | @import "mixins/breakpoints"; 13 | @import "mixins/color-scheme"; 14 | @import "mixins/image"; 15 | @import "mixins/resize"; 16 | @import "mixins/visually-hidden"; 17 | @import "mixins/reset-text"; 18 | @import "mixins/text-truncate"; 19 | 20 | // Utilities 21 | @import "mixins/utilities"; 22 | 23 | // Components 24 | @import "mixins/alert"; 25 | @import "mixins/backdrop"; 26 | @import "mixins/buttons"; 27 | @import "mixins/caret"; 28 | @import "mixins/pagination"; 29 | @import "mixins/lists"; 30 | @import "mixins/list-group"; 31 | @import "mixins/forms"; 32 | @import "mixins/table-variants"; 33 | 34 | // Skins 35 | @import "mixins/border-radius"; 36 | @import "mixins/box-shadow"; 37 | @import "mixins/gradients"; 38 | @import "mixins/transition"; 39 | 40 | // Layout 41 | @import "mixins/clearfix"; 42 | @import "mixins/container"; 43 | @import "mixins/grid"; 44 | -------------------------------------------------------------------------------- /vendor/bootstrap/scss/_placeholders.scss: -------------------------------------------------------------------------------- 1 | .placeholder { 2 | display: inline-block; 3 | min-height: 1em; 4 | vertical-align: middle; 5 | cursor: wait; 6 | background-color: currentColor; 7 | opacity: $placeholder-opacity-max; 8 | 9 | &.btn::before { 10 | display: inline-block; 11 | content: ""; 12 | } 13 | } 14 | 15 | // Sizing 16 | .placeholder-xs { 17 | min-height: .6em; 18 | } 19 | 20 | .placeholder-sm { 21 | min-height: .8em; 22 | } 23 | 24 | .placeholder-lg { 25 | min-height: 1.2em; 26 | } 27 | 28 | // Animation 29 | .placeholder-glow { 30 | .placeholder { 31 | animation: placeholder-glow 2s ease-in-out infinite; 32 | } 33 | } 34 | 35 | @keyframes placeholder-glow { 36 | 50% { 37 | opacity: $placeholder-opacity-min; 38 | } 39 | } 40 | 41 | .placeholder-wave { 42 | mask-image: linear-gradient(130deg, $black 55%, rgba(0, 0, 0, (1 - $placeholder-opacity-min)) 75%, $black 95%); 43 | mask-size: 200% 100%; 44 | animation: placeholder-wave 2s linear infinite; 45 | } 46 | 47 | @keyframes placeholder-wave { 48 | 100% { 49 | mask-position: -200% 0%; 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /vendor/bootstrap/scss/_transitions.scss: -------------------------------------------------------------------------------- 1 | .fade { 2 | @include transition($transition-fade); 3 | 4 | &:not(.show) { 5 | opacity: 0; 6 | } 7 | } 8 | 9 | // scss-docs-start collapse-classes 10 | .collapse { 11 | &:not(.show) { 12 | display: none; 13 | } 14 | } 15 | 16 | .collapsing { 17 | height: 0; 18 | overflow: hidden; 19 | @include transition($transition-collapse); 20 | 21 | &.collapse-horizontal { 22 | width: 0; 23 | height: auto; 24 | @include transition($transition-collapse-width); 25 | } 26 | } 27 | // scss-docs-end collapse-classes 28 | -------------------------------------------------------------------------------- /vendor/bootstrap/scss/bootstrap-reboot.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Reboot v5.1.3 (https://getbootstrap.com/) 3 | * Copyright 2011-2021 The Bootstrap Authors 4 | * Copyright 2011-2021 Twitter, Inc. 5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 6 | * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md) 7 | */ 8 | 9 | @import "functions"; 10 | @import "variables"; 11 | @import "mixins"; 12 | @import "root"; 13 | @import "reboot"; 14 | -------------------------------------------------------------------------------- /vendor/bootstrap/scss/bootstrap-utilities.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Utilities v5.1.3 (https://getbootstrap.com/) 3 | * Copyright 2011-2021 The Bootstrap Authors 4 | * Copyright 2011-2021 Twitter, Inc. 5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 6 | */ 7 | 8 | // Configuration 9 | @import "functions"; 10 | @import "variables"; 11 | @import "mixins"; 12 | @import "utilities"; 13 | 14 | // Helpers 15 | @import "helpers"; 16 | 17 | // Utilities 18 | @import "utilities/api"; 19 | -------------------------------------------------------------------------------- /vendor/bootstrap/scss/forms/_form-text.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Form text 3 | // 4 | 5 | .form-text { 6 | margin-top: $form-text-margin-top; 7 | @include font-size($form-text-font-size); 8 | font-style: $form-text-font-style; 9 | font-weight: $form-text-font-weight; 10 | color: $form-text-color; 11 | } 12 | -------------------------------------------------------------------------------- /vendor/bootstrap/scss/forms/_validation.scss: -------------------------------------------------------------------------------- 1 | // Form validation 2 | // 3 | // Provide feedback to users when form field values are valid or invalid. Works 4 | // primarily for client-side validation via scoped `:invalid` and `:valid` 5 | // pseudo-classes but also includes `.is-invalid` and `.is-valid` classes for 6 | // server-side validation. 7 | 8 | // scss-docs-start form-validation-states-loop 9 | @each $state, $data in $form-validation-states { 10 | @include form-validation-state($state, $data...); 11 | } 12 | // scss-docs-end form-validation-states-loop 13 | -------------------------------------------------------------------------------- /vendor/bootstrap/scss/helpers/_clearfix.scss: -------------------------------------------------------------------------------- 1 | .clearfix { 2 | @include clearfix(); 3 | } 4 | -------------------------------------------------------------------------------- /vendor/bootstrap/scss/helpers/_colored-links.scss: -------------------------------------------------------------------------------- 1 | @each $color, $value in $theme-colors { 2 | .link-#{$color} { 3 | color: $value; 4 | 5 | @if $link-shade-percentage != 0 { 6 | &:hover, 7 | &:focus { 8 | color: if(color-contrast($value) == $color-contrast-light, shade-color($value, $link-shade-percentage), tint-color($value, $link-shade-percentage)); 9 | } 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /vendor/bootstrap/scss/helpers/_position.scss: -------------------------------------------------------------------------------- 1 | // Shorthand 2 | 3 | .fixed-top { 4 | position: fixed; 5 | top: 0; 6 | right: 0; 7 | left: 0; 8 | z-index: $zindex-fixed; 9 | } 10 | 11 | .fixed-bottom { 12 | position: fixed; 13 | right: 0; 14 | bottom: 0; 15 | left: 0; 16 | z-index: $zindex-fixed; 17 | } 18 | 19 | // Responsive sticky top 20 | @each $breakpoint in map-keys($grid-breakpoints) { 21 | @include media-breakpoint-up($breakpoint) { 22 | $infix: breakpoint-infix($breakpoint, $grid-breakpoints); 23 | 24 | .sticky#{$infix}-top { 25 | position: sticky; 26 | top: 0; 27 | z-index: $zindex-sticky; 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /vendor/bootstrap/scss/helpers/_ratio.scss: -------------------------------------------------------------------------------- 1 | // Credit: Nicolas Gallagher and SUIT CSS. 2 | 3 | .ratio { 4 | position: relative; 5 | width: 100%; 6 | 7 | &::before { 8 | display: block; 9 | padding-top: var(--#{$variable-prefix}aspect-ratio); 10 | content: ""; 11 | } 12 | 13 | > * { 14 | position: absolute; 15 | top: 0; 16 | left: 0; 17 | width: 100%; 18 | height: 100%; 19 | } 20 | } 21 | 22 | @each $key, $ratio in $aspect-ratios { 23 | .ratio-#{$key} { 24 | --#{$variable-prefix}aspect-ratio: #{$ratio}; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /vendor/bootstrap/scss/helpers/_stacks.scss: -------------------------------------------------------------------------------- 1 | // scss-docs-start stacks 2 | .hstack { 3 | display: flex; 4 | flex-direction: row; 5 | align-items: center; 6 | align-self: stretch; 7 | } 8 | 9 | .vstack { 10 | display: flex; 11 | flex: 1 1 auto; 12 | flex-direction: column; 13 | align-self: stretch; 14 | } 15 | // scss-docs-end stacks 16 | -------------------------------------------------------------------------------- /vendor/bootstrap/scss/helpers/_stretched-link.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Stretched link 3 | // 4 | 5 | .stretched-link { 6 | &::#{$stretched-link-pseudo-element} { 7 | position: absolute; 8 | top: 0; 9 | right: 0; 10 | bottom: 0; 11 | left: 0; 12 | z-index: $stretched-link-z-index; 13 | content: ""; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /vendor/bootstrap/scss/helpers/_text-truncation.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Text truncation 3 | // 4 | 5 | .text-truncate { 6 | @include text-truncate(); 7 | } 8 | -------------------------------------------------------------------------------- /vendor/bootstrap/scss/helpers/_visually-hidden.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Visually hidden 3 | // 4 | 5 | .visually-hidden, 6 | .visually-hidden-focusable:not(:focus):not(:focus-within) { 7 | @include visually-hidden(); 8 | } 9 | -------------------------------------------------------------------------------- /vendor/bootstrap/scss/helpers/_vr.scss: -------------------------------------------------------------------------------- 1 | .vr { 2 | display: inline-block; 3 | align-self: stretch; 4 | width: 1px; 5 | min-height: 1em; 6 | background-color: currentColor; 7 | opacity: $hr-opacity; 8 | } 9 | -------------------------------------------------------------------------------- /vendor/bootstrap/scss/mixins/_alert.scss: -------------------------------------------------------------------------------- 1 | // scss-docs-start alert-variant-mixin 2 | @mixin alert-variant($background, $border, $color) { 3 | color: $color; 4 | @include gradient-bg($background); 5 | border-color: $border; 6 | 7 | .alert-link { 8 | color: shade-color($color, 20%); 9 | } 10 | } 11 | // scss-docs-end alert-variant-mixin 12 | -------------------------------------------------------------------------------- /vendor/bootstrap/scss/mixins/_backdrop.scss: -------------------------------------------------------------------------------- 1 | // Shared between modals and offcanvases 2 | @mixin overlay-backdrop($zindex, $backdrop-bg, $backdrop-opacity) { 3 | position: fixed; 4 | top: 0; 5 | left: 0; 6 | z-index: $zindex; 7 | width: 100vw; 8 | height: 100vh; 9 | background-color: $backdrop-bg; 10 | 11 | // Fade for backdrop 12 | &.fade { opacity: 0; } 13 | &.show { opacity: $backdrop-opacity; } 14 | } 15 | -------------------------------------------------------------------------------- /vendor/bootstrap/scss/mixins/_box-shadow.scss: -------------------------------------------------------------------------------- 1 | @mixin box-shadow($shadow...) { 2 | @if $enable-shadows { 3 | $result: (); 4 | 5 | @each $value in $shadow { 6 | @if $value != null { 7 | $result: append($result, $value, "comma"); 8 | } 9 | @if $value == none and length($shadow) > 1 { 10 | @warn "The keyword 'none' must be used as a single argument."; 11 | } 12 | } 13 | 14 | @if (length($result) > 0) { 15 | box-shadow: $result; 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /vendor/bootstrap/scss/mixins/_clearfix.scss: -------------------------------------------------------------------------------- 1 | // scss-docs-start clearfix 2 | @mixin clearfix() { 3 | &::after { 4 | display: block; 5 | clear: both; 6 | content: ""; 7 | } 8 | } 9 | // scss-docs-end clearfix 10 | -------------------------------------------------------------------------------- /vendor/bootstrap/scss/mixins/_color-scheme.scss: -------------------------------------------------------------------------------- 1 | // scss-docs-start mixin-color-scheme 2 | @mixin color-scheme($name) { 3 | @media (prefers-color-scheme: #{$name}) { 4 | @content; 5 | } 6 | } 7 | // scss-docs-end mixin-color-scheme 8 | -------------------------------------------------------------------------------- /vendor/bootstrap/scss/mixins/_container.scss: -------------------------------------------------------------------------------- 1 | // Container mixins 2 | 3 | @mixin make-container($gutter: $container-padding-x) { 4 | width: 100%; 5 | padding-right: var(--#{$variable-prefix}gutter-x, #{$gutter}); 6 | padding-left: var(--#{$variable-prefix}gutter-x, #{$gutter}); 7 | margin-right: auto; 8 | margin-left: auto; 9 | } 10 | -------------------------------------------------------------------------------- /vendor/bootstrap/scss/mixins/_deprecate.scss: -------------------------------------------------------------------------------- 1 | // Deprecate mixin 2 | // 3 | // This mixin can be used to deprecate mixins or functions. 4 | // `$enable-deprecation-messages` is a global variable, `$ignore-warning` is a variable that can be passed to 5 | // some deprecated mixins to suppress the warning (for example if the mixin is still be used in the current version of Bootstrap) 6 | @mixin deprecate($name, $deprecate-version, $remove-version, $ignore-warning: false) { 7 | @if ($enable-deprecation-messages != false and $ignore-warning != true) { 8 | @warn "#{$name} has been deprecated as of #{$deprecate-version}. It will be removed entirely in #{$remove-version}."; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /vendor/bootstrap/scss/mixins/_image.scss: -------------------------------------------------------------------------------- 1 | // Image Mixins 2 | // - Responsive image 3 | // - Retina image 4 | 5 | 6 | // Responsive image 7 | // 8 | // Keep images from scaling beyond the width of their parents. 9 | 10 | @mixin img-fluid { 11 | // Part 1: Set a maximum relative to the parent 12 | max-width: 100%; 13 | // Part 2: Override the height to auto, otherwise images will be stretched 14 | // when setting a width and height attribute on the img element. 15 | height: auto; 16 | } 17 | -------------------------------------------------------------------------------- /vendor/bootstrap/scss/mixins/_list-group.scss: -------------------------------------------------------------------------------- 1 | // List Groups 2 | 3 | // scss-docs-start list-group-mixin 4 | @mixin list-group-item-variant($state, $background, $color) { 5 | .list-group-item-#{$state} { 6 | color: $color; 7 | background-color: $background; 8 | 9 | &.list-group-item-action { 10 | &:hover, 11 | &:focus { 12 | color: $color; 13 | background-color: shade-color($background, 10%); 14 | } 15 | 16 | &.active { 17 | color: $white; 18 | background-color: $color; 19 | border-color: $color; 20 | } 21 | } 22 | } 23 | } 24 | // scss-docs-end list-group-mixin 25 | -------------------------------------------------------------------------------- /vendor/bootstrap/scss/mixins/_lists.scss: -------------------------------------------------------------------------------- 1 | // Lists 2 | 3 | // Unstyled keeps list items block level, just removes default browser padding and list-style 4 | @mixin list-unstyled { 5 | padding-left: 0; 6 | list-style: none; 7 | } 8 | -------------------------------------------------------------------------------- /vendor/bootstrap/scss/mixins/_pagination.scss: -------------------------------------------------------------------------------- 1 | // Pagination 2 | 3 | // scss-docs-start pagination-mixin 4 | @mixin pagination-size($padding-y, $padding-x, $font-size, $border-radius) { 5 | .page-link { 6 | padding: $padding-y $padding-x; 7 | @include font-size($font-size); 8 | } 9 | 10 | .page-item { 11 | @if $pagination-margin-start == (-$pagination-border-width) { 12 | &:first-child { 13 | .page-link { 14 | @include border-start-radius($border-radius); 15 | } 16 | } 17 | 18 | &:last-child { 19 | .page-link { 20 | @include border-end-radius($border-radius); 21 | } 22 | } 23 | } @else { 24 | //Add border-radius to all pageLinks in case they have left margin 25 | .page-link { 26 | @include border-radius($border-radius); 27 | } 28 | } 29 | } 30 | } 31 | // scss-docs-end pagination-mixin 32 | -------------------------------------------------------------------------------- /vendor/bootstrap/scss/mixins/_reset-text.scss: -------------------------------------------------------------------------------- 1 | @mixin reset-text { 2 | font-family: $font-family-base; 3 | // We deliberately do NOT reset font-size or overflow-wrap / word-wrap. 4 | font-style: normal; 5 | font-weight: $font-weight-normal; 6 | line-height: $line-height-base; 7 | text-align: left; // Fallback for where `start` is not supported 8 | text-align: start; 9 | text-decoration: none; 10 | text-shadow: none; 11 | text-transform: none; 12 | letter-spacing: normal; 13 | word-break: normal; 14 | word-spacing: normal; 15 | white-space: normal; 16 | line-break: auto; 17 | } 18 | -------------------------------------------------------------------------------- /vendor/bootstrap/scss/mixins/_resize.scss: -------------------------------------------------------------------------------- 1 | // Resize anything 2 | 3 | @mixin resizable($direction) { 4 | overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible` 5 | resize: $direction; // Options: horizontal, vertical, both 6 | } 7 | -------------------------------------------------------------------------------- /vendor/bootstrap/scss/mixins/_table-variants.scss: -------------------------------------------------------------------------------- 1 | // scss-docs-start table-variant 2 | @mixin table-variant($state, $background) { 3 | .table-#{$state} { 4 | $color: color-contrast(opaque($body-bg, $background)); 5 | $hover-bg: mix($color, $background, percentage($table-hover-bg-factor)); 6 | $striped-bg: mix($color, $background, percentage($table-striped-bg-factor)); 7 | $active-bg: mix($color, $background, percentage($table-active-bg-factor)); 8 | 9 | --#{$variable-prefix}table-bg: #{$background}; 10 | --#{$variable-prefix}table-striped-bg: #{$striped-bg}; 11 | --#{$variable-prefix}table-striped-color: #{color-contrast($striped-bg)}; 12 | --#{$variable-prefix}table-active-bg: #{$active-bg}; 13 | --#{$variable-prefix}table-active-color: #{color-contrast($active-bg)}; 14 | --#{$variable-prefix}table-hover-bg: #{$hover-bg}; 15 | --#{$variable-prefix}table-hover-color: #{color-contrast($hover-bg)}; 16 | 17 | color: $color; 18 | border-color: mix($color, $background, percentage($table-border-factor)); 19 | } 20 | } 21 | // scss-docs-end table-variant 22 | -------------------------------------------------------------------------------- /vendor/bootstrap/scss/mixins/_text-truncate.scss: -------------------------------------------------------------------------------- 1 | // Text truncate 2 | // Requires inline-block or block for proper styling 3 | 4 | @mixin text-truncate() { 5 | overflow: hidden; 6 | text-overflow: ellipsis; 7 | white-space: nowrap; 8 | } 9 | -------------------------------------------------------------------------------- /vendor/bootstrap/scss/mixins/_transition.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable property-disallowed-list 2 | @mixin transition($transition...) { 3 | @if length($transition) == 0 { 4 | $transition: $transition-base; 5 | } 6 | 7 | @if length($transition) > 1 { 8 | @each $value in $transition { 9 | @if $value == null or $value == none { 10 | @warn "The keyword 'none' or 'null' must be used as a single argument."; 11 | } 12 | } 13 | } 14 | 15 | @if $enable-transitions { 16 | @if nth($transition, 1) != null { 17 | transition: $transition; 18 | } 19 | 20 | @if $enable-reduced-motion and nth($transition, 1) != null and nth($transition, 1) != none { 21 | @media (prefers-reduced-motion: reduce) { 22 | transition: none; 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /vendor/bootstrap/scss/mixins/_visually-hidden.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | // Hide content visually while keeping it accessible to assistive technologies 4 | // 5 | // See: https://www.a11yproject.com/posts/2013-01-11-how-to-hide-content/ 6 | // See: https://kittygiraudel.com/2016/10/13/css-hide-and-seek/ 7 | 8 | @mixin visually-hidden() { 9 | position: absolute !important; 10 | width: 1px !important; 11 | height: 1px !important; 12 | padding: 0 !important; 13 | margin: -1px !important; // Fix for https://github.com/twbs/bootstrap/issues/25686 14 | overflow: hidden !important; 15 | clip: rect(0, 0, 0, 0) !important; 16 | white-space: nowrap !important; 17 | border: 0 !important; 18 | } 19 | 20 | // Use to only display content when it's focused, or one of its child elements is focused 21 | // (i.e. when focus is within the element/container that the class was applied to) 22 | // 23 | // Useful for "Skip to main content" links; see https://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 24 | 25 | @mixin visually-hidden-focusable() { 26 | &:not(:focus):not(:focus-within) { 27 | @include visually-hidden(); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /vendor/core/LICENSE: -------------------------------------------------------------------------------- 1 | This software is dual-licensed: you can redistribute it and/or modify it under 2 | the terms of the GNU Affero General Public License as published by the Free 3 | Software Foundation, either version 3 of the License, or (at your option) any 4 | later version. For the terms of this license, see 5 | . 6 | 7 | You are free to use this software under the terms of the GNU Affero General 8 | Public License WITHOUT ANY WARRANTY; without even the implied warranty of 9 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 10 | 11 | Alternatively, you can use this software under a commercial license, as set out 12 | in . 13 | -------------------------------------------------------------------------------- /vendor/core/cmake/FindGoogleBenchmark.cmake: -------------------------------------------------------------------------------- 1 | if(NOT Benchmark_FOUND) 2 | set(BENCHMARK_ENABLE_TESTING OFF CACHE BOOL "enable testing of the benchmark library") 3 | add_subdirectory("${PROJECT_SOURCE_DIR}/vendor/googlebenchmark") 4 | set(Benchmark_FOUND ON) 5 | endif() 6 | -------------------------------------------------------------------------------- /vendor/core/cmake/FindGoogleTest.cmake: -------------------------------------------------------------------------------- 1 | if(NOT GoogleTest_FOUND) 2 | set(BUILD_GMOCK ON CACHE BOOL "enable googlemock") 3 | set(INSTALL_GTEST OFF CACHE BOOL "disable installation") 4 | add_subdirectory("${PROJECT_SOURCE_DIR}/vendor/googletest") 5 | set(GoogleTest_FOUND ON) 6 | endif() 7 | -------------------------------------------------------------------------------- /vendor/core/cmake/common/commands/copy-file.cmake: -------------------------------------------------------------------------------- 1 | function(sourcemeta_command_copy_file) 2 | cmake_parse_arguments(SOURCEMETA_COMMAND_COPY_FILE "" "FROM;TO" "" ${ARGN}) 3 | 4 | if(NOT SOURCEMETA_COMMAND_COPY_FILE_FROM) 5 | message(FATAL_ERROR "You must pass the file to copy using the FROM option") 6 | endif() 7 | if(NOT SOURCEMETA_COMMAND_COPY_FILE_TO) 8 | message(FATAL_ERROR "You must pass the destination to copy to using the TO option") 9 | endif() 10 | 11 | add_custom_command( 12 | OUTPUT "${SOURCEMETA_COMMAND_COPY_FILE_TO}" 13 | COMMAND "${CMAKE_COMMAND}" -E copy "${SOURCEMETA_COMMAND_COPY_FILE_FROM}" "${SOURCEMETA_COMMAND_COPY_FILE_TO}" 14 | MAIN_DEPENDENCY "${SOURCEMETA_COMMAND_COPY_FILE_FROM}" 15 | DEPENDS "${SOURCEMETA_COMMAND_COPY_FILE_FROM}" 16 | COMMENT "Copying ${SOURCEMETA_COMMAND_COPY_FILE_FROM} ot ${SOURCEMETA_COMMAND_COPY_FILE_TO}") 17 | endfunction() 18 | -------------------------------------------------------------------------------- /vendor/core/cmake/common/shim.cmake: -------------------------------------------------------------------------------- 1 | # The PROJECT_IS_TOP_LEVEL handy variable is only 2 | # available on CMake >=3.21. 3 | if(NOT DEFINED PROJECT_IS_TOP_LEVEL AND "${CMAKE_PROJECT_NAME}" STREQUAL "${PROJECT_NAME}") 4 | set(PROJECT_IS_TOP_LEVEL YES) 5 | endif() 6 | -------------------------------------------------------------------------------- /vendor/core/cmake/common/targets/clang-format.config: -------------------------------------------------------------------------------- 1 | --- 2 | BasedOnStyle: LLVM 3 | IndentCaseLabels: true 4 | -------------------------------------------------------------------------------- /vendor/core/cmake/common/targets/clang-tidy.config: -------------------------------------------------------------------------------- 1 | --- 2 | # See https://clang.llvm.org/extra/clang-tidy/index.html 3 | # First disable all default checks (with -*) 4 | Checks: '-*,bugprone-*,clang-analyzer-*,clang-diagnostic-*,modernize-*,concurrency-*,cppcoreguidelines-*,performance-*,portability-*,objc-*,misc-*,-misc-no-recursion,-bugprone-easily-swappable-parameters' 5 | WarningsAsErrors: '*' 6 | HeaderFilterRegex: '' 7 | FormatStyle: none 8 | CheckOptions: 9 | # See https://clang.llvm.org/extra/clang-tidy/checks/misc/include-cleaner.html 10 | # Otherwise ClangTidy wants us to directly include private headers from our modules 11 | - key: misc-include-cleaner.MissingIncludes 12 | value: 'false' 13 | -------------------------------------------------------------------------------- /vendor/core/cmake/common/targets/doxygen.cmake: -------------------------------------------------------------------------------- 1 | function(sourcemeta_target_doxygen) 2 | cmake_parse_arguments(SOURCEMETA_TARGET_DOXYGEN "" "CONFIG;OUTPUT" "" ${ARGN}) 3 | 4 | if(NOT SOURCEMETA_TARGET_DOXYGEN_CONFIG) 5 | message(FATAL_ERROR "You must pass an input config file using the CONFIG option") 6 | endif() 7 | if(NOT SOURCEMETA_TARGET_DOXYGEN_OUTPUT) 8 | message(FATAL_ERROR "You must pass an output directory using the OUTPUT option") 9 | endif() 10 | 11 | find_package(Doxygen) 12 | if(DOXYGEN_FOUND) 13 | set(DOXYGEN_IN "${SOURCEMETA_TARGET_DOXYGEN_CONFIG}") 14 | set(DOXYGEN_OUT "${CMAKE_CURRENT_BINARY_DIR}/Doxyfile") 15 | configure_file("${DOXYGEN_IN}" "${DOXYGEN_OUT}" @ONLY) 16 | add_custom_target(doxygen 17 | WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}" 18 | VERBATIM 19 | COMMAND "${CMAKE_COMMAND}" -E make_directory "${SOURCEMETA_TARGET_DOXYGEN_OUTPUT}" 20 | COMMAND "${DOXYGEN_EXECUTABLE}" "${DOXYGEN_OUT}") 21 | else() 22 | add_custom_target(doxygen VERBATIM 23 | COMMAND "${CMAKE_COMMAND}" -E echo "Could not locate Doxygen" 24 | COMMAND "${CMAKE_COMMAND}" -E false) 25 | endif() 26 | endfunction() 27 | -------------------------------------------------------------------------------- /vendor/core/cmake/common/targets/googletest.cmake: -------------------------------------------------------------------------------- 1 | function(sourcemeta_googletest) 2 | cmake_parse_arguments(SOURCEMETA_GOOGLETEST "" 3 | "NAMESPACE;PROJECT;NAME;VARIANT" "SOURCES" ${ARGN}) 4 | 5 | if(SOURCEMETA_GOOGLETEST_VARIANT) 6 | set(TARGET_VARIANT "${SOURCEMETA_GOOGLETEST_VARIANT}_unit") 7 | else() 8 | set(TARGET_VARIANT "unit") 9 | endif() 10 | 11 | sourcemeta_executable( 12 | NAMESPACE "${SOURCEMETA_GOOGLETEST_NAMESPACE}" 13 | PROJECT "${SOURCEMETA_GOOGLETEST_PROJECT}" 14 | NAME "${SOURCEMETA_GOOGLETEST_NAME}" 15 | VARIANT "${TARGET_VARIANT}" 16 | SOURCES "${SOURCEMETA_GOOGLETEST_SOURCES}" 17 | OUTPUT TARGET_NAME) 18 | 19 | target_link_libraries("${TARGET_NAME}" 20 | PRIVATE GTest::gtest GTest::gmock GTest::gtest_main) 21 | add_test(NAME "${SOURCEMETA_GOOGLETEST_PROJECT}.${SOURCEMETA_GOOGLETEST_NAME}" 22 | COMMAND "${TARGET_NAME}" --gtest_brief=1) 23 | endfunction() 24 | -------------------------------------------------------------------------------- /vendor/core/cmake/common/variables.cmake: -------------------------------------------------------------------------------- 1 | # Get the list of languages defined in the project 2 | get_property(SOURCEMETA_LANGUAGES GLOBAL PROPERTY ENABLED_LANGUAGES) 3 | 4 | # Compiler detection (C++) 5 | # TODO: Detect compilers on programming languages other than C++ 6 | if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") 7 | set(SOURCEMETA_COMPILER_LLVM ON) 8 | elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") 9 | set(SOURCEMETA_COMPILER_GCC ON) 10 | elseif(MSVC) 11 | set(SOURCEMETA_COMPILER_MSVC ON) 12 | endif() 13 | 14 | if(CMAKE_SYSTEM_NAME STREQUAL "Darwin") 15 | set(SOURCEMETA_OS_MACOS ON) 16 | # It seems that in some cases, `LINUX` is not set on GNU/Linux on WSL 17 | elseif(LINUX OR CMAKE_SYSTEM_NAME STREQUAL "Linux") 18 | set(SOURCEMETA_OS_LINUX ON) 19 | elseif(WIN32) 20 | set(SOURCEMETA_OS_WINDOWS ON) 21 | elseif(${CMAKE_SYSTEM_NAME} MATCHES ".*BSD") 22 | set(SOURCEMETA_OS_BSD ON) 23 | endif() 24 | -------------------------------------------------------------------------------- /vendor/core/src/core/json/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | sourcemeta_library(NAMESPACE sourcemeta PROJECT core NAME json 2 | PRIVATE_HEADERS array.h error.h object.h value.h hash.h 3 | SOURCES grammar.h parser.h stringify.h json.cc json_value.cc) 4 | 5 | if(SOURCEMETA_CORE_INSTALL) 6 | sourcemeta_library_install(NAMESPACE sourcemeta PROJECT core NAME json) 7 | endif() 8 | -------------------------------------------------------------------------------- /vendor/core/src/core/jsonl/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | sourcemeta_library(NAMESPACE sourcemeta PROJECT core NAME jsonl 2 | PRIVATE_HEADERS iterator.h 3 | SOURCES jsonl.cc iterator.cc grammar.h) 4 | 5 | if(SOURCEMETA_CORE_INSTALL) 6 | sourcemeta_library_install(NAMESPACE sourcemeta PROJECT core NAME jsonl) 7 | endif() 8 | 9 | target_link_libraries(sourcemeta_core_jsonl PUBLIC 10 | sourcemeta::core::json) 11 | -------------------------------------------------------------------------------- /vendor/core/src/core/jsonl/grammar.h: -------------------------------------------------------------------------------- 1 | #ifndef SOURCEMETA_CORE_JSONL_GRAMMAR_H_ 2 | #define SOURCEMETA_CORE_JSONL_GRAMMAR_H_ 3 | 4 | namespace sourcemeta::core::internal { 5 | template 6 | static constexpr CharT token_jsonl_line_feed{'\u000A'}; 7 | 8 | // Whitespace is any sequence of one or more of the following code points: 9 | // character tabulation (U+0009), line feed (U+000A), carriage return (U+000D), 10 | // and space (U+0020). 11 | // See 12 | // https://www.ecma-international.org/wp-content/uploads/ECMA-404_2nd_edition_december_2017.pdf 13 | template 14 | static constexpr CharT token_jsonl_whitespace_tabulation{'\u0009'}; 15 | template 16 | static constexpr CharT token_jsonl_whitespace_carriage_return{'\u000D'}; 17 | template 18 | static constexpr CharT token_jsonl_whitespace_space{'\u0020'}; 19 | 20 | } // namespace sourcemeta::core::internal 21 | 22 | #endif 23 | -------------------------------------------------------------------------------- /vendor/core/src/core/jsonl/jsonl.cc: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | #include // std::basic_istream 5 | 6 | namespace sourcemeta::core { 7 | 8 | JSONL::JSONL(std::basic_istream &stream) 9 | : data{stream} {} 10 | 11 | auto JSONL::begin() -> JSONL::const_iterator { return {&this->data}; } 12 | auto JSONL::end() -> JSONL::const_iterator { return {nullptr}; } 13 | auto JSONL::cbegin() -> JSONL::const_iterator { return {&this->data}; } 14 | auto JSONL::cend() -> JSONL::const_iterator { return {nullptr}; } 15 | 16 | } // namespace sourcemeta::core 17 | -------------------------------------------------------------------------------- /vendor/core/src/core/jsonpointer/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | sourcemeta_library(NAMESPACE sourcemeta PROJECT core NAME jsonpointer 2 | PRIVATE_HEADERS pointer.h position.h error.h token.h 3 | walker.h subpointer_walker.h template.h 4 | SOURCES jsonpointer.cc stringify.h parser.h grammar.h position.cc) 5 | 6 | if(SOURCEMETA_CORE_INSTALL) 7 | sourcemeta_library_install(NAMESPACE sourcemeta PROJECT core NAME jsonpointer) 8 | endif() 9 | 10 | target_link_libraries(sourcemeta_core_jsonpointer PUBLIC 11 | sourcemeta::core::uri) 12 | target_link_libraries(sourcemeta_core_jsonpointer PUBLIC 13 | sourcemeta::core::json) 14 | target_link_libraries(sourcemeta_core_jsonpointer PUBLIC 15 | sourcemeta::core::regex) 16 | -------------------------------------------------------------------------------- /vendor/core/src/core/jsonpointer/include/sourcemeta/core/jsonpointer_error.h: -------------------------------------------------------------------------------- 1 | #ifndef SOURCEMETA_CORE_JSONPOINTER_ERROR_H_ 2 | #define SOURCEMETA_CORE_JSONPOINTER_ERROR_H_ 3 | 4 | #ifndef SOURCEMETA_CORE_JSONPOINTER_EXPORT 5 | #include 6 | #endif 7 | 8 | #include 9 | 10 | #include // std::uint64_t 11 | 12 | namespace sourcemeta::core { 13 | 14 | /// @ingroup jsonpointer 15 | /// This class represents a parsing error. 16 | class SOURCEMETA_CORE_JSONPOINTER_EXPORT PointerParseError 17 | // TODO: It makes no sense for a JSON Pointer error to inherit from a JSON 18 | // error. Make them independent 19 | : public JSONParseError { 20 | public: 21 | /// Create a parsing error 22 | PointerParseError(const std::uint64_t column) : JSONParseError{1, column} {} 23 | 24 | [[nodiscard]] auto what() const noexcept -> const char * override { 25 | return "The input is not a valid JSON Pointer"; 26 | } 27 | }; 28 | 29 | } // namespace sourcemeta::core 30 | 31 | #endif 32 | -------------------------------------------------------------------------------- /vendor/core/src/core/jsonschema/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set(OFFICIAL_RESOLVER_INPUT "${CMAKE_CURRENT_SOURCE_DIR}/official_resolver.in.cc") 2 | set(OFFICIAL_RESOLVER_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/official_resolver.cc") 3 | include(./official_resolver.cmake) 4 | 5 | sourcemeta_library(NAMESPACE sourcemeta PROJECT core NAME jsonschema 6 | PRIVATE_HEADERS resolver.h walker.h frame.h error.h types.h transform.h 7 | SOURCES jsonschema.cc official_walker.cc frame.cc 8 | resolver.cc walker.cc bundle.cc transformer.cc 9 | "${CMAKE_CURRENT_BINARY_DIR}/official_resolver.cc") 10 | 11 | if(SOURCEMETA_CORE_INSTALL) 12 | sourcemeta_library_install(NAMESPACE sourcemeta PROJECT core NAME jsonschema) 13 | endif() 14 | 15 | target_link_libraries(sourcemeta_core_jsonschema PUBLIC 16 | sourcemeta::core::json) 17 | target_link_libraries(sourcemeta_core_jsonschema PUBLIC 18 | sourcemeta::core::jsonpointer) 19 | target_link_libraries(sourcemeta_core_jsonschema PRIVATE 20 | sourcemeta::core::uri) 21 | -------------------------------------------------------------------------------- /vendor/core/src/core/regex/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | sourcemeta_library(NAMESPACE sourcemeta PROJECT core NAME regex) 2 | 3 | if(SOURCEMETA_CORE_INSTALL) 4 | sourcemeta_library_install(NAMESPACE sourcemeta PROJECT core NAME regex) 5 | endif() 6 | 7 | target_link_libraries(sourcemeta_core_regex INTERFACE Boost::regex) 8 | -------------------------------------------------------------------------------- /vendor/core/src/core/uri/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | sourcemeta_library(NAMESPACE sourcemeta PROJECT core NAME uri 2 | PRIVATE_HEADERS error.h 3 | SOURCES uri.cc escaping.cc) 4 | 5 | if(SOURCEMETA_CORE_INSTALL) 6 | sourcemeta_library_install(NAMESPACE sourcemeta PROJECT core NAME uri) 7 | endif() 8 | 9 | target_link_libraries(sourcemeta_core_uri 10 | PRIVATE uriparser::uriparser) 11 | -------------------------------------------------------------------------------- /vendor/core/src/core/yaml/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | sourcemeta_library(NAMESPACE sourcemeta PROJECT core NAME yaml 2 | PRIVATE_HEADERS error.h 3 | SOURCES yaml.cc) 4 | 5 | if(SOURCEMETA_CORE_INSTALL) 6 | sourcemeta_library_install(NAMESPACE sourcemeta PROJECT core NAME yaml) 7 | endif() 8 | 9 | target_link_libraries(sourcemeta_core_yaml PRIVATE yaml) 10 | target_link_libraries(sourcemeta_core_yaml PUBLIC sourcemeta::core::json) 11 | -------------------------------------------------------------------------------- /vendor/core/src/extension/alterschema/desugar/boolean_true.h: -------------------------------------------------------------------------------- 1 | class BooleanTrue final : public SchemaTransformRule { 2 | public: 3 | BooleanTrue() 4 | : SchemaTransformRule{ 5 | "boolean_true", 6 | "The boolean schema `true` is syntax sugar for the empty schema"} { 7 | }; 8 | 9 | [[nodiscard]] auto condition(const sourcemeta::core::JSON &schema, 10 | const sourcemeta::core::JSON &, 11 | const sourcemeta::core::Vocabularies &, 12 | const sourcemeta::core::SchemaFrame &, 13 | const sourcemeta::core::SchemaFrame::Location &, 14 | const sourcemeta::core::SchemaWalker &, 15 | const sourcemeta::core::SchemaResolver &) const 16 | -> sourcemeta::core::SchemaTransformRule::Result override { 17 | return schema.is_boolean() && schema.to_boolean(); 18 | } 19 | 20 | auto transform(JSON &schema) const -> void override { 21 | schema.into(sourcemeta::core::JSON::make_object()); 22 | } 23 | }; 24 | -------------------------------------------------------------------------------- /vendor/core/vendor/boost-regex.mask: -------------------------------------------------------------------------------- 1 | build/ 2 | doc/ 3 | example/ 4 | meta/ 5 | performance/ 6 | src/ 7 | test/ 8 | tools/ 9 | CMakeLists.txt 10 | index.html 11 | README.md 12 | readme.txt 13 | -------------------------------------------------------------------------------- /vendor/core/vendor/boost-regex/include/boost/cregex.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright (c) 1998-2002 4 | * John Maddock 5 | * 6 | * Use, modification and distribution are subject to the 7 | * Boost Software License, Version 1.0. (See accompanying file 8 | * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 9 | * 10 | */ 11 | 12 | /* 13 | * LOCATION: see http://www.boost.org/libs/regex for most recent version. 14 | * FILE cregex.cpp 15 | * VERSION see 16 | * DESCRIPTION: Declares POSIX API functions 17 | * + boost::RegEx high level wrapper. 18 | */ 19 | 20 | #ifndef BOOST_RE_CREGEX_HPP 21 | #define BOOST_RE_CREGEX_HPP 22 | 23 | #ifndef BOOST_REGEX_CONFIG_HPP 24 | #include 25 | #endif 26 | 27 | #ifdef BOOST_REGEX_CXX03 28 | #include 29 | #else 30 | #include 31 | #endif 32 | 33 | #endif /* include guard */ 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /vendor/core/vendor/boost-regex/include/boost/regex.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright (c) 1998-2002 4 | * John Maddock 5 | * 6 | * Use, modification and distribution are subject to the 7 | * Boost Software License, Version 1.0. (See accompanying file 8 | * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 9 | * 10 | */ 11 | 12 | /* 13 | * LOCATION: see http://www.boost.org/libs/regex for documentation. 14 | * FILE regex.cpp 15 | * VERSION see 16 | * DESCRIPTION: Declares boost::basic_regex<> and associated 17 | * functions and classes. This header is the main 18 | * entry point for the template regex code. 19 | */ 20 | 21 | 22 | /* start with C compatibility API */ 23 | 24 | #ifndef BOOST_RE_REGEX_HPP 25 | #define BOOST_RE_REGEX_HPP 26 | 27 | #ifndef BOOST_REGEX_CONFIG_HPP 28 | #include 29 | #endif 30 | 31 | #ifdef BOOST_REGEX_CXX03 32 | #include 33 | #else 34 | #include 35 | #endif 36 | 37 | #endif // include 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /vendor/core/vendor/boost-regex/include/boost/regex/icu.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright (c) 2020 4 | * John Maddock 5 | * 6 | * Use, modification and distribution are subject to the 7 | * Boost Software License, Version 1.0. (See accompanying file 8 | * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 9 | * 10 | */ 11 | 12 | /* 13 | * LOCATION: see http://www.boost.org for most recent version. 14 | * FILE icu.hpp 15 | * VERSION see 16 | * DESCRIPTION: Unicode regular expressions on top of the ICU Library. 17 | */ 18 | 19 | #ifndef BOOST_REGEX_ICU_HPP 20 | #define BOOST_REGEX_ICU_HPP 21 | 22 | #include 23 | 24 | #ifdef BOOST_REGEX_CXX03 25 | #include 26 | #else 27 | #include 28 | #endif 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /vendor/core/vendor/boost-regex/include/boost/regex/pattern_except.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright (c) 1998-2002 4 | * John Maddock 5 | * 6 | * Use, modification and distribution are subject to the 7 | * Boost Software License, Version 1.0. (See accompanying file 8 | * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 9 | * 10 | */ 11 | 12 | /* 13 | * LOCATION: see http://www.boost.org for most recent version. 14 | * FILE pattern_except.hpp 15 | * VERSION see 16 | * DESCRIPTION: Declares pattern-matching exception classes. 17 | */ 18 | 19 | #ifndef BOOST_RE_PAT_EXCEPT_HPP 20 | #define BOOST_RE_PAT_EXCEPT_HPP 21 | 22 | #ifndef BOOST_REGEX_CONFIG_HPP 23 | #include 24 | #endif 25 | 26 | #ifdef BOOST_REGEX_CXX03 27 | #include 28 | #else 29 | #include 30 | #endif 31 | 32 | #endif 33 | -------------------------------------------------------------------------------- /vendor/core/vendor/boost-regex/include/boost/regex/pending/object_cache.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright (c) 2004 4 | * John Maddock 5 | * 6 | * Use, modification and distribution are subject to the 7 | * Boost Software License, Version 1.0. (See accompanying file 8 | * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 9 | * 10 | */ 11 | 12 | /* 13 | * LOCATION: see http://www.boost.org for most recent version. 14 | * FILE object_cache.hpp 15 | * VERSION see 16 | * DESCRIPTION: Implements a generic object cache. 17 | */ 18 | 19 | #ifndef BOOST_REGEX_OBJECT_CACHE_HPP 20 | #define BOOST_REGEX_OBJECT_CACHE_HPP 21 | 22 | #include 23 | #ifdef BOOST_REGEX_CXX03 24 | #include 25 | #else 26 | #include 27 | #endif 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /vendor/core/vendor/boost-regex/include/boost/regex/pending/unicode_iterator.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright (c) 2020 4 | * John Maddock 5 | * 6 | * Use, modification and distribution are subject to the 7 | * Boost Software License, Version 1.0. (See accompanying file 8 | * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 9 | * 10 | */ 11 | 12 | /* 13 | * LOCATION: see http://www.boost.org for most recent version. 14 | * FILE unicode_iterator.hpp 15 | * VERSION see 16 | * DESCRIPTION: Iterator adapters for converting between different Unicode encodings. 17 | */ 18 | 19 | #ifndef BOOST_REGEX_PENDING_UNICODE_ITERATOR_HPP 20 | #define BOOST_REGEX_PENDING_UNICODE_ITERATOR_HPP 21 | 22 | #include 23 | 24 | #if defined(BOOST_REGEX_CXX03) 25 | #include 26 | #else 27 | #include 28 | #endif 29 | 30 | 31 | #endif // BOOST_REGEX_PENDING_UNICODE_ITERATOR_HPP 32 | 33 | -------------------------------------------------------------------------------- /vendor/core/vendor/boost-regex/include/boost/regex/regex_traits.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright (c) 1998-2002 4 | * John Maddock 5 | * 6 | * Use, modification and distribution are subject to the 7 | * Boost Software License, Version 1.0. (See accompanying file 8 | * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 9 | * 10 | */ 11 | 12 | /* 13 | * LOCATION: see http://www.boost.org for most recent version. 14 | * FILE regex_traits.hpp 15 | * VERSION see 16 | * DESCRIPTION: Declares regular expression traits classes. 17 | */ 18 | 19 | #ifndef BOOST_REGEX_TRAITS_HPP 20 | #define BOOST_REGEX_TRAITS_HPP 21 | 22 | #ifndef BOOST_REGEX_CONFIG_HPP 23 | # include 24 | #endif 25 | 26 | # ifndef BOOST_REGEX_TRAITS_HPP_INCLUDED 27 | #ifdef BOOST_REGEX_CXX03 28 | # include 29 | #else 30 | # include 31 | #endif 32 | # endif 33 | 34 | #endif // include 35 | 36 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /vendor/core/vendor/boost-regex/include/boost/regex/v5/iterator_traits.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright (c) 1998-2002 4 | * John Maddock 5 | * 6 | * Use, modification and distribution are subject to the 7 | * Boost Software License, Version 1.0. (See accompanying file 8 | * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 9 | * 10 | */ 11 | 12 | /* 13 | * LOCATION: see http://www.boost.org for most recent version. 14 | * FILE iterator_traits.cpp 15 | * VERSION see 16 | * DESCRIPTION: Declares iterator traits workarounds. 17 | */ 18 | 19 | #ifndef BOOST_REGEX_V5_ITERATOR_TRAITS_HPP 20 | #define BOOST_REGEX_V5_ITERATOR_TRAITS_HPP 21 | 22 | namespace boost{ 23 | namespace BOOST_REGEX_DETAIL_NS{ 24 | 25 | template 26 | struct regex_iterator_traits : public std::iterator_traits {}; 27 | 28 | } // namespace BOOST_REGEX_DETAIL_NS 29 | } // namespace boost 30 | 31 | #endif 32 | 33 | -------------------------------------------------------------------------------- /vendor/core/vendor/boost-regex/include/boost/regex_fwd.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright (c) 1998-2002 4 | * John Maddock 5 | * 6 | * Use, modification and distribution are subject to the 7 | * Boost Software License, Version 1.0. (See accompanying file 8 | * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 9 | * 10 | */ 11 | 12 | /* 13 | * LOCATION: see http://www.boost.org/libs/regex for documentation. 14 | * FILE regex_fwd.cpp 15 | * VERSION see 16 | * DESCRIPTION: Forward declares boost::basic_regex<> and 17 | * associated typedefs. 18 | */ 19 | 20 | #ifndef BOOST_REGEX_FWD_HPP 21 | #define BOOST_REGEX_FWD_HPP 22 | 23 | #ifndef BOOST_REGEX_CONFIG_HPP 24 | #include 25 | #endif 26 | 27 | #ifdef BOOST_REGEX_CXX03 28 | #include 29 | #else 30 | #include 31 | #endif 32 | 33 | #endif 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /vendor/core/vendor/googlebenchmark/cmake/Config.cmake.in: -------------------------------------------------------------------------------- 1 | @PACKAGE_INIT@ 2 | 3 | include (CMakeFindDependencyMacro) 4 | 5 | find_dependency (Threads) 6 | 7 | if (@BENCHMARK_ENABLE_LIBPFM@) 8 | find_dependency (PFM) 9 | endif() 10 | 11 | include("${CMAKE_CURRENT_LIST_DIR}/@targets_export_name@.cmake") 12 | -------------------------------------------------------------------------------- /vendor/core/vendor/googlebenchmark/cmake/GetGitVersion.cmake: -------------------------------------------------------------------------------- 1 | # - Returns a version string from Git tags 2 | # 3 | # This function inspects the annotated git tags for the project and returns a string 4 | # into a CMake variable 5 | # 6 | # get_git_version() 7 | # 8 | # - Example 9 | # 10 | # include(GetGitVersion) 11 | # get_git_version(GIT_VERSION) 12 | # 13 | # Requires CMake 2.8.11+ 14 | find_package(Git) 15 | 16 | if(__get_git_version) 17 | return() 18 | endif() 19 | set(__get_git_version INCLUDED) 20 | 21 | function(get_git_version var) 22 | if(GIT_EXECUTABLE) 23 | execute_process(COMMAND ${GIT_EXECUTABLE} describe --tags --match "v[0-9]*.[0-9]*.[0-9]*" --abbrev=8 --dirty 24 | WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} 25 | RESULT_VARIABLE status 26 | OUTPUT_VARIABLE GIT_VERSION 27 | ERROR_QUIET) 28 | if(status) 29 | set(GIT_VERSION "v0.0.0") 30 | endif() 31 | else() 32 | set(GIT_VERSION "v0.0.0") 33 | endif() 34 | 35 | set(${var} ${GIT_VERSION} PARENT_SCOPE) 36 | endfunction() 37 | -------------------------------------------------------------------------------- /vendor/core/vendor/googlebenchmark/cmake/Modules/FindLLVMAr.cmake: -------------------------------------------------------------------------------- 1 | include(FeatureSummary) 2 | 3 | find_program(LLVMAR_EXECUTABLE 4 | NAMES llvm-ar 5 | DOC "The llvm-ar executable" 6 | ) 7 | 8 | include(FindPackageHandleStandardArgs) 9 | find_package_handle_standard_args(LLVMAr 10 | DEFAULT_MSG 11 | LLVMAR_EXECUTABLE) 12 | 13 | SET_PACKAGE_PROPERTIES(LLVMAr PROPERTIES 14 | URL https://llvm.org/docs/CommandGuide/llvm-ar.html 15 | DESCRIPTION "create, modify, and extract from archives" 16 | ) 17 | -------------------------------------------------------------------------------- /vendor/core/vendor/googlebenchmark/cmake/Modules/FindLLVMNm.cmake: -------------------------------------------------------------------------------- 1 | include(FeatureSummary) 2 | 3 | find_program(LLVMNM_EXECUTABLE 4 | NAMES llvm-nm 5 | DOC "The llvm-nm executable" 6 | ) 7 | 8 | include(FindPackageHandleStandardArgs) 9 | find_package_handle_standard_args(LLVMNm 10 | DEFAULT_MSG 11 | LLVMNM_EXECUTABLE) 12 | 13 | SET_PACKAGE_PROPERTIES(LLVMNm PROPERTIES 14 | URL https://llvm.org/docs/CommandGuide/llvm-nm.html 15 | DESCRIPTION "list LLVM bitcode and object file’s symbol table" 16 | ) 17 | -------------------------------------------------------------------------------- /vendor/core/vendor/googlebenchmark/cmake/Modules/FindLLVMRanLib.cmake: -------------------------------------------------------------------------------- 1 | include(FeatureSummary) 2 | 3 | find_program(LLVMRANLIB_EXECUTABLE 4 | NAMES llvm-ranlib 5 | DOC "The llvm-ranlib executable" 6 | ) 7 | 8 | include(FindPackageHandleStandardArgs) 9 | find_package_handle_standard_args(LLVMRanLib 10 | DEFAULT_MSG 11 | LLVMRANLIB_EXECUTABLE) 12 | 13 | SET_PACKAGE_PROPERTIES(LLVMRanLib PROPERTIES 14 | DESCRIPTION "generate index for LLVM archive" 15 | ) 16 | -------------------------------------------------------------------------------- /vendor/core/vendor/googlebenchmark/cmake/Modules/FindPFM.cmake: -------------------------------------------------------------------------------- 1 | # If successful, the following variables will be defined: 2 | # PFM_FOUND. 3 | # PFM_LIBRARIES 4 | # PFM_INCLUDE_DIRS 5 | # the following target will be defined: 6 | # PFM::libpfm 7 | 8 | include(FeatureSummary) 9 | include(FindPackageHandleStandardArgs) 10 | 11 | set_package_properties(PFM PROPERTIES 12 | URL http://perfmon2.sourceforge.net/ 13 | DESCRIPTION "A helper library to develop monitoring tools" 14 | PURPOSE "Used to program specific performance monitoring events") 15 | 16 | find_library(PFM_LIBRARY NAMES pfm) 17 | find_path(PFM_INCLUDE_DIR NAMES perfmon/pfmlib.h) 18 | 19 | find_package_handle_standard_args(PFM REQUIRED_VARS PFM_LIBRARY PFM_INCLUDE_DIR) 20 | 21 | if (PFM_FOUND AND NOT TARGET PFM::libpfm) 22 | add_library(PFM::libpfm UNKNOWN IMPORTED) 23 | set_target_properties(PFM::libpfm PROPERTIES 24 | IMPORTED_LOCATION "${PFM_LIBRARY}" 25 | INTERFACE_INCLUDE_DIRECTORIES "${PFM_INCLUDE_DIR}") 26 | endif() 27 | 28 | mark_as_advanced(PFM_LIBRARY PFM_INCLUDE_DIR) 29 | -------------------------------------------------------------------------------- /vendor/core/vendor/googlebenchmark/cmake/benchmark.pc.in: -------------------------------------------------------------------------------- 1 | prefix=@CMAKE_INSTALL_PREFIX@ 2 | exec_prefix=${prefix} 3 | libdir=@CMAKE_INSTALL_FULL_LIBDIR@ 4 | includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ 5 | 6 | Name: @PROJECT_NAME@ 7 | Description: Google microbenchmark framework 8 | Version: @VERSION@ 9 | 10 | Libs: -L${libdir} -lbenchmark 11 | Libs.private: -lpthread @BENCHMARK_PRIVATE_LINK_LIBRARIES@ 12 | Cflags: -I${includedir} 13 | -------------------------------------------------------------------------------- /vendor/core/vendor/googlebenchmark/cmake/benchmark_main.pc.in: -------------------------------------------------------------------------------- 1 | libdir=@CMAKE_INSTALL_FULL_LIBDIR@ 2 | 3 | Name: @PROJECT_NAME@ 4 | Description: Google microbenchmark framework (with main() function) 5 | Version: @VERSION@ 6 | Requires: benchmark 7 | Libs: -L${libdir} -lbenchmark_main 8 | -------------------------------------------------------------------------------- /vendor/core/vendor/googlebenchmark/cmake/gnu_posix_regex.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | int main() { 4 | std::string str = "test0159"; 5 | regex_t re; 6 | int ec = regcomp(&re, "^[a-z]+[0-9]+$", REG_EXTENDED | REG_NOSUB); 7 | if (ec != 0) { 8 | return ec; 9 | } 10 | return regexec(&re, str.c_str(), 0, nullptr, 0) ? -1 : 0; 11 | } 12 | 13 | -------------------------------------------------------------------------------- /vendor/core/vendor/googlebenchmark/cmake/llvm-toolchain.cmake: -------------------------------------------------------------------------------- 1 | find_package(LLVMAr REQUIRED) 2 | set(CMAKE_AR "${LLVMAR_EXECUTABLE}" CACHE FILEPATH "" FORCE) 3 | 4 | find_package(LLVMNm REQUIRED) 5 | set(CMAKE_NM "${LLVMNM_EXECUTABLE}" CACHE FILEPATH "" FORCE) 6 | 7 | find_package(LLVMRanLib REQUIRED) 8 | set(CMAKE_RANLIB "${LLVMRANLIB_EXECUTABLE}" CACHE FILEPATH "" FORCE) 9 | -------------------------------------------------------------------------------- /vendor/core/vendor/googlebenchmark/cmake/posix_regex.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | int main() { 4 | std::string str = "test0159"; 5 | regex_t re; 6 | int ec = regcomp(&re, "^[a-z]+[0-9]+$", REG_EXTENDED | REG_NOSUB); 7 | if (ec != 0) { 8 | return ec; 9 | } 10 | int ret = regexec(&re, str.c_str(), 0, nullptr, 0) ? -1 : 0; 11 | regfree(&re); 12 | return ret; 13 | } 14 | 15 | -------------------------------------------------------------------------------- /vendor/core/vendor/googlebenchmark/cmake/pthread_affinity.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | int main() { 3 | cpu_set_t set; 4 | CPU_ZERO(&set); 5 | for (int i = 0; i < CPU_SETSIZE; ++i) { 6 | CPU_SET(i, &set); 7 | CPU_CLR(i, &set); 8 | } 9 | pthread_t self = pthread_self(); 10 | int ret; 11 | ret = pthread_getaffinity_np(self, sizeof(set), &set); 12 | if (ret != 0) return ret; 13 | ret = pthread_setaffinity_np(self, sizeof(set), &set); 14 | if (ret != 0) return ret; 15 | return 0; 16 | } 17 | -------------------------------------------------------------------------------- /vendor/core/vendor/googlebenchmark/cmake/split_list.cmake: -------------------------------------------------------------------------------- 1 | macro(split_list listname) 2 | string(REPLACE ";" " " ${listname} "${${listname}}") 3 | endmacro() 4 | -------------------------------------------------------------------------------- /vendor/core/vendor/googlebenchmark/cmake/std_regex.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | int main() { 4 | const std::string str = "test0159"; 5 | std::regex re; 6 | re = std::regex("^[a-z]+[0-9]+$", 7 | std::regex_constants::extended | std::regex_constants::nosubs); 8 | return std::regex_search(str, re) ? 0 : -1; 9 | } 10 | 11 | -------------------------------------------------------------------------------- /vendor/core/vendor/googlebenchmark/cmake/steady_clock.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | int main() { 4 | typedef std::chrono::steady_clock Clock; 5 | Clock::time_point tp = Clock::now(); 6 | ((void)tp); 7 | } 8 | -------------------------------------------------------------------------------- /vendor/core/vendor/googlebenchmark/cmake/thread_safety_attributes.cpp: -------------------------------------------------------------------------------- 1 | #define HAVE_THREAD_SAFETY_ATTRIBUTES 2 | #include "../src/mutex.h" 3 | 4 | int main() {} 5 | -------------------------------------------------------------------------------- /vendor/core/vendor/googlebenchmark/src/benchmark_main.cc: -------------------------------------------------------------------------------- 1 | // Copyright 2018 Google Inc. All rights reserved. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | #include "benchmark/benchmark.h" 16 | 17 | BENCHMARK_EXPORT int main(int, char**); 18 | BENCHMARK_MAIN(); 19 | -------------------------------------------------------------------------------- /vendor/core/vendor/googlebenchmark/src/check.cc: -------------------------------------------------------------------------------- 1 | #include "check.h" 2 | 3 | namespace benchmark { 4 | namespace internal { 5 | 6 | static AbortHandlerT* handler = &std::abort; 7 | 8 | BENCHMARK_EXPORT AbortHandlerT*& GetAbortHandler() { return handler; } 9 | 10 | } // namespace internal 11 | } // namespace benchmark 12 | -------------------------------------------------------------------------------- /vendor/core/vendor/googlebenchmark/src/colorprint.h: -------------------------------------------------------------------------------- 1 | #ifndef BENCHMARK_COLORPRINT_H_ 2 | #define BENCHMARK_COLORPRINT_H_ 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | namespace benchmark { 9 | enum LogColor { 10 | COLOR_DEFAULT, 11 | COLOR_RED, 12 | COLOR_GREEN, 13 | COLOR_YELLOW, 14 | COLOR_BLUE, 15 | COLOR_MAGENTA, 16 | COLOR_CYAN, 17 | COLOR_WHITE 18 | }; 19 | 20 | std::string FormatString(const char* msg, va_list args); 21 | std::string FormatString(const char* msg, ...); 22 | 23 | void ColorPrintf(std::ostream& out, LogColor color, const char* fmt, 24 | va_list args); 25 | void ColorPrintf(std::ostream& out, LogColor color, const char* fmt, ...); 26 | 27 | // Returns true if stdout appears to be a terminal that supports colored 28 | // output, false otherwise. 29 | bool IsColorTerminal(); 30 | 31 | } // end namespace benchmark 32 | 33 | #endif // BENCHMARK_COLORPRINT_H_ 34 | -------------------------------------------------------------------------------- /vendor/core/vendor/googletest/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Note: CMake support is community-based. The maintainers do not use CMake 2 | # internally. 3 | 4 | cmake_minimum_required(VERSION 3.13) 5 | 6 | project(googletest-distribution) 7 | set(GOOGLETEST_VERSION 1.14.0) 8 | 9 | if(NOT CYGWIN AND NOT MSYS AND NOT ${CMAKE_SYSTEM_NAME} STREQUAL QNX) 10 | set(CMAKE_CXX_EXTENSIONS OFF) 11 | endif() 12 | 13 | enable_testing() 14 | 15 | include(CMakeDependentOption) 16 | include(GNUInstallDirs) 17 | 18 | # Note that googlemock target already builds googletest. 19 | option(BUILD_GMOCK "Builds the googlemock subproject" ON) 20 | option(INSTALL_GTEST "Enable installation of googletest. (Projects embedding googletest may want to turn this OFF.)" ON) 21 | option(GTEST_HAS_ABSL "Use Abseil and RE2. Requires Abseil and RE2 to be separately added to the build." OFF) 22 | 23 | if(GTEST_HAS_ABSL) 24 | if(NOT TARGET absl::base) 25 | find_package(absl REQUIRED) 26 | endif() 27 | if(NOT TARGET re2::re2) 28 | find_package(re2 REQUIRED) 29 | endif() 30 | endif() 31 | 32 | if(BUILD_GMOCK) 33 | add_subdirectory( googlemock ) 34 | else() 35 | add_subdirectory( googletest ) 36 | endif() 37 | -------------------------------------------------------------------------------- /vendor/core/vendor/googletest/googlemock/cmake/gmock.pc.in: -------------------------------------------------------------------------------- 1 | libdir=@CMAKE_INSTALL_FULL_LIBDIR@ 2 | includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ 3 | 4 | Name: gmock 5 | Description: GoogleMock (without main() function) 6 | Version: @PROJECT_VERSION@ 7 | URL: https://github.com/google/googletest 8 | Requires: gtest = @PROJECT_VERSION@ 9 | Libs: -L${libdir} -lgmock @CMAKE_THREAD_LIBS_INIT@ 10 | Cflags: -I${includedir} @GTEST_HAS_PTHREAD_MACRO@ 11 | -------------------------------------------------------------------------------- /vendor/core/vendor/googletest/googlemock/cmake/gmock_main.pc.in: -------------------------------------------------------------------------------- 1 | libdir=@CMAKE_INSTALL_FULL_LIBDIR@ 2 | includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ 3 | 4 | Name: gmock_main 5 | Description: GoogleMock (with main() function) 6 | Version: @PROJECT_VERSION@ 7 | URL: https://github.com/google/googletest 8 | Requires: gmock = @PROJECT_VERSION@ 9 | Libs: -L${libdir} -lgmock_main @CMAKE_THREAD_LIBS_INIT@ 10 | Cflags: -I${includedir} @GTEST_HAS_PTHREAD_MACRO@ 11 | -------------------------------------------------------------------------------- /vendor/core/vendor/googletest/googlemock/include/gmock/internal/custom/README.md: -------------------------------------------------------------------------------- 1 | # Customization Points 2 | 3 | The custom directory is an injection point for custom user configurations. 4 | 5 | ## Header `gmock-port.h` 6 | 7 | The following macros can be defined: 8 | 9 | ### Flag related macros: 10 | 11 | * `GMOCK_DECLARE_bool_(name)` 12 | * `GMOCK_DECLARE_int32_(name)` 13 | * `GMOCK_DECLARE_string_(name)` 14 | * `GMOCK_DEFINE_bool_(name, default_val, doc)` 15 | * `GMOCK_DEFINE_int32_(name, default_val, doc)` 16 | * `GMOCK_DEFINE_string_(name, default_val, doc)` 17 | * `GMOCK_FLAG_GET(flag_name)` 18 | * `GMOCK_FLAG_SET(flag_name, value)` 19 | -------------------------------------------------------------------------------- /vendor/core/vendor/googletest/googlemock/include/gmock/internal/custom/gmock-generated-actions.h: -------------------------------------------------------------------------------- 1 | // IWYU pragma: private, include "gmock/gmock.h" 2 | // IWYU pragma: friend gmock/.* 3 | 4 | #ifndef GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_GENERATED_ACTIONS_H_ 5 | #define GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_GENERATED_ACTIONS_H_ 6 | 7 | #endif // GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_GENERATED_ACTIONS_H_ 8 | -------------------------------------------------------------------------------- /vendor/core/vendor/googletest/googletest/cmake/Config.cmake.in: -------------------------------------------------------------------------------- 1 | @PACKAGE_INIT@ 2 | include(CMakeFindDependencyMacro) 3 | if (@GTEST_HAS_PTHREAD@) 4 | set(THREADS_PREFER_PTHREAD_FLAG @THREADS_PREFER_PTHREAD_FLAG@) 5 | find_dependency(Threads) 6 | endif() 7 | if (@GTEST_HAS_ABSL@) 8 | find_dependency(absl) 9 | find_dependency(re2) 10 | endif() 11 | 12 | include("${CMAKE_CURRENT_LIST_DIR}/@targets_export_name@.cmake") 13 | check_required_components("@project_name@") 14 | -------------------------------------------------------------------------------- /vendor/core/vendor/googletest/googletest/cmake/gtest.pc.in: -------------------------------------------------------------------------------- 1 | libdir=@CMAKE_INSTALL_FULL_LIBDIR@ 2 | includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ 3 | 4 | Name: gtest 5 | Description: GoogleTest (without main() function) 6 | Version: @PROJECT_VERSION@ 7 | URL: https://github.com/google/googletest 8 | Libs: -L${libdir} -lgtest @CMAKE_THREAD_LIBS_INIT@ 9 | Cflags: -I${includedir} @GTEST_HAS_PTHREAD_MACRO@ 10 | -------------------------------------------------------------------------------- /vendor/core/vendor/googletest/googletest/cmake/gtest_main.pc.in: -------------------------------------------------------------------------------- 1 | libdir=@CMAKE_INSTALL_FULL_LIBDIR@ 2 | includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ 3 | 4 | Name: gtest_main 5 | Description: GoogleTest (with main() function) 6 | Version: @PROJECT_VERSION@ 7 | URL: https://github.com/google/googletest 8 | Requires: gtest = @PROJECT_VERSION@ 9 | Libs: -L${libdir} -lgtest_main @CMAKE_THREAD_LIBS_INIT@ 10 | Cflags: -I${includedir} @GTEST_HAS_PTHREAD_MACRO@ 11 | -------------------------------------------------------------------------------- /vendor/core/vendor/googletest/googletest/cmake/libgtest.la.in: -------------------------------------------------------------------------------- 1 | # libgtest.la - a libtool library file 2 | # Generated by libtool (GNU libtool) 2.4.6 3 | 4 | # Please DO NOT delete this file! 5 | # It is necessary for linking the library. 6 | 7 | # Names of this library. 8 | library_names='libgtest.so' 9 | 10 | # Is this an already installed library? 11 | installed=yes 12 | 13 | # Should we warn about portability when linking against -modules? 14 | shouldnotlink=no 15 | 16 | # Files to dlopen/dlpreopen 17 | dlopen='' 18 | dlpreopen='' 19 | 20 | # Directory that this library needs to be installed in: 21 | libdir='@CMAKE_INSTALL_FULL_LIBDIR@' 22 | -------------------------------------------------------------------------------- /vendor/core/vendor/jsonschema-2019-09/hyper-schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json-schema.org/draft/2019-09/hyper-schema", 3 | "$id": "https://json-schema.org/draft/2019-09/hyper-schema", 4 | "$vocabulary": { 5 | "https://json-schema.org/draft/2019-09/vocab/core": true, 6 | "https://json-schema.org/draft/2019-09/vocab/applicator": true, 7 | "https://json-schema.org/draft/2019-09/vocab/validation": true, 8 | "https://json-schema.org/draft/2019-09/vocab/meta-data": true, 9 | "https://json-schema.org/draft/2019-09/vocab/format": false, 10 | "https://json-schema.org/draft/2019-09/vocab/content": true, 11 | "https://json-schema.org/draft/2019-09/vocab/hyper-schema": true 12 | }, 13 | "$recursiveAnchor": true, 14 | 15 | "title": "JSON Hyper-Schema", 16 | "allOf": [ 17 | {"$ref": "https://json-schema.org/draft/2019-09/schema"}, 18 | {"$ref": "https://json-schema.org/draft/2019-09/meta/hyper-schema"} 19 | ], 20 | "links": [ 21 | { 22 | "rel": "self", 23 | "href": "{+%24id}" 24 | } 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /vendor/core/vendor/jsonschema-2019-09/meta/content.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json-schema.org/draft/2019-09/schema", 3 | "$id": "https://json-schema.org/draft/2019-09/meta/content", 4 | "$vocabulary": { 5 | "https://json-schema.org/draft/2019-09/vocab/content": true 6 | }, 7 | "$recursiveAnchor": true, 8 | 9 | "title": "Content vocabulary meta-schema", 10 | 11 | "type": ["object", "boolean"], 12 | "properties": { 13 | "contentMediaType": { "type": "string" }, 14 | "contentEncoding": { "type": "string" }, 15 | "contentSchema": { "$recursiveRef": "#" } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /vendor/core/vendor/jsonschema-2019-09/meta/format.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json-schema.org/draft/2019-09/schema", 3 | "$id": "https://json-schema.org/draft/2019-09/meta/format", 4 | "$vocabulary": { 5 | "https://json-schema.org/draft/2019-09/vocab/format": true 6 | }, 7 | "$recursiveAnchor": true, 8 | 9 | "title": "Format vocabulary meta-schema", 10 | "type": ["object", "boolean"], 11 | "properties": { 12 | "format": { "type": "string" } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /vendor/core/vendor/jsonschema-2019-09/meta/hyper-schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json-schema.org/draft/2019-09/hyper-schema", 3 | "$id": "https://json-schema.org/draft/2019-09/meta/hyper-schema", 4 | "$vocabulary": { 5 | "https://json-schema.org/draft/2019-09/vocab/hyper-schema": true 6 | }, 7 | "$recursiveAnchor": true, 8 | 9 | "title": "JSON Hyper-Schema Vocabulary Schema", 10 | "type": ["object", "boolean"], 11 | "properties": { 12 | "base": { 13 | "type": "string", 14 | "format": "uri-template" 15 | }, 16 | "links": { 17 | "type": "array", 18 | "items": { 19 | "$ref": "https://json-schema.org/draft/2019-09/links" 20 | } 21 | } 22 | }, 23 | "links": [ 24 | { 25 | "rel": "self", 26 | "href": "{+%24id}" 27 | } 28 | ] 29 | } 30 | -------------------------------------------------------------------------------- /vendor/core/vendor/jsonschema-2019-09/meta/meta-data.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json-schema.org/draft/2019-09/schema", 3 | "$id": "https://json-schema.org/draft/2019-09/meta/meta-data", 4 | "$vocabulary": { 5 | "https://json-schema.org/draft/2019-09/vocab/meta-data": true 6 | }, 7 | "$recursiveAnchor": true, 8 | 9 | "title": "Meta-data vocabulary meta-schema", 10 | 11 | "type": ["object", "boolean"], 12 | "properties": { 13 | "title": { 14 | "type": "string" 15 | }, 16 | "description": { 17 | "type": "string" 18 | }, 19 | "default": true, 20 | "deprecated": { 21 | "type": "boolean", 22 | "default": false 23 | }, 24 | "readOnly": { 25 | "type": "boolean", 26 | "default": false 27 | }, 28 | "writeOnly": { 29 | "type": "boolean", 30 | "default": false 31 | }, 32 | "examples": { 33 | "type": "array", 34 | "items": true 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /vendor/core/vendor/jsonschema-2020-12/meta/content.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json-schema.org/draft/2020-12/schema", 3 | "$id": "https://json-schema.org/draft/2020-12/meta/content", 4 | "$vocabulary": { 5 | "https://json-schema.org/draft/2020-12/vocab/content": true 6 | }, 7 | "$dynamicAnchor": "meta", 8 | 9 | "title": "Content vocabulary meta-schema", 10 | 11 | "type": ["object", "boolean"], 12 | "properties": { 13 | "contentEncoding": { "type": "string" }, 14 | "contentMediaType": { "type": "string" }, 15 | "contentSchema": { "$dynamicRef": "#meta" } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /vendor/core/vendor/jsonschema-2020-12/meta/format-annotation.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json-schema.org/draft/2020-12/schema", 3 | "$id": "https://json-schema.org/draft/2020-12/meta/format-annotation", 4 | "$vocabulary": { 5 | "https://json-schema.org/draft/2020-12/vocab/format-annotation": true 6 | }, 7 | "$dynamicAnchor": "meta", 8 | 9 | "title": "Format vocabulary meta-schema for annotation results", 10 | "type": ["object", "boolean"], 11 | "properties": { 12 | "format": { "type": "string" } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /vendor/core/vendor/jsonschema-2020-12/meta/format-assertion.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json-schema.org/draft/2020-12/schema", 3 | "$id": "https://json-schema.org/draft/2020-12/meta/format-assertion", 4 | "$vocabulary": { 5 | "https://json-schema.org/draft/2020-12/vocab/format-assertion": true 6 | }, 7 | "$dynamicAnchor": "meta", 8 | 9 | "title": "Format vocabulary meta-schema for assertion results", 10 | "type": ["object", "boolean"], 11 | "properties": { 12 | "format": { "type": "string" } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /vendor/core/vendor/jsonschema-2020-12/meta/hyper-schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json-schema.org/draft/2020-12/hyper-schema", 3 | "$id": "https://json-schema.org/draft/2020-12/meta/hyper-schema", 4 | "$vocabulary": { 5 | "https://json-schema.org/draft/2019-09/vocab/hyper-schema": true 6 | }, 7 | "$dynamicAnchor": "meta", 8 | 9 | "title": "JSON Hyper-Schema Vocabulary Schema", 10 | "type": ["object", "boolean"], 11 | "properties": { 12 | "base": { 13 | "type": "string", 14 | "format": "uri-template" 15 | }, 16 | "links": { 17 | "type": "array", 18 | "items": { 19 | "$ref": "https://json-schema.org/draft/2020-12/links" 20 | } 21 | } 22 | }, 23 | "links": [ 24 | { 25 | "rel": "self", 26 | "href": "{+%24id}" 27 | } 28 | ] 29 | } 30 | -------------------------------------------------------------------------------- /vendor/core/vendor/jsonschema-2020-12/meta/meta-data.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json-schema.org/draft/2020-12/schema", 3 | "$id": "https://json-schema.org/draft/2020-12/meta/meta-data", 4 | "$vocabulary": { 5 | "https://json-schema.org/draft/2020-12/vocab/meta-data": true 6 | }, 7 | "$dynamicAnchor": "meta", 8 | 9 | "title": "Meta-data vocabulary meta-schema", 10 | 11 | "type": ["object", "boolean"], 12 | "properties": { 13 | "title": { 14 | "type": "string" 15 | }, 16 | "description": { 17 | "type": "string" 18 | }, 19 | "default": true, 20 | "deprecated": { 21 | "type": "boolean", 22 | "default": false 23 | }, 24 | "readOnly": { 25 | "type": "boolean", 26 | "default": false 27 | }, 28 | "writeOnly": { 29 | "type": "boolean", 30 | "default": false 31 | }, 32 | "examples": { 33 | "type": "array", 34 | "items": true 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /vendor/core/vendor/jsonschema-2020-12/meta/unevaluated.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json-schema.org/draft/2020-12/schema", 3 | "$id": "https://json-schema.org/draft/2020-12/meta/unevaluated", 4 | "$vocabulary": { 5 | "https://json-schema.org/draft/2020-12/vocab/unevaluated": true 6 | }, 7 | "$dynamicAnchor": "meta", 8 | 9 | "title": "Unevaluated applicator vocabulary meta-schema", 10 | "type": ["object", "boolean"], 11 | "properties": { 12 | "unevaluatedItems": { "$dynamicRef": "#meta" }, 13 | "unevaluatedProperties": { "$dynamicRef": "#meta" } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /vendor/core/vendor/jsonschema-draft0/json-ref.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema" : "http://json-schema.org/draft-00/hyper-schema#", 3 | "id" : "http://json-schema.org/draft-00/json-ref#", 4 | 5 | "items" : {"$ref" : "#"}, 6 | "additionalProperties" : {"$ref" : "#"}, 7 | 8 | "links" : [ 9 | { 10 | "href" : "{$ref}", 11 | "rel" : "full" 12 | }, 13 | 14 | { 15 | "href" : "{$schema}", 16 | "rel" : "describedby" 17 | }, 18 | 19 | { 20 | "href" : "{id}", 21 | "rel" : "self" 22 | } 23 | ], 24 | 25 | "fragmentResolution" : "dot-delimited" 26 | } -------------------------------------------------------------------------------- /vendor/core/vendor/jsonschema-draft0/links.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema" : "http://json-schema.org/draft-00/hyper-schema#", 3 | "id" : "http://json-schema.org/draft-00/links#", 4 | "type" : "object", 5 | 6 | "properties" : { 7 | "href" : { 8 | "type" : "string" 9 | }, 10 | 11 | "rel" : { 12 | "type" : "string" 13 | }, 14 | 15 | "method" : { 16 | "type" : "string", 17 | "default" : "GET", 18 | "optional" : true 19 | }, 20 | 21 | "enctype" : { 22 | "type" : "string", 23 | "requires" : "method", 24 | "optional" : true 25 | }, 26 | 27 | "properties" : { 28 | "type" : "object", 29 | "additionalProperties" : {"$ref" : "http://json-schema.org/draft-00/hyper-schema#"}, 30 | "optional" : true 31 | } 32 | } 33 | } -------------------------------------------------------------------------------- /vendor/core/vendor/jsonschema-draft1/json-ref.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema" : "http://json-schema.org/draft-01/hyper-schema#", 3 | "id" : "http://json-schema.org/draft-01/json-ref#", 4 | 5 | "items" : {"$ref" : "#"}, 6 | "additionalProperties" : {"$ref" : "#"}, 7 | 8 | "links" : [ 9 | { 10 | "href" : "{$ref}", 11 | "rel" : "full" 12 | }, 13 | 14 | { 15 | "href" : "{$schema}", 16 | "rel" : "describedby" 17 | }, 18 | 19 | { 20 | "href" : "{id}", 21 | "rel" : "self" 22 | } 23 | ], 24 | 25 | "fragmentResolution" : "dot-delimited" 26 | } -------------------------------------------------------------------------------- /vendor/core/vendor/jsonschema-draft1/links.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema" : "http://json-schema.org/draft-01/hyper-schema#", 3 | "id" : "http://json-schema.org/draft-01/links#", 4 | "type" : "object", 5 | 6 | "properties" : { 7 | "href" : { 8 | "type" : "string" 9 | }, 10 | 11 | "rel" : { 12 | "type" : "string" 13 | }, 14 | 15 | "method" : { 16 | "type" : "string", 17 | "default" : "GET", 18 | "optional" : true 19 | }, 20 | 21 | "enctype" : { 22 | "type" : "string", 23 | "requires" : "method", 24 | "optional" : true 25 | }, 26 | 27 | "properties" : { 28 | "type" : "object", 29 | "additionalProperties" : {"$ref" : "http://json-schema.org/draft-01/hyper-schema#"}, 30 | "optional" : true 31 | } 32 | } 33 | } -------------------------------------------------------------------------------- /vendor/core/vendor/jsonschema-draft2/json-ref.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema" : "http://json-schema.org/draft-02/hyper-schema#", 3 | "id" : "http://json-schema.org/draft-02/json-ref#", 4 | 5 | "items" : {"$ref" : "#"}, 6 | "additionalProperties" : {"$ref" : "#"}, 7 | 8 | "links" : [ 9 | { 10 | "href" : "{$ref}", 11 | "rel" : "full" 12 | }, 13 | 14 | { 15 | "href" : "{$schema}", 16 | "rel" : "describedby" 17 | }, 18 | 19 | { 20 | "href" : "{id}", 21 | "rel" : "self" 22 | } 23 | ], 24 | 25 | "fragmentResolution" : "dot-delimited" 26 | } -------------------------------------------------------------------------------- /vendor/core/vendor/jsonschema-draft2/links.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema" : "http://json-schema.org/draft-02/hyper-schema#", 3 | "id" : "http://json-schema.org/draft-02/links#", 4 | "type" : "object", 5 | 6 | "properties" : { 7 | "href" : { 8 | "type" : "string" 9 | }, 10 | 11 | "rel" : { 12 | "type" : "string" 13 | }, 14 | 15 | "targetSchema" : {"$ref" : "http://json-schema.org/draft-02/hyper-schema#"}, 16 | 17 | "method" : { 18 | "type" : "string", 19 | "default" : "GET", 20 | "optional" : true 21 | }, 22 | 23 | "enctype" : { 24 | "type" : "string", 25 | "requires" : "method", 26 | "optional" : true 27 | }, 28 | 29 | "properties" : { 30 | "type" : "object", 31 | "additionalProperties" : {"$ref" : "http://json-schema.org/draft-02/hyper-schema#"}, 32 | "optional" : true 33 | } 34 | } 35 | } -------------------------------------------------------------------------------- /vendor/core/vendor/jsonschema-draft3/json-ref.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema" : "http://json-schema.org/draft-03/hyper-schema#", 3 | "id" : "http://json-schema.org/draft-03/json-ref#", 4 | 5 | "additionalItems" : {"$ref" : "#"}, 6 | "additionalProperties" : {"$ref" : "#"}, 7 | 8 | "links" : [ 9 | { 10 | "href" : "{id}", 11 | "rel" : "self" 12 | }, 13 | 14 | { 15 | "href" : "{$ref}", 16 | "rel" : "full" 17 | }, 18 | 19 | { 20 | "href" : "{$schema}", 21 | "rel" : "describedby" 22 | } 23 | ], 24 | 25 | "fragmentResolution" : "dot-delimited" 26 | } -------------------------------------------------------------------------------- /vendor/core/vendor/jsonschema-draft3/links.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema" : "http://json-schema.org/draft-03/hyper-schema#", 3 | "id" : "http://json-schema.org/draft-03/links#", 4 | "type" : "object", 5 | 6 | "properties" : { 7 | "href" : { 8 | "type" : "string", 9 | "required" : true, 10 | "format" : "link-description-object-template" 11 | }, 12 | 13 | "rel" : { 14 | "type" : "string", 15 | "required" : true 16 | }, 17 | 18 | "targetSchema" : {"$ref" : "http://json-schema.org/draft-03/hyper-schema#"}, 19 | 20 | "method" : { 21 | "type" : "string", 22 | "default" : "GET" 23 | }, 24 | 25 | "enctype" : { 26 | "type" : "string", 27 | "requires" : "method" 28 | }, 29 | 30 | "properties" : { 31 | "type" : "object", 32 | "additionalProperties" : {"$ref" : "http://json-schema.org/draft-03/hyper-schema#"} 33 | } 34 | } 35 | } -------------------------------------------------------------------------------- /vendor/core/vendor/jsonschema-draft4/links.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema" : "http://json-schema.org/draft-04/hyper-schema#", 3 | "id" : "http://json-schema.org/draft-04/links#", 4 | "type" : "object", 5 | 6 | "properties" : { 7 | "rel" : { 8 | "type" : "string" 9 | }, 10 | 11 | "href" : { 12 | "type" : "string" 13 | }, 14 | 15 | "template" : { 16 | "type" : "string" 17 | }, 18 | 19 | "targetSchema" : {"$ref" : "http://json-schema.org/draft-04/hyper-schema#"}, 20 | 21 | "method" : { 22 | "type" : "string", 23 | "default" : "GET" 24 | }, 25 | 26 | "enctype" : { 27 | "type" : "string" 28 | }, 29 | 30 | "properties" : { 31 | "type" : "object", 32 | "additionalProperties" : {"$ref" : "http://json-schema.org/draft-04/hyper-schema#"} 33 | } 34 | }, 35 | 36 | "required" : ["rel", "href"], 37 | 38 | "dependencies" : { 39 | "enctype" : ["method"] 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /vendor/core/vendor/yaml.mask: -------------------------------------------------------------------------------- 1 | cmake/ 2 | doc/ 3 | docker/ 4 | examples/ 5 | include/Makefile.am 6 | regression-inputs/ 7 | src/Makefile.am 8 | tests/ 9 | .appveyor.yml 10 | .indent.pro 11 | .makefile 12 | .travis.yml 13 | announcement.msg 14 | bootstrap 15 | Changes 16 | CMakeLists.txt 17 | configure.ac 18 | Makefile.am 19 | ReadMe.md 20 | yaml-0.1.pc.in 21 | yamlConfig.cmake.in 22 | -------------------------------------------------------------------------------- /vendor/noa/LICENSE: -------------------------------------------------------------------------------- 1 | This software is dual-licensed: you can redistribute it and/or modify it under 2 | the terms of the GNU Affero General Public License as published by the Free 3 | Software Foundation, either version 3 of the License, or (at your option) any 4 | later version. For the terms of this license, see 5 | . 6 | 7 | You are free to use this software under the terms of the GNU Affero General 8 | Public License WITHOUT ANY WARRANTY; without even the implied warranty of 9 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 10 | 11 | Alternatively, you can use this software under a commercial license, as set out 12 | in . 13 | -------------------------------------------------------------------------------- /vendor/noa/cmake/FindGoogleBenchmark.cmake: -------------------------------------------------------------------------------- 1 | if(NOT Benchmark_FOUND) 2 | set(BENCHMARK_ENABLE_TESTING OFF CACHE BOOL "Enable testing of the benchmark library.") 3 | add_subdirectory("${PROJECT_SOURCE_DIR}/vendor/googlebenchmark") 4 | set(Benchmark_FOUND ON) 5 | endif() 6 | -------------------------------------------------------------------------------- /vendor/noa/cmake/FindGoogleTest.cmake: -------------------------------------------------------------------------------- 1 | if(NOT GoogleTest_FOUND) 2 | set(BUILD_GMOCK ON CACHE BOOL "enable googlemock") 3 | set(INSTALL_GTEST OFF CACHE BOOL "disable installation") 4 | add_subdirectory("${PROJECT_SOURCE_DIR}/vendor/googletest") 5 | set(GoogleTest_FOUND ON) 6 | endif() 7 | -------------------------------------------------------------------------------- /vendor/noa/cmake/noa.cmake: -------------------------------------------------------------------------------- 1 | set(NOA_DIRECTORY "${CMAKE_CURRENT_LIST_DIR}/noa") 2 | include("${NOA_DIRECTORY}/shim.cmake") 3 | include("${NOA_DIRECTORY}/variables.cmake") 4 | include("${NOA_DIRECTORY}/defaults.cmake") 5 | include("${NOA_DIRECTORY}/compiler/sanitizer.cmake") 6 | include("${NOA_DIRECTORY}/compiler/options.cmake") 7 | include("${NOA_DIRECTORY}/options/enum.cmake") 8 | include("${NOA_DIRECTORY}/commands/copy-file.cmake") 9 | include("${NOA_DIRECTORY}/targets/library.cmake") 10 | include("${NOA_DIRECTORY}/targets/executable.cmake") 11 | include("${NOA_DIRECTORY}/targets/clang-format.cmake") 12 | include("${NOA_DIRECTORY}/targets/clang-tidy.cmake") 13 | include("${NOA_DIRECTORY}/targets/shellcheck.cmake") 14 | include("${NOA_DIRECTORY}/targets/doxygen.cmake") 15 | include("${NOA_DIRECTORY}/targets/googletest.cmake") 16 | include("${NOA_DIRECTORY}/targets/googlebenchmark.cmake") 17 | -------------------------------------------------------------------------------- /vendor/noa/cmake/noa/commands/copy-file.cmake: -------------------------------------------------------------------------------- 1 | function(noa_command_copy_file) 2 | cmake_parse_arguments(NOA_COMMAND_COPY_FILE "" "FROM;TO" "" ${ARGN}) 3 | 4 | if(NOT NOA_COMMAND_COPY_FILE_FROM) 5 | message(FATAL_ERROR "You must pass the file to copy using the FROM option") 6 | endif() 7 | if(NOT NOA_COMMAND_COPY_FILE_TO) 8 | message(FATAL_ERROR "You must pass the destination to copy to using the TO option") 9 | endif() 10 | 11 | add_custom_command( 12 | OUTPUT "${NOA_COMMAND_COPY_FILE_TO}" 13 | COMMAND "${CMAKE_COMMAND}" -E copy "${NOA_COMMAND_COPY_FILE_FROM}" "${NOA_COMMAND_COPY_FILE_TO}" 14 | MAIN_DEPENDENCY "${NOA_COMMAND_COPY_FILE_FROM}" 15 | DEPENDS "${NOA_COMMAND_COPY_FILE_FROM}" 16 | COMMENT "Copying ${NOA_COMMAND_COPY_FILE_FROM} ot ${NOA_COMMAND_COPY_FILE_TO}") 17 | endfunction() 18 | -------------------------------------------------------------------------------- /vendor/noa/cmake/noa/shim.cmake: -------------------------------------------------------------------------------- 1 | # The PROJECT_IS_TOP_LEVEL handy variable is only 2 | # available on CMake >=3.21. 3 | if(NOT DEFINED PROJECT_IS_TOP_LEVEL AND "${CMAKE_PROJECT_NAME}" STREQUAL "${PROJECT_NAME}") 4 | set(PROJECT_IS_TOP_LEVEL YES) 5 | endif() 6 | -------------------------------------------------------------------------------- /vendor/noa/cmake/noa/targets/clang-format.config: -------------------------------------------------------------------------------- 1 | --- 2 | BasedOnStyle: LLVM 3 | IndentCaseLabels: true 4 | -------------------------------------------------------------------------------- /vendor/noa/cmake/noa/targets/clang-tidy.config: -------------------------------------------------------------------------------- 1 | --- 2 | # See https://clang.llvm.org/extra/clang-tidy/index.html 3 | # First disable all default checks (with -*) 4 | Checks: '-*,bugprone-*,clang-analyzer-*,clang-diagnostic-*,modernize-*,concurrency-*,cppcoreguidelines-*,performance-*,portability-*,objc-*,misc-*,-misc-no-recursion,-bugprone-easily-swappable-parameters' 5 | WarningsAsErrors: '*' 6 | HeaderFilterRegex: '' 7 | FormatStyle: none 8 | -------------------------------------------------------------------------------- /vendor/noa/cmake/noa/targets/doxygen.cmake: -------------------------------------------------------------------------------- 1 | function(noa_target_doxygen) 2 | cmake_parse_arguments(NOA_TARGET_DOXYGEN "" "CONFIG;OUTPUT" "" ${ARGN}) 3 | 4 | if(NOT NOA_TARGET_DOXYGEN_CONFIG) 5 | message(FATAL_ERROR "You must pass an input config file using the CONFIG option") 6 | endif() 7 | if(NOT NOA_TARGET_DOXYGEN_OUTPUT) 8 | message(FATAL_ERROR "You must pass an output directory using the OUTPUT option") 9 | endif() 10 | 11 | find_package(Doxygen) 12 | if(DOXYGEN_FOUND) 13 | set(DOXYGEN_IN "${NOA_TARGET_DOXYGEN_CONFIG}") 14 | set(DOXYGEN_OUT "${CMAKE_CURRENT_BINARY_DIR}/Doxyfile") 15 | configure_file("${DOXYGEN_IN}" "${DOXYGEN_OUT}" @ONLY) 16 | add_custom_target(doxygen 17 | WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}" 18 | VERBATIM 19 | COMMAND "${CMAKE_COMMAND}" -E make_directory "${NOA_TARGET_DOXYGEN_OUTPUT}" 20 | COMMAND "${DOXYGEN_EXECUTABLE}" "${DOXYGEN_OUT}") 21 | else() 22 | add_custom_target(doxygen VERBATIM 23 | COMMAND "${CMAKE_COMMAND}" -E echo "Could not locate Doxygen" 24 | COMMAND "${CMAKE_COMMAND}" -E false) 25 | endif() 26 | endfunction() 27 | -------------------------------------------------------------------------------- /vendor/noa/cmake/noa/targets/googletest.cmake: -------------------------------------------------------------------------------- 1 | function(noa_googletest) 2 | cmake_parse_arguments(NOA_GOOGLETEST "" 3 | "NAMESPACE;PROJECT;NAME;FOLDER;VARIANT" "SOURCES" ${ARGN}) 4 | 5 | if(NOA_GOOGLETEST_VARIANT) 6 | set(TARGET_VARIANT "${NOA_GOOGLETEST_VARIANT}_unit") 7 | else() 8 | set(TARGET_VARIANT "unit") 9 | endif() 10 | 11 | noa_executable( 12 | NAMESPACE "${NOA_GOOGLETEST_NAMESPACE}" 13 | PROJECT "${NOA_GOOGLETEST_PROJECT}" 14 | NAME "${NOA_GOOGLETEST_NAME}" 15 | FOLDER "${NOA_GOOGLETEST_FOLDER}" 16 | VARIANT "${TARGET_VARIANT}" 17 | SOURCES "${NOA_GOOGLETEST_SOURCES}" 18 | OUTPUT TARGET_NAME) 19 | 20 | target_link_libraries("${TARGET_NAME}" 21 | PRIVATE GTest::gtest GTest::gmock GTest::gtest_main) 22 | add_test(NAME "${NOA_GOOGLETEST_PROJECT}.${NOA_GOOGLETEST_NAME}" 23 | COMMAND "${TARGET_NAME}" --gtest_brief=1) 24 | endfunction() 25 | -------------------------------------------------------------------------------- /vendor/noa/cmake/noa/variables.cmake: -------------------------------------------------------------------------------- 1 | # Get the list of languages defined in the project 2 | get_property(NOA_LANGUAGES GLOBAL PROPERTY ENABLED_LANGUAGES) 3 | 4 | # Compiler detection (C++) 5 | # TODO: Detect compilers on programming languages other than C++ 6 | if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") 7 | set(NOA_COMPILER_LLVM ON) 8 | elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") 9 | set(NOA_COMPILER_GCC ON) 10 | elseif(MSVC) 11 | set(NOA_COMPILER_MSVC ON) 12 | endif() 13 | -------------------------------------------------------------------------------- /vendor/noa/config.cmake.in: -------------------------------------------------------------------------------- 1 | @PACKAGE_INIT@ 2 | 3 | # Support both casing styles 4 | list(APPEND NOA_COMPONENTS ${Noa_FIND_COMPONENTS}) 5 | list(APPEND NOA_COMPONENTS ${noa_FIND_COMPONENTS}) 6 | if(NOT NOA_COMPONENTS) 7 | list(APPEND NOA_COMPONENTS hash) 8 | list(APPEND NOA_COMPONENTS flat_map) 9 | list(APPEND NOA_COMPONENTS regex) 10 | endif() 11 | 12 | include(CMakeFindDependencyMacro) 13 | 14 | foreach(component ${NOA_COMPONENTS}) 15 | if(component STREQUAL "hash") 16 | include("${CMAKE_CURRENT_LIST_DIR}/sourcemeta_noa_hash.cmake") 17 | elseif(component STREQUAL "flat_map") 18 | include("${CMAKE_CURRENT_LIST_DIR}/sourcemeta_noa_flat_map.cmake") 19 | elseif(component STREQUAL "regex") 20 | find_dependency(BoostRegex) 21 | include("${CMAKE_CURRENT_LIST_DIR}/sourcemeta_noa_regex.cmake") 22 | else() 23 | message(FATAL_ERROR "Unknown Noa component: ${component}") 24 | endif() 25 | endforeach() 26 | 27 | check_required_components("@PROJECT_NAME@") 28 | -------------------------------------------------------------------------------- /vendor/noa/src/flat_map/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | noa_library(NAMESPACE sourcemeta PROJECT noa NAME flat_map FOLDER "Noa/Flat Map") 2 | 3 | if(NOA_INSTALL) 4 | noa_library_install(NAMESPACE sourcemeta PROJECT noa NAME flat_map) 5 | endif() 6 | -------------------------------------------------------------------------------- /vendor/noa/src/hash/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | noa_library(NAMESPACE sourcemeta PROJECT noa NAME hash FOLDER "Noa/Hash") 2 | 3 | if(NOA_INSTALL) 4 | noa_library_install(NAMESPACE sourcemeta PROJECT noa NAME hash) 5 | endif() 6 | -------------------------------------------------------------------------------- /vendor/noa/src/hash/include/sourcemeta/noa/hash.h: -------------------------------------------------------------------------------- 1 | #ifndef SOURCEMETA_NOA_HASH_H_ 2 | #define SOURCEMETA_NOA_HASH_H_ 3 | 4 | /// @defgroup hash Hash 5 | 6 | namespace sourcemeta::noa { 7 | 8 | // @ingroup hash 9 | template struct StandardHash { 10 | using hash_type = std::size_t; 11 | inline auto operator()(const T &value) const -> hash_type { 12 | return this->hasher(value); 13 | } 14 | 15 | inline auto is_perfect(const hash_type &) const noexcept -> bool { 16 | return false; 17 | } 18 | 19 | private: 20 | std::hash hasher; 21 | }; 22 | 23 | } // namespace sourcemeta::noa 24 | 25 | #endif 26 | -------------------------------------------------------------------------------- /vendor/noa/src/regex/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | noa_library(NAMESPACE sourcemeta PROJECT noa NAME regex 2 | FOLDER "Noa/Regex") 3 | 4 | if(NOA_INSTALL) 5 | noa_library_install(NAMESPACE sourcemeta PROJECT noa NAME regex) 6 | endif() 7 | 8 | target_link_libraries(sourcemeta_noa_regex INTERFACE Boost::regex) 9 | -------------------------------------------------------------------------------- /vendor/noa/vendor/boost-regex/include/boost/cregex.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright (c) 1998-2002 4 | * John Maddock 5 | * 6 | * Use, modification and distribution are subject to the 7 | * Boost Software License, Version 1.0. (See accompanying file 8 | * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 9 | * 10 | */ 11 | 12 | /* 13 | * LOCATION: see http://www.boost.org/libs/regex for most recent version. 14 | * FILE cregex.cpp 15 | * VERSION see 16 | * DESCRIPTION: Declares POSIX API functions 17 | * + boost::RegEx high level wrapper. 18 | */ 19 | 20 | #ifndef BOOST_RE_CREGEX_HPP 21 | #define BOOST_RE_CREGEX_HPP 22 | 23 | #ifndef BOOST_REGEX_CONFIG_HPP 24 | #include 25 | #endif 26 | 27 | #ifdef BOOST_REGEX_CXX03 28 | #include 29 | #else 30 | #include 31 | #endif 32 | 33 | #endif /* include guard */ 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /vendor/noa/vendor/boost-regex/include/boost/regex.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright (c) 1998-2002 4 | * John Maddock 5 | * 6 | * Use, modification and distribution are subject to the 7 | * Boost Software License, Version 1.0. (See accompanying file 8 | * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 9 | * 10 | */ 11 | 12 | /* 13 | * LOCATION: see http://www.boost.org/libs/regex for documentation. 14 | * FILE regex.cpp 15 | * VERSION see 16 | * DESCRIPTION: Declares boost::basic_regex<> and associated 17 | * functions and classes. This header is the main 18 | * entry point for the template regex code. 19 | */ 20 | 21 | 22 | /* start with C compatibility API */ 23 | 24 | #ifndef BOOST_RE_REGEX_HPP 25 | #define BOOST_RE_REGEX_HPP 26 | 27 | #ifndef BOOST_REGEX_CONFIG_HPP 28 | #include 29 | #endif 30 | 31 | #ifdef BOOST_REGEX_CXX03 32 | #include 33 | #else 34 | #include 35 | #endif 36 | 37 | #endif // include 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /vendor/noa/vendor/boost-regex/include/boost/regex/icu.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright (c) 2020 4 | * John Maddock 5 | * 6 | * Use, modification and distribution are subject to the 7 | * Boost Software License, Version 1.0. (See accompanying file 8 | * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 9 | * 10 | */ 11 | 12 | /* 13 | * LOCATION: see http://www.boost.org for most recent version. 14 | * FILE icu.hpp 15 | * VERSION see 16 | * DESCRIPTION: Unicode regular expressions on top of the ICU Library. 17 | */ 18 | 19 | #ifndef BOOST_REGEX_ICU_HPP 20 | #define BOOST_REGEX_ICU_HPP 21 | 22 | #include 23 | 24 | #ifdef BOOST_REGEX_CXX03 25 | #include 26 | #else 27 | #include 28 | #endif 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /vendor/noa/vendor/boost-regex/include/boost/regex/pattern_except.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright (c) 1998-2002 4 | * John Maddock 5 | * 6 | * Use, modification and distribution are subject to the 7 | * Boost Software License, Version 1.0. (See accompanying file 8 | * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 9 | * 10 | */ 11 | 12 | /* 13 | * LOCATION: see http://www.boost.org for most recent version. 14 | * FILE pattern_except.hpp 15 | * VERSION see 16 | * DESCRIPTION: Declares pattern-matching exception classes. 17 | */ 18 | 19 | #ifndef BOOST_RE_PAT_EXCEPT_HPP 20 | #define BOOST_RE_PAT_EXCEPT_HPP 21 | 22 | #ifndef BOOST_REGEX_CONFIG_HPP 23 | #include 24 | #endif 25 | 26 | #ifdef BOOST_REGEX_CXX03 27 | #include 28 | #else 29 | #include 30 | #endif 31 | 32 | #endif 33 | -------------------------------------------------------------------------------- /vendor/noa/vendor/boost-regex/include/boost/regex/pending/object_cache.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright (c) 2004 4 | * John Maddock 5 | * 6 | * Use, modification and distribution are subject to the 7 | * Boost Software License, Version 1.0. (See accompanying file 8 | * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 9 | * 10 | */ 11 | 12 | /* 13 | * LOCATION: see http://www.boost.org for most recent version. 14 | * FILE object_cache.hpp 15 | * VERSION see 16 | * DESCRIPTION: Implements a generic object cache. 17 | */ 18 | 19 | #ifndef BOOST_REGEX_OBJECT_CACHE_HPP 20 | #define BOOST_REGEX_OBJECT_CACHE_HPP 21 | 22 | #include 23 | #ifdef BOOST_REGEX_CXX03 24 | #include 25 | #else 26 | #include 27 | #endif 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /vendor/noa/vendor/boost-regex/include/boost/regex/pending/unicode_iterator.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright (c) 2020 4 | * John Maddock 5 | * 6 | * Use, modification and distribution are subject to the 7 | * Boost Software License, Version 1.0. (See accompanying file 8 | * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 9 | * 10 | */ 11 | 12 | /* 13 | * LOCATION: see http://www.boost.org for most recent version. 14 | * FILE unicode_iterator.hpp 15 | * VERSION see 16 | * DESCRIPTION: Iterator adapters for converting between different Unicode encodings. 17 | */ 18 | 19 | #ifndef BOOST_REGEX_PENDING_UNICODE_ITERATOR_HPP 20 | #define BOOST_REGEX_PENDING_UNICODE_ITERATOR_HPP 21 | 22 | #include 23 | 24 | #if defined(BOOST_REGEX_CXX03) 25 | #include 26 | #else 27 | #include 28 | #endif 29 | 30 | 31 | #endif // BOOST_REGEX_PENDING_UNICODE_ITERATOR_HPP 32 | 33 | -------------------------------------------------------------------------------- /vendor/noa/vendor/boost-regex/include/boost/regex/regex_traits.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright (c) 1998-2002 4 | * John Maddock 5 | * 6 | * Use, modification and distribution are subject to the 7 | * Boost Software License, Version 1.0. (See accompanying file 8 | * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 9 | * 10 | */ 11 | 12 | /* 13 | * LOCATION: see http://www.boost.org for most recent version. 14 | * FILE regex_traits.hpp 15 | * VERSION see 16 | * DESCRIPTION: Declares regular expression traits classes. 17 | */ 18 | 19 | #ifndef BOOST_REGEX_TRAITS_HPP 20 | #define BOOST_REGEX_TRAITS_HPP 21 | 22 | #ifndef BOOST_REGEX_CONFIG_HPP 23 | # include 24 | #endif 25 | 26 | # ifndef BOOST_REGEX_TRAITS_HPP_INCLUDED 27 | #ifdef BOOST_REGEX_CXX03 28 | # include 29 | #else 30 | # include 31 | #endif 32 | # endif 33 | 34 | #endif // include 35 | 36 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /vendor/noa/vendor/boost-regex/include/boost/regex/v5/iterator_traits.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright (c) 1998-2002 4 | * John Maddock 5 | * 6 | * Use, modification and distribution are subject to the 7 | * Boost Software License, Version 1.0. (See accompanying file 8 | * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 9 | * 10 | */ 11 | 12 | /* 13 | * LOCATION: see http://www.boost.org for most recent version. 14 | * FILE iterator_traits.cpp 15 | * VERSION see 16 | * DESCRIPTION: Declares iterator traits workarounds. 17 | */ 18 | 19 | #ifndef BOOST_REGEX_V5_ITERATOR_TRAITS_HPP 20 | #define BOOST_REGEX_V5_ITERATOR_TRAITS_HPP 21 | 22 | namespace boost{ 23 | namespace BOOST_REGEX_DETAIL_NS{ 24 | 25 | template 26 | struct regex_iterator_traits : public std::iterator_traits {}; 27 | 28 | } // namespace BOOST_REGEX_DETAIL_NS 29 | } // namespace boost 30 | 31 | #endif 32 | 33 | -------------------------------------------------------------------------------- /vendor/noa/vendor/boost-regex/include/boost/regex_fwd.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright (c) 1998-2002 4 | * John Maddock 5 | * 6 | * Use, modification and distribution are subject to the 7 | * Boost Software License, Version 1.0. (See accompanying file 8 | * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 9 | * 10 | */ 11 | 12 | /* 13 | * LOCATION: see http://www.boost.org/libs/regex for documentation. 14 | * FILE regex_fwd.cpp 15 | * VERSION see 16 | * DESCRIPTION: Forward declares boost::basic_regex<> and 17 | * associated typedefs. 18 | */ 19 | 20 | #ifndef BOOST_REGEX_FWD_HPP 21 | #define BOOST_REGEX_FWD_HPP 22 | 23 | #ifndef BOOST_REGEX_CONFIG_HPP 24 | #include 25 | #endif 26 | 27 | #ifdef BOOST_REGEX_CXX03 28 | #include 29 | #else 30 | #include 31 | #endif 32 | 33 | #endif 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /vendor/noa/vendor/googlebenchmark/cmake/Config.cmake.in: -------------------------------------------------------------------------------- 1 | @PACKAGE_INIT@ 2 | 3 | include (CMakeFindDependencyMacro) 4 | 5 | find_dependency (Threads) 6 | 7 | if (@BENCHMARK_ENABLE_LIBPFM@) 8 | find_dependency (PFM) 9 | endif() 10 | 11 | include("${CMAKE_CURRENT_LIST_DIR}/@targets_export_name@.cmake") 12 | -------------------------------------------------------------------------------- /vendor/noa/vendor/googlebenchmark/cmake/GetGitVersion.cmake: -------------------------------------------------------------------------------- 1 | # - Returns a version string from Git tags 2 | # 3 | # This function inspects the annotated git tags for the project and returns a string 4 | # into a CMake variable 5 | # 6 | # get_git_version() 7 | # 8 | # - Example 9 | # 10 | # include(GetGitVersion) 11 | # get_git_version(GIT_VERSION) 12 | # 13 | # Requires CMake 2.8.11+ 14 | find_package(Git) 15 | 16 | if(__get_git_version) 17 | return() 18 | endif() 19 | set(__get_git_version INCLUDED) 20 | 21 | function(get_git_version var) 22 | if(GIT_EXECUTABLE) 23 | execute_process(COMMAND ${GIT_EXECUTABLE} describe --tags --match "v[0-9]*.[0-9]*.[0-9]*" --abbrev=8 --dirty 24 | WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} 25 | RESULT_VARIABLE status 26 | OUTPUT_VARIABLE GIT_VERSION 27 | ERROR_QUIET) 28 | if(status) 29 | set(GIT_VERSION "v0.0.0") 30 | endif() 31 | else() 32 | set(GIT_VERSION "v0.0.0") 33 | endif() 34 | 35 | set(${var} ${GIT_VERSION} PARENT_SCOPE) 36 | endfunction() 37 | -------------------------------------------------------------------------------- /vendor/noa/vendor/googlebenchmark/cmake/Modules/FindLLVMAr.cmake: -------------------------------------------------------------------------------- 1 | include(FeatureSummary) 2 | 3 | find_program(LLVMAR_EXECUTABLE 4 | NAMES llvm-ar 5 | DOC "The llvm-ar executable" 6 | ) 7 | 8 | include(FindPackageHandleStandardArgs) 9 | find_package_handle_standard_args(LLVMAr 10 | DEFAULT_MSG 11 | LLVMAR_EXECUTABLE) 12 | 13 | SET_PACKAGE_PROPERTIES(LLVMAr PROPERTIES 14 | URL https://llvm.org/docs/CommandGuide/llvm-ar.html 15 | DESCRIPTION "create, modify, and extract from archives" 16 | ) 17 | -------------------------------------------------------------------------------- /vendor/noa/vendor/googlebenchmark/cmake/Modules/FindLLVMNm.cmake: -------------------------------------------------------------------------------- 1 | include(FeatureSummary) 2 | 3 | find_program(LLVMNM_EXECUTABLE 4 | NAMES llvm-nm 5 | DOC "The llvm-nm executable" 6 | ) 7 | 8 | include(FindPackageHandleStandardArgs) 9 | find_package_handle_standard_args(LLVMNm 10 | DEFAULT_MSG 11 | LLVMNM_EXECUTABLE) 12 | 13 | SET_PACKAGE_PROPERTIES(LLVMNm PROPERTIES 14 | URL https://llvm.org/docs/CommandGuide/llvm-nm.html 15 | DESCRIPTION "list LLVM bitcode and object file’s symbol table" 16 | ) 17 | -------------------------------------------------------------------------------- /vendor/noa/vendor/googlebenchmark/cmake/Modules/FindLLVMRanLib.cmake: -------------------------------------------------------------------------------- 1 | include(FeatureSummary) 2 | 3 | find_program(LLVMRANLIB_EXECUTABLE 4 | NAMES llvm-ranlib 5 | DOC "The llvm-ranlib executable" 6 | ) 7 | 8 | include(FindPackageHandleStandardArgs) 9 | find_package_handle_standard_args(LLVMRanLib 10 | DEFAULT_MSG 11 | LLVMRANLIB_EXECUTABLE) 12 | 13 | SET_PACKAGE_PROPERTIES(LLVMRanLib PROPERTIES 14 | DESCRIPTION "generate index for LLVM archive" 15 | ) 16 | -------------------------------------------------------------------------------- /vendor/noa/vendor/googlebenchmark/cmake/Modules/FindPFM.cmake: -------------------------------------------------------------------------------- 1 | # If successful, the following variables will be defined: 2 | # PFM_FOUND. 3 | # PFM_LIBRARIES 4 | # PFM_INCLUDE_DIRS 5 | # the following target will be defined: 6 | # PFM::libpfm 7 | 8 | include(FeatureSummary) 9 | include(FindPackageHandleStandardArgs) 10 | 11 | set_package_properties(PFM PROPERTIES 12 | URL http://perfmon2.sourceforge.net/ 13 | DESCRIPTION "A helper library to develop monitoring tools" 14 | PURPOSE "Used to program specific performance monitoring events") 15 | 16 | find_library(PFM_LIBRARY NAMES pfm) 17 | find_path(PFM_INCLUDE_DIR NAMES perfmon/pfmlib.h) 18 | 19 | find_package_handle_standard_args(PFM REQUIRED_VARS PFM_LIBRARY PFM_INCLUDE_DIR) 20 | 21 | if (PFM_FOUND AND NOT TARGET PFM::libpfm) 22 | add_library(PFM::libpfm UNKNOWN IMPORTED) 23 | set_target_properties(PFM::libpfm PROPERTIES 24 | IMPORTED_LOCATION "${PFM_LIBRARY}" 25 | INTERFACE_INCLUDE_DIRECTORIES "${PFM_INCLUDE_DIR}") 26 | endif() 27 | 28 | mark_as_advanced(PFM_LIBRARY PFM_INCLUDE_DIR) 29 | -------------------------------------------------------------------------------- /vendor/noa/vendor/googlebenchmark/cmake/benchmark.pc.in: -------------------------------------------------------------------------------- 1 | prefix=@CMAKE_INSTALL_PREFIX@ 2 | exec_prefix=${prefix} 3 | libdir=@CMAKE_INSTALL_FULL_LIBDIR@ 4 | includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ 5 | 6 | Name: @PROJECT_NAME@ 7 | Description: Google microbenchmark framework 8 | Version: @VERSION@ 9 | 10 | Libs: -L${libdir} -lbenchmark 11 | Libs.private: -lpthread @BENCHMARK_PRIVATE_LINK_LIBRARIES@ 12 | Cflags: -I${includedir} 13 | -------------------------------------------------------------------------------- /vendor/noa/vendor/googlebenchmark/cmake/benchmark_main.pc.in: -------------------------------------------------------------------------------- 1 | libdir=@CMAKE_INSTALL_FULL_LIBDIR@ 2 | 3 | Name: @PROJECT_NAME@ 4 | Description: Google microbenchmark framework (with main() function) 5 | Version: @VERSION@ 6 | Requires: benchmark 7 | Libs: -L${libdir} -lbenchmark_main 8 | -------------------------------------------------------------------------------- /vendor/noa/vendor/googlebenchmark/cmake/gnu_posix_regex.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | int main() { 4 | std::string str = "test0159"; 5 | regex_t re; 6 | int ec = regcomp(&re, "^[a-z]+[0-9]+$", REG_EXTENDED | REG_NOSUB); 7 | if (ec != 0) { 8 | return ec; 9 | } 10 | return regexec(&re, str.c_str(), 0, nullptr, 0) ? -1 : 0; 11 | } 12 | 13 | -------------------------------------------------------------------------------- /vendor/noa/vendor/googlebenchmark/cmake/llvm-toolchain.cmake: -------------------------------------------------------------------------------- 1 | find_package(LLVMAr REQUIRED) 2 | set(CMAKE_AR "${LLVMAR_EXECUTABLE}" CACHE FILEPATH "" FORCE) 3 | 4 | find_package(LLVMNm REQUIRED) 5 | set(CMAKE_NM "${LLVMNM_EXECUTABLE}" CACHE FILEPATH "" FORCE) 6 | 7 | find_package(LLVMRanLib REQUIRED) 8 | set(CMAKE_RANLIB "${LLVMRANLIB_EXECUTABLE}" CACHE FILEPATH "" FORCE) 9 | -------------------------------------------------------------------------------- /vendor/noa/vendor/googlebenchmark/cmake/posix_regex.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | int main() { 4 | std::string str = "test0159"; 5 | regex_t re; 6 | int ec = regcomp(&re, "^[a-z]+[0-9]+$", REG_EXTENDED | REG_NOSUB); 7 | if (ec != 0) { 8 | return ec; 9 | } 10 | int ret = regexec(&re, str.c_str(), 0, nullptr, 0) ? -1 : 0; 11 | regfree(&re); 12 | return ret; 13 | } 14 | 15 | -------------------------------------------------------------------------------- /vendor/noa/vendor/googlebenchmark/cmake/pthread_affinity.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | int main() { 3 | cpu_set_t set; 4 | CPU_ZERO(&set); 5 | for (int i = 0; i < CPU_SETSIZE; ++i) { 6 | CPU_SET(i, &set); 7 | CPU_CLR(i, &set); 8 | } 9 | pthread_t self = pthread_self(); 10 | int ret; 11 | ret = pthread_getaffinity_np(self, sizeof(set), &set); 12 | if (ret != 0) return ret; 13 | ret = pthread_setaffinity_np(self, sizeof(set), &set); 14 | if (ret != 0) return ret; 15 | return 0; 16 | } 17 | -------------------------------------------------------------------------------- /vendor/noa/vendor/googlebenchmark/cmake/split_list.cmake: -------------------------------------------------------------------------------- 1 | macro(split_list listname) 2 | string(REPLACE ";" " " ${listname} "${${listname}}") 3 | endmacro() 4 | -------------------------------------------------------------------------------- /vendor/noa/vendor/googlebenchmark/cmake/std_regex.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | int main() { 4 | const std::string str = "test0159"; 5 | std::regex re; 6 | re = std::regex("^[a-z]+[0-9]+$", 7 | std::regex_constants::extended | std::regex_constants::nosubs); 8 | return std::regex_search(str, re) ? 0 : -1; 9 | } 10 | 11 | -------------------------------------------------------------------------------- /vendor/noa/vendor/googlebenchmark/cmake/steady_clock.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | int main() { 4 | typedef std::chrono::steady_clock Clock; 5 | Clock::time_point tp = Clock::now(); 6 | ((void)tp); 7 | } 8 | -------------------------------------------------------------------------------- /vendor/noa/vendor/googlebenchmark/cmake/thread_safety_attributes.cpp: -------------------------------------------------------------------------------- 1 | #define HAVE_THREAD_SAFETY_ATTRIBUTES 2 | #include "../src/mutex.h" 3 | 4 | int main() {} 5 | -------------------------------------------------------------------------------- /vendor/noa/vendor/googlebenchmark/src/benchmark_main.cc: -------------------------------------------------------------------------------- 1 | // Copyright 2018 Google Inc. All rights reserved. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | #include "benchmark/benchmark.h" 16 | 17 | BENCHMARK_EXPORT int main(int, char**); 18 | BENCHMARK_MAIN(); 19 | -------------------------------------------------------------------------------- /vendor/noa/vendor/googlebenchmark/src/check.cc: -------------------------------------------------------------------------------- 1 | #include "check.h" 2 | 3 | namespace benchmark { 4 | namespace internal { 5 | 6 | static AbortHandlerT* handler = &std::abort; 7 | 8 | BENCHMARK_EXPORT AbortHandlerT*& GetAbortHandler() { return handler; } 9 | 10 | } // namespace internal 11 | } // namespace benchmark 12 | -------------------------------------------------------------------------------- /vendor/noa/vendor/googlebenchmark/src/colorprint.h: -------------------------------------------------------------------------------- 1 | #ifndef BENCHMARK_COLORPRINT_H_ 2 | #define BENCHMARK_COLORPRINT_H_ 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | namespace benchmark { 9 | enum LogColor { 10 | COLOR_DEFAULT, 11 | COLOR_RED, 12 | COLOR_GREEN, 13 | COLOR_YELLOW, 14 | COLOR_BLUE, 15 | COLOR_MAGENTA, 16 | COLOR_CYAN, 17 | COLOR_WHITE 18 | }; 19 | 20 | std::string FormatString(const char* msg, va_list args); 21 | std::string FormatString(const char* msg, ...); 22 | 23 | void ColorPrintf(std::ostream& out, LogColor color, const char* fmt, 24 | va_list args); 25 | void ColorPrintf(std::ostream& out, LogColor color, const char* fmt, ...); 26 | 27 | // Returns true if stdout appears to be a terminal that supports colored 28 | // output, false otherwise. 29 | bool IsColorTerminal(); 30 | 31 | } // end namespace benchmark 32 | 33 | #endif // BENCHMARK_COLORPRINT_H_ 34 | -------------------------------------------------------------------------------- /vendor/noa/vendor/googletest/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Note: CMake support is community-based. The maintainers do not use CMake 2 | # internally. 3 | 4 | cmake_minimum_required(VERSION 3.13) 5 | 6 | project(googletest-distribution) 7 | set(GOOGLETEST_VERSION 1.14.0) 8 | 9 | if(NOT CYGWIN AND NOT MSYS AND NOT ${CMAKE_SYSTEM_NAME} STREQUAL QNX) 10 | set(CMAKE_CXX_EXTENSIONS OFF) 11 | endif() 12 | 13 | enable_testing() 14 | 15 | include(CMakeDependentOption) 16 | include(GNUInstallDirs) 17 | 18 | # Note that googlemock target already builds googletest. 19 | option(BUILD_GMOCK "Builds the googlemock subproject" ON) 20 | option(INSTALL_GTEST "Enable installation of googletest. (Projects embedding googletest may want to turn this OFF.)" ON) 21 | option(GTEST_HAS_ABSL "Use Abseil and RE2. Requires Abseil and RE2 to be separately added to the build." OFF) 22 | 23 | if(GTEST_HAS_ABSL) 24 | if(NOT TARGET absl::base) 25 | find_package(absl REQUIRED) 26 | endif() 27 | if(NOT TARGET re2::re2) 28 | find_package(re2 REQUIRED) 29 | endif() 30 | endif() 31 | 32 | if(BUILD_GMOCK) 33 | add_subdirectory( googlemock ) 34 | else() 35 | add_subdirectory( googletest ) 36 | endif() 37 | -------------------------------------------------------------------------------- /vendor/noa/vendor/googletest/googlemock/cmake/gmock.pc.in: -------------------------------------------------------------------------------- 1 | libdir=@CMAKE_INSTALL_FULL_LIBDIR@ 2 | includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ 3 | 4 | Name: gmock 5 | Description: GoogleMock (without main() function) 6 | Version: @PROJECT_VERSION@ 7 | URL: https://github.com/google/googletest 8 | Requires: gtest = @PROJECT_VERSION@ 9 | Libs: -L${libdir} -lgmock @CMAKE_THREAD_LIBS_INIT@ 10 | Cflags: -I${includedir} @GTEST_HAS_PTHREAD_MACRO@ 11 | -------------------------------------------------------------------------------- /vendor/noa/vendor/googletest/googlemock/cmake/gmock_main.pc.in: -------------------------------------------------------------------------------- 1 | libdir=@CMAKE_INSTALL_FULL_LIBDIR@ 2 | includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ 3 | 4 | Name: gmock_main 5 | Description: GoogleMock (with main() function) 6 | Version: @PROJECT_VERSION@ 7 | URL: https://github.com/google/googletest 8 | Requires: gmock = @PROJECT_VERSION@ 9 | Libs: -L${libdir} -lgmock_main @CMAKE_THREAD_LIBS_INIT@ 10 | Cflags: -I${includedir} @GTEST_HAS_PTHREAD_MACRO@ 11 | -------------------------------------------------------------------------------- /vendor/noa/vendor/googletest/googlemock/include/gmock/internal/custom/README.md: -------------------------------------------------------------------------------- 1 | # Customization Points 2 | 3 | The custom directory is an injection point for custom user configurations. 4 | 5 | ## Header `gmock-port.h` 6 | 7 | The following macros can be defined: 8 | 9 | ### Flag related macros: 10 | 11 | * `GMOCK_DECLARE_bool_(name)` 12 | * `GMOCK_DECLARE_int32_(name)` 13 | * `GMOCK_DECLARE_string_(name)` 14 | * `GMOCK_DEFINE_bool_(name, default_val, doc)` 15 | * `GMOCK_DEFINE_int32_(name, default_val, doc)` 16 | * `GMOCK_DEFINE_string_(name, default_val, doc)` 17 | * `GMOCK_FLAG_GET(flag_name)` 18 | * `GMOCK_FLAG_SET(flag_name, value)` 19 | -------------------------------------------------------------------------------- /vendor/noa/vendor/googletest/googlemock/include/gmock/internal/custom/gmock-generated-actions.h: -------------------------------------------------------------------------------- 1 | // IWYU pragma: private, include "gmock/gmock.h" 2 | // IWYU pragma: friend gmock/.* 3 | 4 | #ifndef GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_GENERATED_ACTIONS_H_ 5 | #define GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_GENERATED_ACTIONS_H_ 6 | 7 | #endif // GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_GENERATED_ACTIONS_H_ 8 | -------------------------------------------------------------------------------- /vendor/noa/vendor/googletest/googletest/cmake/Config.cmake.in: -------------------------------------------------------------------------------- 1 | @PACKAGE_INIT@ 2 | include(CMakeFindDependencyMacro) 3 | if (@GTEST_HAS_PTHREAD@) 4 | set(THREADS_PREFER_PTHREAD_FLAG @THREADS_PREFER_PTHREAD_FLAG@) 5 | find_dependency(Threads) 6 | endif() 7 | if (@GTEST_HAS_ABSL@) 8 | find_dependency(absl) 9 | find_dependency(re2) 10 | endif() 11 | 12 | include("${CMAKE_CURRENT_LIST_DIR}/@targets_export_name@.cmake") 13 | check_required_components("@project_name@") 14 | -------------------------------------------------------------------------------- /vendor/noa/vendor/googletest/googletest/cmake/gtest.pc.in: -------------------------------------------------------------------------------- 1 | libdir=@CMAKE_INSTALL_FULL_LIBDIR@ 2 | includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ 3 | 4 | Name: gtest 5 | Description: GoogleTest (without main() function) 6 | Version: @PROJECT_VERSION@ 7 | URL: https://github.com/google/googletest 8 | Libs: -L${libdir} -lgtest @CMAKE_THREAD_LIBS_INIT@ 9 | Cflags: -I${includedir} @GTEST_HAS_PTHREAD_MACRO@ 10 | -------------------------------------------------------------------------------- /vendor/noa/vendor/googletest/googletest/cmake/gtest_main.pc.in: -------------------------------------------------------------------------------- 1 | libdir=@CMAKE_INSTALL_FULL_LIBDIR@ 2 | includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ 3 | 4 | Name: gtest_main 5 | Description: GoogleTest (with main() function) 6 | Version: @PROJECT_VERSION@ 7 | URL: https://github.com/google/googletest 8 | Requires: gtest = @PROJECT_VERSION@ 9 | Libs: -L${libdir} -lgtest_main @CMAKE_THREAD_LIBS_INIT@ 10 | Cflags: -I${includedir} @GTEST_HAS_PTHREAD_MACRO@ 11 | -------------------------------------------------------------------------------- /vendor/noa/vendor/googletest/googletest/cmake/libgtest.la.in: -------------------------------------------------------------------------------- 1 | # libgtest.la - a libtool library file 2 | # Generated by libtool (GNU libtool) 2.4.6 3 | 4 | # Please DO NOT delete this file! 5 | # It is necessary for linking the library. 6 | 7 | # Names of this library. 8 | library_names='libgtest.so' 9 | 10 | # Is this an already installed library? 11 | installed=yes 12 | 13 | # Should we warn about portability when linking against -modules? 14 | shouldnotlink=no 15 | 16 | # Files to dlopen/dlpreopen 17 | dlopen='' 18 | dlpreopen='' 19 | 20 | # Directory that this library needs to be installed in: 21 | libdir='@CMAKE_INSTALL_FULL_LIBDIR@' 22 | -------------------------------------------------------------------------------- /vendorpull.mask: -------------------------------------------------------------------------------- 1 | DEPENDENCIES 2 | doxygen 3 | assets 4 | Makefile 5 | README.markdown 6 | test 7 | vendor/vendorpull 8 | vendor/bootstrap 9 | vendor/core 10 | www 11 | .editorconfig 12 | .ackrc 13 | .gitattributes 14 | .cirrus.yml 15 | Brewfile 16 | Brewfile.lock.json 17 | --------------------------------------------------------------------------------