ReusableVector< DATA_TYPE > Class Template Reference

Create a vector of DATA_TYPE that reuses created objects to save on memory reallocations. More...

`#include <ReusableVector.h>`

Collaboration diagram for ReusableVector< DATA_TYPE >:
[legend]

## Public Member Functions

void | reset ()
| Clear the vector contents. More...
void | clear ()
| Clear the vector contents. More...
DATA_TYPE & | getNextEmpty ()
| Get a reference to a new entry to be populated so the user can directly populate it rather than having to copy into it. More...
DATA_TYPE & | get (unsigned int index) const
| Get a reference to the data at the specified index. More...
int | size () const
| Return the number of populated entries in the vector. More...
void | rmLast ()

## Protected Attributes

std::vector< DATA_TYPE * > | myCont
unsigned int | myNextEmpty

## Detailed Description

template<class DATA_TYPE>
class ReusableVector< DATA_TYPE >

Create a vector of DATA_TYPE that reuses created objects to save on memory reallocations.

DATA_TYPE must have a function called clear() that is used to reset it for reuse.

Definition at line 30 of file ReusableVector.h.

## Constructor & Destructor Documentation

## ReusableVector()

template<class DATA_TYPE >

ReusableVector< DATA_TYPE >::ReusableVector | ( |  | ) |

inline

Definition at line 33 of file ReusableVector.h.

: myCont(), myNextEmpty(0) {}

## ~ReusableVector()

template<class DATA_TYPE >

ReusableVector< DATA_TYPE >::~ReusableVector

virtual

Definition at line 67 of file ReusableVector.h.

{
for(unsigned int i = 0; i < myCont.size(); i++)
{
// Delete all the entries.
delete myCont[i];
myCont[i] = NULL;
}
myCont.clear();
myNextEmpty = 0;
}

## Member Function Documentation

## clear()

template<class DATA_TYPE >

void ReusableVector< DATA_TYPE >::clear | ( |  | ) |

inline

Clear the vector contents.

Definition at line 39 of file ReusableVector.h.

{reset();}
ReusableVector::reset
void reset()
Clear the vector contents.
Definition: ReusableVector.h:81

References ReusableVector< DATA_TYPE >::reset().

## get()

template<class DATA_TYPE >

DATA_TYPE & ReusableVector< DATA_TYPE >::get | ( | unsigned int | index | ) | const

Get a reference to the data at the specified index.

Throws an exception if the index is out of range.

Definition at line 117 of file ReusableVector.h.

{
if((index < myNextEmpty) && (index >= 0))
{
// index is a valid position, so return that data.
if(myCont[index] == NULL)
{
throw(std::runtime_error("ReusableVector::get BUG, found a null pointer."));
}
return(*myCont[index]);
}
// Not set in the vector, so throw an exception.
throw(std::runtime_error("ReusableVector::get called with out of range index."));
// return(myCont[0]);
}

## getNextEmpty()

template<class DATA_TYPE >

DATA_TYPE & ReusableVector< DATA_TYPE >::getNextEmpty

Get a reference to a new entry to be populated so the user can directly populate it rather than having to copy into it.

Definition at line 90 of file ReusableVector.h.

{
if(myNextEmpty == myCont.size())
{
// We are at the end of the available entries, so add a new one.
myCont.resize(myCont.size() + 1);
// Create a new entry.
myCont[myNextEmpty] = new DATA_TYPE;
}
else
{
// myNextEmpty is an element, and not the end.
// So, clear out the data.
myCont[myNextEmpty]->clear();
}
DATA_TYPE* returnVal = myCont[myNextEmpty];
// Increment next empty to the next element.
++myNextEmpty;
// return the element to be used.
return(*returnVal);
}

## reset()

template<class DATA_TYPE >

void ReusableVector< DATA_TYPE >::reset

Clear the vector contents.

Definition at line 81 of file ReusableVector.h.

{
// Set the next empty element to be the first one on the list.
// That means there are none used.
myNextEmpty = 0;
}

Referenced by ReusableVector< DATA_TYPE >::clear().

## rmLast()

template<class DATA_TYPE >

void ReusableVector< DATA_TYPE >::rmLast

Definition at line 135 of file ReusableVector.h.

{
if(myNextEmpty > 0)
{
--myNextEmpty;
}
}

## size()

template<class DATA_TYPE >

int ReusableVector< DATA_TYPE >::size | ( |  | ) | const

inline

Return the number of populated entries in the vector.

Definition at line 51 of file ReusableVector.h.

{return(myNextEmpty);}

## Member Data Documentation

## myCont

template<class DATA_TYPE >

std::vector<DATA_TYPE*> ReusableVector< DATA_TYPE >::myCont

protected

Definition at line 56 of file ReusableVector.h.

## myNextEmpty

template<class DATA_TYPE >

unsigned int ReusableVector< DATA_TYPE >::myNextEmpty

protected

Definition at line 57 of file ReusableVector.h.

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

- general/ReusableVector.h