Exemplo n.º 1
0
static char* test_retain_counting() {
  LCStringRef test = LCStringCreate("abc");
  mu_assert("initial retain count=1", objectRetainCount(test)==1);
  objectRetain(test);
  mu_assert("retain increases retain count", objectRetainCount(test)==2);
  objectRelease(test);
  mu_assert("releasing decreases retain count", objectRetainCount(test)==1);
  objectRelease(test);
  return 0;
}
Exemplo n.º 2
0
static void asyncOpUnlink(asyncOp *op)
{
  if (op->list) {
    asyncOpList *list = op->list;
    if (list->head == op)
      list->head = op->next;
    if (list->tail == op)
      list->tail = op->prev;
    
    if (op->prev)
      op->prev->next = op->next;
    if (op->next)
      op->next->prev = op->prev;

    op->list = 0;
//     cqueue_ptr_push(&op->info.object->base->asyncOps, op);
    objectRelease(&op->info.object->base->pool, op, poolId);
  }
}
Exemplo n.º 3
0
extern int main(void) {
	Object *a[4];
	int i, j;

	/* создадим комбинацию из 2-х реализаций с 2-мя контекстами */
	a[0] = objectMultCreate(1);
	a[1] = objectAddCreate(1);
	a[2] = objectAddCreate(2);
	a[3] = objectMultCreate(2);

	for (i = 0; i < sizeof(a) / sizeof(a[0]); ++i) {
		printf("%d) ", i);
		
		/* вызов одной и той же функции-метода с одинаковым параметром для 
		 * разных указателей-объектов */
		j = objectMethod(a[i], 3);
		printf(" = %d\n", j	);
	}
	for (i = 0; i < sizeof(a) / sizeof(a[0]); ++i) {
		objectRelease(a + i);
	}
	return 0;
}
Exemplo n.º 4
0
void objectReleaseAlt(void *object) {
  objectRelease(object);
}