def process(FILE_IN): # Read file. lines_in = [] with open(FILE_IN) as file: for line in file: lines_in.append(line.rstrip()) # Translate. lines_out = [] isDeclaration = False isDeclarationLine = False isBody = False functionName = None returnType = None argumentNames = [] argumentTypes = [] for ln in lines_in: ln = ln.rstrip() # Ignore includes. if "#include" in ln: continue parts = ln.split(" ") count = len(parts) lastPart = parts[count - 1] if not isBody and lastPart.endswith("("): isDeclaration = True isDeclarationLine = True isBody = False # End of function arguments. if not isDeclarationLine and not isBody and ln.endswith(") {"): isDeclaration = False isBody = True # Function argument. if ( isDeclaration and not isDeclarationLine and not isBody and not ln.endswith(") {") ): print(f"TODO argument: '{ln}'") # Function return type and function name. if isDeclaration and lastPart.endswith("("): functionName = lastPart[:-1] returnType = ln[:-len(lastPart) - 1] # -1 for space before function name print(f"Function name: '{functionName}'") print(f"Return type: '{returnType}'") isDeclarationLine = False lines_out.append(ln) return "\n".join(lines_out)