#!/usr/bin/python
# -*- coding: utf-8 -*-

#
# Copyright 2011, The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

import os
import sys

def append_functions(functions, lines):
	i = 0
	for line in lines:
		if line.find("API_ENTRY(") >= 0: # a function prototype
			returnType = line[0: line.find(" API_ENTRY(")]
			functionName = line[line.find("(") + 1: line.find(")")] #extract GL function name
			parameterList = line[line.find(")(") + 2: line.find(") {")]
			
			functions.append(functionName)
			#print functionName
			continue
				
			parameters = parameterList.split(',')
			paramIndex = 0
			if line.find("*") >= 0:
				print "// FIXME: this function has pointers, it should be hand written"
				externs.append("%s Tracing_%s(%s);" % (returnType, functionName, parameterList))
			print "%s Tracing_%s(%s)\n{" % (returnType, functionName, parameterList)
			
			if parameterList == "void":
				parameters = []
			
			arguments = ""
			 
			for parameter in parameters:
				parameter = parameter.replace("const", "")
				parameter = parameter.strip()
				paramType = parameter.split(' ')[0]
				paramName = parameter.split(' ')[1]
				
				paramIndex += 1
				
	return functions
	


if __name__ == "__main__":
	definedFunctions = []
	lines = open("gl2_api_annotated.in").readlines()
	definedFunctions = append_functions(definedFunctions, lines)
	
	output = open("../debug.in", "w")
	lines = open("../trace.in").readlines()
	output.write("// the following functions are not defined in GLESv2_dbg\n")
	for line in lines:
		functionName = ""
		if line.find("TRACE_GL(") >= 0: # a function prototype
			functionName = line.split(',')[1].strip()
		elif line.find("TRACE_GL_VOID(") >= 0: # a function prototype
			functionName = line[line.find("(") + 1: line.find(",")] #extract GL function name
		else:
			continue
		if functionName in definedFunctions:
			#print functionName
			continue
		else:
			output.write(line)