/* ECP: FILEname=fig14_8.cpp */ /* 1*/ template /* 2*/ void /* 3*/ DoubleArray( Etype * & Array, unsigned int & CurrentSize ) /* 4*/ { /* 5*/ Etype * OldArray = Array; /* 6*/ const MinSize = 5; /* 7*/ unsigned int NewSize = Array ? 2 * CurrentSize : MinSize; /* 8*/ Array = new Etype [ NewSize ]; /* 9*/ if( Array == NULL ) /*10*/ { /*11*/ cerr << "Error doubling array!" << endl; /*12*/ CurrentSize = 0; /*13*/ } /*14*/ else /*15*/ { /*16*/ for( unsigned int i = 0; i < CurrentSize; i++ ) /*17*/ Array[ i ] = OldArray[ i ]; /*18*/ CurrentSize = NewSize; /*19*/ } /*20*/ delete [ ] OldArray; // Safe even if OldArray is NULL. /*21*/ }