10 #ifndef hifi_Controllers_Conditional_h
11 #define hifi_Controllers_Conditional_h
16 #include <QtCore/QString>
18 #include <shared/Factory.h>
22 namespace controller {
28 using Pointer = std::shared_ptr<Conditional>;
29 using List = std::list<Pointer>;
30 using Factory = hifi::SimpleFactory<Conditional, QString>;
31 using Lambda = std::function<bool()>;
33 virtual ~Conditional() =
default;
35 virtual bool satisfied() = 0;
36 virtual bool parseParameters(
const QJsonValue& parameters) {
return true; }
38 static Pointer parse(
const QJsonValue& json);
39 static void registerBuilder(
const QString& name, Factory::Builder builder);
40 static Factory& getFactory() {
return _factory; }
42 static Factory _factory;
47 #define REGISTER_CONDITIONAL_CLASS(classEntry) \
49 using Registrar = Conditional::Factory::Registrar<classEntry>; \
50 static Registrar _registrar;
52 #define REGISTER_CONDITIONAL_CLASS_INSTANCE(classEntry, className) \
53 classEntry::Registrar classEntry::_registrar(className, Conditional::getFactory());