Esempio n. 1
0
devil_array_t*
devil_array_create(size_t capacity)
{
  devil_array_t* array = (devil_array_t*)devil_malloc(sizeof(devil_array_t));
  assert(NULL != array);

  if (capacity < DEF_CAPACITY)
    capacity = DEF_CAPACITY;
  array->elems = (void**)devil_malloc(sizeof(void*) * capacity);
  assert(NULL != array->elems);
  array->start = array->elems;
  array->finish = array->elems;
  array->capacity = capacity;

  return array;
}
Esempio n. 2
0
devil_thread_t*
devil_thread_create(void (*routine)(void*), void* arg)
{
  devil_thread_t* thread = (devil_thread_t*)devil_malloc(sizeof(devil_thread_t));
  assert(NULL != thread);

  thread->thread = NULL;
  thread->create_event = NULL;
  thread->routine = routine;
  thread->argument = arg;

  return thread;
}
Esempio n. 3
0
static inline void
devil_array_regrow(devil_array_t* array)
{
  size_t old_size = array->finish - array->start;
  size_t new_capacity = (size_t)(array->capacity * 1.5);
  void** new_elems = (void**)devil_malloc(sizeof(void*) * new_capacity);
  assert(NULL != new_elems);

  memmove(new_elems, array->elems, sizeof(void*) * old_size);
  devil_free(array->elems);
  array->elems = new_elems;
  array->start = array->elems;
  array->finish = array->elems + old_size;
  array->capacity = new_capacity;
}