#include <OTC/collctn/list.hh> template<class T> class OTC_List {
public:
static os_typespec* get_os_typespec();
typedef OTC_Modifier<T> type1;
type1 dummy1();
inline ~OTC_List();
inline OTC_List();
OTC_List(OTC_List<T> const& theList);
OTC_List(OTC_List<T>& theList, OTC_ShallowCopy);
OTC_List<T>& operator=(OTC_List<T> const& theList);
inline u_int population() const;
inline OTC_Boolean isEmpty() const;
inline void addFirst(T const& theItem);
inline void addLast(T const& theItem);
inline void addBeforeItem(T const& theItem, u_int theIndex);
inline T& first();
inline T const& first() const;
inline T& last();
inline T const& last() const;
inline T& item(u_int theIndex);
inline T const& item(u_int theIndex) const;
inline void removeAll();
inline void removeFirst();
inline void removeLast();
inline void removeItem(u_int theIndex);
inline void removeRange(u_int theStart, u_int theLength);
inline void removeRange(OTC_Range theRange);
inline OTC_Iterator<T> items( OTC_Direction theDirection=OTCLIB_FORWARD, OTC_Protection theProtection=OTCLIB_SAFE ) const;
inline OTC_Modifier<T> items( OTC_Direction theDirection=OTCLIB_FORWARD, OTC_Protection theProtection=OTCLIB_SAFE );
inline OTC_Iterator<T> items( OTC_Range const& theRange, OTC_Direction theDirection=OTCLIB_FORWARD, OTC_Protection theProtection=OTCLIB_SAFE ) const;
inline OTC_Modifier<T> items( OTC_Range const& theRange, OTC_Direction theDirection=OTCLIB_FORWARD, OTC_Protection theProtection=OTCLIB_SAFE );
inline OTC_Iterator<T> items( u_int theStart, u_int theLength, OTC_Direction theDirection=OTCLIB_FORWARD, OTC_Protection theProtection=OTCLIB_SAFE ) const;
inline OTC_Modifier<T> items( u_int theStart, u_int theLength, OTC_Direction theDirection=OTCLIB_FORWARD, OTC_Protection theProtection=OTCLIB_SAFE );
protected:
OTC_Cursor<T>* _items( OTC_Direction theDirection, OTC_Protection theProtection ) const;
OTC_Cursor<T>* _items( int theStart, u_int theLength, OTC_Direction theDirection=OTCLIB_FORWARD, OTC_Protection theProtection=OTCLIB_SAFE ) const;
OTC_Link* _link(T const& theItem);
};
0
.
inline OTC_List();
OTC_List(OTC_List<T> const& theList);
theList
.
OTC_List(OTC_List<T>& theList, OTC_ShallowCopy);
theList
.
OTC_List<T>& operator=(OTC_List<T> const& theList);
theList
.
inline u_int population() const;
inline OTC_Boolean isEmpty() const;
OTCLIB_TRUE
if the the list
is empty.
inline void addFirst(T const& theItem);
theItem
at the head of the list.
inline void addLast(T const& theItem);
theItem
to the tail of the list.
inline void addBeforeItem(T const& theItem, u_int theIndex);
theItem
into the list before
the item at location theIndex
.
If theIndex
is equal to the population
of the list, then theItem
is added
at the end of the list. If theIndex
is greater than the population of the
list, an exception is raised.
inline T& first();
inline T const& first() const;
inline T& last();
inline T const& last() const;
inline T& item(u_int theIndex);
theIndex
. If the
list is empty, or the index is outside the
bounds of the list, an exception is
raised.
inline T const& item(u_int theIndex) const;
theIndex
. If the
list is empty, or the index is outside the
bounds of the list, an exception is
raised.
inline void removeAll();
inline void removeFirst();
inline void removeLast();
inline void removeItem(u_int theIndex);
theIndex
.
Raises an exception if there is no item at
location theIndex
.
inline void removeRange(u_int theStart, u_int theLength);
theLength
items starting at
location theStart
.
inline void removeRange(OTC_Range theRange);
theLength
items starting at
location theStart
.
OTCLIB_SAFE
or OTCLIB_UNSAFE
.
To get an unsafe iterator, the OTCLIB_UNSAFE
argument should
be used.
The first argument to the following functions indicates the
direction of traversal of the iterator. Traversal in the
direction of first to last item is indicated by a value of
OTCLIB_FORWARD
. Traversal in the reverse direction is
indicated by a value of OTCLIB_BACKWARD
. The default value
is OTCLIB_FORWARD
.
inline OTC_Iterator<T> items(
OTC_Direction theDirection=OTCLIB_FORWARD,
OTC_Protection theProtection=OTCLIB_SAFE
) const;
inline OTC_Modifier<T> items(
OTC_Direction theDirection=OTCLIB_FORWARD,
OTC_Protection theProtection=OTCLIB_SAFE
);
inline OTC_Iterator<T> items(
OTC_Range const& theRange,
OTC_Direction theDirection=OTCLIB_FORWARD,
OTC_Protection theProtection=OTCLIB_SAFE
) const;
inline OTC_Modifier<T> items(
OTC_Range const& theRange,
OTC_Direction theDirection=OTCLIB_FORWARD,
OTC_Protection theProtection=OTCLIB_SAFE
);
inline OTC_Iterator<T> items(
u_int theStart,
u_int theLength,
OTC_Direction theDirection=OTCLIB_FORWARD,
OTC_Protection theProtection=OTCLIB_SAFE
) const;
inline OTC_Modifier<T> items(
u_int theStart,
u_int theLength,
OTC_Direction theDirection=OTCLIB_FORWARD,
OTC_Protection theProtection=OTCLIB_SAFE
);
OTC_Deque
be used instead.
The OTC_Bucket
class is used internally to hold items in
the list. Thus the OTC_BaseActions
class may be used to provide
actions to be performed, when items are inserted or removed from
the list.
Common functionality for lists holding items of any type, is
factored out into the OTC_BList
base class. The base class
should be consulted as to additional functions which are
available.
OTC_Iterator
, OTC_Modifier
, OTC_Bucket
, OTC_BaseActions
,
OTC_BList