How to resize an array

For fixed flat and fixed segmented arrays, it is possible to resize the array. If the array is shortened, then the trailing elements are deleted. If the array is extended, then new blank elements are created using the default constructor.

In a CArrayFixFlat<class T> or a CArrayFixSeg<class T> array, the number of elements in an array can be changed, either decreased or increased, using the ResizeL() function.

In the following code fragment, ResizeL() changes the size of an array so that it contains only one element. If the array originally had more than one element, then this call to ResizeL() deletes all elements from position one onwards, leaving only the element at position zero.

CArrayFixFlat<TElement>* fixflat;
fixflat = new (ELeave) CArrayFixFlat<TElement>(3);
...
fixflat->ResizeL(1);

Call ResizeL() again to change the size of the array to contain a greater number of elements, in this case three. If the array originally had only one element (for example), this call to ResizeL() constructs two new elements at positions one and two. In this example, the new elements inserted at positions one and two are TElement type objects, constructed using the TElement default constructor. It is therefore essential that a default constructor exists before using this function.

fixflat->ResizeL(3);

There is an overloaded variant of ResizeL() which takes a reference to a TElement object. A bit-wise copy of this referenced object supplies the new elements. In the following code fragment the two extra elements are bit-wise copies of the theElement object.

_LIT(KTextXXX,"XXX");
theElement.iData = KTextXXX;
fixflat->ResizeL(5,theElement);