Example #1
0
int Array_push(struct dynarray *a, void *el)
{
    if ((a->length + 1) >= a->capacity) {
        check(Array_expand(a) == 0, "Could not expand Array");
    }

    a->elements[a->length++] = el;

    return 0;
error:
    return -1;
}
char *test_expand_contract()
{
  int old_max = array->max;
  Array_expand(array);
  mu_assert((unsigned int)array->max == old_max + array->growth_rate, "Wrong size after expand.");

  Array_contract(array);
  mu_assert((unsigned int)array->max == array->growth_rate + 1, "Should stay at the growth_rate at least.");

  Array_contract(array);
  mu_assert((unsigned int)array->max == array->growth_rate + 1, "Should stay at the growth_rate at least.");

  return NULL;
}
Example #3
0
int Array_shift(struct dynarray *a, void *el)
{
    int i;

    if ((a->length + 1) >= a->capacity) {
        check(Array_expand(a) == 0, "Could not expand Array");
    }

    for (i = a->length; i > 0; i--) {
        a->elements[i] = a->elements[i - 1];
    }

    a->elements[0] = el;
    a->length++;

    return 0;
error:
    return -1;
}