#!/usr/bin/python # $Id$ import sys ext=sys.argv[1] funcs=[] cur_func=None for line in file("gl.spec"): if line[0]=='#' or line.find(':')>=0: continue elif line[0]=='\t' and cur_func: parts=line.split() if parts[0]=="category" and parts[1]==ext: funcs.append(cur_func) else: paren=line.find('(') if paren>0: cur_func=line[:paren] out=file(ext.lower()+".h", "w") out.write("#ifndef MSP_GL_%s_\n"%ext.upper()) out.write("#define MSP_GL_%s_\n"%ext.upper()) out.write(""" #include "gl.h" #include namespace Msp { namespace GL { """) for f in funcs: out.write("extern PFNGL%sPROC gl%s;\n"%(f.upper(), f)) out.write("\nvoid init_%s();\n"%ext.lower()) out.write(""" } // namespace GL } // namespace Msp #endif """) out=file(ext.lower()+".cpp", "w") out.write("#include \"extension.h\"\n") out.write("#include \"%s.h\"\n"%ext.lower()) out.write(""" namespace Msp { namespace GL { """) for f in funcs: out.write("PFNGL%sPROC gl%s=0;\n"%(f.upper(), f)) out.write("\nvoid init_%s()\n{\n"%ext.lower()) for f in funcs: out.write("\tgl%s=reinterpret_cast(get_proc_address(\"gl%s\"));\n"%(f, f.upper(), f)) out.write("}\n") out.write(""" } // namespace GL } // namespace Msp """)