| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 | #!/usr/bin/env python3# coding=utf-8## StarPU --- Runtime system for heterogeneous multicore architectures.## Copyright (C) 2012-2020  Université de Bordeaux, CNRS (LaBRI UMR 5800), Inria## StarPU is free software; you can redistribute it and/or modify# it under the terms of the GNU Lesser General Public License as published by# the Free Software Foundation; either version 2.1 of the License, or (at# your option) any later version.## StarPU is distributed in the hope that it will be useful, but# WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.## See the GNU Lesser General Public License in COPYING.LGPL for more details.#import sysimport re# XXX Could be something else, like a file.output = sys.stdoutdef get_indentation_level(s):	cnt = 0	for c in s:		if c != '\t':			return -1		cnt = cnt + 1	return cntdef fix(f):	modes = {}	trailing_comma = False	indentation_level = -1	for line in f.readlines():		# This regexp could be more precise, but it should be good		# enough		regexp = "((\s)*)\.modes\[(\d)+\](\s)*=(\s)*(.*)"		m = re.search(regexp, line)		if not m:			if modes:				output.write("".join(["\t" for i in range(indentation_level)]))				output.write(".modes = { ")				idx = 0				while modes.get(str(idx)):					if idx != 0:						output.write(", ")					output.write(modes[str(idx)])					idx = idx+1				if trailing_comma:					output.write(" },\n")				else:					output.write(" }\n")				# Resetting these..				modes.clear()				trailing_comma = False				indentation_level = -1			output.write(line)		else:			idx = m.group(3)			mode = m.group(6)			# Remove traling comma			if mode[-1] == ',':				mode = mode[:-1]				# This is the last mode for this 				# codelet. Was this also the last				# field ?				if int(idx) == 0:					trailing_comma = True			# Try and guess the level of indentation			if int(idx) == 0:				s = m.group(1)				indentation_level = get_indentation_level(s)			modes[idx] = modedef fix_file(filename):	with open(filename, 'r') as f:		fix(f)def usage():	print "%s <filename>" % sys.argv[0]	sys.exit(1)if __name__ == '__main__':	if len(sys.argv) != 2:		usage()		sys.exit(1)	fix_file(sys.argv[1])
 |