# HashList Class Reference

A hashed object list class. More...

`#include <yateclass.h>`

Inheritance diagram for HashList:

List of all members.

## Public Member Functions

| HashList (unsigned int size=17)
virtual | ~HashList ()
virtual void * | getObject (const String &name) const
unsigned int | length () const
unsigned int | count () const
ObjList * | getList (unsigned int index) const
ObjList * | getHashList (unsigned int hash) const
ObjList * | getHashList (const String &str) const
GenObject * | operator[] (const String &str) const
ObjList * | find (const GenObject *obj) const
ObjList * | find (const String &str) const
ObjList * | append (const GenObject *obj)
GenObject * | remove (GenObject *obj, bool delobj=true)
void | clear ()
bool | resync (GenObject *obj)
bool | resync ()

## Detailed Description

A hashed object list class.

A hashed object list handling class. Objects placed in the list are distributed according to their String hash resulting in faster searches. On the other hand an object placed in a hashed list must never change its String value or it becomes unfindable.

## Constructor & Destructor Documentation

HashList | ( | unsigned int | size = `17` | ) |

Creates a new, empty list.

Parameters:

  | size | Number of classes to divide the objects

virtual ~HashList | ( |  | ) | `[virtual]`

Destroys the list and everything in it.

## Member Function Documentation

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.

unsigned int length | ( |  | ) | const`[inline]`

Get the number of hash entries

Returns:
  Count of hash entries

unsigned int count | ( |  | ) | const

Get the number of non-null objects in the list

Returns:
  Count of items

ObjList* getList | ( | unsigned int | index | ) | const`[inline]`

Retrive one of the internal object lists. This method should be used only to iterate all objects in the list.

Parameters:

  | index | Index of the internal list to retrive

Returns:
  Pointer to the list or NULL

ObjList* getHashList | ( | unsigned int | hash | ) | const`[inline]`

Retrive one of the internal object lists knowing the hash value.

Parameters:

  | hash | Hash of the internal list to retrive

Returns:
  Pointer to the list or NULL if never filled

ObjList* getHashList | ( | const String & | str | ) | const`[inline]`

Retrive one of the internal object lists knowing the String value.

Parameters:

  | str | String whose hash internal list is to retrive

Returns:
  Pointer to the list or NULL if never filled

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

Array-like indexing operator

Parameters:

  | str | String value of the object to locate

Returns:
  Pointer to the first object or NULL

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

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 first found item or NULL

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

Appends an object to the hashed list

Parameters:

  | obj | Pointer to the object to append

Returns:
  A pointer to the inserted list item

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

void clear | ( |  | ) |

Clear the list and optionally delete all contained objects

bool resync | ( | GenObject * | obj | ) |

Resync the list by checking if a stored object belongs to the list according to its hash

Parameters:

  | obj | Object to resync in the list

Returns:
  True if object was in the wrong list and had to be moved

bool resync | ( |  | ) |

Resync the list by checking if all stored objects belong to the list according to their hash

Returns:
  True if at least one object had to be moved

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

- yateclass.h