Porytiles
Loading...
Searching...
No Matches
porytiles2::LazyLayeredConfig Class Referencefinal

A Config implementation that lazily pulls a config value by consulting multiple priority-ordered backing ConfigProviders . More...

#include <lazy_layered_config.hpp>

Inheritance diagram for porytiles2::LazyLayeredConfig:
[legend]
Collaboration diagram for porytiles2::LazyLayeredConfig:
[legend]

Public Member Functions

 LazyLayeredConfig (gsl::not_null< TextFormatter * > format, std::vector< std::unique_ptr< ConfigProvider > > &&providers)
 Constructs a LazyLayeredConfig with a list of ConfigProviders in priority order, highest to lowest.
 
 LazyLayeredConfig (std::vector< std::unique_ptr< ConfigProvider > > &&providers)
 Constructs a LazyLayeredConfig with a default PlainTextFormatter.
 
std::string dump () const
 Dumps the current state of the config for debugging purposes.
 
void warmup_cache (const std::vector< std::string > &tileset_names) const
 Forces all configuration values to be cached immediately for all known tilesets.
 
- Public Member Functions inherited from porytiles2::DomainConfig
virtual ~DomainConfig ()=default
 
ChainableResult< ConfigValue< std::size_t > > num_tiles_primary (const std::string &tileset) const
 
ChainableResult< ConfigValue< std::size_t > > num_tiles_total (const std::string &tileset) const
 
ChainableResult< ConfigValue< std::size_t > > num_metatiles_primary (const std::string &tileset) const
 
ChainableResult< ConfigValue< std::size_t > > num_metatiles_total (const std::string &tileset) const
 
ChainableResult< ConfigValue< std::size_t > > num_pals_primary (const std::string &tileset) const
 
ChainableResult< ConfigValue< std::size_t > > num_pals_total (const std::string &tileset) const
 
ChainableResult< ConfigValue< std::size_t > > max_map_data_size (const std::string &tileset) const
 
ChainableResult< ConfigValue< std::size_t > > num_tiles_per_metatile (const std::string &tileset) const
 
ChainableResult< ConfigValue< Rgba32 > > extrinsic_transparency (const std::string &tileset) const
 
ChainableResult< ConfigValue< bool > > patch_build_enabled (const std::string &tileset) const
 
- Public Member Functions inherited from porytiles2::AppConfig
virtual ~AppConfig ()=default
 
- Public Member Functions inherited from porytiles2::InfraConfig
virtual ~InfraConfig ()=default
 
ChainableResult< ConfigValue< TilesPalMode > > tiles_pal_mode (const std::string &tileset) const
 

Protected Member Functions

ChainableResult< ConfigValue< std::size_t > > num_tiles_primary_raw (const std::string &tileset) const override
 
ChainableResult< ConfigValue< std::size_t > > num_tiles_total_raw (const std::string &tileset) const override
 
ChainableResult< ConfigValue< std::size_t > > num_metatiles_primary_raw (const std::string &tileset) const override
 
ChainableResult< ConfigValue< std::size_t > > num_metatiles_total_raw (const std::string &tileset) const override
 
ChainableResult< ConfigValue< std::size_t > > num_pals_primary_raw (const std::string &tileset) const override
 
ChainableResult< ConfigValue< std::size_t > > num_pals_total_raw (const std::string &tileset) const override
 
ChainableResult< ConfigValue< std::size_t > > max_map_data_size_raw (const std::string &tileset) const override
 
ChainableResult< ConfigValue< std::size_t > > num_tiles_per_metatile_raw (const std::string &tileset) const override
 
ChainableResult< ConfigValue< Rgba32 > > extrinsic_transparency_raw (const std::string &tileset) const override
 
ChainableResult< ConfigValue< bool > > patch_build_enabled_raw (const std::string &tileset) const override
 
ChainableResult< ConfigValue< TilesPalMode > > tiles_pal_mode_raw (const std::string &tileset) const override
 

Detailed Description

A Config implementation that lazily pulls a config value by consulting multiple priority-ordered backing ConfigProviders .

LazyLayeredConfig provides the following functionality:

  • fetches the value from the highest priority layer, lazily (i.e., only loads upon first request, then caches)
  • tracks the provenance of the value (e.g., did it come from tileset TOML? environment? default value?)
  • hard panics if no value exists, this is a programmer error (programmer should at least provide a default layer)
  • provides a way to dump itself for debugging purposes

Definition at line 51 of file lazy_layered_config.hpp.

Constructor & Destructor Documentation

◆ LazyLayeredConfig() [1/2]

porytiles2::LazyLayeredConfig::LazyLayeredConfig ( gsl::not_null< TextFormatter * >  format,
std::vector< std::unique_ptr< ConfigProvider > > &&  providers 
)
inlineexplicit

Constructs a LazyLayeredConfig with a list of ConfigProviders in priority order, highest to lowest.

The LazyLayeredConfig will attempt to resolve configuration values by traversing the provided list of ConfigProviders in order. That is, it will consult the first provider in the list first, and the next provider only if the first does not supply the config value. And so on. It is the programmer's responsibility to provide a default layer as the final provider in the list. If any config value resolution call chain reaches the end of the provider list without finding a value, the LazyLayeredConfig will terminate with a panic.

Parameters
formatA pointer to the TextFormatter to use
providersThe list of providers in priority order

