Porytiles
Loading...
Searching...
No Matches
metatile_attribute_schema_reconciler.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <cstddef>
4#include <cstdint>
5#include <optional>
6#include <string>
7#include <vector>
8
9#include "gsl/pointers"
10
15
16namespace porytiles {
17
18class TextFormatter;
19class UserDiagnostics;
20
22inline constexpr auto metatile_attr_schema_tag = "metatile-attribute-schema";
23
38 std::size_t attribute_bytes;
39 std::size_t declaration_bytes;
40 std::string fields_origin;
41 std::string size_origin;
42 std::string declaration_origin;
43};
44
48 std::string fields_source;
50 std::optional<std::size_t> attribute_size;
52 std::optional<std::size_t> declaration_size;
54};
55
74 const MetatileAttributeInferenceResult &inference,
76 gsl::not_null<const TextFormatter *> format,
77 gsl::not_null<const UserDiagnostics *> diag);
78
79} // namespace porytiles
A result type that maintains a chainable sequence of errors for debugging and error reporting.
A validated metatile attribute layout: an ordered set of non-overlapping fields.
constexpr auto metatile_attr_schema_tag
The diagnostic tag the reconciler emits its remarks and warnings under.
std::map< std::string, MetatileAttributeFieldOverride > MetatileAttributeFieldOverrides
A map from field name to its override; applied at schema load time.
std::vector< MetatileAttributeFieldDefinition > MetatileAttributeFieldDefinitions
An ordered list of metatile attribute field definitions; order is display/declaration order.
ChainableResult< LoadedMetatileAttributeSchema > reconcile_metatile_attribute_schema(const MetatileAttributeInferenceResult &inference, const MetatileAttributeConfigInputs &inputs, gsl::not_null< const TextFormatter * > format, gsl::not_null< const UserDiagnostics * > diag)
Reconciles the inferred metatile attribute facts with the user's config, returning a LoadedMetatileAt...
The product of reconciling the project's metatile attribute schema.
MetatileAttributeFieldDefinitions loaded_definitions
The post-merge definition list, useful for diagnostics.
std::size_t declaration_bytes
The byte declaration width for gMetatileAttributes_* C decls.
std::string declaration_origin
Human-readable provenance notes.
std::string fields_origin
Human-readable provenance notes.
std::string size_origin
Human-readable provenance notes.
The user-stated config inputs to metatile attribute schema reconciliation.