Skip to content

Instantly share code, notes, and snippets.

@wkcn
Last active November 2, 2018 09:09
Show Gist options
  • Select an option

  • Save wkcn/59f6867a217e1a4f68c83ab3d845bba5 to your computer and use it in GitHub Desktop.

Select an option

Save wkcn/59f6867a217e1a4f68c83ab3d845bba5 to your computer and use it in GitHub Desktop.
replace index
def get_new_code(filename, num):
fin = open(filename)
code = list(fin.readlines())
# template: num - 2
tnum = num - 2
assert 0 <= tnum < len(code), (filename, num, tnum, len(code), code)
tcode = code[tnum]
if 'template' in tcode:
zi = tcode.index('<')
new_tcode = tcode[0:zi+1] # include <
new_tcode += 'typename IndexType, '
new_tcode += tcode[zi+1:]
code[tnum] = new_tcode
else:
space = len(code[num]) - len(code[num].strip())
code.insert(tnum, ' ' * space + 'template <typename> IndexType\n')
dnum = num - 1
knum = 0
bnum = 0
while dnum < len(code):
dcode = code[dnum]
knum += dcode.count('(') - dcode.count(')')
bnum += dcode.count('{') - dcode.count('}')
new_dcode = dcode.replace('int', 'IndexType')
code[dnum] = new_dcode
dnum += 1
if knum == 0:
break
return code
fin = open('map.txt')
for line in fin:
sp = line.split(':')
filename, num = sp[:2]
num = int(num)
try:
new_code = get_new_code(filename, num)
# re-write
fout = open(filename, 'w')
fout.write(''.join(new_code))
except:
print (line)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment