Yate: ObjList Class Reference

Yate

Public Member Functions | Static Public Member Functions | List of all members
ObjList Class Reference

An object list class. More...

`#include <yateclass.h>`

Inheritance diagram for ObjList:

## Public Member Functions
| ObjList ()
virtual | ~ObjList ()
virtual void * | getObject (const String &name) const
unsigned int | length () const
unsigned int | count () const
GenObject * | get () const
GenObject * | set (const GenObject *obj, bool delold=true)
ObjList * | next () const
ObjList * | last () const
ObjList * | skipNull () const
ObjList * | skipNext () const
GenObject * | at (int index) const
ObjList * | operator+ (int index) const
GenObject * | operator[] (signed int index) const
GenObject * | operator[] (unsigned int index) const
GenObject * | operator[] (const String &str) const
ObjList * | find (const GenObject *obj) const
GenObject * | findObj (const GenObject *obj) const
ObjList * | find (const String &str) const
int | index (const GenObject *obj) const
int | index (const String &str) const
ObjList * | insert (const GenObject *obj, bool compact=true)
ObjList * | append (const GenObject *obj, bool compact=true)
ObjList * | setUnique (const GenObject *obj, bool compact=true)
GenObject * | remove (bool delobj=true)
GenObject * | remove (GenObject *obj, bool delobj=true)
GenObject * | remove (const String &str, bool delobj=true)
void | clear ()
void | compact ()
bool | autoDelete ()
void | setDelete (bool autodelete)
GenObject * | find (Lockable &lock, const GenObject *obj, bool ref=false, long maxwait=-1) const
GenObject * | find (Lockable &lock, const String &str, bool ref=false, long maxwait=-1) const
ObjList * | insert (Lockable &lock, const GenObject *obj, bool autoDelete=true, long maxwait=-1, bool compact=true)
ObjList * | append (Lockable &lock, const GenObject *obj, bool autoDelete=true, long maxwait=-1, bool compact=true)
ObjList * | setUnique (Lockable &lock, const GenObject *obj, bool autoDelete=true, long maxwait=-1, bool compact=true)
GenObject * | remove (Lockable &lock, bool delobj=true, long maxwait=-1)
GenObject * | remove (Lockable &lock, GenObject *obj, bool delobj=true, long maxwait=-1)
GenObject * | remove (Lockable &lock, const String &str, bool delobj=true, long maxwait=-1)
void | clear (Lockable &lock, long maxwait=-1)
void | compact (Lockable &lock, long maxwait=-1)
ObjList * | move (ObjList *dest, Lockable *lock=0, long maxwait=-1)
ObjList * | copy (ObjList *dest, Lockable *lock=0, long maxwait=-1) const
void | sort (int(*callbackCompare)(GenObject *obj1, GenObject *obj2, void *context), void *context=0)
Public Member Functions inherited from GenObject
| GenObject ()
virtual | ~GenObject ()
virtual bool | alive () const
virtual void | destruct ()
virtual const String & | toString () const
virtual const String & | traceId () const
NamedCounter * | getObjCounter () const
NamedCounter * | setObjCounter (NamedCounter *counter)

## Static Public Member Functions
static const ObjList & | empty ()
Static Public Member Functions inherited from GenObject
static void * | getObject (const String &name, const GenObject *obj)
static bool | getObjCounting ()
static void | setObjCounting (bool enable)
static NamedCounter * | getObjCounter (const String &name, bool create=true)
static ObjList & | getObjCounters ()

## Detailed Description

An object list class.

A simple single-linked object list handling class

## Constructor & Destructor Documentation

## ◆ ObjList()

ObjList | ( |  | ) |

Creates a new, empty list.

## ◆ ~ObjList()

virtual ~ObjList | ( |  | ) |
| virtual

Destroys the list and everything in it.

## Member Function Documentation

## ◆ append() [1/2]

ObjList * append | ( | const GenObject * | obj,
|  | bool | compact = true )

Append an object to the end of the list

Parameters

  obj | Pointer to the object to append
  compact | True to replace NULL values in list if possible

Returns
  A pointer to the inserted list item

Referenced by MimeLinesBody::addLine(), ClientChannel::addSlave(), MimeMultipartBody::appendBody(), and MimeBody::appendHdr().

## ◆ append() [2/2]

ObjList * append | ( | Lockable & | lock,
|  | const GenObject * | obj,
|  | bool | autoDelete = true,
|  | long | maxwait = -1,
|  | bool | compact = true )

