abeans::models::acs::baci::util::async::HandleDataStore Class Reference
Collaboration diagram for abeans::models::acs::baci::util::async::HandleDataStore:
[legend]List of all members.
Detailed Description
Data structure for maintaining a collection of elements that can be referred to using handles.
Stores data elements in an array-like structure. Individual elements are addressed using handles, which can be though of as indices in the array. It fulfills these requirements:
-
allocation - a new element can be added and is assigned a unique handle. Allocation is an O(1) operation.
-
deallocation - an element can be removed from the registrar. The handle is freed, and can be assigned to another element during allocation at a later time. Deallocation is an O(1) operation.
-
retrieval - a reference to the element can be retrieved for reading and writing. Retrieval is an O(1) operation.
-
enumeration - elements stored can be traversed from first to last. Costs of acquiring first, last, next and previous element of the array are O(1).
This ADT is suitable for enumerating resources that are frequently allocated, retrieved and deallocated without losing large amounts of memory and/or time.
This is essentially a doubly-linked list of elements, which are placed in an array. Each element has assigned a handle (the index in the array), and handles of the elements that come previous and next to it. There are actually two chains of elements: the free element chain, which contains all elements that have not yet been allocated, and the allocated element chain. Free element chain is cyclic (passing the end resumes at the beginning), and contains the element with the handle 0. The allocated element chain is not cyclic: it starts with the element that was first allocated, and ends with the one that was last allocated.
- Author:
- Matej Sekoranja (matej.sekoranja@cosylab.com)
Klemen Zagar (klemen.zagar@cosylab.com)
- Version:
- @VERSION@
Constructor & Destructor Documentation
abeans::models::acs::baci::util::async::HandleDataStore::HandleDataStore |
( |
|
) |
[inline] |
|
abeans::models::acs::baci::util::async::HandleDataStore::HandleDataStore |
( |
int |
initialCapacity |
) |
[inline] |
|
|
Constructs a HandleDataStore with zero offset.
- Parameters:
-
| initialCapacity | the initial capacity of the list. |
- Exceptions:
-
| IllegalArgumentException | if the specified initial capacity is negative |
|
abeans::models::acs::baci::util::async::HandleDataStore::HandleDataStore |
( |
int |
initialCapacity, |
|
|
int |
maxCapacity |
|
) |
[inline] |
|
|
Constructs a HandleDataStore .
Creates a HandleDataStore and allocates enough space to hold initialCapacity elements.
- Parameters:
-
| initialCapacity | the initial capacity of the list. |
- Exceptions:
-
| IllegalArgumentException | if the specified initial capacity is negative |
|
Member Function Documentation
void abeans::models::acs::baci::util::async::HandleDataStore::ackAllocation |
( |
int |
handle |
) |
[inline] |
|
|
Completes allocation of handle, to be used to completely allocate handle after preallocation.
- Parameters:
-
| handle | handle to be completely allocated |
|
int abeans::models::acs::baci::util::async::HandleDataStore::allocate |
( |
int |
handle, |
|
|
boolean |
preallocate |
|
) |
[inline] |
|
|
Allocate an element with given handle in this HandleDataStore .
Assures that this ADT is capable of holding yet another element and returns a handle to it.
- Parameters:
-
| handle | handle to be allocated |
| preallocate | if true element is not really allocated (only reserved, listing through the ADT will skip preallocated elements), to completely allocate preallocated elements use ackAllocation(handle) or canceled by deallocate(handle, true) method. |
- Returns:
- newly allocated handle if allocation was successfull, otherwise
0
- See also:
- deallocate
|
int abeans::models::acs::baci::util::async::HandleDataStore::allocate |
( |
int |
handle |
) |
[inline] |
|
|
Allocate an element in this HandleDataStore .
- Parameters:
-
| handle | hanlde be allocated |
- Returns:
- newly allocated handle if allocation was successfull, otherwise
0
- See also:
- deallocate
|
int abeans::models::acs::baci::util::async::HandleDataStore::allocate |
( |
|
) |
[inline] |
|
|
Allocate an element in this HandleDataStore .
- Returns:
- newly allocated handle if allocation was successfull, otherwise
0
- See also:
- deallocate
|
|
Returns the capacity of this ADT.
Capacity is the maximum number of elements that this ADT can hold before resizing itself. - Returns:
- the capacity of this ADT.
|
void abeans::models::acs::baci::util::async::HandleDataStore::deallocate |
( |
int |
handle, |
|
|
boolean |
depreallocate |
|
) |
[inline] |
|
|
Deallocate an element with the given handle.
The element and its corresponding handle can be reused at a later call to allocate .
- Parameters:
-
| handle | the handle of the element to deallocate. |
| depreallocate | has to be true , if handle was only preallocated |
- See also:
- allocate
|
void abeans::models::acs::baci::util::async::HandleDataStore::deallocate |
( |
int |
handle |
) |
[inline] |
|
|
Deallocate an element with the given handle.
The element and its corresponding handle can be reused at a later call to allocate .
- Parameters:
-
| handle | the handle of the element to deallocate. |
- See also:
- allocate
|
|
Return the handle of the first element in this ADT.
- Returns:
- the handle of the element that was the first one to get allocated and has not yet been deallocated. Useful for determining the starting point when enumerating the entire ADT.
- See also:
- next
previous
last
|
Object abeans::models::acs::baci::util::async::HandleDataStore::get |
( |
int |
handle |
) |
[inline] |
|
|
Returns the element with the specified handle.
NOTE: handle is not checked, if it is valid.
- Parameters:
-
| handle | handle of the element |
- Exceptions:
-
| IndexOutOfBoundsException | if handle is out of bounds. |
|
boolean abeans::models::acs::baci::util::async::HandleDataStore::isAllocated |
( |
int |
handle |
) |
[inline] |
|
|
Determines whether a given handle is allocated.
- Parameters:
-
| handle | the handle in question. |
- Returns:
true if an element with handle handle already exists in this ADT, false otherwise.
|
boolean abeans::models::acs::baci::util::async::HandleDataStore::isEmpty |
( |
|
) |
[inline] |
|
|
Tests if this list has no elements.
- Returns:
true if this list has no elements, false otherwise.
|
|
Return the handle of the last element in this ADT.
- Returns:
- the handle of the element that was the last one to get allocated and has not yet been deallocated. Useful for determining the starting point when enumerating the entire ADT.
- See also:
- next
previous
first
|
int abeans::models::acs::baci::util::async::HandleDataStore::next |
( |
int |
handle |
) |
[inline] |
|
|
Return the handle of the next element in this ADT.
- Parameters:
-
| handle | handle of the element whose sucessor's handle we wish to acquire. |
- Returns:
- the handle of the element that follows the one whose handle is
handle . If handle is the last element, 0 is returned.
|
int abeans::models::acs::baci::util::async::HandleDataStore::preallocate |
( |
|
) |
[inline] |
|
int abeans::models::acs::baci::util::async::HandleDataStore::previous |
( |
int |
handle |
) |
[inline] |
|
|
Return the handle of the previous element in this ADT.
- Parameters:
-
| handle | handle of the element whose predecessor's handle we wish to acquire. |
- Returns:
- the handle of the element that precedes the one whose handle is
handle . If handle is the first element, 0 is returned.
|
void abeans::models::acs::baci::util::async::HandleDataStore::set |
( |
int |
handle, |
|
|
Object |
data |
|
) |
[inline] |
|
|
Sets the element with the specified handle.
NOTE: handle is not checked, if it is valid.
- Parameters:
-
| handle | handle of the element |
| data | data to be set |
- Exceptions:
-
| IndexOutOfBoundsException | if handle is out of bounds. |
|
void abeans::models::acs::baci::util::async::HandleDataStore::setCapacity |
( |
int |
newCapacity |
) |
[inline] |
|
|
Sets the capacity of this HandleDataStore instance to hold newCapacity elements;.
- Parameters:
-
| newCapacity | the desired capacity. |
|
|
Returns the number of elements in this ADT.
- Returns:
- the number of elements in this ADT.
|
String abeans::models::acs::baci::util::async::HandleDataStore::toString |
( |
|
) |
[inline] |
|
|
Returns a single-line rendition of this instance into text.
- Returns:
- internal state of this instance
|
Member Data Documentation
|
Default maximum capacity of this ADT. |
|
Handle of the first non-free element. |
|
Handle of the last non-free element. |
|
Maximum capacity of this ADT. |
The documentation for this class was generated from the following file:
Generated on Thu Apr 30 02:43:09 2009 for ACS Java API by
1.3.8