24 #ifndef __UTILS_CONSTRAINTS_DEPENDENCY_ONETOMANY_H_ 25 #define __UTILS_CONSTRAINTS_DEPENDENCY_ONETOMANY_H_ 27 #include <utils/constraints/dependency.h> 50 template <
class Prov
ider,
class Dependant>
57 virtual void add(Provider *p);
58 virtual void add(Dependant *d);
59 virtual void remove(Provider *p);
60 virtual void remove(Dependant *d);
62 virtual bool can_add(Provider *p);
63 virtual bool can_add(Dependant *d);
72 std::list<Dependant *> _dependants;
77 template <
class Prov
ider,
class Dependant>
86 template <
class Prov
ider,
class Dependant>
99 template <
class Prov
ider,
class Dependant>
103 if ( (_provider != 0) && (p != _provider) ) {
117 template <
class Prov
ider,
class Dependant>
121 if (_provider == 0) {
124 _dependants.push_back(d);
134 template <
class Prov
ider,
class Dependant>
138 if ( ! _dependants.empty() ) {
140 "cannot accept removal of provider");
142 if ( p == _provider ) _provider = 0;
149 template <
class Prov
ider,
class Dependant>
154 _dependants.remove(d);
163 template <
class Prov
ider,
class Dependant>
167 return ( (_provider == 0) || (p == _provider) );
175 template <
class Prov
ider,
class Dependant>
179 return (_provider != 0);
187 template <
class Prov
ider,
class Dependant>
191 return _dependants.empty();
199 template <
class Prov
ider,
class Dependant>
210 template <
class Prov
ider,
class Dependant>
221 template <
class Prov
ider,
class Dependant>
222 std::list<Dependant *> &
virtual void add(Provider *p)
Add provider object.
virtual bool can_remove(Provider *p)
Check if provider can be removed.
Fawkes library namespace.
virtual void remove(Provider *p)
Remove provider object.
virtual bool can_add(Provider *p)
Check if provider can be added.
Dependency violation exception.
virtual ~OneToManyDependency()
Destructor.
virtual Provider * provider()
Get provider.
One-to-Many dependency constraint.
virtual std::list< Dependant * > & dependants()
Get dependants.
OneToManyDependency()
Constructor.