@ -3,8 +3,6 @@ 
			
		 
		
	
		
			
				 
				 
				// General includes.
  
				 
				 
				// General includes.
  
			
		 
		
	
		
			
				 
				 
				# include  "cl_sysdep.h" 
  
				 
				 
				# include  "cl_sysdep.h" 
  
			
		 
		
	
		
			
				 
				 
				
 
				 
				 
				
 
			
		 
		
	
		
			
				 
				 
				CL_PROVIDE ( cl_SV_ringelt )  
				 
				 
				 
			
		 
		
	
		
			
				 
				 
				
 
				 
				 
				 
			
		 
		
	
		
			
				 
				 
				// Specification.
  
				 
				 
				// Specification.
  
			
		 
		
	
		
			
				 
				 
				# include  "cln/SV_ringelt.h" 
  
				 
				 
				# include  "cln/SV_ringelt.h" 
  
			
		 
		
	
		
			
				 
				 
				
 
				 
				 
				
 
			
		 
		
	
	
		
			
				
					
					
					
						
							 
						 
					
				 
				@ -22,16 +20,22 @@ static void cl_svector_ringelt_destructor (cl_heap* pointer) 
			
		 
		
	
		
			
				 
				 
				# endif 
  
				 
				 
				# endif 
  
			
		 
		
	
		
			
				 
				 
				}  
				 
				 
				}  
			
		 
		
	
		
			
				 
				 
				
 
				 
				 
				
 
			
		 
		
	
		
			
				 
				 
				cl_class  cl_class_svector_ringelt  =  {  
				 
				 
				 
			
		 
		
	
		
			
				 
				 
					cl_svector_ringelt_destructor ,  
				 
				 
				 
			
		 
		
	
		
			
				 
				 
					0  
				 
				 
				 
			
		 
		
	
		
			
				 
				 
				} ;  
				 
				 
				 
			
		 
		
	
		
			
				 
				 
				 
				 
				 
				// XXX: this ought to be static const, but it would be impossible to
  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
				// set the printing function (see cl_SV_ringelt_debug.cc)
  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
				cl_class &  cl_class_svector_ringelt ( )  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
				{  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
					static  cl_class  instance  =  {  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
						cl_svector_ringelt_destructor ,  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
						0  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
					} ;  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
					return  instance ;  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
				}  
			
		 
		
	
		
			
				 
				 
				
 
				 
				 
				
 
			
		 
		
	
		
			
				 
				 
				cl_heap_SV_ringelt *  cl_make_heap_SV_ringelt_uninit  ( uintC  len )  
				 
				 
				cl_heap_SV_ringelt *  cl_make_heap_SV_ringelt_uninit  ( uintC  len )  
			
		 
		
	
		
			
				 
				 
				{  
				 
				 
				{  
			
		 
		
	
		
			
				 
				 
					var  cl_heap_SV_ringelt *  hv  =  ( cl_heap_SV_ringelt * )  malloc_hook ( sizeof ( cl_heap_SV_ringelt ) + sizeof ( _cl_ring_element ) * len ) ;  
				 
				 
					var  cl_heap_SV_ringelt *  hv  =  ( cl_heap_SV_ringelt * )  malloc_hook ( sizeof ( cl_heap_SV_ringelt ) + sizeof ( _cl_ring_element ) * len ) ;  
			
		 
		
	
		
			
				 
				 
					hv - > refcount  =  1 ;  
				 
				 
					hv - > refcount  =  1 ;  
			
		 
		
	
		
			
				 
				 
					hv - > type  =  & cl_class_svector_ringelt ;  
				 
				 
				 
			
		 
		
	
		
			
				 
				 
				 
				 
				 
					hv - > type  =  & cl_class_svector_ringelt ( ) ;  
			
		 
		
	
		
			
				 
				 
					new  ( & hv - > v )  cl_SV_inner < _cl_ring_element >  ( len ) ;  
				 
				 
					new  ( & hv - > v )  cl_SV_inner < _cl_ring_element >  ( len ) ;  
			
		 
		
	
		
			
				 
				 
					// Have to fill hv->v[i] (0 <= i < len) yourself.
  
				 
				 
					// Have to fill hv->v[i] (0 <= i < len) yourself.
  
			
		 
		
	
		
			
				 
				 
					return  hv ;  
				 
				 
					return  hv ;  
			
		 
		
	
	
		
			
				
					
					
					
						
							 
						 
					
				 
				@ -41,7 +45,7 @@ cl_heap_SV_ringelt* cl_make_heap_SV_ringelt (uintC len) 
			
		 
		
	
		
			
				 
				 
				{  
				 
				 
				{  
			
		 
		
	
		
			
				 
				 
					var  cl_heap_SV_ringelt *  hv  =  ( cl_heap_SV_ringelt * )  malloc_hook ( sizeof ( cl_heap_SV_ringelt ) + sizeof ( _cl_ring_element ) * len ) ;  
				 
				 
					var  cl_heap_SV_ringelt *  hv  =  ( cl_heap_SV_ringelt * )  malloc_hook ( sizeof ( cl_heap_SV_ringelt ) + sizeof ( _cl_ring_element ) * len ) ;  
			
		 
		
	
		
			
				 
				 
					hv - > refcount  =  1 ;  
				 
				 
					hv - > refcount  =  1 ;  
			
		 
		
	
		
			
				 
				 
					hv - > type  =  & cl_class_svector_ringelt ;  
				 
				 
				 
			
		 
		
	
		
			
				 
				 
				 
				 
				 
					hv - > type  =  & cl_class_svector_ringelt ( ) ;  
			
		 
		
	
		
			
				 
				 
					new  ( & hv - > v )  cl_SV_inner < _cl_ring_element >  ( len ) ;  
				 
				 
					new  ( & hv - > v )  cl_SV_inner < _cl_ring_element >  ( len ) ;  
			
		 
		
	
		
			
				 
				 
					for  ( var  uintC  i  =  0 ;  i  <  len ;  i + + )  
				 
				 
					for  ( var  uintC  i  =  0 ;  i  <  len ;  i + + )  
			
		 
		
	
		
			
				 
				 
						init1 ( _cl_ring_element ,  hv - > v [ i ] )  ( ) ;  
				 
				 
						init1 ( _cl_ring_element ,  hv - > v [ i ] )  ( ) ;  
			
		 
		
	
	
		
			
				
					
					
					
						
							 
						 
					
				 
				@ -49,8 +53,22 @@ cl_heap_SV_ringelt* cl_make_heap_SV_ringelt (uintC len) 
			
		 
		
	
		
			
				 
				 
				}  
				 
				 
				}  
			
		 
		
	
		
			
				 
				 
				
 
				 
				 
				
 
			
		 
		
	
		
			
				 
				 
				// An empty vector.
  
				 
				 
				// An empty vector.
  
			
		 
		
	
		
			
				 
				 
				const  cl_SV_ringelt  cl_null_SV_ringelt  =  cl_SV_ringelt ( ( uintC ) 0 ) ;  
				 
				 
				 
			
		 
		
	
		
			
				 
				 
				 
				 
				 
				const  cl_SV_ringelt  cl_null_SV_ringelt  =  cl_null_SV_ringelt ;  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
				
 
			
		 
		
	
		
			
				 
				 
				 
				 
				 
				int  cl_SV_ringelt_init_helper : : count  =  0 ;  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
				
 
			
		 
		
	
		
			
				 
				 
				 
				 
				 
				cl_SV_ringelt_init_helper : : cl_SV_ringelt_init_helper ( )  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
				{  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
					if  ( count + +  = =  0 )  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
						new  ( ( void  * ) & cl_null_SV_ringelt )  cl_SV_ringelt ( ( uintC ) 0 ) ;  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
				}  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
				
 
			
		 
		
	
		
			
				 
				 
				 
				 
				 
				cl_SV_ringelt_init_helper : : ~ cl_SV_ringelt_init_helper ( )  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
				{  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
					if  ( - - count  = =  0 )  {  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
						// Nothing to clean up here
  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
					}  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
				}  
			
		 
		
	
		
			
				 
				 
				
 
				 
				 
				
 
			
		 
		
	
		
			
				 
				 
				}   // namespace cln
  
				 
				 
				}   // namespace cln
  
			
		 
		
	
		
			
				 
				 
				
 
				 
				 
				
 
			
		 
		
	
		
			
				 
				 
				CL_PROVIDE_END ( cl_SV_ringelt )