Definition at line 68 of file lazy_layered_config.hpp.

◆ LazyLayeredConfig() [2/2]

porytiles2::LazyLayeredConfig::LazyLayeredConfig ( std::vector< std::unique_ptr< ConfigProvider > > &&  providers)
inlineexplicit

Constructs a LazyLayeredConfig with a default PlainTextFormatter.

This constructor creates an internally owned PlainTextFormatter instance and uses it for formatting. The LazyLayeredConfig will attempt to resolve configuration values by traversing the provided list of ConfigProviders in order. It is the programmer's responsibility to provide a default layer as the final provider in the list.

Parameters
providersThe list of providers in priority order

Definition at line 85 of file lazy_layered_config.hpp.

Member Function Documentation

◆ dump()

std::string porytiles2::LazyLayeredConfig::dump ( ) const

Dumps the current state of the config for debugging purposes.

Returns a string showing each cached config key, actual value, and source layer name with metadata. Only cached values are shown (values that have been requested at least once).

Returns
A formatted string representation of the config state

Definition at line 194 of file lazy_layered_config.cpp.

◆ extrinsic_transparency_raw()

ChainableResult< ConfigValue< Rgba32 > > porytiles2::LazyLayeredConfig::extrinsic_transparency_raw ( const std::string &  tileset) const
overrideprotectedvirtual

Implements porytiles2::DomainConfig.

Definition at line 164 of file lazy_layered_config.cpp.

◆ max_map_data_size_raw()

ChainableResult< ConfigValue< std::size_t > > porytiles2::LazyLayeredConfig::max_map_data_size_raw ( const std::string &  tileset) const
overrideprotectedvirtual

Implements porytiles2::DomainConfig.

Definition at line 144 of file lazy_layered_config.cpp.

◆ num_metatiles_primary_raw()

ChainableResult< ConfigValue< std::size_t > > porytiles2::LazyLayeredConfig::num_metatiles_primary_raw ( const std::string &  tileset) const
overrideprotectedvirtual

Implements porytiles2::DomainConfig.

Definition at line 104 of file lazy_layered_config.cpp.

◆ num_metatiles_total_raw()

ChainableResult< ConfigValue< std::size_t > > porytiles2::LazyLayeredConfig::num_metatiles_total_raw ( const std::string &  tileset) const
overrideprotectedvirtual

Implements porytiles2::DomainConfig.

Definition at line 114 of file lazy_layered_config.cpp.

◆ num_pals_primary_raw()

ChainableResult< ConfigValue< std::size_t > > porytiles2::LazyLayeredConfig::num_pals_primary_raw ( const std::string &  tileset) const
overrideprotectedvirtual

Implements porytiles2::DomainConfig.

Definition at line 124 of file lazy_layered_config.cpp.

◆ num_pals_total_raw()

ChainableResult< ConfigValue< std::size_t > > porytiles2::LazyLayeredConfig::num_pals_total_raw ( const std::string &  tileset) const
overrideprotectedvirtual

Implements porytiles2::DomainConfig.

Definition at line 134 of file lazy_layered_config.cpp.

◆ num_tiles_per_metatile_raw()

ChainableResult< ConfigValue< std::size_t > > porytiles2::LazyLayeredConfig::num_tiles_per_metatile_raw ( const std::string &  tileset) const
overrideprotectedvirtual

Implements porytiles2::DomainConfig.

Definition at line 154 of file lazy_layered_config.cpp.

◆ num_tiles_primary_raw()

ChainableResult< ConfigValue< std::size_t > > porytiles2::LazyLayeredConfig::num_tiles_primary_raw ( const std::string &  tileset) const
overrideprotectedvirtual

Implements porytiles2::DomainConfig.

Definition at line 84 of file lazy_layered_config.cpp.

◆ num_tiles_total_raw()

ChainableResult< ConfigValue< std::size_t > > porytiles2::LazyLayeredConfig::num_tiles_total_raw ( const std::string &  tileset) const
overrideprotectedvirtual

Implements porytiles2::DomainConfig.

Definition at line 94 of file lazy_layered_config.cpp.

◆ patch_build_enabled_raw()

ChainableResult< ConfigValue< bool > > porytiles2::LazyLayeredConfig::patch_build_enabled_raw ( const std::string &  tileset) const
overrideprotectedvirtual

Implements porytiles2::DomainConfig.

Definition at line 174 of file lazy_layered_config.cpp.

◆ tiles_pal_mode_raw()

ChainableResult< ConfigValue< TilesPalMode > > porytiles2::LazyLayeredConfig::tiles_pal_mode_raw ( const std::string &  tileset) const
overrideprotectedvirtual

Implements porytiles2::InfraConfig.

Definition at line 184 of file lazy_layered_config.cpp.

◆ warmup_cache()

void porytiles2::LazyLayeredConfig::warmup_cache ( const std::vector< std::string > &  tileset_names) const

Forces all configuration values to be cached immediately for all known tilesets.

This function eagerly evaluates and caches all configuration values by calling each config method. This is useful for warming up the cache before performance-critical operations or for validating all config values at startup. The function requires a list of tileset names to evaluate tileset-specific configuration values.

Parameters
tileset_namesList of tileset names for which to evaluate the configuration

Definition at line 216 of file lazy_layered_config.cpp.


The documentation for this class was generated from the following files: