예제 #1
0
파일: vector.c 프로젝트: azavadil/CS107_PA
void VectorAppend(vector *v, const void *elemAddr)
{
  if(v->logicalLen == v->allocLen){ 
    VectorGrow(v); 
  }

  void *target = (char*)v->elems + v->logicalLen * v->elemSize; 
  memcpy(target, elemAddr, v->elemSize); 
  v->logicalLen++;  
}
예제 #2
0
파일: vector.c 프로젝트: azavadil/CS107_PA
void VectorInsert(vector *v, const void *elemAddr, int position)
{
  assert(position >= 0 && position <= v->logicalLen);
  if(v->logicalLen == v->allocLen){ 
    VectorGrow(v); 
  }

  ShuffleBack(v, position); 
  
  void *target = (char*)v->elems + position*v->elemSize; 
  memcpy(target, elemAddr, v->elemSize); 
  v->logicalLen++; 
}
예제 #3
0
파일: vector.c 프로젝트: cchanning/avr
ptr_t VectorCreateRow(Vector_t *vectorP)
{
	ptr_t newRowP = NULL;
	
	if (! vectorP)
	{
		return NULL;
	}
	
	if (vectorP->rowCount == vectorP->maxRows)
	{
		if (! VectorGrow(vectorP))
		{
			return NULL;
		}
	}
	
	newRowP = (ptr_t)((uint8_t *)vectorP->rowP) + (vectorP->rowCount * vectorP->rowSize);
	vectorP->rowCount++;
	VectorZeroRow(vectorP, newRowP);
	
	return newRowP;
	
}