---
name: "ost_MapTable"
section: "3"
platform: "linux"
package: "libcommoncpp2-doc"
version: "1.8.1-10"
release: "Debian 11 (Bullseye)"
platforms: ["linux"]
url: "https://new.carta.tech/ost_MapTable"
---

# ost\_MapTable(3)

A map table allows for entities to be mapped (hash index) onto it.

## NAME

ost::MapTable - A map table allows for entities to be mapped (hash index) onto it.

## SYNOPSIS

`#include <object.h>`

Inherits **ost::Mutex**.

### Public Member Functions

**MapTable** (unsigned size)\
 Create a map table with a specified number of slots.  virtual **~MapTable** ()\
 Destroy the table, calls cleanup.  virtual unsigned **getIndex** (const char \*id)\
 Get index value from id string.  unsigned **getRange** (void)\
 Return range of this table.  unsigned **getSize** (void)\
 Return the number of object stored in this table.  void \* **getObject** (const char \*id)\
 Lookup an object by id key.  void **addObject** (**MapObject** &obj)\
 Map an object to our table.  void \* **getFirst** ()\
 Get the first element into table, it is returned as void \* for easy re-cast.  void \* **getLast** ()\
 Get the last element into table, it is returned as void \* for easy re-cast.  void \* **getEnd** ()\
 Get table's end, useful for cycle control; it is returned as void \* for easy re-cast.  void \* **getFree** (void)\
 Get next object from managed free list.  void **addFree** (**MapObject** \*obj)\
 Add an object to the managed free list.  **MapTable** & **operator+=** (**MapObject** &obj)\
 An operator to map an object to the table.  virtual **MapTable** & **operator-=** (**MapObject** &obj)\
 This operator is virtual in case it must also add the object to a managed free list.

### Protected Member Functions

void **cleanup** (void)\

### Protected Attributes

unsigned **range**\
 unsigned **count**\
 **MapObject** \*\* **map**\

### Friends

class **MapObject**\
 class **MapIndex**\

### Additional Inherited Members

## Detailed Description

A map table allows for entities to be mapped (hash index) onto it.

Unlike with **Assoc**, This form of map table also allows objects to be removed from the table. This table also includes a mutex lock for thread safety. A free list is also optionally maintained for reusable maps.

**Author**

David Sugar dyfet@gnutelephony.org

Table to hold hash indexed objects.

## Constructor & Destructor Documentation

### ost::MapTable::MapTable (unsigned size)

Create a map table with a specified number of slots.

**Parameters**

*number* of slots.

### virtual ost::MapTable::~MapTable ()` [virtual]`

Destroy the table, calls cleanup.

## Member Function Documentation

### void ost::MapTable::addFree (MapObject \* obj)

Add an object to the managed free list. Some **MapObject**'s may override delete operator to detach and do this.

**Parameters**

*object* to add.

### void ost::MapTable::addObject (MapObject & obj)

Map an object to our table. If it is in another table already, it is removed there first.

**Parameters**

*object* to map.

### void ost::MapTable::cleanup (void)` [protected]`

### void\* ost::MapTable::getEnd ()` [inline]`

Get table's end, useful for cycle control; it is returned as void \* for easy re-cast.

**Returns**

pointer to found object or NULL.

### void\* ost::MapTable::getFirst ()

Get the first element into table, it is returned as void \* for easy re-cast.

**Returns**

pointer to found object or NULL.

### void\* ost::MapTable::getFree (void)

Get next object from managed free list. This returns as a void so it can be recast into the actual type being used in derived **MapObject**'s. A derived version of **MapTable** may well offer an explicit type version of this. Some derived **MapObject**'s may override new to use managed list.

**Returns**

next object on free list.

### virtual unsigned ost::MapTable::getIndex (const char \* id)` [virtual]`

Get index value from id string. This function can be changed as needed to provide better collision avoidence for specific tables.

**Parameters**

*id* string

**Returns**

index slot in table.

### void\* ost::MapTable::getLast ()

Get the last element into table, it is returned as void \* for easy re-cast.

**Returns**

pointer to found object or NULL.

### void\* ost::MapTable::getObject (const char \* id)

Lookup an object by id key. It is returned as void \* for easy re-cast.

**Parameters**

*key* to find.

**Returns**

pointer to found object or NULL.

### unsigned ost::MapTable::getRange (void)` [inline]`

Return range of this table.

**Returns**

table range.

### unsigned ost::MapTable::getSize (void)` [inline]`

Return the number of object stored in this table.

**Returns**

table size.

### MapTable& ost::MapTable::operator+= (MapObject & obj)

An operator to map an object to the table.

**Returns**

table being used.

**Parameters**

*object* being mapped.

### virtual MapTable& ost::MapTable::operator-= (MapObject & obj)` [virtual]`

This operator is virtual in case it must also add the object to a managed free list.

**Returns**

current table.

**Parameters**

*object* entity to remove.

## Friends And Related Function Documentation

### friend class MapIndex` [friend]`

### friend class MapObject` [friend]`

## Member Data Documentation

### unsigned ost::MapTable::count` [protected]`

### MapObject\*\* ost::MapTable::map` [protected]`

### unsigned ost::MapTable::range` [protected]`

## Author

Generated automatically by Doxygen for GNU CommonC++ from the source code.
