EXP void LinearizeCurve( int max_iter, const int n, const int p, Ptr< T > U, Ptr< HP > Pw, const T tol, const rtl<T>& t, int *ret_nP, Ptr< EP > *retP ) { List< ListNode<EP> > L; ListNode<EP> *node = new ListNode<EP>(euclid(Pw[0])); int i,nEl; Ptr< EP > P; L.Append( node ); LinearizeCurve( max_iter, n, p, U, Pw, tol, t, LinearizeLineCallback<EP>, (void *)&L ); nEl = L.nElems; node = L.head; P.reserve_pool( nEl ); for( i = 0; i < nEl; i++ ) { P[nEl-1-i] = node->el; node = node->next; } *ret_nP = nEl; *retP = P; L.DeleteElems(); }