示例#1
0
文件: jmps.c 项目: msoula/romhacking
void jmps_destroy() {
    int cpt;
    jmp_t *cur;

    /* free leveled jumps list */
    ptrlist_uninit(&leveled_jmps);

    /* destroying children first */
    cpt = 0;
    while(NULL != (cur = (jmp_t *) ptrlist_get(&jmps, cpt))) {
        jmp_destroy(cur);
        cpt++;
    }
    ptrlist_uninit(&leveled_jmps);
    ptrlist_uninit(&jmps);
}
示例#2
0
const char* /*UNITTEST*/
test_remove(void)
{
	ptrlist_t l = ptrlist_init();
	
	int w, x, y, z;
	int *p = &w, *q = &x, *r = &y, *s = &z;

	ptrlist_insert(l, 0, s);

	ptrlist_remove(l, 1);

	if (ptrlist_count(l) != 1)
		return "bogus remove actually removed something?";

	ptrlist_remove(l, 0);

	if (ptrlist_count(l) != 0)
		return "failed to remove single element";
	

	ptrlist_clear(l);


	ptrlist_insert(l, 0, s);
	ptrlist_insert(l, 0, r);

	ptrlist_remove(l, 2);

	if (ptrlist_count(l) != 2)
		return "bogus remove actually removed something?";

	ptrlist_remove(l, 0);

	if (ptrlist_count(l) != 1)
		return "failed to remove head of 2-element list";

	ptrlist_remove(l, 0);

	if (ptrlist_count(l) != 0)
		return "failed to remove single remaining element";
	

	ptrlist_clear(l);

	ptrlist_insert(l, 0, s);
	ptrlist_insert(l, 0, r);
	ptrlist_insert(l, 0, q);
	ptrlist_insert(l, 0, p);

	ptrlist_remove(l, 0);

	if (ptrlist_get(l, 0) != q
	    || ptrlist_get(l, 1) != r
	    || ptrlist_get(l, 2) != s
	    || ptrlist_get(l, 3) != NULL)
		return "remove of element 0 in 4-elem list failed";

	ptrlist_clear(l);

	ptrlist_insert(l, 0, s);
	ptrlist_insert(l, 0, r);
	ptrlist_insert(l, 0, q);
	ptrlist_insert(l, 0, p);

	ptrlist_remove(l, 1);

	if (ptrlist_get(l, 0) != p
	    || ptrlist_get(l, 1) != r
	    || ptrlist_get(l, 2) != s
	    || ptrlist_get(l, 3) != NULL)
		return "remove of element 1 in 4-elem list failed";

	ptrlist_clear(l);

	ptrlist_insert(l, 0, s);
	ptrlist_insert(l, 0, r);
	ptrlist_insert(l, 0, q);
	ptrlist_insert(l, 0, p);

	ptrlist_remove(l, 2);

	if (ptrlist_get(l, 0) != p
	    || ptrlist_get(l, 1) != q
	    || ptrlist_get(l, 2) != s
	    || ptrlist_get(l, 3) != NULL)
		return "remove of element 2 in 4-elem list failed";

	ptrlist_clear(l);

	ptrlist_insert(l, 0, s);
	ptrlist_insert(l, 0, r);
	ptrlist_insert(l, 0, q);
	ptrlist_insert(l, 0, p);

	ptrlist_remove(l, 3);

	if (ptrlist_get(l, 0) != p
	    || ptrlist_get(l, 1) != q
	    || ptrlist_get(l, 2) != r
	    || ptrlist_get(l, 3) != NULL)
		return "remove of element 3 in 4-elem list failed";

	ptrlist_clear(l);

	ptrlist_dispose(l);

	return NULL;
}
示例#3
0
const char* /*UNITTEST*/
test_insert(void)
{
	ptrlist_t l = ptrlist_init();
	
	int w, x, y, z;
	int *p = &w, *q = &x, *r = &y, *s = &z;

	ptrlist_insert(l, 0, s);
	ptrlist_insert(l, 0, r);
	ptrlist_insert(l, 0, q);
	ptrlist_insert(l, 0, p);

	if (ptrlist_get(l, 0) != p
	    || ptrlist_get(l, 1) != q
	    || ptrlist_get(l, 2) != r
	    || ptrlist_get(l, 3) != s
	    || ptrlist_get(l, 4) != NULL)
		return "got something else out than what was put in";

	ptrlist_clear(l);

	ptrlist_insert(l, -1, p);
	ptrlist_insert(l, -1, q);
	ptrlist_insert(l, -1, r);
	ptrlist_insert(l, -1, s);

	if (ptrlist_get(l, 0) != p
	    || ptrlist_get(l, 1) != q
	    || ptrlist_get(l, 2) != r
	    || ptrlist_get(l, 3) != s
	    || ptrlist_get(l, 4) != NULL)
		return "got something else out than what was put in";

	ptrlist_clear(l);

	ptrlist_insert(l, 5, r); //tail
	ptrlist_insert(l, -1, s); //tail
	ptrlist_insert(l, 0, p); //head
	ptrlist_insert(l, 1, q); //2nd

	if (ptrlist_count(l) != 4)
		return "list size != 4 after inserting four elements";

	if (ptrlist_get(l, 0) != p
	    || ptrlist_get(l, 1) != q
	    || ptrlist_get(l, 2) != r
	    || ptrlist_get(l, 3) != s
	    || ptrlist_get(l, 4) != NULL)
		return "got something else out than what was put in";

	ptrlist_dispose(l);

	return NULL;
}