udb_rel_ptr
udb_rel_ptr next;
chunk_fix_ptr_each(void* base, udb_rel_ptr* rp, void* arg)
void udb_check_rptr_zero(void* base, udb_rel_ptr* p, void* arg)
to >= (udb->glob_data->hsize-2*sizeof(udb_rel_ptr)) &&
if(!udb_valid_offset(udb, rptr, sizeof(udb_rel_ptr)))
if(!udb_valid_offset(udb, p, sizeof(udb_rel_ptr)))
void udb_rel_ptr_init(udb_rel_ptr* ptr)
void udb_rel_ptr_unlink(void* base, udb_rel_ptr* ptr)
void udb_rel_ptr_link(void* base, udb_rel_ptr* ptr, udb_void to)
void udb_rel_ptr_set(void* base, udb_rel_ptr* ptr, udb_void to)
udb_rel_ptr* udb_base_get_userdata(udb_base* udb)
regen_relptr_func(void* base, udb_rel_ptr* rp, void* arg)
typedef void udb_walk_relptr_cb(void*, udb_rel_ptr*, void*);
udb_rel_ptr content_list;
udb_rel_ptr user_global;
udb_rel_ptr* udb_base_get_userdata(udb_base* udb);
void udb_rel_ptr_init(udb_rel_ptr* ptr);
void udb_rel_ptr_unlink(void* base, udb_rel_ptr* ptr);
void udb_rel_ptr_link(void* base, udb_rel_ptr* ptr, udb_void to);
void udb_rel_ptr_set(void* base, udb_rel_ptr* ptr, udb_void to);
#define UDB_REL_PTR(ptr) ((udb_rel_ptr*)UDB_REL(base, ptr))
static inline void udb_ptr_new(udb_ptr* ptr, udb_base* udb, udb_rel_ptr* d) {
static inline void udb_rptr_set_rptr(udb_rel_ptr* dest, udb_base* udb,
udb_rel_ptr* p) {
static inline void udb_rptr_set_ptr(udb_rel_ptr* dest, udb_base* udb,
udb_rel_ptr* p) {
static inline void udb_rptr_zero(udb_rel_ptr* dest, udb_base* udb) {
static inline void udb_rel_ptr_free_space(udb_rel_ptr* ptr, udb_base* udb,
typedef struct udb_rel_ptr udb_rel_ptr;