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

36 lines
963 B
C

#include "register.h"
#include "dynarray.h"
#include "log.h"
#include "object.h"
#include <stdlib.h>
#include <string.h>
struct Register *make_register() {
struct Register *reg = malloc(sizeof(struct Register));
dyn_array_create_inplace(&reg->reg);
return reg;
}
void free_register(struct Register *reg) {
dyn_array_destroy(&reg->reg);
free(reg);
}
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 *)) {
struct Type type = {name, make, free, tick};
dyn_array_append(&reg->reg, type);
}
struct Type *reg_get_type(struct Register *reg, char *name) {
for (int i = 0; i < reg->reg.count; i++) {
if (strcmp(reg->reg.items[i].name, name) == 0) {
return &reg->reg.items[i];
}
}
meow("did not find %s in register", name);
return NULL;
}