#!/usr/bin/env python3 # SPDX-License-Identifier: LGPL-2.1-or-later import sys, re print('#include ') for header in sys.argv[2:]: print('#include "{}"'.format(header.split('/')[-1])) print(''' /* We want to check deprecated symbols too, without complaining */ #pragma GCC diagnostic ignored "-Wdeprecated-declarations" const struct { const char *name; const void *symbol; } symbols[] = {''') count = 0 for line in open(sys.argv[1]): match = re.search('^ +([a-zA-Z0-9_]+);', line) if match: s = match.group(1) if s == 'sd_bus_object_vtable_format': print(f' {{"{s}", &{s}}},') else: print(f' {{"{s}", {s}}},') count += 1 print(f'''}}; int main(void) {{ for (size_t i = 0; i < {count}; i++) printf("%p: %s\\n", symbols[i].symbol, symbols[i].name); return 0; }}''')