int DArray_push(DArray *array, void *el) {
  array->contents[array->end] = el;
  array->end++;

  if (array->end >= array->max) {
    return DArray_expand(array);
  } else {
    return 0;
  }
}
Esempio n. 2
0
int DArray_push(DArray* array, void* el)
{
  array->contents[array->end] = el;
  ++array->end;

  if (DArray_end(array) >= DArray_max(array)) {
    return DArray_expand(array);
  } else {
    return 0;
  }
}
Esempio n. 3
0
int DArray_push(DArray *array, void *el)
{
    check(array, "received darray null pointer");
    assert(array->count <= array->max && "inconsistent darray capacity");

    if (array->count == array->max)
        check(!DArray_expand(&array), "expand of darray failed");

    return DArray_set(array, array->count, el);
error:
    return 1;
}
Esempio n. 4
0
char *test_expand_contract()
{
    int old_max = array->max;
    DArray_expand(array);
    mu_assert((unsigned int)array->max == old_max + array->expand_rate, "Wrong size after expand");
    DArray_contract(array);
    mu_assert((unsigned int)array->max == array->expand_rate + 1, "Should stay at the expand_rate at least.");

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

    return NULL;
}
Esempio n. 5
0
char *test_expand_contract()
{
    int old_max = array->max;
    DArray_expand(array);
    mu_assert((unsigned int)array->max == old_max + array->expand_rate, "Wrong size after expand.");
    
    old_max = array->max; 
    DArray_contract(array);
    if ((unsigned int)(old_max - array->end - 1) > array->expand_rate) {
        mu_assert((unsigned int)array->max == old_max - array->expand_rate, "Should contract.");
    } else {
        mu_assert(array->max == old_max, "Should not contract.");
    }

    old_max = array->max;
    DArray_contract(array);
    if ((unsigned int)(old_max - array->end - 1) > array->expand_rate) {
        mu_assert((unsigned int)array->max == old_max - array->expand_rate, "Should contract.");
    } else {
        mu_assert(array->max == old_max, "Should not contract.");
    }

    return NULL;
}