Append an object to the end of the list

Parameters

  lock | Lockable to protect the operation. A RWLock will be write locked
  obj | Pointer to the object to set
  autoDelete | Object autoDelete flag
  maxwait | Time in microseconds to wait for locking, -1 wait forever
  compact | True to replace NULL values in list if possible

Returns
  A pointer to the inserted list item

## ◆ at()

GenObject * at | ( | int | index | ) | const

Get the object at a specific index in list

Parameters

  index | Index of the object to retrieve

Returns
  Pointer to the object or NULL

## ◆ autoDelete()

bool autoDelete | ( |  | ) |
| inline

Get the automatic delete flag

Returns
  True if will delete on destruct, false otherwise

## ◆ clear() [1/2]

void clear | ( |  | ) |

Clear the list and optionally delete all contained objects

Referenced by XmlFragment::clearChildren().

## ◆ clear() [2/2]

void clear | ( | Lockable & | lock,
|  | long | maxwait = -1 )

Safely clear the list and optionally delete all contained objects

Parameters

  lock | Optional Lockable to protect the operation. A RWLock will be write locked
  maxwait | Time in microseconds to wait for locking, -1 wait forever

## ◆ compact() [1/2]

void compact | ( |  | ) |

Remove all empty objects in the list

## ◆ compact() [2/2]

void compact | ( | Lockable & | lock,
|  | long | maxwait = -1 )

Safely remove all empty objects in the list

Parameters

  lock | Optional Lockable to protect the operation. A RWLock will be write locked
  maxwait | Time in microseconds to wait for locking, -1 wait forever

## ◆ copy()

ObjList * copy | ( | ObjList * | dest,
|  | Lockable * | lock = 0,
|  | long | maxwait = -1 ) const

Reference all items in this into another one

Parameters

  dest | Destination list. Create a new one if not given
  lock | Optional Lockable to protect the operation. A RWLock will be read locked
  maxwait | Time in microseconds to wait for locking, -1 wait forever

Returns
  ObjList pointer ('dest' if given). The caller is owning the new list

## ◆ count()

unsigned int count | ( |  | ) | const

Get the number of non-null objects in the list

Returns
  Count of items

Referenced by GenericVector< Obj >::append(), MatchingItemList::append(), GenericVector< Obj >::assign(), Configuration::count(), and ClientChannel::slavesCount().

## ◆ empty()

static const ObjList & empty | ( |  | ) |
| static

A static empty object list

Returns
  Reference to a static empty list

Referenced by XmlParent::getChildren().

## ◆ find() [1/4]

ObjList * find | ( | const GenObject * | obj | ) | const

Get the item in the list that holds an object

Parameters

  obj | Pointer to the object to search for

Returns
  Pointer to the found item or NULL

Referenced by ClientChannel::addSlave(), UIFactory::canBuild(), ClientDir::findChildName(), XmlElement::findNextChild(), and NamedInt::lookup().

## ◆ find() [2/4]

ObjList * find | ( | const String & | str | ) | const

Get the item in the list that holds an object by String value

Parameters

  str | String value (toString) of the object to search for

Returns
  Pointer to the found item or NULL

## ◆ find() [3/4]

GenObject * find | ( | Lockable & | lock,
|  | const GenObject * | obj,
|  | bool | ref = false,
|  | long | maxwait = -1 ) const

Get the item in the list that holds an object

Parameters

  lock | Lockable to protect the operation. A RWLock will be read locked
  obj | Pointer to the object to search for
  ref | True to reference a found RefObject. the method will return NULL if a found object is not a RefObject one
  maxwait | Time in microseconds to wait for locking, -1 wait forever

Returns
  Pointer to the found item or NULL

## ◆ find() [4/4]

GenObject * find | ( | Lockable & | lock,
|  | const String & | str,
|  | bool | ref = false,
|  | long | maxwait = -1 ) const

Get the item in the list that holds an object by String value

Parameters

  lock | Lockable to protect the operation. A RWLock will be read locked
  str | String value (toString) of the object to search for
  ref | True to reference a found RefObject. the method will return NULL if a found object is not a RefObject one
  maxwait | Time in microseconds to wait for locking, -1 wait forever

Returns
  Pointer to the found item or NULL

## ◆ findObj()

GenObject * findObj | ( | const GenObject * | obj | ) | const
| inline

Find an object by pointer

Parameters

  obj | Pointer to the object to search for

Returns
  Pointer to the object or NULL

References get().

## ◆ get()

GenObject * get | ( |  | ) | const
| inline

