10#include <unordered_set>
30 std::optional<std::uint32_t>
mask;
33 std::optional<FieldRole>
role;
50 std::optional<std::filesystem::path>
header;
52 std::optional<std::unordered_set<std::string>>
skipped;
67 std::optional<std::uint32_t>
mask;
69 std::optional<ProviderDefinitionOverride>
provider;
70 std::optional<std::optional<FieldRole>>
role;
82 return mask.has_value() ? std::format(
"0x{:X}", mask.value()) :
"none";
88 "{{header={}, prefix={}, skip_count={}, format={}}}",
100 std::string result = std::format(
101 "{}={{mask={}, default={}",
105 if (definition.
provider.has_value()) {
108 if (definition.
role.has_value()) {
118 if (definitions.empty()) {
121 std::string result =
"[";
123 for (
const auto &definition : definitions) {
142 std::string result = std::format(
143 "{{mask={}, default={}",
146 if (override_value.
provider.has_value()) {
147 if (override_value.
provider->remove) {
148 result +=
", provider=removed";
151 result +=
", provider=adjusted";
154 if (override_value.
role.has_value()) {
155 if (override_value.
role->has_value()) {
156 result +=
", role=" +
to_string(override_value.
role->value());
159 result +=
", role=removed";
169 if (overrides.empty()) {
172 std::string result =
"{";
174 for (
const auto &[
name, override_value] : overrides) {
193struct std::formatter<
porytiles::MetatileAttributeFieldDefinitions> {
194 constexpr auto parse(std::format_parse_context &ctx)
206struct std::formatter<
porytiles::MetatileAttributeFieldOverrides> {
207 constexpr auto parse(std::format_parse_context &ctx)
std::string format_provider_definition(const ProviderDefinition &provider)
std::string format_optional_mask(const std::optional< std::uint32_t > &mask)
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.
std::ostream & operator<<(std::ostream &os, const PrimaryPairingMode m)
Stream insertion operator for PrimaryPairingMode.
std::string to_string(const PrimaryPairingMode m)
Converts a PrimaryPairingMode to its canonical string representation.
A partial override of a field's provider definition.
std::optional< std::unordered_set< std::string > > skipped
bool operator==(const ProviderDefinitionOverride &) const =default
std::optional< std::filesystem::path > header
std::optional< HeaderFormat > format
std::optional< std::string > prefix
Describes where and how a field's named values are declared.