コード例 #1
0
ファイル: cpArray.c プロジェクト: 0309/cocos2d-x
void
cpArrayPush(cpArray *arr, void *object)
{
	if(arr->num == arr->max){
		arr->max *= 2;
		arr->arr = (void **)cprealloc(arr->arr, arr->max*sizeof(void**));
	}
	
	arr->arr[arr->num] = object;
	arr->num++;
}
コード例 #2
0
ファイル: cpPolyline.c プロジェクト: cxuhua/cxengine
// Add a new polyline to a polyline set.
static void
cpPolylineSetPush(cpPolylineSet *set, cpPolyline *line)
{
  // grow set
  set->count++;
  if(set->count > set->capacity){
    set->capacity *= 2;
    set->lines = cprealloc(set->lines, set->capacity*sizeof(cpPolyline));
  }
  
	set->lines[set->count - 1] = line;
}
コード例 #3
0
ファイル: cpPolyline.c プロジェクト: cxuhua/cxengine
// Grow the allocated memory for a polyline.
static cpPolyline *
cpPolylineGrow(cpPolyline *line, int count)
{
  line->count += count;
  
  int capacity = line->capacity;
  while(line->count > capacity) capacity *= 2;
  
  if(line->capacity < capacity){
    line->capacity = capacity;
		line = cprealloc(line, cpPolylineSizeForCapacity(capacity));
  }
	
	return line;
}
コード例 #4
0
ファイル: cpCollision.c プロジェクト: BellyWong/RubyCocos2D
// Helper function for allocating contact point lists.
static cpContact *
addContactPoint(cpContact **arr, int *max, int *num)
{
	if(*arr == NULL){
		// Allocate the array if it hasn't been done.
		(*max) = 2;
		(*num) = 0;
		(*arr) = (cpContact *)cpmalloc((*max)*sizeof(cpContact));
	} else if(*num == *max){
		// Extend it if necessary.
		(*max) *= 2;
		(*arr) = (cpContact *)cprealloc(*arr, (*max)*sizeof(cpContact));
	}
	
	cpContact *con = &(*arr)[*num];
	(*num)++;
	
	return con;
}
コード例 #5
0
static void
ResizeTable(cpSweep1D *sweep, int size)
{
	sweep->max = size;
	sweep->table = (TableCell *)cprealloc(sweep->table, size*sizeof(TableCell));
}
コード例 #6
0
ファイル: cpPolyline.c プロジェクト: cxuhua/cxengine
static cpPolyline *
cpPolylineShrink(cpPolyline *line)
{
	line->capacity = line->count;
	return cprealloc(line, cpPolylineSizeForCapacity(line->count));
}