Server
API Reference Guide
Product Documentation:

Rogue Wave Server
Documentation Home
List of all members | Public Types | Public Member Functions
IlsOwnsDynamicArray< OwnerType, OwnedType > Class Template Reference

Dynamic arrays of ownership relations. More...

#include <ilserver/model.h>

Inheritance diagram for IlsOwnsDynamicArray< OwnerType, OwnedType >:
IlsDynamicArrayRelation IlsArrayRelation IlsOptionalRelation

Public Types

typedef IlsOwnsDynamicArray< OwnerType, OwnedType > Myself
 Myself is the type of the instantiated template class.
 
typedef IlsIndexedPartial< OwnerType, OwnedType, MyselfPartial
 This class is an intermediate class that stores array elements.
 

Public Member Functions

 IlsOwnsDynamicArray (OwnerType &owner, unsigned int size=0, IlsRelationId identifier=IlsDefaultRelationId, IlsActivity activity=IlsModel::GetDefaultActivity(), IlsBoolean mandatory=IlsFalse)
 Constructor. More...
 
virtual ~IlsOwnsDynamicArray ()
 This destructor breaks all relations stored in the array.
 
Myselfclear ()
 Sets all the array elements to zero. More...
 
virtual void cut (unsigned int rank, ILS_CUT_DIRECTIVE=ILS_ALL)
 
IlsActivity getActivity () const
 
virtual IlsViewedgetIdentifiedElement (const IlsString &id) const
 This virtual member function is used to retrieve an identified object from the relation. More...
 
OwnerType & getOwner () const
 Returns the owner of the relation.
 
OwnedType ** getRemoved (int &)
 
virtual IlsBoolean hasElement (IlsViewed &) const
 This virtual member function returns IlsTrue if the element is a target of the relation or IlsFalse otherwise.
 
Partialoperator[] (int rank)
 
Myselfrenew (unsigned int=0)
 
- Public Member Functions inherited from IlsDynamicArrayRelation
unsigned int getSize () const
 
- Public Member Functions inherited from IlsArrayRelation
int * getAdded (int &s)
 During a notification phase, this member function returns an arrays of indices corresponding to the elements that have been added to the array since the last notification phase. More...
 
IlsBoolean isModified ()
 During a notification phase, this member function returns IlsTrue if the array-relation has been modified since the last notification phase. More...
 
- Public Member Functions inherited from IlsOptionalRelation
IlsRelationId getIdentifier () const
 
IlsBoolean isMandatory ()
 Returns IlsTrue if the relation is mandatory. Otherwise, it returns IlsFalse. When a relation is mandatory, a cut applied to the target of the relation is propagated to its origin. By default, the function returns IlsFalse for n-ary relations and IlsTrue for unary relations.
 

Detailed Description

template<class OwnerType, class OwnedType>
class IlsOwnsDynamicArray< OwnerType, OwnedType >

Dynamic arrays of ownership relations.

Template Parameters
OwnerTypeClass that contains the relation,
OwnedTypeClass of the targets of the relation.

Library: server

See also
IlsEntity, IlsObject, IlsOwns, IlsOwnsDynamicArray::Partial, IlsOwnsFixedArray, IlsOwnsList, IlsOwnsSet.

Constructor & Destructor Documentation

◆ IlsOwnsDynamicArray()

template<class OwnerType , class OwnedType >
IlsOwnsDynamicArray< OwnerType, OwnedType >::IlsOwnsDynamicArray ( OwnerType &  owner,
unsigned int  size = 0,
IlsRelationId  identifier = IlsDefaultRelationId,
IlsActivity  activity = IlsModel::GetDefaultActivity(),
IlsBoolean  mandatory = IlsFalse 
)

Constructor.

\param owner    A reference to the owner-object.
\param size Specifies the maximum size of the array.
\param identifier Represents the relation
        Identifier. It behaves like a numeric type and is
        generally used to invert relations. Its default value
        is \c IlsDefaultRelationId.
\param 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
       \c ILS_INACTIVE by default.
\param mandatory    Indicates whether the relation is mandatory.
        For details, see the member function `isMandatory()`
        documented below.

Member Function Documentation

◆ clear()

template<class OwnerType , class OwnedType >
Myself& IlsOwnsDynamicArray< OwnerType, OwnedType >::clear ( )

Sets all the array elements to zero.

Exceptions
IlsUpdateForbiddenIf the member function isUpdateAllowed() returns IlsFalse for the type in which the relation is declared.

◆ cut()

template<class OwnerType , class OwnedType >
virtual void IlsOwnsDynamicArray< OwnerType, OwnedType >::cut ( unsigned int  rank,
ILS_CUT_DIRECTIVE  = ILS_ALL 
)
virtual
\short Is called when a cut is applied

to the target of the relation.

◆ getActivity()

template<class OwnerType , class OwnedType >
IlsActivity IlsOwnsDynamicArray< OwnerType, OwnedType >::getActivity ( ) const
\short Returns \c ILS_ACTIVE if the relation has
been set as active. Otherwise, it returns \c ILS_INACTIVE.

For details, see the constructor.

◆ getIdentifiedElement()

template<class OwnerType , class OwnedType >
virtual IlsViewed* IlsOwnsDynamicArray< OwnerType, OwnedType >::getIdentifiedElement ( const IlsString id) const
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.

Note
On all subclasses of this class, the complexity of this method is always linear, in terms of the number of elements in the relation, even for set relations.

Reimplemented from IlsViewedRel.

◆ getRemoved()

template<class OwnerType , class OwnedType >
OwnedType** IlsOwnsDynamicArray< OwnerType, OwnedType >::getRemoved ( int &  )

During a notification phase, this member function returns an array of pointers to the objects that have been removed from the array since the last notification phase.

It returns an empty array if no element has been removed from the array. The argument gives 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 [].

◆ operator[]()

template<class OwnerType , class OwnedType >
Partial& IlsOwnsDynamicArray< OwnerType, OwnedType >::operator[] ( int  rank)
\short Returns the `i`-th array element. \c Partial can

be assigned the type OwnedTypeP.

Exceptions
IlsSizeViolationIf i is greater than the size specified for the array (minus 1).

◆ renew()

template<class OwnerType , class OwnedType >
Myself& IlsOwnsDynamicArray< OwnerType, OwnedType >::renew ( unsigned int  = 0)
\short Lets you allocate or create a new array

with a specified size.

It takes the new size of the array as its argument. By default, the value of the argument is zero. Smart pointers to objects contained in the old array are erased and replaced with null smart pointers in the new array.