dethrace/tools/comment_struct_var.py

73 lines
1.5 KiB
Python
Executable File

#!/usr/bin/env python3 -u
# Used to comment each line of a struct variable with the name of the associated field.
# For example:
# tInterface_spec s = {
# 0, // initial_imode
# 0, // first_opening_flic
# };
#
# Usage:
# `tools/comment_struct_var.py 'tInterface_spec s = {
# 0,
# 0,
# };`
import sys
struct_var = sys.argv[1]
lines = struct_var.split('\n')
var_header = lines[0]
tokens = var_header.split(' ')
struct_name = tokens[0]
f = open("src/DETHRACE/dr_types.h", 'r')
match_line = 'typedef struct {0} {{'.format(struct_name)
found = False
while True:
l = f.readline()
if l == "":
break
if l.strip() == match_line:
found = True
break
if found == False:
print('Couldnt find struct in dr_types.h. Looking for', match_line)
sys.exit(1)
print(var_header.strip())
for i in range(1, len(lines)):
var_line = lines[i]
def_line = f.readline().strip()
if '};' in var_line:
print(var_line)
break
# comment_index = line.find('//')
# if comment_index > 0:
# line = line[:comment_index]
parts = def_line.split(' ')
name = parts[1]
array_index = name.find('[')
if array_index > 0:
name = name[0: array_index]
if name.startswith('(*'):
name = name[2:]
paren_index = name.find(')')
if paren_index > 0:
name = name[0:paren_index]
if ';' in name:
name = name[:-1]
print(var_line, '\t\t//', name)