| # -*- coding: utf-8 -*- |
| |
| from common import * |
| from khr_util.format import indentLines, commandParams, commandArgs |
| import khr_util.registry |
| from itertools import imap, chain |
| |
| def virtualMemberDecl (command): |
| return "virtual %s\t%s\t(%s) const\t= 0;" % ( |
| command.type, |
| getFunctionMemberName(command.name), |
| commandParams(command)) |
| |
| def concreteMemberDecl (command): |
| return "%s\t%s\t(%s) const;" % ( |
| command.type, |
| getFunctionMemberName(command.name), |
| commandParams(command)) |
| |
| def memberImpl (command): |
| template = """ |
| {returnType} FuncPtrLibrary::{memberName} ({paramDecls}) const |
| {{ |
| {maybeReturn}m_egl.{memberName}({arguments}); |
| }}""" |
| return template.format( |
| returnType = command.type, |
| mangledName = getFunctionMemberName(command.name), |
| paramDecls = commandParams(command), |
| maybeReturn = "return " if command.type != 'void' else "", |
| memberName = getFunctionMemberName(command.name), |
| arguments = commandArgs(command)) |
| |
| def initFunctionEntry (command): |
| return "dst->%s\t= (%sFunc)\tloader->get(\"%s\");" % ( |
| getFunctionMemberName(command.name), |
| command.name, |
| command.name) |
| |
| def getExtOnlyIface (registry, api, extensions): |
| spec = khr_util.registry.InterfaceSpec() |
| |
| for extension in registry.extensions: |
| if not khr_util.registry.getExtensionName(extension) in extensions: |
| continue |
| |
| if not khr_util.registry.extensionSupports(extension, api): |
| continue |
| |
| spec.addExtension(extension, api) |
| |
| return khr_util.registry.createInterface(registry, spec, api) |
| |
| def commandLibraryEntry (command): |
| return "\t{ \"%s\",\t(deFunctionPtr)%s }," % (command.name, command.name) |
| |
| def genStaticLibrary (registry): |
| genCommandLists(registry, commandLibraryEntry, |
| check = lambda api, version: api == 'egl' and version in set(["1.4", "1.5"]), |
| directory = EGL_WRAPPER_DIR, |
| filePattern = "eglwStaticLibrary%s.inl", |
| align = True) |
| |
| def gen (registry): |
| defaultIface = getDefaultInterface() |
| noExtIface = getInterface(registry, 'egl', VERSION) |
| extOnlyIface = getExtOnlyIface(registry, 'egl', EXTENSIONS) |
| |
| genCommandList(defaultIface, virtualMemberDecl, EGL_WRAPPER_DIR, "eglwLibrary.inl", True) |
| genCommandList(defaultIface, concreteMemberDecl, EGL_WRAPPER_DIR, "eglwFuncPtrLibraryDecl.inl", True) |
| genCommandList(defaultIface, memberImpl, EGL_WRAPPER_DIR, "eglwFuncPtrLibraryImpl.inl") |
| |
| genCommandList(noExtIface, initFunctionEntry, EGL_WRAPPER_DIR, "eglwInitCore.inl", True) |
| genCommandList(extOnlyIface, initFunctionEntry, EGL_WRAPPER_DIR, "eglwInitExtensions.inl", True) |
| |
| genStaticLibrary(registry) |