24#ifndef _UTILS_CONSTRAINTS_DEPENDENCY_ONETOMANY_H_
25#define _UTILS_CONSTRAINTS_DEPENDENCY_ONETOMANY_H_
27#include <utils/constraints/dependency.h>
49template <
class Prov
ider,
class Dependant>
56 virtual void add(Provider *p);
57 virtual void add(Dependant *d);
71 std::list<Dependant *> _dependants;
75template <
class Prov
ider,
class Dependant>
83template <
class Prov
ider,
class Dependant>
95template <
class Prov
ider,
class Dependant>
99 if ((_provider != 0) && (p != _provider)) {
112template <
class Prov
ider,
class Dependant>
116 if (_provider == 0) {
119 _dependants.push_back(d);
128template <
class Prov
ider,
class Dependant>
132 if (!_dependants.empty()) {
134 "cannot accept removal of provider");
143template <
class Prov
ider,
class Dependant>
148 _dependants.remove(d);
156template <
class Prov
ider,
class Dependant>
160 return ((_provider == 0) || (p == _provider));
167template <
class Prov
ider,
class Dependant>
171 return (_provider != 0);
178template <
class Prov
ider,
class Dependant>
182 return _dependants.empty();
189template <
class Prov
ider,
class Dependant>
199template <
class Prov
ider,
class Dependant>
209template <
class Prov
ider,
class Dependant>
210std::list<Dependant *> &
Dependency violation exception.
One-to-Many dependency constraint.
virtual bool can_add(Dependant *d)
Check if dependant can be added.
OneToManyDependency()
Constructor.
virtual bool can_remove(Provider *p)
Check if provider can be removed.
virtual bool can_remove(Dependant *d)
Check if dependant can be removed.
virtual bool can_add(Provider *p)
Check if provider can be added.
virtual void add(Dependant *d)
Add dependant object.
virtual void remove(Dependant *d)
Remove a depending object.
virtual void remove(Provider *p)
Remove provider object.
virtual Provider * provider()
Get provider.
virtual void add(Provider *p)
Add provider object.
virtual std::list< Dependant * > & dependants()
Get dependants.
virtual ~OneToManyDependency()
Destructor.
Fawkes library namespace.