7#include <unordered_set>
10#include "gsl/pointers"
28 std::optional<std::int64_t>
value;
44 std::optional<std::uint32_t>
value;
115 std::unordered_set<std::string>
118 std::vector<InferenceArrayEntry>
124 std::vector<std::string>
201 std::optional<std::size_t>
size;
std::vector< MetatileAttributeFieldDefinition > MetatileAttributeFieldDefinitions
An ordered list of metatile attribute field definitions; order is display/declaration order.
MetatileAttributeInferenceResult infer_metatile_attribute_candidates(const MetatileAttributeScan &scan, gsl::not_null< const TextFormatter * > format)
Infers the metatile attribute mask candidate sets from a project's raw fieldmap facts.
AttributeDeclarationSource
What the scan found where struct Tileset's metatileAttributes member should be.
@ no_attributes_member
struct Tileset declares no metatileAttributes member
@ header_unreadable
the fieldmap header exists but could not be scanned
@ no_tileset_struct
the header was scanned and declares no struct Tileset
@ no_fieldmap_header
the project has no include/global.fieldmap.h
BehaviorsHeaderSource
What the scan found where the behavior constants header should be.
@ unreadable
the header exists but could not be scanned
@ no_constants
the header was scanned and declares no MB_ name
@ declared
the header declares at least one MB_ name
@ absent
the project has no include/constants/metatile_behaviors.h
AttributeInferenceStatus
The outcome kind of an inference run.
@ not_provided
nothing attribute-related was found; other providers should be consulted
@ valid
one or more usable candidate sets were inferred
@ invalid
no layout could be determined from what the project declares (fatal at resolution time)
std::string to_declaration_string(const AttributeDeclarationScan &scan)
Renders a declared metatileAttributes member the way the project wrote it.
constexpr auto metatile_attr_inference_tag
The diagnostic tag the infra-layer scanner emits its warnings under.
FieldConflictKind
Why one inferred field could not be settled from the project's sources alone.
@ provider_behaviors_unreadable
the behavior constants header exists but could not be scanned
@ provider_behaviors_absent
the behavior constants header does not exist
@ shift_vs_mask
the field's declared shift and its mask's bit offset disagree
@ provider_no_matching_enum
no enum member with the probed prefix exists in the fieldmap header
@ provider_behaviors_no_constants
the header was scanned and declares no MB_ name
@ mask_define_vs_table
the field's mask define and mask table entry disagree
struct Tileset's metatileAttributes declaration, as the project wrote it.
std::size_t pointer_depth
AttributeDeclarationSource source
One designated entry of an attribute mask/shift table.
std::optional< std::uint32_t > value
One integer #define gathered from a base game's fieldmap header.
One enum member gathered from a base game's fieldmap header.
std::optional< std::int64_t > value
The declared element width of a project's metatile attribute arrays, and the declaration behind it.
std::optional< std::size_t > size
AttributeDeclarationScan scan
One unsettled fact about one inferred field, carried out of inference for the reconciler to rule on.
std::optional< std::uint32_t > declared
define mask, or the declared shift
std::string probed
header path or enum prefix (provider kinds only)
std::optional< std::uint32_t > alternate
table mask, or the shift the mask implies