Mirai's Miscellaneous Misadventures

M21 / include / mimimi / compound-behaviors.h

// copyright 2022 zamfofex
// license: AGPLv3 or later

#ifndef MIMIMI_COMPOUND_BEHAVIORS_H
#define MIMIMI_COMPOUND_BEHAVIORS_H

struct mimimi_behavior;
struct mimimi_allocator;

struct mimimi_behavior *mimimi_compound_behavior(struct mimimi_allocator *allocator);
void mimimi_compound(struct mimimi_behavior *compound, struct mimimi_behavior *behavior);

struct mimimi_behavior *mimimi_function(void *data, void (*finish)(void *data), struct mimimi_allocator *allocator);
struct mimimi_behavior *mimimi_finalizer(void *data, void (*finish)(void *data), struct mimimi_allocator *allocator);

struct mimimi_behavior *mimimi_allocator_behavior(void **data, unsigned int size, struct mimimi_allocator *allocator);
void *mimimi_compound_allocate(struct mimimi_behavior *compound, unsigned int size, struct mimimi_allocator *allocator);

#endif