For MIDOUBLEARRAY defn. More...
#include <mi32/doublear.h>

Public Member Functions | |
| DOUBLE_ARRAY (const DOUBLE_ARRAY< _CT > &rhs) | |
| DOUBLE_ARRAY () | |
| ~DOUBLE_ARRAY () | |
| void | AddRef () |
| ERRVALUE | Append (const _CT *items, unsigned numitems) |
| ERRVALUE | Append (const _CT &item) |
| ERRVALUE | Assign (const _CT *items, int numitems) |
| void | Attach (MIDOUBLEARRAY &items, int numitems) |
| void | Clear () |
| void | ClearItems (int start=0, int end=-1) |
| ERRVALUE | Copy (const DOUBLE_ARRAY< _CT > &rhs) |
| void | DeleteItem (int index) |
| operator _CT * () | |
| operator const _CT * () const | |
| bool | operator!= (const DOUBLE_ARRAY< _CT > &rhs) const |
| DOUBLE_ARRAY< _CT > & | operator= (const DOUBLE_ARRAY< _CT > &rhs) |
| bool | operator== (const DOUBLE_ARRAY< _CT > &rhs) const |
| template<typename _IDXTYPE > | |
| _CT & | operator[] (_IDXTYPE index) |
| template<typename _IDXTYPE > | |
| const _CT & | operator[] (_IDXTYPE index) const |
| void | Detach (MIDOUBLEARRAY &items) |
| void | Free () |
| void | GetItems (_CT *items, int numitems, int firstitem=0) const |
| const _CT & | GetLast () const |
| int | GetMaxItems () const |
| int | GetNumItems () const |
| UINT32 | GetRefCount () const |
| int | GetSizeInBytes () const |
| bool | IsEmpty () const |
| void | Release () |
| void | RemoveItem (INT32 item) |
| ERRVALUE | Reserve (int newmaxitems, bool clear=false) |
| void | ReserveExc (int newmaxitems, bool clear=false) |
| ERRVALUE | Resize (int numitems, bool keepold=true, bool clear=false) |
| void | ResizeExc (int numitems, bool keepold=true, bool clear=false) |
| void | Reverse () |
| ERRVALUE | SetItems (int firstitem, const _CT *items, int numitems) |
| void | Sort (int(*CompFunc)(_CT *, _CT *, void *), void *data=0) |
| void | Swap (DOUBLE_ARRAY< _CT > &rhs) |
| void | SwapBytes () |
| void | TransferOwnerFrom (DOUBLE_ARRAY< _CT > &rhs) |
| template<class _T2 > | |
| void | TransferOwnerFromExt (DOUBLE_ARRAY< _T2 > &rhs) |
For MIDOUBLEARRAY defn.
For SwapBytes() defn For memset/memcpy Double array template.
This template is designed to contain an array of items which can be allocated using MmAlloc/MmRealloc. The primary purpose of this template is to replace allocated arrays where direct access to both array elements and the ability to access a pointer to the first element (as for a C array) is required.
For maximum efficiency, only minimal validation of access to array elements is performed. No initialization of array items is performed by the template.
This class is also designed to handle the 4 byte off alignment issue in regards to systems that have a 4 byte allocation granularity.
Best if used as DOUBLE_ARRAY<double>, DOUBLE_ARRAY<DPOINT2D>, DOUBLE_ARRAY<DPOINT3D>, DOUBLE_ARRAY<DRECT2D>, and DOUBLE_ARRAY<DRECT3D>
| DOUBLE_ARRAY< _CT >::DOUBLE_ARRAY | ( | ) | [inline] |
Default constructor.
| DOUBLE_ARRAY< _CT >::DOUBLE_ARRAY | ( | const DOUBLE_ARRAY< _CT > & | rhs | ) | [inline] |
Copy constructor.
| DOUBLE_ARRAY< _CT >::~DOUBLE_ARRAY | ( | ) | [inline] |
| void DOUBLE_ARRAY< _CT >::AddRef | ( | ) | [inline] |
Increment reference count.
| ERRVALUE DOUBLE_ARRAY< _CT >::Append | ( | const _CT * | items, | |
| unsigned | numitems | |||
| ) | [inline] |
Append items from C array.
| items | Items to append | |
| numitems | Number of items to append |
| ERRVALUE DOUBLE_ARRAY< _CT >::Append | ( | const _CT & | item | ) | [inline] |
Append item to end of array, extending if necessary.
| ERRVALUE DOUBLE_ARRAY< _CT >::Assign | ( | const _CT * | items, | |
| int | numitems | |||
| ) | [inline] |
Assign from C array, reserving space if needed.
Resizes the array to the specified number of items.
| items | Items to copy to array | |
| numitems | Number of items to copy |
| void DOUBLE_ARRAY< _CT >::Attach | ( | MIDOUBLEARRAY & | items, | |
| int | numitems | |||
| ) | [inline] |
Attach a buffer to the DOUBLE_ARRAY.
After passing a buffer to Attach(), the DOUBLE_ARRAY "<b>owns</b>" the buffer and will free it in its destructor.
| items | Reference to a pointer to the templated data type. | |
| numitems | The number of items being attached |
The reason it's a reference is that after recording the pointer, Attach() will set your pointer to 0. This will prevent you from accidently freeing a pointer you no longer own. If you want it back, call the Detach() method
| void DOUBLE_ARRAY< _CT >::Clear | ( | ) | [inline] |
Clear the array, does not free resources.
| void DOUBLE_ARRAY< _CT >::ClearItems | ( | int | start = 0, |
|
| int | end = -1 | |||
| ) | [inline] |
Clear items in the array.
| end | Default -1, use number of items |
| ERRVALUE DOUBLE_ARRAY< _CT >::Copy | ( | const DOUBLE_ARRAY< _CT > & | rhs | ) | [inline] |
Copy the contents of another DOUBLE_ARRAY.
Same as assignment, but returns an error code instead of throwing an exception.
| void DOUBLE_ARRAY< _CT >::DeleteItem | ( | int | index | ) | [inline] |
Delete item in the array.
Use with care as this is not efficient for large arrays.
| void DOUBLE_ARRAY< _CT >::Detach | ( | MIDOUBLEARRAY & | items | ) | [inline] |
Detach the buffer from the DOUBLE_ARRAY.
This turns ownership of the buffer over to the caller, who is then responsibile for seeing that it gets disposed of. After calling Detach(), the DOUBLE_ARRAY will behave as if it had just been constructed. In other words, it will be a NULL pointer pointing to 0 items. This means that if you want to know how many items are in the array returned, you'd better find out before} you call Detach()!
| void DOUBLE_ARRAY< _CT >::Free | ( | ) | [inline] |
Free the array.
| void DOUBLE_ARRAY< _CT >::GetItems | ( | _CT * | items, | |
| int | numitems, | |||
| int | firstitem = 0 | |||
| ) | const [inline] |
Get items from array.
| items | Buffer to hold items | |
| numitems | Number of items to copy | |
| firstitem | First array item to retrieve |
| const _CT& DOUBLE_ARRAY< _CT >::GetLast | ( | ) | const [inline] |
Get last item in array.
Does not verify that array is non-empty.
| int DOUBLE_ARRAY< _CT >::GetMaxItems | ( | ) | const [inline] |
Get maximum number of items in array.
| int DOUBLE_ARRAY< _CT >::GetNumItems | ( | ) | const [inline] |
Get number of items in array.
| UINT32 DOUBLE_ARRAY< _CT >::GetRefCount | ( | ) | const [inline] |
Get current reference count.
| int DOUBLE_ARRAY< _CT >::GetSizeInBytes | ( | ) | const [inline] |
Get size of array required to hold current number of items in bytes.
| bool DOUBLE_ARRAY< _CT >::IsEmpty | ( | ) | const [inline] |
Determine if array is empty.
| DOUBLE_ARRAY< _CT >::operator _CT * | ( | ) | [inline] |
Cast to array of template type.
| DOUBLE_ARRAY< _CT >::operator const _CT * | ( | ) | const [inline] |
Cast to const array of template type.
| bool DOUBLE_ARRAY< _CT >::operator!= | ( | const DOUBLE_ARRAY< _CT > & | rhs | ) | const [inline] |
Inequality operator.
| DOUBLE_ARRAY<_CT>& DOUBLE_ARRAY< _CT >::operator= | ( | const DOUBLE_ARRAY< _CT > & | rhs | ) | [inline] |
Assignment.
| bool DOUBLE_ARRAY< _CT >::operator== | ( | const DOUBLE_ARRAY< _CT > & | rhs | ) | const [inline] |
Equality operator.
| _CT& DOUBLE_ARRAY< _CT >::operator[] | ( | _IDXTYPE | index | ) | [inline] |
Write (non-const) access to array element.
| const _CT& DOUBLE_ARRAY< _CT >::operator[] | ( | _IDXTYPE | index | ) | const [inline] |
Read (const) access to array element.
| void DOUBLE_ARRAY< _CT >::Release | ( | ) | [inline] |
Decrement reference count, delete if zero.
| void DOUBLE_ARRAY< _CT >::RemoveItem | ( | INT32 | item | ) | [inline] |
Remove item at specified index, maintaining order.
Note that this is inefficient for large arrays.
| ERRVALUE DOUBLE_ARRAY< _CT >::Reserve | ( | int | newmaxitems, | |
| bool | clear = false | |||
| ) | [inline] |
Reserve space in array for up to specified number of items.
| newmaxitems | New maximum number of items | |
| clear | Clear the array by resetting number of items to 0 |
| void DOUBLE_ARRAY< _CT >::ReserveExc | ( | int | newmaxitems, | |
| bool | clear = false | |||
| ) | [inline] |
Reserve space in array for up to specified number of items, throw exception on failure.
| newmaxitems | New maximum number of items | |
| clear | Clear the array by resetting number of items to 0 |
| ERRVALUE DOUBLE_ARRAY< _CT >::Resize | ( | int | numitems, | |
| bool | keepold = true, |
|||
| bool | clear = false | |||
| ) | [inline] |
Resize array to specified number of items.
If the new size is larger than the previous size and the array is not cleared the new array entries will have indeterminant values.
| numitems | New number of items desired | |
| keepold | Keep old array entries | |
| clear | Clear new entries to zeros, will clear all if keepold is false |
| void DOUBLE_ARRAY< _CT >::ResizeExc | ( | int | numitems, | |
| bool | keepold = true, |
|||
| bool | clear = false | |||
| ) | [inline] |
Resize array to specified number of items, throw exception on failure.
If the new size is larger than the previous size and the array is not cleared the new array entries will have indeterminant values.
| numitems | New number of items desired | |
| keepold | Keep old array entries | |
| clear | Clear new entries to zeros, will clear all if keepold is false |
| void DOUBLE_ARRAY< _CT >::Reverse | ( | ) | [inline] |
Reverse order of items in array.
| ERRVALUE DOUBLE_ARRAY< _CT >::SetItems | ( | int | firstitem, | |
| const _CT * | items, | |||
| int | numitems | |||
| ) | [inline] |
Set array items from C array, expanding if needed.
Will not reduce the number of items in the array.
| firstitem | First array item to replace | |
| items | Items to copy to array | |
| numitems | Number of items to copy |
| void DOUBLE_ARRAY< _CT >::Sort | ( | int(*)(_CT *, _CT *, void *) | CompFunc, | |
| void * | data = 0 | |||
| ) | [inline] |
Sort the items in the array.
CompFunc should return 1 if the first item sorts before the 2nd item Otherwise, return 0.
| CompFunc | Compare function cannot return 'bool', must be 'int'. |
| void DOUBLE_ARRAY< _CT >::Swap | ( | DOUBLE_ARRAY< _CT > & | rhs | ) | [inline] |
Swap two DOUBLE_ARRAYs.
| void DOUBLE_ARRAY< _CT >::SwapBytes | ( | ) | [inline] |
Swap bytes in a DOUBLE_ARRAY, assume that there is an overload to swap a _CT.
| void DOUBLE_ARRAY< _CT >::TransferOwnerFrom | ( | DOUBLE_ARRAY< _CT > & | rhs | ) | [inline] |
Transfer data ownership from 'rhs' to 'this'.
| void DOUBLE_ARRAY< _CT >::TransferOwnerFromExt | ( | DOUBLE_ARRAY< _T2 > & | rhs | ) | [inline] |
Transfer data ownership from 'rhs' to 'this'.
1.6.1