Get the object associated to this list item

Returns
  Pointer to the object or NULL

Referenced by ClientDir::findChildName(), findObj(), XmlFragment::getText(), MessageDispatcher::hasHandlers(), MessageDispatcher::hasHooks(), MessageDispatcher::hasMessages(), NamedInt::lookup(), and operator[]().

## ◆ getObject()

virtual void * getObject | ( | const String & | name | ) | const
| virtual

Get a pointer to a derived class given that class name

Parameters

  name | Name of the class we are asking for

Returns
  Pointer to the requested class or NULL if this object doesn't implement it

Reimplemented from GenObject.

## ◆ index() [1/2]

int index | ( | const GenObject * | obj | ) | const

Get the position in list of a GenObject by a pointer to it

Parameters

  obj | Pointer to the object to search for

Returns
  Index of object in list, -1 if not found

## ◆ index() [2/2]

int index | ( | const String & | str | ) | const

Get the position in list of the first GenObject with a given value

Parameters

  str | String value (toString) of the object to search for

Returns
  Index of object in list, -1 if not found

## ◆ insert() [1/2]

ObjList * insert | ( | const GenObject * | obj,
|  | bool | compact = true )

Insert an object at this point

Parameters

  obj | Pointer to the object to insert
  compact | True to replace NULL values in list if possible

Returns
  A pointer to the inserted list item

## ◆ insert() [2/2]

ObjList * insert | ( | Lockable & | lock,
|  | const GenObject * | obj,
|  | bool | autoDelete = true,
|  | long | maxwait = -1,
|  | bool | compact = true )

Insert an object at this point

Parameters

  lock | Lockable to protect the operation. A RWLock will be write locked
  obj | Pointer to the object to set
  autoDelete | Object autoDelete flag
  maxwait | Time in microseconds to wait for locking, -1 wait forever
  compact | True to replace NULL values in list if possible

Returns
  A pointer to the inserted list item

## ◆ last()

ObjList * last | ( |  | ) | const

Get the last item in the list

Returns
  Pointer to the last item in list

## ◆ length()

unsigned int length | ( |  | ) | const

Get the number of elements in the list

Returns
  Count of items

Referenced by Configuration::sections().

## ◆ move()

ObjList * move | ( | ObjList * | dest,
|  | Lockable * | lock = 0,
|  | long | maxwait = -1 )

Move or copy this list into another one autoDelete() is set in destination as found for each item in list

Parameters

  dest | Destination list. Create a new one if not given
  lock | Optional Lockable to protect the operation. A RWLock will be write locked
  maxwait | Time in microseconds to wait for locking, -1 wait forever

Returns
  ObjList pointer ('dest' if given). The caller is owning the new list

## ◆ next()

ObjList * next | ( |  | ) | const
| inline

Get the next item in the list

Returns
  Pointer to the next item in list or NULL

Referenced by MessageDispatcher::hasHandlers(), MessageDispatcher::hasHooks(), and MessageDispatcher::hasMessages().

## ◆ operator+()

ObjList * operator+ | ( | int | index | ) | const

Pointer-like indexing operator

Parameters

  index | Index of the list item to retrieve

Returns
  Pointer to the list item or NULL

## ◆ operator[]() [1/3]

GenObject * operator[] | ( | const String & | str | ) | const
| inline

Find an object by name

Parameters

  str | String value of the object to locate

Returns
  Pointer to the object or NULL

References get().

## ◆ operator[]() [2/3]

GenObject * operator[] | ( | signed int | index | ) | const
| inline

Array-like indexing operator with signed parameter

Parameters

  index | Index of the object to retrieve

Returns
  Pointer to the object or NULL

## ◆ operator[]() [3/3]

GenObject * operator[] | ( | unsigned int | index | ) | const
| inline

Array-like indexing operator with unsigned parameter

Parameters

  index | Index of the object to retrieve

Returns
  Pointer to the object or NULL

## ◆ remove() [1/6]

GenObject * remove | ( | bool | delobj = true | ) |

Delete this list item

Parameters

  delobj | True to delete the object (default)

Returns
  Pointer to the object if not destroyed

Referenced by MatchingItemList::append(), XmlFragment::pop(), HashList::remove(), HashList::remove(), MimeMultipartBody::removeBody(), MimeBody::removeHdr(), and ClientChannel::removeSlave().

## ◆ remove() [2/6]

GenObject * remove | ( | const String & | str,
|  | bool | delobj = true )

