File: generator.h

package info (click to toggle)
pupnp 1%3A1.14.20-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 3,440 kB
  • sloc: ansic: 34,488; xml: 1,173; cpp: 573; makefile: 341; sh: 130; python: 51; javascript: 7
file content (59 lines) | stat: -rw-r--r-- 936 bytes parent folder | download
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#ifndef GENERATOR_H
#define GENERATOR_H

#define ARRAY_SIZE(a) (sizeof(a) / sizeof 0 [a])

enum e_Type
{
	TYPE_CLASS = 0,
	TYPE_INTEGER,
	TYPE_BUFFER,
	TYPE_LIST,
	TYPE_STRING,
	TYPE_DOMSTRING
};

struct s_Type_Integer
{
	const char *int_type;
};

struct s_Member
{
	const char *name;
	enum e_Type type;
	const char *type_name;
	const char *header;
};

/* clang-format off */
#define INIT_MEMBER(NAME, TYPE, TYPE_NAME, HEADER) \
	{ \
		.name = #NAME, \
		.type = TYPE, \
		.type_name = #TYPE_NAME, \
		.header = HEADER \
	}
/* clang-format on */

struct s_Class
{
	const char *name;
	unsigned n_members;
	struct s_Member *members;
	const char *source;
	const char *header;
};

/* clang-format off */
#define INIT_CLASS(CLASS) \
	{ \
		.name = #CLASS, \
		.n_members = ARRAY_SIZE(CLASS##_members), \
		.members = CLASS##_members, \
		.source = #CLASS ".c", \
		.header = #CLASS ".h", \
	}
/* clang-format on */

#endif /* GENERATOR_H */