pawengine/register.h
2025-02-09 18:48:25 +01:00

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_