-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathmodule.h
35 lines (31 loc) · 1.44 KB
/
module.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#ifndef LIFESENSOR_COMMON_MODULE_H
#define LIFESENSOR_COMMON_MODULE_H
#include "logger.h"
#include "macro/map.h"
#include <stddef.h>
#define INIT_LIFESENSOR_MODULE(TYPE, NAME, INIT, DUMP, /* SUBMODULES */...) \
{ \
.parent = NULL, \
.type = #TYPE, \
.name = (NAME), \
.init = (INIT), \
.dump = (DUMP), \
.submodule_offsets = (ptrdiff_t[]){__VA_OPT__(MAP1(offsetof, TYPE, __VA_ARGS__), ) 0}, \
}
struct lifesensor_module
{
struct lifesensor_module *parent;
char *name;
char *type;
void (*dump)(
struct lifesensor_module *module,
Lifesensor_logger *logger,
Lifesensor_logger_scope *scope);
void (*init)(
struct lifesensor_module *module);
ptrdiff_t *submodule_offsets;
};
typedef struct lifesensor_module Lifesensor_module;
void lifesensor_module_init(Lifesensor_module *module);
void lifesensor_module_dump(Lifesensor_module *module, Lifesensor_logger *logger, Lifesensor_logger_scope *scope);
#endif