1 from __future__ import print_function
10 def get_td_from_function_signature(line, file, num):
11 left_paren = line.find('(')
14 li = line[left_paren:]
15 right_paren = line.find(')')
16 if right_paren > 0 and right_paren > left_paren and line[right_paren:].find('(') >= 0:
17 fname = line[:right_paren]
18 fname = fname.lstrip(' ').lstrip('*').lstrip(' ').rstrip(' ')
21 print("from {0}:{1}".format(file, num))
22 print("-T {0}".format(fname))
25 def get_td_from_simple_type(line, file, num):
26 line = line.rstrip(' ').rstrip('\t').rstrip(' ').rstrip('\t')
27 right_space = line.rfind(' ')
28 right_tab = line.rfind('\t')
29 sep = right_tab if right_tab > right_space else right_space
32 tname = tname.lstrip('*')
35 print("from {0}:{1}".format(file, num))
36 print("-T {0}".format(tname))
39 def find_typedefs(file):
40 with open(file, 'rb') as f:
46 for i, l in enumerate(data.splitlines(False)):
47 # Don't try to be too smart: only count lines that begin with 'typedef '
48 l = l.rstrip(' ').rstrip('\t')
52 if l[:8] != 'typedef ':
56 if l[8:].lstrip(' ').lstrip('\t')[:6] == 'struct':
59 leftcbrace = l.find('{')
62 td_line.append(l[:leftcbrace])
63 l = l[leftcbrace + 1:]
65 rightcbrace = l.rfind('}')
69 td_line.append(l[rightcbrace + 1:])
72 if len(l) > 0 and l[-1] == ';' and(not td_struct or td_level == 0):
73 td_line = ' '.join(td_line)
74 td_line = td_line[:-1]
76 if td_line[-1] == ')':
77 get_td_from_function_signature(td_line, file, i)
79 get_td_from_simple_type(td_line, file, i)
87 for dirpath, dirs, files in os.walk(d):
89 if re.match(r'(?!lt_).+\.(c|cc|h)$', f):
90 file = os.path.join(dirpath, f)
94 if __name__ == '__main__':
95 if len(sys.argv[1:]) == 0: