Arachne 1.0
Arachne - the perpetual stitcher of Wikidata entities.
Loading...
Searching...
No Matches
contracts.cpp File Reference
#include "arachne/contracts.hpp"
#include <nlohmann/json.hpp>
#include <algorithm>
#include <array>
#include <charconv>
#include <cmath>
#include <cstdint>
#include <initializer_list>
#include <limits>
#include <regex>
#include <set>
#include <stdexcept>
#include <string>
#include <string_view>
#include <utility>
Include dependency graph for contracts.cpp:

Go to the source code of this file.

Namespaces

namespace  arachnespace
namespace  arachnespace::contracts
namespace  arachnespace::contracts::anonymous_namespace{contracts.cpp}

Typedefs

using arachnespace::contracts::anonymous_namespace{contracts.cpp}::json = nlohmann::json

Functions

void arachnespace::contracts::anonymous_namespace{contracts.cpp}::add (validation_result &result, std::string path, std::string code, std::string message)
std::string arachnespace::contracts::anonymous_namespace{contracts.cpp}::child_path (const std::string_view parent, const std::string_view key)
const jsonarachnespace::contracts::anonymous_namespace{contracts.cpp}::field (const json &object, const std::string_view key, const std::string_view path, validation_result &result)
void arachnespace::contracts::anonymous_namespace{contracts.cpp}::reject_unknown_fields (const json &object, const std::string_view path, const std::initializer_list< std::string_view > allowed, validation_result &result)
const jsonarachnespace::contracts::anonymous_namespace{contracts.cpp}::require_object (const json &object, const std::string_view key, const std::string_view path, validation_result &result)
const jsonarachnespace::contracts::anonymous_namespace{contracts.cpp}::require_array (const json &object, const std::string_view key, const std::string_view path, validation_result &result)
const jsonarachnespace::contracts::anonymous_namespace{contracts.cpp}::optional_object (const json &object, const std::string_view key, const std::string_view path, validation_result &result)
const jsonarachnespace::contracts::anonymous_namespace{contracts.cpp}::optional_array (const json &object, const std::string_view key, const std::string_view path, validation_result &result)
const jsonarachnespace::contracts::anonymous_namespace{contracts.cpp}::require_string (const json &object, const std::string_view key, const std::string_view path, validation_result &result)
const jsonarachnespace::contracts::anonymous_namespace{contracts.cpp}::optional_string (const json &object, const std::string_view key, const std::string_view path, validation_result &result)
bool arachnespace::contracts::anonymous_namespace{contracts.cpp}::string_is_one_of (const json *value, const std::initializer_list< std::string_view > choices)
void arachnespace::contracts::anonymous_namespace{contracts.cpp}::require_enum (const json &object, const std::string_view key, const std::string_view path, const std::initializer_list< std::string_view > choices, validation_result &result)
bool arachnespace::contracts::anonymous_namespace{contracts.cpp}::matches (const json *value, const std::regex &expression)
void arachnespace::contracts::anonymous_namespace{contracts.cpp}::require_stable_id (const json &object, const std::string_view key, const std::string_view path, validation_result &result)
void arachnespace::contracts::anonymous_namespace{contracts.cpp}::require_sha256 (const json &object, const std::string_view key, const std::string_view path, validation_result &result)
void arachnespace::contracts::anonymous_namespace{contracts.cpp}::require_timestamp (const json &object, const std::string_view key, const std::string_view path, validation_result &result)
void arachnespace::contracts::anonymous_namespace{contracts.cpp}::require_nonnegative_integer (const json &object, const std::string_view key, const std::string_view path, validation_result &result)
void arachnespace::contracts::anonymous_namespace{contracts.cpp}::require_boolean (const json &object, const std::string_view key, const std::string_view path, validation_result &result)
void arachnespace::contracts::anonymous_namespace{contracts.cpp}::optional_integer_range (const json &object, const std::string_view key, const std::string_view path, const std::int64_t minimum, const std::int64_t maximum, validation_result &result)
void arachnespace::contracts::anonymous_namespace{contracts.cpp}::require_integer_range (const json &object, const std::string_view key, const std::string_view path, const std::int64_t minimum, const std::int64_t maximum, validation_result &result)
void arachnespace::contracts::anonymous_namespace{contracts.cpp}::optional_number_range (const json &object, const std::string_view key, const std::string_view path, const double minimum, const double maximum, validation_result &result)
void arachnespace::contracts::anonymous_namespace{contracts.cpp}::require_number_range (const json &object, const std::string_view key, const std::string_view path, const double minimum, const double maximum, validation_result &result)
void arachnespace::contracts::anonymous_namespace{contracts.cpp}::optional_enum (const json &object, const std::string_view key, const std::string_view path, const std::initializer_list< std::string_view > choices, validation_result &result)
void arachnespace::contracts::anonymous_namespace{contracts.cpp}::require_pattern (const json &object, const std::string_view key, const std::string_view path, const std::regex &expression, validation_result &result)
void arachnespace::contracts::anonymous_namespace{contracts.cpp}::optional_pattern (const json &object, const std::string_view key, const std::string_view path, const std::regex &expression, validation_result &result)
void arachnespace::contracts::anonymous_namespace{contracts.cpp}::optional_bounded_integer (const json &object, const std::string_view key, const std::string_view path, const std::uint64_t minimum, const std::uint64_t maximum, validation_result &result)
void arachnespace::contracts::anonymous_namespace{contracts.cpp}::validate_extensions (const json &object, const std::string_view path, validation_result &result)
void arachnespace::contracts::anonymous_namespace{contracts.cpp}::validate_artifact (const json &artifact, const std::string_view path, validation_result &result)
void arachnespace::contracts::anonymous_namespace{contracts.cpp}::validate_artifact_field (const json &object, const std::string_view key, const std::string_view path, validation_result &result)
void arachnespace::contracts::anonymous_namespace{contracts.cpp}::validate_artifact_array (const json &object, const std::string_view key, const std::string_view path, validation_result &result)
void arachnespace::contracts::anonymous_namespace{contracts.cpp}::validate_string_array (const json &object, const std::string_view key, const std::string_view path, const bool require_nonempty, validation_result &result)
std::optional< unsigned int > arachnespace::contracts::anonymous_namespace{contracts.cpp}::declared_major (const std::string_view name)
bool arachnespace::contracts::anonymous_namespace{contracts.cpp}::known_contract_base (const std::string_view name)
std::optional< contract_namearachnespace::contracts::anonymous_namespace{contracts.cpp}::inspect_contract (const json &document, validation_result &result)
void arachnespace::contracts::anonymous_namespace{contracts.cpp}::validate_header (const contract_name expected, const json &document, validation_result &result)
void arachnespace::contracts::anonymous_namespace{contracts.cpp}::validate_stable_reference (const json &value, const std::string_view path, validation_result &result)
void arachnespace::contracts::anonymous_namespace{contracts.cpp}::validate_database_or_local_reference (const json &value, const std::string_view path, validation_result &result)
void arachnespace::contracts::anonymous_namespace{contracts.cpp}::validate_unique_items (const json &array, const std::string_view path, validation_result &result)
template<typename Validator>
void arachnespace::contracts::anonymous_namespace{contracts.cpp}::validate_optional_object_array (const json &object, const std::string_view key, const std::string_view path, validation_result &result, Validator &&validator)
void arachnespace::contracts::anonymous_namespace{contracts.cpp}::validate_nonempty_optional_strings (const json &object, const std::string_view path, const std::initializer_list< std::string_view > keys, validation_result &result)
void arachnespace::contracts::anonymous_namespace{contracts.cpp}::validate_year_fields (const json &object, const std::string_view path, const std::initializer_list< std::string_view > keys, validation_result &result)
void arachnespace::contracts::anonymous_namespace{contracts.cpp}::validate_entity_id (const json &object, const std::string_view key, const std::string_view path, const std::string_view family, validation_result &result)
void arachnespace::contracts::anonymous_namespace{contracts.cpp}::validate_positive_id_array (const json &object, const std::string_view key, const std::string_view path, validation_result &result)
void arachnespace::contracts::anonymous_namespace{contracts.cpp}::validate_evidence_references (const json &object, const std::string_view key, const std::string_view path, validation_result &result)
void arachnespace::contracts::anonymous_namespace{contracts.cpp}::validate_create_operations (const json &create, const std::string_view path, validation_result &result)
void arachnespace::contracts::anonymous_namespace{contracts.cpp}::validate_update_fields (const json &item, const std::string_view item_path, const std::string_view family, const std::initializer_list< std::string_view > set_fields, const std::initializer_list< std::string_view > unset_fields, validation_result &result)
void arachnespace::contracts::anonymous_namespace{contracts.cpp}::validate_work_set (const json &set, const std::string_view path, validation_result &result)
void arachnespace::contracts::anonymous_namespace{contracts.cpp}::validate_update_operations (const json &update, const std::string_view path, validation_result &result)
void arachnespace::contracts::anonymous_namespace{contracts.cpp}::validate_merge_operations (const json &merge, const std::string_view path, validation_result &result)
void arachnespace::contracts::anonymous_namespace{contracts.cpp}::validate_arachne_batch (const json &document, validation_result &result)
void arachnespace::contracts::anonymous_namespace{contracts.cpp}::validate_batch_envelope (const json &document, validation_result &result)
void arachnespace::contracts::anonymous_namespace{contracts.cpp}::validate_fetch_plan (const json &document, validation_result &result)
void arachnespace::contracts::anonymous_namespace{contracts.cpp}::validate_fetch_request (const json &document, validation_result &result)
void arachnespace::contracts::anonymous_namespace{contracts.cpp}::validate_acquired_artifact (const json &document, validation_result &result)
void arachnespace::contracts::anonymous_namespace{contracts.cpp}::validate_candidate_plan (const json &document, validation_result &result)
void arachnespace::contracts::anonymous_namespace{contracts.cpp}::validate_structural_validation (const json &value, const std::string_view path, validation_result &result)
void arachnespace::contracts::anonymous_namespace{contracts.cpp}::validate_snapshot_common (const json &document, const std::initializer_list< std::string_view > allowed, validation_result &result)
void arachnespace::contracts::anonymous_namespace{contracts.cpp}::validate_product_snapshot (const json &document, validation_result &result)
void arachnespace::contracts::anonymous_namespace{contracts.cpp}::validate_candidate_snapshot (const json &document, validation_result &result)
void arachnespace::contracts::anonymous_namespace{contracts.cpp}::validate_viewer_projection (const json &document, validation_result &result)
void arachnespace::contracts::anonymous_namespace{contracts.cpp}::validate_site_bundle (const json &document, validation_result &result)
void arachnespace::contracts::anonymous_namespace{contracts.cpp}::validate_body (const contract_name name, const json &document, validation_result &result)
void arachnespace::contracts::anonymous_namespace{contracts.cpp}::reject_non_finite (const json &value, const std::string &path)
std::string_view arachnespace::contracts::to_string (contract_name name) noexcept
std::optional< contract_namearachnespace::contracts::parse_contract_name (std::string_view name) noexcept
bool arachnespace::contracts::is_artifact_bearing (contract_name name) noexcept
validation_result arachnespace::contracts::validate (const json &document)
validation_result arachnespace::contracts::validate (const contract_name expected, const json &document)
std::string arachnespace::contracts::canonical_json (const json &document)

Variables

constexpr std::array< std::pair< std::string_view, contract_name >, 10 > arachnespace::contracts::anonymous_namespace{contracts.cpp}::contract_names