70 template<
typename EnumT>
73 int i =
static_cast<int>(e);
98 template<
typename EnumT>
138 #define SET_UPDATES(SelfT, ...) PP_ID(EXTEND_ENUM(Update, SelfT, __VA_ARGS__))
141 #define DISABLE_UPDATES(...) PP_ID(DISABLE_SIGNALS(Update, __VA_ARGS__))
144 #define CLEAR_DISABLED_UPDATES() PP_ID(CLEAR_DISABLED_SIGNALS(Update))
147 template<
typename T,
typename EnumT>
150 static_assert(std::is_base_of<AbstractNode, T>::value,
151 "Cannot test update validity for a type that is not derived of Updates");
152 static_assert(std::is_enum<EnumT>::value,
"Cannot test update validity for a value that is not an enumeration");
153 return std::is_same<typename T::Update_, EnumT>::value
154 || ((!std::is_same<typename T::UpdateParent, typename T::UpdateBase>::value)
155 && is_valid_update<typename T::UpdateParent>(v));
159 template<
typename T,
typename EnumT,
typename... Args>
161 {
return is_valid_update<T>(v) && is_valid_update<T>(args...); }
Definition: CallGraph.h:23
bool is_node_
Definition: Outputs.h:101
Definition: AbstractNode.h:37
std::map< Outputs *, std::set< int > > input_dependency_t
Definition: AbstractNode.h:120
virtual bool isUpdateCustomEnabled(int) const
Definition: AbstractNode.h:91
virtual ~AbstractNode()=default
static constexpr bool UpdateStaticallyEnabled(EnumT)
Definition: AbstractNode.h:99
static constexpr auto UpdateBaseName
Definition: AbstractNode.h:62
bool isUpdateEnabled(EnumT e) const
Definition: AbstractNode.h:71
Update_
Definition: AbstractNode.h:46
std::map< int, std::vector< int > > outputDependencies_
Definition: AbstractNode.h:116
static constexpr unsigned int UpdateSize
Definition: AbstractNode.h:53
void update(int i)
Definition: AbstractNode.h:105
virtual bool isUpdateStaticallyEnabled(int) const
Definition: AbstractNode.h:84
std::map< int, std::pair< Outputs *, int > > directDependencies_
Definition: AbstractNode.h:123
std::map< int, std::vector< int > > internalDependencies_
Definition: AbstractNode.h:118
std::map< int, std::function< void(AbstractNode &)> > updates_
Definition: AbstractNode.h:113
std::map< int, input_dependency_t > inputDependencies_
Definition: AbstractNode.h:121
static constexpr const char * UpdateName(Update_)
Definition: AbstractNode.h:65
constexpr bool is_valid_update(EnumT v)
Definition: AbstractNode.h:148
std::map< KeyWithId, Value, IdLess< KeyWithId >, Allocator > map
Definition: map.h:41
Definition: AbstractNode.h:50