[ Date Prev][ Date Next][ Thread Prev][ Thread Next][ Date Index][ Thread Index]
More on vector new/delete
- To: cxx-abi@xxxxxxxxxxxx
- Subject: More on vector new/delete
- From: Mark Mitchell <mark@xxxxxxxxxxxxxxxx>
- Date: Wed, 28 Jun 2000 23:12:30 -0700
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@xxxxxxxxxxxxxxxx
CodeSourcery, LLC http://www.codesourcery.com
|