File indexing completed on 2023-03-17 11:26:47
0001 from __future__ import print_function
0002 from builtins import range
0003 __author__="Aurelija"
0004 __date__ ="$2010-09-23 15.00.20$"
0005
0006 import re
0007
0008 declarator = '(\*|&)?(\w|<|,|>|$|::)+'
0009 cv_decl = '\s*(const|volatile|noexcept)\s*'
0010 exception = 'throw\(((::)|\w|\s|,|<|>)*\)'
0011 decl_param = '\s((\(%s\))|(%s))\s*\((\w|\s|\*|&|\.|=|\'|\"|-|<|>|,|(::))*\)'%(declarator, declarator)
0012 operator = '(%s|)operator\s*(\(\)|\[\]|\s+(new|delete)(\s*\[\]|)|\-\>[*]{0,1}|[+\-*/%%^&|~!=<>,]{1,2}(=|))'%(declarator)
0013 dm_init = '(:[^{]*)'
0014 functStart_re = re.compile('(\s|~|^)((\(%s\))|(%s)|(%s))\s*\((%s|\w|\s|\*|&|\.|=|\'|\"|-|<|>|,|::)*\)(%s)?(%s)?\s*(%s)?\s*{'%(declarator, declarator, operator, decl_param, cv_decl, exception,dm_init), re.MULTILINE)
0015
0016 def filterFiles(fileList):
0017 files = []
0018
0019 for i in range(len(fileList)):
0020 if type(fileList[0]).__name__ != 'tuple':
0021 file = fileList[i]
0022 fileLines = filterFile(fileList[i])
0023 else:
0024 file = fileList[i][0]
0025 fileLines = filterFile(fileList[i][1])
0026
0027 files.append((file, fileLines))
0028 return files
0029
0030 def filterFile(file):
0031
0032 lines = ""
0033
0034 if type(file).__name__ != 'list':
0035 lines = open(file, errors='replace').read()
0036 else:
0037 for line in file:
0038 lines += line
0039 fileLines = lines[:]
0040 prevEndPosition = 0
0041 endPosition = 0
0042 while(True):
0043 m = functStart_re.search(lines)
0044 if m != None:
0045 openBracket = 1
0046 closeBracket = 0
0047 startPosition = m.start()
0048
0049 for i, character in enumerate(lines[m.end():]):
0050 if character == "{":
0051 openBracket += 1
0052 elif character == "}":
0053 closeBracket += 1
0054 if openBracket == closeBracket :
0055 prevEndPosition += endPosition
0056 endPosition = m.end() + i + 1
0057 break
0058 if openBracket != closeBracket:
0059 print("Error in file. To much open brackets. Run commentSkipper before you run functionSkipper.")
0060 break
0061 else:
0062
0063
0064 lines = delLines(lines, startPosition, endPosition)
0065 fileLines = fileLines[:prevEndPosition] + lines
0066 lines = lines[endPosition:]
0067 else:
0068 break
0069
0070 listOfLines = []
0071 startLine = 0
0072 for index, character in enumerate(fileLines):
0073 if character == "\n":
0074 listOfLines.append(fileLines[startLine:index+1])
0075 startLine = index + 1
0076 listOfLines.append(fileLines[startLine:])
0077 return listOfLines
0078
0079 def delLines(string, startPosition, endPosition):
0080 i = startPosition - 1
0081 end = startPosition
0082 while(True):
0083 if i != -1 and string[i] != '\n':
0084 i -= 1
0085 else:
0086 string = string[:i+1] + (end - i - 1)*' ' + string[end:]
0087 break
0088
0089 i = startPosition
0090 start = startPosition
0091 while(i != endPosition):
0092 if string[i] != '\n':
0093 i += 1
0094 else:
0095 string = string[:start] + (i-start)*str(" ") + string[i:]
0096 i = i+1
0097 start = i
0098 string = string[:start] + (endPosition-start)*str(" ") + string[endPosition:]
0099
0100 return string