18#include "PropertyList.h"
19#include "AUI/ASS/Selector/AAssSelector.h"
28 template<
typename... Declarations>
30 processDeclarations(std::forward<Declarations>(declarations)...);
43 return mConditionalPropertyLists;
49 template<
typename Property,
typename... Declarations>
50 void processDeclarations(Property&& declaration, Declarations&& ... declarations) {
51 processDeclaration(std::forward<Property>(declaration));
52 if constexpr (
sizeof...(Declarations) > 0) {
53 processDeclarations(std::forward<Declarations>(declarations)...);
58 void processDeclaration(T&&
t);
66 template<
typename... Declarations>
68 selector(std::move(selector)), list(std::forward<Declarations>(declarations)...)
72 inline PropertyListRecursive::PropertyListRecursive() =
default;
75 inline PropertyListRecursive::PropertyListRecursive(
const PropertyListRecursive&) =
default;
76 inline PropertyListRecursive::~PropertyListRecursive() =
default;
80 void PropertyListRecursive::processDeclaration(T&& t) {
81 if constexpr (std::is_base_of_v<PropertyListRecursive::ConditionalPropertyList, T>) {
82 mConditionalPropertyLists << std::forward<ConditionalPropertyList&&>(t);
83 }
else if constexpr (std::is_same_v<T, PropertyListRecursive>) {
85 mProperties = std::move(t.mProperties);
86 mConditionalPropertyLists = std::move(t.mConditionalPropertyLists);
89 static_assert(aui::is_complete<declaration_t>,
90 "ass::prop::Property template specialization is not defined for this property");
92 mProperties << _new<declaration_t>(t);
A std::vector with AUI extensions.
Definition: AVector.h:38
Definition: AAssSelector.h:36
Definition: PropertyListRecursive.h:62
Definition: PropertyListRecursive.h:24
Definition: PropertyList.h:25
Definition: IProperty.h:19