1 from __future__ import print_function
8 def get_td_from_function_signature (line, file, num):
9 left_paren = line.find ('(')
12 line = line[left_paren:]
13 right_paren = line.find (')')
14 if right_paren > 0 and right_paren > left_paren and line[right_paren:].find ('(') >= 0:
15 fname = line[:right_paren]
16 fname = fname.lstrip (' ').lstrip ('*').lstrip (' ').rstrip (' ')
19 print ("from {0}:{1}".format (file, num))
20 print ("-T {0}".format (fname))
22 def get_td_from_simple_type (line, file, num):
23 line = line.rstrip (' ').rstrip ('\t').rstrip (' ').rstrip ('\t')
24 right_space = line.rfind (' ')
25 right_tab = line.rfind ('\t')
26 sep = right_tab if right_tab > right_space else right_space
29 tname = tname.lstrip ('*')
32 print ("from {0}:{1}".format (file, num))
33 print ("-T {0}".format (tname))
35 def find_typedefs (file):
36 with open (file, 'rb') as f:
42 for i, l in enumerate (data.splitlines (False)):
43 # Don't try to be too smart: only count lines that begin with 'typedef '
44 l = l.rstrip (' ').rstrip ('\t')
48 if l[:8] != 'typedef ':
52 if l[8:].lstrip (' ').lstrip ('\t')[:6] == 'struct':
55 leftcbrace = l.find ('{')
58 td_line.append (l[:leftcbrace])
59 l = l[leftcbrace + 1:]
61 rightcbrace = l.rfind ('}')
65 td_line.append (l[rightcbrace + 1:])
68 if len (l) > 0 and l[-1] == ';' and (not td_struct or td_level == 0):
69 td_line = ' '.join (td_line)
70 td_line = td_line[:-1]
72 if td_line[-1] == ')':
73 get_td_from_function_signature (td_line, file, i)
75 get_td_from_simple_type (td_line, file, i)
83 for dirpath, dirs, files in os.walk (d):
85 if re.match (r'(?!lt_).+\.(c|cc|h)$', f):
86 file = os.path.join (dirpath, f)
90 if __name__ == '__main__':
91 if len (sys.argv[1:]) == 0: