#pragma once #include namespace mbgl { namespace style { /** * @brief An interface, wrapping evaluated layer properties. * * It is an abstract base class; concrete derived classes that hold the actual data are provided for each layer type. */ class LayerProperties { public: virtual ~LayerProperties() = default; Immutable baseImpl; protected: LayerProperties(Immutable impl) : baseImpl(std::move(impl)) {} }; template inline const auto& getEvaluated(const Immutable& properties) { return static_cast(*properties).evaluated; } template inline const auto& getCrossfade(const Immutable& properties) { return static_cast(*properties).crossfade; } } // namespace style } // namespace mbgl