More on vector new/delete
Mark Mitchell
mark at codesourcery.com
Thu Jun 29 06:12:30 UTC 2000
I think we should also add a runtime support routine for copy
constructors. Here's a sample definition:
extern "C" void
__cxa_vec_cctor (void *dest_array,
void *src_array,
size_t element_count,
size_t element_size,
void (*constructor) (void *, void *),
void (*destructor) (void *))
{
size_t ix = 0;
char *dest_ptr = static_cast <char *> (dest_array);
char *src_ptr = static_cast <char *> (src_array);
try
{
if (constructor)
for (; ix != element_count;
ix++, src_ptr += element_size, dest_ptr += element_size)
constructor (dest_ptr, src_ptr);
}
catch (...)
{
__uncatch_exception ();
__cxa_vec_dtor (dest_array, ix, element_size, destructor);
throw;
}
}
This routine will be useful to compilers when copying a structure
containing an array. The EDG front-end uses this method.
Jim, I'm sorry to keep adding things to your list of issues...
--
Mark Mitchell mark at codesourcery.com
CodeSourcery, LLC http://www.codesourcery.com
More information about the cxx-abi-dev
mailing list