79#define MODULE_MAGIC to_fourcc('M', 'O', 'D', ' ')
138 module &operator=(module const &) = delete;
139 module &operator=(module &&) = delete;
156 mod.priv_data = priv;
165 module *get(){ return &mod; }
197#define CAST_MODULE(x) ((struct module *) x)
module_raii(enum module_class type, module *parent, void *priv)
void module_init_default(struct module *module_data)
void module_register(struct module *module_data, struct module *parent)
void dump_tree(struct module *root_node, int indent)
bool module_get_path_str(struct module *mod, char *buf, size_t buflen)
struct module * get_module(struct module *root, const char *path)
void dump_parents(struct module *node)
void module_done(struct module *module_data)
const char * module_class_name(enum module_class cls)
struct module * get_matching_child(struct module *node, const char *path)
struct module * get_root_module(struct module *node)
void(* notify_t)(struct module *)
void(* module_deleter_t)(struct module *)
void append_message_path(char *buf, int buflen, const enum module_class *modules)
struct module * get_parent_module(struct module *node)
@ MODULE_CLASS_KEYCONTROL
uint32_t priv_magic
optional magic number that can a module set
struct simple_linked_list * msg_queue
notify_t new_message
if set, notifies module that new message is in queue, receiver lock is hold during the call
pthread_mutex_t msg_queue_lock
module(module const &)=delete
struct simple_linked_list * children
struct simple_linked_list * msg_queue_children
messages for childern that were not delivered