taisei/src/list.h
laochailan 91b3b7d65e reference system
added some kind of reference system (see list.h) to ensure particles/projectiles/enemies storing pointers to each other that they will not access a borked address.
2011-05-13 19:03:02 +02:00

30 lines
No EOL
717 B
C

/*
* This software is licensed under the terms of the MIT-License
* See COPYING for further information.
* ---
* Copyright (C) 2011, Lukas Weber <laochailan@web.de>
*/
#ifndef LIST_H
#define LIST_H
/* I got annoyed of the code doubling caused by simple linked lists,
* so i do some void-magic here to save the lines.
*/
void *create_element(void **dest, int size);
void delete_element(void **dest, void *e);
void delete_all_elements(void **dest, void (callback)(void **, void *));
typedef struct {
void **ptrs;
int count;
} RefArray;
extern void *_FREEREF;
#define FREEREF &_FREEREF
#define REF(p) (global.refs.ptrs[(int)p])
int add_ref(void *ptr);
void del_ref(void *ptr);
void free_ref(int i);
#endif