libUPnP  1.14.19
generator.h
1 #ifndef GENERATOR_H
2 #define GENERATOR_H
3 
4 #define ARRAY_SIZE(a) (sizeof(a) / sizeof 0 [a])
5 
6 enum e_Type
7 {
8  TYPE_CLASS = 0,
9  TYPE_INTEGER,
10  TYPE_BUFFER,
11  TYPE_LIST,
12  TYPE_STRING,
13  TYPE_DOMSTRING
14 };
15 
17 {
18  const char *int_type;
19 };
20 
21 struct s_Member
22 {
23  const char *name;
24  enum e_Type type;
25  const char *type_name;
26  const char *header;
27 };
28 
29 /* clang-format off */
30 #define INIT_MEMBER(NAME, TYPE, TYPE_NAME, HEADER) \
31  { \
32  .name = #NAME, \
33  .type = TYPE, \
34  .type_name = #TYPE_NAME, \
35  .header = HEADER \
36  }
37 /* clang-format on */
38 
39 struct s_Class
40 {
41  const char *name;
42  unsigned n_members;
43  struct s_Member *members;
44  const char *source;
45  const char *header;
46 };
47 
48 /* clang-format off */
49 #define INIT_CLASS(CLASS) \
50  { \
51  .name = #CLASS, \
52  .n_members = ARRAY_SIZE(CLASS##_members), \
53  .members = CLASS##_members, \
54  .source = #CLASS ".c", \
55  .header = #CLASS ".h", \
56  }
57 /* clang-format on */
58 
59 #endif /* GENERATOR_H */
Definition: generator.h:40
Definition: generator.h:22
Definition: generator.h:17