Delete the first list item that holds an object with a iven value

Parameters

  str | String value (toString) of the object to remove
  delobj | True to delete the object (default)

Returns
  Pointer to the object if not destroyed

## ◆ remove() [3/6]

GenObject * remove | ( | GenObject * | obj,
|  | bool | delobj = true )

Delete the list item that holds a given object

Parameters

  obj | Object to search in the list
  delobj | True to delete the object (default)

Returns
  Pointer to the object if not destroyed

## ◆ remove() [4/6]

GenObject * remove | ( | Lockable & | lock,
|  | bool | delobj = true,
|  | long | maxwait = -1 )

Delete this list item

Parameters

  lock | Optional Lockable to protect the operation. A RWLock will be write locked
  delobj | True to delete the object (default)
  maxwait | Time in microseconds to wait for locking, -1 wait forever

Returns
  Pointer to the object if not destroyed

## ◆ remove() [5/6]

GenObject * remove | ( | Lockable & | lock,
|  | const String & | str,
|  | bool | delobj = true,
|  | long | maxwait = -1 )

Delete the first list item that holds an object with a iven value

Parameters

  lock | Optional Lockable to protect the operation. A RWLock will be write locked
  str | String value (toString) of the object to remove
  delobj | True to delete the object (default)
  maxwait | Time in microseconds to wait for locking, -1 wait forever

Returns
  Pointer to the object if not destroyed

## ◆ remove() [6/6]

GenObject * remove | ( | Lockable & | lock,
|  | GenObject * | obj,
|  | bool | delobj = true,
|  | long | maxwait = -1 )

Delete the list item that holds a given object

Parameters

  lock | Optional Lockable to protect the operation. A RWLock will be write locked
  obj | Object to search in the list
  delobj | True to delete the object (default)
  maxwait | Time in microseconds to wait for locking, -1 wait forever

Returns
  Pointer to the object if not destroyed

## ◆ set()

GenObject * set | ( | const GenObject * | obj,
|  | bool | delold = true )

Set the object associated to this list item

Parameters

  obj | Pointer to the new object to set
  delold | True to delete the old object (default)

Returns
  Pointer to the old object if not destroyed

## ◆ setDelete()

void setDelete | ( | bool | autodelete | ) |
| inline

Set the automatic delete flag

Parameters

  autodelete | True to delete on destruct, false otherwise

## ◆ setUnique() [1/2]

ObjList * setUnique | ( | const GenObject * | obj,
|  | bool | compact = true )

Set unique entry in this list. If not found, append it to the list

Parameters

  obj | Pointer to the object to uniquely set in the list
  compact | True to replace NULL values in list if possible

Returns
  A pointer to the set list item

## ◆ setUnique() [2/2]

ObjList * setUnique | ( | Lockable & | lock,
|  | const GenObject * | obj,
|  | bool | autoDelete = true,
|  | long | maxwait = -1,
|  | bool | compact = true )

Set unique entry in this list. If not found, append it to the list

Parameters

  lock | Lockable to protect the operation. A RWLock will be write locked
  obj | Pointer to the object to set
  autoDelete | Object autoDelete flag
  maxwait | Time in microseconds to wait for locking, -1 wait forever
  compact | True to replace NULL values in list if possible

Returns
  A pointer to the set list item

## ◆ skipNext()

ObjList * skipNext | ( |  | ) | const

Advance in the list skipping over NULL holding items

Returns
  Pointer to the next non NULL holding item in list or NULL

Referenced by XmlElement::findNextChild(), XmlFragment::getText(), Module::itemComplete(), and NamedInt::lookupName().

## ◆ skipNull()

ObjList * skipNull | ( |  | ) | const

Skip over NULL holding items in the list

Returns
  Pointer to the first non NULL holding item in list or NULL

Referenced by MatchingItemList::append(), DataTranslator::getConsumers(), XmlParent::hasChildren(), Module::itemComplete(), NamedInt::lookupName(), ClientContact::online(), and NamedIterator::operator=().

## ◆ sort()

void sort | ( | int(* | callbackCompare )(GenObject *obj1, GenObject *obj2, void *context),
|  | void * | context = 0 )

Sort this list

Parameters

  callbackCompare | pointer to a callback function that should compare two objects.
          obj1 First object of the comparation
          obj2 Second object of the comparation
          context Data context
          return 0 if the objects are equal; positive value if obj2 > obj1; negative value if obj1 > obj2
          Note: the function should expect receiving null pointers
  context | Context data.

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

- yateclass.h