Non-ordered one-to-many ownership relation. More...
#include <ilserver/model.h>
Public Types | |
typedef IlsSetRelationIterator< Myself > | Iterator |
Set iterator. | |
typedef IlsOwnsSet< OwnerType, OwnedType, KeyType, KeyManager > | Myself |
Myself is the type of the instantiated template class. | |
Public Member Functions | |
IlsOwnsSet (OwnerType &owner, IlsRelationId identifier=IlsDefaultRelationId, IlsActivity activity=IlsModel::GetDefaultActivity(), IlsCardinality mincard=0, IlsCardinality maxcard=ILS_UNLIMITED_MAXCARD, Initial &targets=(*new Initial()), IlsBoolean check_card=IlsTrue) | |
Constructor. More... | |
virtual | ~IlsOwnsSet () |
This destructor breaks all the relations in the set. | |
Myself & | clear () |
Empties the list. More... | |
virtual void | cut (Partial &, ILS_CUT_DIRECTIVE d=ILS_ALL) |
Is called when a cut is applied to one of the owned objects. | |
OwnedTypeP | get (CKeyTypeR identifier) |
Returns the object associated with the specified key; otherwise, it returns 0 . | |
OwnedType ** | getAdded (int &) |
During a notification phase, this member function returns an array of pointers to the items that have been added to the set since the last notification phase. More... | |
unsigned int | getCount () |
Returns the number of objects in the set at a given time. | |
virtual IlsViewed * | getIdentifiedElement (const IlsString &id) const |
This virtual member function is used to retrieve an identified object from the relation. More... | |
OwnerType & | getOwner () const |
Returns a reference to the owner object. It is especially useful in the case of derived relations. | |
OwnedType ** | getRemoved (int &) |
During a notification phase, this member function returns an array of pointers to the items that have been removed from the set since the last notification phase. More... | |
virtual IlsBoolean | hasElement (IlsViewed &) const |
This virtual member function returns IlsTrue if the element is a target of the relation or IlsFalse otherwise. | |
IlsBoolean | isIn (CKeyTypeR identifier) |
Indicates whether the set holds an object associated with the key specified. | |
Myself & | operator<< (COwnedTypePR v) |
Adds an object to the set. More... | |
Myself & | operator>> (COwnedTypePR v) |
Removes an object from the set. More... | |
OwnedTypeP | operator[] (CKeyTypeR identifier) |
This operator is identical to the function get . | |
Myself & | put (COwnedTypePR) |
Puts an object in the set. More... | |
Myself & | suppress (CKeyTypeR identifier, ILS_CUT_DIRECTIVE=ILS_ALL) |
Removes the object associated with the specified key according to the specified cut instruction. More... | |
![]() | |
IlsActivity | getActivity () const |
Indicates whether the set is active or not, that is, if derived data members are recomputed when the set is modified. | |
unsigned int | getCount () const |
Returns the number of objects in the set at a given time. | |
IlsRelationId | getIdentifier () const |
Returns the relation identifier. | |
IlsCardinality | getMaxCard () const |
Returns the maximal cardinality specified for the set. | |
IlsCardinality | getMinCard () const |
Returns the minimal cardinality specified for the set. | |
IlsBoolean | isCountModified () |
Indicates whether the number of objects in the set has changed. More... | |
IlsBoolean | isModified () |
Indicates whether the set has been modified. | |
Static Public Member Functions | |
static Initial & | NewInitial () |
Builds an empty set which is used by the constructor as the default value of the argument targets . | |
Non-ordered one-to-many ownership relation.
OwnerType | Class that contains the relation, |
OwnedType | Class of the targets of the relation. |
KeyType | The type of the key used to store objects in a set and retrieve objects from a set. |
KeyManager | A class that specifies how to handle keys. |
Library: server
Rogue Wave Server lets you declare ownership relations among object classes. Ownership relations are relations in which one particular object is owned by at most one other object. The owner object, on the other hand, can own one or more other objects. One-to-many relations can be defined as list-relations or as set-relations. Unlike list-relations, target objects in set-relations are not listed in sequential order but are grouped together in a non-ordered set and are directly accessible by a key. Such relations are declared within the owner class as instances of the class template IlsOwnsSet
.
OwnerType
must derive directly or transitively from IlsObject
or IlsEntity
. OwnedType
must derive from IlsObject
. Derivation must be public.
KeyType
is the type of the key used to store objects in a set and retrieve objects from a set. KeyManager
is a class that specifies how to handle keys. This class must contain the three following static member functions:
IlsEntity
, IlsHashKeyManager
, IlsObject
, IlsOwnsList
, IlsOwnsSet::Iterator
, IlsUsesSet
. IlsOwnsSet< OwnerType, OwnedType, KeyType, KeyManager >::IlsOwnsSet | ( | OwnerType & | owner, |
IlsRelationId | identifier = IlsDefaultRelationId , |
||
IlsActivity | activity = IlsModel::GetDefaultActivity() , |
||
IlsCardinality | mincard = 0 , |
||
IlsCardinality | maxcard = ILS_UNLIMITED_MAXCARD , |
||
Initial & | targets = (*new Initial()) , |
||
IlsBoolean | check_card = IlsTrue |
||
) |
Constructor.
owner | A reference to the owner object. |
identifier | A relation identifier of type IlsRelationId . This argument defaults to IlsDefaultRelationId . It is generally used to invert relations. |
activity | Specifies Whether The Relation Is Active Or not. A relation is active if its modification sets off the recomputation of derived data members. The default value is the one returned by the function IlsModel::GetDefaultActivity() , which is ILS_INACTIVE by default. |
mincard | The minimal cardinality of the list. This argument is optional and defaults to zero. |
maxcard | The maximal cardinality of the list. This argument is optional and defaults to ILS_UNLIMITED_MAXCARD . |
targets | A list of objects. Its creates an empty list when set to its default value. |
check_card | Specifies whether cardinalities should be checked at construction. |
Myself& IlsOwnsSet< OwnerType, OwnedType, KeyType, KeyManager >::clear | ( | ) |
Empties the list.
IlsMinCardViolated | If the minimal cardinality is different from zero. The number of objects left in the set will be equal to the minimal cardinality specified. |
IlsUpdateForbidden | If the function isUpdatedAllowed() returns IlsFalse for the type in which the relation is declared. |
OwnedType** IlsOwnsSet< OwnerType, OwnedType, KeyType, KeyManager >::getAdded | ( | int & | ) |
During a notification phase, this member function returns an array of pointers to the items that have been added to the set since the last notification phase.
It returns an empty array if no object has been added to the list relation. The argument accepts the size of the array as a return value.
You must explicitly destroy this array when you no longer need it. To do so, use delete
with square brackets [].
|
virtual |
This virtual member function is used to retrieve an identified object from the relation.
The member function IlsViewed::getKeyIdentifier()
is used to retrieve the identifier of the relation element.
Reimplemented from IlsViewedRel.
OwnedType** IlsOwnsSet< OwnerType, OwnedType, KeyType, KeyManager >::getRemoved | ( | int & | ) |
During a notification phase, this member function returns an array of pointers to the items that have been removed from the set since the last notification phase.
It returns an empty array if no object has been removed from the set-relation. The argument accepts the size of the array as a return value.
You must explicitly destroy this array when you no longer need it. To do so, use delete
with square brackets [].
Myself& IlsOwnsSet< OwnerType, OwnedType, KeyType, KeyManager >::operator<< | ( | COwnedTypePR | v | ) |
Adds an object to the set.
A set cannot contain two objects associated with the same key.
IlsMaxCardViolated | If the maximal cardinality has been reached. |
IlsUpdateForbidden | If the function isUpdateAllowed() returns IlsFalse for the type in which the relation is declared. |
IlsOwnershipCycle | If a cycle has been detected among ownership relations. |
IlsAlreadyInserted | If the supplied object is already owned. |
IlsAlreadyInSet | If the supplied object is already in the set. |
Myself& IlsOwnsSet< OwnerType, OwnedType, KeyType, KeyManager >::operator>> | ( | COwnedTypePR | v | ) |
Removes an object from the set.
IlsUpdateForbidden | If the function isUpdatedAllowed() returns IlsFalse for the type in which the relation is declared. |
IlsMinCardViolated | If the minimal cardinality has been reached. |
IlsNotFound | If no object is associated with the specified key. |
Myself& IlsOwnsSet< OwnerType, OwnedType, KeyType, KeyManager >::put | ( | COwnedTypePR | ) |
Puts an object in the set.
A set cannot contain two objects associated with the same key.
IlsMaxCardViolated | If the maximal cardinality has been reached. |
IlsUpdateForbidden | If the function isUpdateAllowed() returns IlsFalse for the type in which the relation is declared. |
IlsOwnershipCycle | If a cycle has been detected among ownership relations. |
IlsAlreadyInserted | If the supplied object is already owned. |
IlsAlreadyInSet | If the supplied object is already in the set. |
Myself& IlsOwnsSet< OwnerType, OwnedType, KeyType, KeyManager >::suppress | ( | CKeyTypeR | identifier, |
ILS_CUT_DIRECTIVE | = ILS_ALL |
||
) |
Removes the object associated with the specified key according to the specified cut
instruction.
IlsUpdateForbidden | If the function isUpdatedAllowed() returns IlsFalse for the type in which the relation is declared. |
IlsMinCardViolated | If the minimal cardinality has been reached. |
IlsNotFound | If no object is associated with the specified key. |
© Copyright 2018, Rogue Wave Software, Inc. All Rights Reserved.
Rogue Wave is a registered trademark of Rogue Wave Software, Inc. in the United States and other countries. All other trademarks are the property of their respective owners.