Fawkes API  Fawkes Development Version
fawkes::OneToManyDependency< Provider, Dependant > Class Template Reference

One-to-Many dependency constraint. More...

#include <>>

Inheritance diagram for fawkes::OneToManyDependency< Provider, Dependant >:

Public Member Functions

 OneToManyDependency ()
 Constructor. More...
 
virtual ~OneToManyDependency ()
 Destructor. More...
 
virtual void add (Provider *p)
 Add provider object. More...
 
virtual void add (Dependant *d)
 Add dependant object. More...
 
virtual void remove (Provider *p)
 Remove provider object. More...
 
virtual void remove (Dependant *d)
 Remove a depending object. More...
 
virtual bool can_add (Provider *p)
 Check if provider can be added. More...
 
virtual bool can_add (Dependant *d)
 Check if dependant can be added. More...
 
virtual bool can_remove (Provider *p)
 Check if provider can be removed. More...
 
virtual bool can_remove (Dependant *d)
 Check if dependant can be removed. More...
 
virtual Provider * provider ()
 Get provider. More...
 
virtual std::list< Dependant * > & dependants ()
 Get dependants. More...
 

Detailed Description

template<class Provider, class Dependant>
class fawkes::OneToManyDependency< Provider, Dependant >

One-to-Many dependency constraint.

This dependency constraint models a 1-to-n relationship. There is one object called provider, that any number of other objects (dependants) rely on.

The provider is unique and only one provider may exist at any one time. There may be an arbitrary number of dependants. Dependants may only be added if there is already a provider.

Dependants can always be removed. The provider can only be removed if there are no more dependants.

Author
Tim Niemueller

Definition at line 51 of file dependency_onetomany.h.

Constructor & Destructor Documentation

◆ OneToManyDependency()

template<class Provider , class Dependant >
fawkes::OneToManyDependency< Provider, Dependant >::OneToManyDependency ( )

Constructor.

Definition at line 78 of file dependency_onetomany.h.

◆ ~OneToManyDependency()

template<class Provider , class Dependant >
fawkes::OneToManyDependency< Provider, Dependant >::~OneToManyDependency ( )
virtual

Destructor.

Definition at line 87 of file dependency_onetomany.h.

Member Function Documentation

◆ add() [1/2]

template<class Provider, class Dependant >
void fawkes::OneToManyDependency< Provider, Dependant >::add ( Provider *  p)
virtual

Add provider object.

This will add the provider to this dependency or throw an exception if there is already a provider.

Parameters
pprovider object to add
Exceptions
DependencyViolationExceptionthrown, if a second provider is added

Definition at line 101 of file dependency_onetomany.h.

◆ add() [2/2]

template<class Provider, class Dependant>
void fawkes::OneToManyDependency< Provider, Dependant >::add ( Dependant *  d)
virtual

Add dependant object.

This will add the dependant to this dependency or throw an exception if there is no provider.

Parameters
ddependant object to add
Exceptions
DependencyViolationExceptionthrown, if no provider has been set

Definition at line 119 of file dependency_onetomany.h.

◆ can_add() [1/2]

template<class Provider, class Dependant >
bool fawkes::OneToManyDependency< Provider, Dependant >::can_add ( Provider *  p)
virtual

Check if provider can be added.

Parameters
pprovider object to add
Returns
true, if add(p) would succeed, false otherwise

Definition at line 165 of file dependency_onetomany.h.

◆ can_add() [2/2]

template<class Provider, class Dependant>
bool fawkes::OneToManyDependency< Provider, Dependant >::can_add ( Dependant *  d)
virtual

Check if dependant can be added.

Parameters
ddependant object to add
Returns
true, if add(d) would succeed, false otherwise

Definition at line 177 of file dependency_onetomany.h.

◆ can_remove() [1/2]

template<class Provider, class Dependant >
bool fawkes::OneToManyDependency< Provider, Dependant >::can_remove ( Provider *  p)
virtual

Check if provider can be removed.

Parameters
pprovider object to remove
Returns
true, if remove(p) would succeed, false otherwise

Definition at line 189 of file dependency_onetomany.h.

◆ can_remove() [2/2]

template<class Provider, class Dependant>
bool fawkes::OneToManyDependency< Provider, Dependant >::can_remove ( Dependant *  d)
virtual

Check if dependant can be removed.

Parameters
ddepending object to remove
Returns
always true

Definition at line 201 of file dependency_onetomany.h.

◆ dependants()

template<class Provider , class Dependant >
std::list< Dependant * > & fawkes::OneToManyDependency< Provider, Dependant >::dependants ( )
virtual

Get dependants.

Returns
list of dependants.

Definition at line 223 of file dependency_onetomany.h.

◆ provider()

template<class Provider , class Dependant >
Provider * fawkes::OneToManyDependency< Provider, Dependant >::provider ( )
virtual

Get provider.

Returns
provider if set, 0 otherwise

Definition at line 212 of file dependency_onetomany.h.

◆ remove() [1/2]

template<class Provider, class Dependant >
void fawkes::OneToManyDependency< Provider, Dependant >::remove ( Provider *  p)
virtual

Remove provider object.

Parameters
pprovider object to remove
Exceptions
DependencyViolationExceptionthrown, if the provider should be removed while there is still at least one dependant.

Definition at line 136 of file dependency_onetomany.h.

◆ remove() [2/2]

template<class Provider, class Dependant>
void fawkes::OneToManyDependency< Provider, Dependant >::remove ( Dependant *  d)
virtual

Remove a depending object.

Parameters
ddepending object to remove

Definition at line 151 of file dependency_onetomany.h.


The documentation for this class was generated from the following file: