Example #1
0
void CArrayClear(CArray cArray) {
  if (cArray->releaser) {
    for (int i = 0; i < cArray->count; ++i) {
      cArray->releaser(CArrayElement(cArray, i));
    }
  }
  cArray->count = 0;
}
Example #2
0
void CArrayRemoveElement(CArray cArray, void *element) {
  if (cArray->releaser) cArray->releaser(element);
  int numLeft = --(cArray->count);
  char *eltByte = (char *)element;
  int byteDist = eltByte - cArray->elements;
  int index = byteDist / cArray->elementSize;
  if (index == numLeft) return;
  memmove(eltByte, eltByte + cArray->elementSize, (numLeft - index) * cArray->elementSize);
}