Exemplo n.º 1
0
Arquivo: daoArray.c Projeto: cosim/dao
void* DVector_Pop( DVector *self )
{
	if( self->capacity > (2*self->size + 1) ) DVector_Reserve( self, self->size + 1 );
	if( self->size == 0 ) return NULL;
	self->size -= 1;
	return self->data.chars + self->size * self->stride;
}
Exemplo n.º 2
0
void DaoxDataColumn_Reset( DaoxDataColumn *self, daoint size )
{
	daoint i, datatype = DaoType_GetDataType( self->type );
	if( size < self->cells->size ){
		for(i=size; i<self->cells->size; ++i){
			if( datatype == DAO_STRING ){
				DString_Clear( self->cells->data.strings + i );
			}else if( datatype == 0 ){
				GC_DecRC( self->cells->data.values[i] );
			}
		}
		DVector_Reset( self->cells, size );
	}else if( size > self->cells->size ){
		DVector_Reserve( self->cells, size );
		for(i=self->cells->size; i<size; ++i){
			if( datatype == DAO_STRING ){
				DString_Init( self->cells->data.strings + i, 0 );
				DString *s = & self->cells->data.strings[i];
			}else if( datatype == 0 ){
				self->cells->data.values[i]  = NULL;
			}
		}
		DVector_Reset( self->cells, size );
	}
}
Exemplo n.º 3
0
Arquivo: daoArray.c Projeto: cosim/dao
void* DVector_Insert( DVector *self, daoint i, daoint n )
{
	char *data;

	if( i < 0 ) i += self->size;
	if( i < 0 || i > self->size ) return NULL;

	DVector_Reserve( self, self->size + n );

	data = self->data.chars + i * self->stride;
	memmove( data + n*self->stride, data, (self->size - i) *self->stride );

	self->size += n;
	return data;
}
Exemplo n.º 4
0
Arquivo: daoArray.c Projeto: cosim/dao
void* DVector_Push( DVector *self )
{
	DVector_Reserve( self, self->size + 1 );
	self->size += 1;
	return self->data.chars + (self->size - 1) * self->stride;
}