@ -3,12 +3,9 @@
// General includes.
# include "cl_sysdep.h"
CL_PROVIDE ( cl_SV_number )
// Specification.
# include "cln/SV_number.h"
// Implementation.
namespace cln {
@ -22,16 +19,22 @@ static void cl_svector_number_destructor (cl_heap* pointer)
# endif
}
cl_class cl_class_svector_number = {
cl_svector_number_destructor ,
0
} ;
// XXX: ugh, this needs to be non-static (and non-const) so redefining
// debugging function is possible (see cl_SV_number_debug.cc)
cl_class & cl_class_svector_number ( )
{
static cl_class instance = {
cl_svector_number_destructor ,
0
} ;
return instance ;
}
cl_heap_SV_number * cl_make_heap_SV_number_uninit ( uintC len )
{
var cl_heap_SV_number * hv = ( cl_heap_SV_number * ) malloc_hook ( sizeof ( cl_heap_SV_number ) + sizeof ( cl_number ) * len ) ;
hv - > refcount = 1 ;
hv - > type = & cl_class_svector_number ;
hv - > type = & cl_class_svector_number ( ) ;
new ( & hv - > v ) cl_SV_inner < cl_number > ( len ) ;
// Have to fill hv->v[i] (0 <= i < len) yourself.
return hv ;
@ -41,7 +44,7 @@ cl_heap_SV_number* cl_make_heap_SV_number (uintC len)
{
var cl_heap_SV_number * hv = ( cl_heap_SV_number * ) malloc_hook ( sizeof ( cl_heap_SV_number ) + sizeof ( cl_number ) * len ) ;
hv - > refcount = 1 ;
hv - > type = & cl_class_svector_number ;
hv - > type = & cl_class_svector_number ( ) ;
new ( & hv - > v ) cl_SV_inner < cl_number > ( len ) ;
for ( var uintC i = 0 ; i < len ; i + + )
init1 ( cl_number , hv - > v [ i ] ) ( 0 ) ;
@ -49,8 +52,22 @@ cl_heap_SV_number* cl_make_heap_SV_number (uintC len)
}
// An empty vector.
const cl_SV_number cl_null_SV_number = cl_SV_number ( ( uintC ) 0 ) ;
const cl_SV_number cl_null_SV_number = cl_null_SV_number ;
int cl_SV_number_init_helper : : count = 0 ;
cl_SV_number_init_helper : : cl_SV_number_init_helper ( )
{
if ( count + + = = 0 )
new ( ( void * ) & cl_null_SV_number ) cl_SV_number ( ( uintC ) 0 ) ;
}
cl_SV_number_init_helper : : ~ cl_SV_number_init_helper ( )
{
if ( - - count = = 0 ) {
// Nothing to clean up
}
}
} // namespace cln
CL_PROVIDE_END ( cl_SV_number )
xxxxxxxxxx