/** @page page_ptrAryTplt Pointer Array Template

Template for an dynamic array of pointers to structures.

Since C doesn't have templates I'm using this macro instead, as the same
construct get's used multiple times, just with different types.  To use
(example of array of pointers to consumers):

\code
// In some header file ...
#define S consumers_ary
#define C ConsumerAry
#define T Consumer

#include "ptrAryTplt.h"

#undef S
#undef C
#undef T

\endcode

The resulting code is type safe, after macro substitutions the header
file code will be:

\code

typedef struct consumers_ary{
	int num;
	Consumer** pAry;
	int (*add)(struct consumers_ary* pThis, Consumer* pItem);
	int (*rm_ptr)(struct consumers_ary* pThis, Consumer* pItem);
	void (*del)(struct consumers_ary* pThis);
} ConsumerAry;

ConsumerAry* newConsumerAry();

\endcode

To generate the corresponding funciton bodies one could do the following
in a source file:
\code
//In some source file...
#define C ConsumerAry
#define T Consumer
#define CASCADE_DEL

#include "ptrAryTplt.c"

#undef CASCADE_DEL
#undef C
#undef T

\endcode

This will create type safe version of the functions, in this particular case
when C::rm_ptr or C::del is called the del member function of type T will
be called.  \a T::del is assumed to take a single pointer to an object of
type T.  

*/


