33 lines
972 B
C
33 lines
972 B
C
#ifndef INCLUDE_WAYLANDCLIENT_REGISTER_H_
|
|
#define INCLUDE_WAYLANDCLIENT_REGISTER_H_
|
|
|
|
#include "dynarray.h"
|
|
#include "object.h"
|
|
|
|
dyn_array_define(da_Type, struct Type);
|
|
|
|
struct Type {
|
|
char *name;
|
|
|
|
void *(*make)(struct Scene *, char *, int len);
|
|
void (*free)(struct Scene *, void *);
|
|
void (*tick)(struct Scene *, void *);
|
|
};
|
|
|
|
struct Register {
|
|
struct da_Type reg;
|
|
};
|
|
|
|
#define OBJ_FREE (void (*)(struct Scene *, void *))
|
|
#define OBJ_TICK (void (*)(struct Scene *, void *))
|
|
#define OBJ_MAKE (void *(*)(struct Scene *, char *, int len))
|
|
|
|
struct Register *make_register();
|
|
void free_register(struct Register *reg);
|
|
struct Type *reg_get_type(struct Register *reg, char *name);
|
|
void reg_attatch_type(struct Register *reg, char *name,
|
|
void *(*make)(struct Scene *, char *, int len),
|
|
void (*free)(struct Scene *, void *),
|
|
void (*tick)(struct Scene *, void *));
|
|
|
|
#endif // INCLUDE_WAYLANDCLIENT_REGISTER_H_
|