lib: add sink component class's "graph is configured" method
[babeltrace.git] / extras / gen-babeltrace-h.py
1 import re
2
3
4 class _Section:
5 def __init__(self, title, filenames):
6 self.title = title
7 self.filenames = filenames
8
9
10 def _get_sections(file):
11 sections = []
12 cur_title = None
13 cur_filenames = []
14
15 for line in file:
16 m = re.match(r'^# (.+API.*)$', line)
17
18 if m:
19 if cur_filenames:
20 sections.append(_Section(cur_title, cur_filenames))
21 cur_title = None
22 cur_filenames = []
23
24 cur_title = m.group(1)
25 continue
26
27 m = re.match(r'^\s+(babeltrace/.+\.h).*$', line)
28
29 if m:
30 if m.group(1) != 'babeltrace/babeltrace.h':
31 cur_filenames.append(m.group(1))
32
33 continue
34
35 if re.match(r'^noinst_HEADERS.*', line):
36 break
37
38 if cur_filenames:
39 sections.append(_Section(cur_title, cur_filenames))
40
41 return sections
42
43
44 def _c_includes_from_sections(sections):
45 src = ''
46
47 for section in sections:
48 src += '/* {} */\n'.format(section.title)
49
50 for filename in sorted(section.filenames):
51 src += '#include <{}>\n'.format(filename)
52
53 src += '\n'
54
55 return src[:-1]
56
57
58 def _main():
59 with open('include/Makefile.am') as f:
60 sections = _get_sections(f)
61
62 print('''#ifndef BABELTRACE_BABELTRACE_H
63 #define BABELTRACE_BABELTRACE_H
64
65 /*
66 * Babeltrace API
67 *
68 * Copyright 2010-2018 EfficiOS Inc. <http://www.efficios.com/>
69 *
70 * Permission is hereby granted, free of charge, to any person obtaining a copy
71 * of this software and associated documentation files (the "Software"), to deal
72 * in the Software without restriction, including without limitation the rights
73 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
74 * copies of the Software, and to permit persons to whom the Software is
75 * furnished to do so, subject to the following conditions:
76 *
77 * The above copyright notice and this permission notice shall be included in
78 * all copies or substantial portions of the Software.
79 *
80 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
81 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
82 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
83 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
84 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
85 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
86 * SOFTWARE.
87 */
88 ''')
89 print(_c_includes_from_sections(sections))
90 print('#endif /* BABELTRACE_BABELTRACE_H */')
91
92 if __name__ == '__main__':
93 _main()
This page took 0.031825 seconds and 4 git commands to generate.