"""XGL API description"""

# Copyright (C) 2014 LunarG, Inc.
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
# and/or sell copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
# DEALINGS IN THE SOFTWARE.

class Param(object):
    """A function parameter."""

    def __init__(self, ty, name):
        self.ty = ty
        self.name = name

    def c(self):
        """Return the parameter in C."""
        idx = self.ty.find("[")

        # arrays have a different syntax
        if idx >= 0:
            return "%s %s%s" % (self.ty[:idx], self.name, self.ty[idx:])
        else:
            return "%s %s" % (self.ty, self.name)

    def indirection_level(self):
        """Return the level of indirection."""
        return self.ty.count("*") + self.ty.count("[")

    def dereferenced_type(self, level=0):
        """Return the type after dereferencing."""
        if not level:
            level = self.indirection_level()

        deref = self.ty if level else ""
        while level > 0:
            idx = deref.rfind("[")
            if idx < 0:
                idx = deref.rfind("*")
            if idx < 0:
                deref = ""
                break
            deref = deref[:idx]
            level -= 1;

        return deref.rstrip()

    def __repr__(self):
        return "Param(\"%s\", \"%s\")" % (self.ty, self.name)

class Proto(object):
    """A function prototype."""

    def __init__(self, ret, name, params=[]):
        # the proto has only a param
        if not isinstance(params, list):
            params = [params]

        self.ret = ret
        self.name = name
        self.params = params

    def c_params(self, need_type=True, need_name=True):
        """Return the parameter list in C."""
        if self.params and (need_type or need_name):
            if need_type and need_name:
                return ", ".join([param.c() for param in self.params])
            elif need_type:
                return ", ".join([param.ty for param in self.params])
            else:
                return ", ".join([param.name for param in self.params])
        else:
            return "void" if need_type else ""

    def c_decl(self, name, attr="", typed=False, need_param_names=True):
        """Return a named declaration in C."""
        format_vals = (self.ret,
                attr + " " if attr else "",
                name,
                self.c_params(need_name=need_param_names))

        if typed:
            return "%s (%s*%s)(%s)" % format_vals
        else:
            return "%s %s%s(%s)" % format_vals

    def c_pretty_decl(self, name, attr=""):
        """Return a named declaration in C, with xgl.h formatting."""
        plist = []
        for param in self.params:
            idx = param.ty.find("[")
            if idx < 0:
                idx = len(param.ty)

            pad = 44 - idx
            if pad <= 0:
                pad = 1

            plist.append("    %s%s%s%s" % (param.ty[:idx],
                " " * pad, param.name, param.ty[idx:]))

        return "%s %s%s(\n%s)" % (self.ret,
                attr + " " if attr else "",
                name,
                ",\n".join(plist))

    def c_typedef(self, suffix="", attr=""):
        """Return the typedef for the prototype in C."""
        return self.c_decl(self.name + suffix, attr=attr, typed=True)

    def c_func(self, prefix="", attr=""):
        """Return the prototype in C."""
        return self.c_decl(prefix + self.name, attr=attr, typed=False)

    def c_call(self):
        """Return a call to the prototype in C."""
        return "%s(%s)" % (self.name, self.c_params(need_type=False))

    def object_in_params(self):
        """Return the params that are simple XGL objects and are inputs."""
        return [param for param in self.params if param.ty in objects]

    def object_out_params(self):
        """Return the params that are simple XGL objects and are outputs."""
        return [param for param in self.params
                if param.dereferenced_type() in objects]

    def __repr__(self):
        param_strs = []
        for param in self.params:
            param_strs.append(str(param))
        param_str = "    [%s]" % (",\n     ".join(param_strs))

        return "Proto(\"%s\", \"%s\",\n%s)" % \
                (self.ret, self.name, param_str)

class Extension(object):
    def __init__(self, name, headers, objects, protos):
        self.name = name
        self.headers = headers
        self.objects = objects
        self.protos = protos

    def __repr__(self):
        lines = []
        lines.append("Extension(")
        lines.append("    name=\"%s\"," % self.name)
        lines.append("    headers=[\"%s\"]," %
                "\", \"".join(self.headers))

        lines.append("    objects=[")
        for obj in self.objects:
            lines.append("        \"%s\"," % obj)
        lines.append("    ],")

        lines.append("    protos=[")
        for proto in self.protos:
            param_lines = str(proto).splitlines()
            param_lines[-1] += ",\n" if proto != self.protos[-1] else ","
            for p in param_lines:
                lines.append("        " + p)
        lines.append("    ],")
        lines.append(")")

        return "\n".join(lines)

# XGL core API
core = Extension(
    name="XGL_CORE",
    headers=["xgl.h", "xglDbg.h"],
    objects=[
        "XGL_INSTANCE",
        "XGL_PHYSICAL_GPU",
        "XGL_BASE_OBJECT",
        "XGL_DEVICE",
        "XGL_QUEUE",
        "XGL_GPU_MEMORY",
        "XGL_OBJECT",
        "XGL_BUFFER",
        "XGL_BUFFER_VIEW",
        "XGL_IMAGE",
        "XGL_IMAGE_VIEW",
        "XGL_COLOR_ATTACHMENT_VIEW",
        "XGL_DEPTH_STENCIL_VIEW",
        "XGL_SHADER",
        "XGL_PIPELINE",
        "XGL_PIPELINE_DELTA",
        "XGL_SAMPLER",
        "XGL_DESCRIPTOR_SET",
        "XGL_DESCRIPTOR_SET_LAYOUT",
        "XGL_DESCRIPTOR_REGION",
        "XGL_DYNAMIC_STATE_OBJECT",
        "XGL_DYNAMIC_VP_STATE_OBJECT",
        "XGL_DYNAMIC_RS_STATE_OBJECT",
        "XGL_DYNAMIC_CB_STATE_OBJECT",
        "XGL_DYNAMIC_DS_STATE_OBJECT",
        "XGL_CMD_BUFFER",
        "XGL_FENCE",
        "XGL_QUEUE_SEMAPHORE",
        "XGL_EVENT",
        "XGL_QUERY_POOL",
        "XGL_FRAMEBUFFER",
        "XGL_RENDER_PASS",
    ],
    protos=[
        Proto("XGL_RESULT", "CreateInstance",
            [Param("const XGL_APPLICATION_INFO*", "pAppInfo"),
             Param("const XGL_ALLOC_CALLBACKS*", "pAllocCb"),
             Param("XGL_INSTANCE*", "pInstance")]),

        Proto("XGL_RESULT", "DestroyInstance",
            [Param("XGL_INSTANCE", "instance")]),

        Proto("XGL_RESULT", "EnumerateGpus",
            [Param("XGL_INSTANCE", "instance"),
             Param("uint32_t", "maxGpus"),
             Param("uint32_t*", "pGpuCount"),
             Param("XGL_PHYSICAL_GPU*", "pGpus")]),

        Proto("XGL_RESULT", "GetGpuInfo",
            [Param("XGL_PHYSICAL_GPU", "gpu"),
             Param("XGL_PHYSICAL_GPU_INFO_TYPE", "infoType"),
             Param("size_t*", "pDataSize"),
             Param("void*", "pData")]),

        Proto("void*", "GetProcAddr",
            [Param("XGL_PHYSICAL_GPU", "gpu"),
             Param("const char*", "pName")]),

        Proto("XGL_RESULT", "CreateDevice",
            [Param("XGL_PHYSICAL_GPU", "gpu"),
             Param("const XGL_DEVICE_CREATE_INFO*", "pCreateInfo"),
             Param("XGL_DEVICE*", "pDevice")]),

        Proto("XGL_RESULT", "DestroyDevice",
            [Param("XGL_DEVICE", "device")]),

        Proto("XGL_RESULT", "GetExtensionSupport",
            [Param("XGL_PHYSICAL_GPU", "gpu"),
             Param("const char*", "pExtName")]),

        Proto("XGL_RESULT", "EnumerateLayers",
            [Param("XGL_PHYSICAL_GPU", "gpu"),
             Param("size_t", "maxLayerCount"),
             Param("size_t", "maxStringSize"),
             Param("size_t*", "pOutLayerCount"),
             Param("char* const*", "pOutLayers"),
             Param("void*", "pReserved")]),

        Proto("XGL_RESULT", "GetDeviceQueue",
            [Param("XGL_DEVICE", "device"),
             Param("XGL_QUEUE_TYPE", "queueType"),
             Param("uint32_t", "queueIndex"),
             Param("XGL_QUEUE*", "pQueue")]),

        Proto("XGL_RESULT", "QueueSubmit",
            [Param("XGL_QUEUE", "queue"),
             Param("uint32_t", "cmdBufferCount"),
             Param("const XGL_CMD_BUFFER*", "pCmdBuffers"),
             Param("uint32_t", "memRefCount"),
             Param("const XGL_MEMORY_REF*", "pMemRefs"),
             Param("XGL_FENCE", "fence")]),

        Proto("XGL_RESULT", "QueueSetGlobalMemReferences",
            [Param("XGL_QUEUE", "queue"),
             Param("uint32_t", "memRefCount"),
             Param("const XGL_MEMORY_REF*", "pMemRefs")]),

        Proto("XGL_RESULT", "QueueWaitIdle",
            [Param("XGL_QUEUE", "queue")]),

        Proto("XGL_RESULT", "DeviceWaitIdle",
            [Param("XGL_DEVICE", "device")]),

        Proto("XGL_RESULT", "AllocMemory",
            [Param("XGL_DEVICE", "device"),
             Param("const XGL_MEMORY_ALLOC_INFO*", "pAllocInfo"),
             Param("XGL_GPU_MEMORY*", "pMem")]),

        Proto("XGL_RESULT", "FreeMemory",
            [Param("XGL_GPU_MEMORY", "mem")]),

        Proto("XGL_RESULT", "SetMemoryPriority",
            [Param("XGL_GPU_MEMORY", "mem"),
             Param("XGL_MEMORY_PRIORITY", "priority")]),

        Proto("XGL_RESULT", "MapMemory",
            [Param("XGL_GPU_MEMORY", "mem"),
             Param("XGL_FLAGS", "flags"),
             Param("void**", "ppData")]),

        Proto("XGL_RESULT", "UnmapMemory",
            [Param("XGL_GPU_MEMORY", "mem")]),

        Proto("XGL_RESULT", "PinSystemMemory",
            [Param("XGL_DEVICE", "device"),
             Param("const void*", "pSysMem"),
             Param("size_t", "memSize"),
             Param("XGL_GPU_MEMORY*", "pMem")]),

        Proto("XGL_RESULT", "GetMultiGpuCompatibility",
            [Param("XGL_PHYSICAL_GPU", "gpu0"),
             Param("XGL_PHYSICAL_GPU", "gpu1"),
             Param("XGL_GPU_COMPATIBILITY_INFO*", "pInfo")]),

        Proto("XGL_RESULT", "OpenSharedMemory",
            [Param("XGL_DEVICE", "device"),
             Param("const XGL_MEMORY_OPEN_INFO*", "pOpenInfo"),
             Param("XGL_GPU_MEMORY*", "pMem")]),

        Proto("XGL_RESULT", "OpenSharedQueueSemaphore",
            [Param("XGL_DEVICE", "device"),
             Param("const XGL_QUEUE_SEMAPHORE_OPEN_INFO*", "pOpenInfo"),
             Param("XGL_QUEUE_SEMAPHORE*", "pSemaphore")]),

        Proto("XGL_RESULT", "OpenPeerMemory",
            [Param("XGL_DEVICE", "device"),
             Param("const XGL_PEER_MEMORY_OPEN_INFO*", "pOpenInfo"),
             Param("XGL_GPU_MEMORY*", "pMem")]),

        Proto("XGL_RESULT", "OpenPeerImage",
            [Param("XGL_DEVICE", "device"),
             Param("const XGL_PEER_IMAGE_OPEN_INFO*", "pOpenInfo"),
             Param("XGL_IMAGE*", "pImage"),
             Param("XGL_GPU_MEMORY*", "pMem")]),

        Proto("XGL_RESULT", "DestroyObject",
            [Param("XGL_OBJECT", "object")]),

        Proto("XGL_RESULT", "GetObjectInfo",
            [Param("XGL_BASE_OBJECT", "object"),
             Param("XGL_OBJECT_INFO_TYPE", "infoType"),
             Param("size_t*", "pDataSize"),
             Param("void*", "pData")]),

        Proto("XGL_RESULT", "BindObjectMemory",
            [Param("XGL_OBJECT", "object"),
             Param("uint32_t", "allocationIdx"),
             Param("XGL_GPU_MEMORY", "mem"),
             Param("XGL_GPU_SIZE", "offset")]),

        Proto("XGL_RESULT", "BindObjectMemoryRange",
            [Param("XGL_OBJECT", "object"),
             Param("uint32_t", "allocationIdx"),
             Param("XGL_GPU_SIZE", "rangeOffset"),
             Param("XGL_GPU_SIZE", "rangeSize"),
             Param("XGL_GPU_MEMORY", "mem"),
             Param("XGL_GPU_SIZE", "memOffset")]),

        Proto("XGL_RESULT", "BindImageMemoryRange",
            [Param("XGL_IMAGE", "image"),
             Param("uint32_t", "allocationIdx"),
             Param("const XGL_IMAGE_MEMORY_BIND_INFO*", "bindInfo"),
             Param("XGL_GPU_MEMORY", "mem"),
             Param("XGL_GPU_SIZE", "memOffset")]),

        Proto("XGL_RESULT", "CreateFence",
            [Param("XGL_DEVICE", "device"),
             Param("const XGL_FENCE_CREATE_INFO*", "pCreateInfo"),
             Param("XGL_FENCE*", "pFence")]),

        Proto("XGL_RESULT", "GetFenceStatus",
            [Param("XGL_FENCE", "fence")]),

        Proto("XGL_RESULT", "WaitForFences",
            [Param("XGL_DEVICE", "device"),
             Param("uint32_t", "fenceCount"),
             Param("const XGL_FENCE*", "pFences"),
             Param("bool32_t", "waitAll"),
             Param("uint64_t", "timeout")]),

        Proto("XGL_RESULT", "CreateQueueSemaphore",
            [Param("XGL_DEVICE", "device"),
             Param("const XGL_QUEUE_SEMAPHORE_CREATE_INFO*", "pCreateInfo"),
             Param("XGL_QUEUE_SEMAPHORE*", "pSemaphore")]),

        Proto("XGL_RESULT", "SignalQueueSemaphore",
            [Param("XGL_QUEUE", "queue"),
             Param("XGL_QUEUE_SEMAPHORE", "semaphore")]),

        Proto("XGL_RESULT", "WaitQueueSemaphore",
            [Param("XGL_QUEUE", "queue"),
             Param("XGL_QUEUE_SEMAPHORE", "semaphore")]),

        Proto("XGL_RESULT", "CreateEvent",
            [Param("XGL_DEVICE", "device"),
             Param("const XGL_EVENT_CREATE_INFO*", "pCreateInfo"),
             Param("XGL_EVENT*", "pEvent")]),

        Proto("XGL_RESULT", "GetEventStatus",
            [Param("XGL_EVENT", "event")]),

        Proto("XGL_RESULT", "SetEvent",
            [Param("XGL_EVENT", "event")]),

        Proto("XGL_RESULT", "ResetEvent",
            [Param("XGL_EVENT", "event")]),

        Proto("XGL_RESULT", "CreateQueryPool",
            [Param("XGL_DEVICE", "device"),
             Param("const XGL_QUERY_POOL_CREATE_INFO*", "pCreateInfo"),
             Param("XGL_QUERY_POOL*", "pQueryPool")]),

        Proto("XGL_RESULT", "GetQueryPoolResults",
            [Param("XGL_QUERY_POOL", "queryPool"),
             Param("uint32_t", "startQuery"),
             Param("uint32_t", "queryCount"),
             Param("size_t*", "pDataSize"),
             Param("void*", "pData")]),

        Proto("XGL_RESULT", "GetFormatInfo",
            [Param("XGL_DEVICE", "device"),
             Param("XGL_FORMAT", "format"),
             Param("XGL_FORMAT_INFO_TYPE", "infoType"),
             Param("size_t*", "pDataSize"),
             Param("void*", "pData")]),

        Proto("XGL_RESULT", "CreateBuffer",
            [Param("XGL_DEVICE", "device"),
             Param("const XGL_BUFFER_CREATE_INFO*", "pCreateInfo"),
             Param("XGL_BUFFER*", "pBuffer")]),

        Proto("XGL_RESULT", "CreateBufferView",
            [Param("XGL_DEVICE", "device"),
             Param("const XGL_BUFFER_VIEW_CREATE_INFO*", "pCreateInfo"),
             Param("XGL_BUFFER_VIEW*", "pView")]),

        Proto("XGL_RESULT", "CreateImage",
            [Param("XGL_DEVICE", "device"),
             Param("const XGL_IMAGE_CREATE_INFO*", "pCreateInfo"),
             Param("XGL_IMAGE*", "pImage")]),

        Proto("XGL_RESULT", "SetFastClearColor",
            [Param("XGL_IMAGE", "image"),
             Param("const float[4]", "color")]),

        Proto("XGL_RESULT", "SetFastClearDepth",
            [Param("XGL_IMAGE", "image"),
             Param("float", "depth")]),

        Proto("XGL_RESULT", "GetImageSubresourceInfo",
            [Param("XGL_IMAGE", "image"),
             Param("const XGL_IMAGE_SUBRESOURCE*", "pSubresource"),
             Param("XGL_SUBRESOURCE_INFO_TYPE", "infoType"),
             Param("size_t*", "pDataSize"),
             Param("void*", "pData")]),

        Proto("XGL_RESULT", "CreateImageView",
            [Param("XGL_DEVICE", "device"),
             Param("const XGL_IMAGE_VIEW_CREATE_INFO*", "pCreateInfo"),
             Param("XGL_IMAGE_VIEW*", "pView")]),

        Proto("XGL_RESULT", "CreateColorAttachmentView",
            [Param("XGL_DEVICE", "device"),
             Param("const XGL_COLOR_ATTACHMENT_VIEW_CREATE_INFO*", "pCreateInfo"),
             Param("XGL_COLOR_ATTACHMENT_VIEW*", "pView")]),

        Proto("XGL_RESULT", "CreateDepthStencilView",
            [Param("XGL_DEVICE", "device"),
             Param("const XGL_DEPTH_STENCIL_VIEW_CREATE_INFO*", "pCreateInfo"),
             Param("XGL_DEPTH_STENCIL_VIEW*", "pView")]),

        Proto("XGL_RESULT", "CreateShader",
            [Param("XGL_DEVICE", "device"),
             Param("const XGL_SHADER_CREATE_INFO*", "pCreateInfo"),
             Param("XGL_SHADER*", "pShader")]),

        Proto("XGL_RESULT", "CreateGraphicsPipeline",
            [Param("XGL_DEVICE", "device"),
             Param("const XGL_GRAPHICS_PIPELINE_CREATE_INFO*", "pCreateInfo"),
             Param("XGL_PIPELINE*", "pPipeline")]),

        Proto("XGL_RESULT", "CreateComputePipeline",
            [Param("XGL_DEVICE", "device"),
             Param("const XGL_COMPUTE_PIPELINE_CREATE_INFO*", "pCreateInfo"),
             Param("XGL_PIPELINE*", "pPipeline")]),

        Proto("XGL_RESULT", "StorePipeline",
            [Param("XGL_PIPELINE", "pipeline"),
             Param("size_t*", "pDataSize"),
             Param("void*", "pData")]),

        Proto("XGL_RESULT", "LoadPipeline",
            [Param("XGL_DEVICE", "device"),
             Param("size_t", "dataSize"),
             Param("const void*", "pData"),
             Param("XGL_PIPELINE*", "pPipeline")]),

        Proto("XGL_RESULT", "CreatePipelineDelta",
            [Param("XGL_DEVICE", "device"),
             Param("XGL_PIPELINE", "p1"),
             Param("XGL_PIPELINE", "p2"),
             Param("XGL_PIPELINE_DELTA*", "delta")]),

        Proto("XGL_RESULT", "CreateSampler",
            [Param("XGL_DEVICE", "device"),
             Param("const XGL_SAMPLER_CREATE_INFO*", "pCreateInfo"),
             Param("XGL_SAMPLER*", "pSampler")]),

        Proto("XGL_RESULT", "CreateDescriptorSetLayout",
            [Param("XGL_DEVICE", "device"),
             Param("XGL_FLAGS", "stageFlags"),
             Param("const uint32_t*", "pSetBindPoints"),
             Param("XGL_DESCRIPTOR_SET_LAYOUT", "priorSetLayout"),
             Param("const XGL_DESCRIPTOR_SET_LAYOUT_CREATE_INFO*", "pSetLayoutInfoList"),
             Param("XGL_DESCRIPTOR_SET_LAYOUT*", "pSetLayout")]),

        Proto("XGL_RESULT", "BeginDescriptorRegionUpdate",
            [Param("XGL_DEVICE", "device"),
             Param("XGL_DESCRIPTOR_UPDATE_MODE", "updateMode")]),

        Proto("XGL_RESULT", "EndDescriptorRegionUpdate",
            [Param("XGL_DEVICE", "device"),
             Param("XGL_CMD_BUFFER", "cmd")]),

        Proto("XGL_RESULT", "CreateDescriptorRegion",
            [Param("XGL_DEVICE", "device"),
             Param("XGL_DESCRIPTOR_REGION_USAGE", "regionUsage"),
             Param("uint32_t", "maxSets"),
             Param("const XGL_DESCRIPTOR_REGION_CREATE_INFO*", "pCreateInfo"),
             Param("XGL_DESCRIPTOR_REGION*", "pDescriptorRegion")]),

        Proto("XGL_RESULT", "ClearDescriptorRegion",
            [Param("XGL_DESCRIPTOR_REGION", "descriptorRegion")]),

        Proto("XGL_RESULT", "AllocDescriptorSets",
            [Param("XGL_DESCRIPTOR_REGION", "descriptorRegion"),
             Param("XGL_DESCRIPTOR_SET_USAGE", "setUsage"),
             Param("uint32_t", "count"),
             Param("const XGL_DESCRIPTOR_SET_LAYOUT*", "pSetLayouts"),
             Param("XGL_DESCRIPTOR_SET*", "pDescriptorSets"),
             Param("uint32_t*", "pCount")]),

        Proto("void", "ClearDescriptorSets",
            [Param("XGL_DESCRIPTOR_REGION", "descriptorRegion"),
             Param("uint32_t", "count"),
             Param("const XGL_DESCRIPTOR_SET*", "pDescriptorSets")]),

        Proto("void", "UpdateDescriptors",
            [Param("XGL_DESCRIPTOR_SET", "descriptorSet"),
             Param("const void*", "pUpdateChain")]),

        Proto("XGL_RESULT", "CreateDynamicViewportState",
            [Param("XGL_DEVICE", "device"),
             Param("const XGL_DYNAMIC_VP_STATE_CREATE_INFO*", "pCreateInfo"),
             Param("XGL_DYNAMIC_VP_STATE_OBJECT*", "pState")]),

        Proto("XGL_RESULT", "CreateDynamicRasterState",
            [Param("XGL_DEVICE", "device"),
             Param("const XGL_DYNAMIC_RS_STATE_CREATE_INFO*", "pCreateInfo"),
             Param("XGL_DYNAMIC_RS_STATE_OBJECT*", "pState")]),

        Proto("XGL_RESULT", "CreateDynamicColorBlendState",
            [Param("XGL_DEVICE", "device"),
             Param("const XGL_DYNAMIC_CB_STATE_CREATE_INFO*", "pCreateInfo"),
             Param("XGL_DYNAMIC_CB_STATE_OBJECT*", "pState")]),

        Proto("XGL_RESULT", "CreateDynamicDepthStencilState",
            [Param("XGL_DEVICE", "device"),
             Param("const XGL_DYNAMIC_DS_STATE_CREATE_INFO*", "pCreateInfo"),
             Param("XGL_DYNAMIC_DS_STATE_OBJECT*", "pState")]),

        Proto("XGL_RESULT", "CreateCommandBuffer",
            [Param("XGL_DEVICE", "device"),
             Param("const XGL_CMD_BUFFER_CREATE_INFO*", "pCreateInfo"),
             Param("XGL_CMD_BUFFER*", "pCmdBuffer")]),

        Proto("XGL_RESULT", "BeginCommandBuffer",
            [Param("XGL_CMD_BUFFER", "cmdBuffer"),
             Param("const XGL_CMD_BUFFER_BEGIN_INFO*", "pBeginInfo")]),

        Proto("XGL_RESULT", "EndCommandBuffer",
            [Param("XGL_CMD_BUFFER", "cmdBuffer")]),

        Proto("XGL_RESULT", "ResetCommandBuffer",
            [Param("XGL_CMD_BUFFER", "cmdBuffer")]),

        Proto("void", "CmdBindPipeline",
            [Param("XGL_CMD_BUFFER", "cmdBuffer"),
             Param("XGL_PIPELINE_BIND_POINT", "pipelineBindPoint"),
             Param("XGL_PIPELINE", "pipeline")]),

        Proto("void", "CmdBindPipelineDelta",
            [Param("XGL_CMD_BUFFER", "cmdBuffer"),
             Param("XGL_PIPELINE_BIND_POINT", "pipelineBindPoint"),
             Param("XGL_PIPELINE_DELTA", "delta")]),

        Proto("void", "CmdBindDynamicStateObject",
            [Param("XGL_CMD_BUFFER", "cmdBuffer"),
             Param("XGL_STATE_BIND_POINT", "stateBindPoint"),
             Param("XGL_DYNAMIC_STATE_OBJECT", "state")]),

        Proto("void", "CmdBindDescriptorSet",
            [Param("XGL_CMD_BUFFER", "cmdBuffer"),
             Param("XGL_PIPELINE_BIND_POINT", "pipelineBindPoint"),
             Param("XGL_DESCRIPTOR_SET", "descriptorSet"),
             Param("const uint32_t*", "pUserData")]),

        Proto("void", "CmdBindVertexBuffer",
            [Param("XGL_CMD_BUFFER", "cmdBuffer"),
             Param("XGL_BUFFER", "buffer"),
             Param("XGL_GPU_SIZE", "offset"),
             Param("uint32_t", "binding")]),

        Proto("void", "CmdBindIndexBuffer",
            [Param("XGL_CMD_BUFFER", "cmdBuffer"),
             Param("XGL_BUFFER", "buffer"),
             Param("XGL_GPU_SIZE", "offset"),
             Param("XGL_INDEX_TYPE", "indexType")]),

        Proto("void", "CmdDraw",
            [Param("XGL_CMD_BUFFER", "cmdBuffer"),
             Param("uint32_t", "firstVertex"),
             Param("uint32_t", "vertexCount"),
             Param("uint32_t", "firstInstance"),
             Param("uint32_t", "instanceCount")]),

        Proto("void", "CmdDrawIndexed",
            [Param("XGL_CMD_BUFFER", "cmdBuffer"),
             Param("uint32_t", "firstIndex"),
             Param("uint32_t", "indexCount"),
             Param("int32_t", "vertexOffset"),
             Param("uint32_t", "firstInstance"),
             Param("uint32_t", "instanceCount")]),

        Proto("void", "CmdDrawIndirect",
            [Param("XGL_CMD_BUFFER", "cmdBuffer"),
             Param("XGL_BUFFER", "buffer"),
             Param("XGL_GPU_SIZE", "offset"),
             Param("uint32_t", "count"),
             Param("uint32_t", "stride")]),

        Proto("void", "CmdDrawIndexedIndirect",
            [Param("XGL_CMD_BUFFER", "cmdBuffer"),
             Param("XGL_BUFFER", "buffer"),
             Param("XGL_GPU_SIZE", "offset"),
             Param("uint32_t", "count"),
             Param("uint32_t", "stride")]),

        Proto("void", "CmdDispatch",
            [Param("XGL_CMD_BUFFER", "cmdBuffer"),
             Param("uint32_t", "x"),
             Param("uint32_t", "y"),
             Param("uint32_t", "z")]),

        Proto("void", "CmdDispatchIndirect",
            [Param("XGL_CMD_BUFFER", "cmdBuffer"),
             Param("XGL_BUFFER", "buffer"),
             Param("XGL_GPU_SIZE", "offset")]),

        Proto("void", "CmdCopyBuffer",
            [Param("XGL_CMD_BUFFER", "cmdBuffer"),
             Param("XGL_BUFFER", "srcBuffer"),
             Param("XGL_BUFFER", "destBuffer"),
             Param("uint32_t", "regionCount"),
             Param("const XGL_BUFFER_COPY*", "pRegions")]),

        Proto("void", "CmdCopyImage",
            [Param("XGL_CMD_BUFFER", "cmdBuffer"),
             Param("XGL_IMAGE", "srcImage"),
             Param("XGL_IMAGE", "destImage"),
             Param("uint32_t", "regionCount"),
             Param("const XGL_IMAGE_COPY*", "pRegions")]),

        Proto("void", "CmdCopyBufferToImage",
            [Param("XGL_CMD_BUFFER", "cmdBuffer"),
             Param("XGL_BUFFER", "srcBuffer"),
             Param("XGL_IMAGE", "destImage"),
             Param("uint32_t", "regionCount"),
             Param("const XGL_BUFFER_IMAGE_COPY*", "pRegions")]),

        Proto("void", "CmdCopyImageToBuffer",
            [Param("XGL_CMD_BUFFER", "cmdBuffer"),
             Param("XGL_IMAGE", "srcImage"),
             Param("XGL_BUFFER", "destBuffer"),
             Param("uint32_t", "regionCount"),
             Param("const XGL_BUFFER_IMAGE_COPY*", "pRegions")]),

        Proto("void", "CmdCloneImageData",
            [Param("XGL_CMD_BUFFER", "cmdBuffer"),
             Param("XGL_IMAGE", "srcImage"),
             Param("XGL_IMAGE_LAYOUT", "srcImageLayout"),
             Param("XGL_IMAGE", "destImage"),
             Param("XGL_IMAGE_LAYOUT", "destImageLayout")]),

        Proto("void", "CmdUpdateBuffer",
            [Param("XGL_CMD_BUFFER", "cmdBuffer"),
             Param("XGL_BUFFER", "destBuffer"),
             Param("XGL_GPU_SIZE", "destOffset"),
             Param("XGL_GPU_SIZE", "dataSize"),
             Param("const uint32_t*", "pData")]),

        Proto("void", "CmdFillBuffer",
            [Param("XGL_CMD_BUFFER", "cmdBuffer"),
             Param("XGL_BUFFER", "destBuffer"),
             Param("XGL_GPU_SIZE", "destOffset"),
             Param("XGL_GPU_SIZE", "fillSize"),
             Param("uint32_t", "data")]),

        Proto("void", "CmdClearColorImage",
            [Param("XGL_CMD_BUFFER", "cmdBuffer"),
             Param("XGL_IMAGE", "image"),
             Param("const float[4]", "color"),
             Param("uint32_t", "rangeCount"),
             Param("const XGL_IMAGE_SUBRESOURCE_RANGE*", "pRanges")]),

        Proto("void", "CmdClearColorImageRaw",
            [Param("XGL_CMD_BUFFER", "cmdBuffer"),
             Param("XGL_IMAGE", "image"),
             Param("const uint32_t[4]", "color"),
             Param("uint32_t", "rangeCount"),
             Param("const XGL_IMAGE_SUBRESOURCE_RANGE*", "pRanges")]),

        Proto("void", "CmdClearDepthStencil",
            [Param("XGL_CMD_BUFFER", "cmdBuffer"),
             Param("XGL_IMAGE", "image"),
             Param("float", "depth"),
             Param("uint32_t", "stencil"),
             Param("uint32_t", "rangeCount"),
             Param("const XGL_IMAGE_SUBRESOURCE_RANGE*", "pRanges")]),

        Proto("void", "CmdResolveImage",
            [Param("XGL_CMD_BUFFER", "cmdBuffer"),
             Param("XGL_IMAGE", "srcImage"),
             Param("XGL_IMAGE", "destImage"),
             Param("uint32_t", "rectCount"),
             Param("const XGL_IMAGE_RESOLVE*", "pRects")]),

        Proto("void", "CmdSetEvent",
            [Param("XGL_CMD_BUFFER", "cmdBuffer"),
             Param("XGL_EVENT", "event"),
             Param("XGL_SET_EVENT", "pipeEvent")]),

        Proto("void", "CmdResetEvent",
            [Param("XGL_CMD_BUFFER", "cmdBuffer"),
             Param("XGL_EVENT", "event")]),

        Proto("void", "CmdWaitEvents",
            [Param("XGL_CMD_BUFFER", "cmdBuffer"),
             Param("const XGL_EVENT_WAIT_INFO*", "pWaitInfo")]),

        Proto("void", "CmdPipelineBarrier",
            [Param("XGL_CMD_BUFFER", "cmdBuffer"),
             Param("const XGL_PIPELINE_BARRIER*", "pBarrier")]),

        Proto("void", "CmdBeginQuery",
            [Param("XGL_CMD_BUFFER", "cmdBuffer"),
             Param("XGL_QUERY_POOL", "queryPool"),
             Param("uint32_t", "slot"),
             Param("XGL_FLAGS", "flags")]),

        Proto("void", "CmdEndQuery",
            [Param("XGL_CMD_BUFFER", "cmdBuffer"),
             Param("XGL_QUERY_POOL", "queryPool"),
             Param("uint32_t", "slot")]),

        Proto("void", "CmdResetQueryPool",
            [Param("XGL_CMD_BUFFER", "cmdBuffer"),
             Param("XGL_QUERY_POOL", "queryPool"),
             Param("uint32_t", "startQuery"),
             Param("uint32_t", "queryCount")]),

        Proto("void", "CmdWriteTimestamp",
            [Param("XGL_CMD_BUFFER", "cmdBuffer"),
             Param("XGL_TIMESTAMP_TYPE", "timestampType"),
             Param("XGL_BUFFER", "destBuffer"),
             Param("XGL_GPU_SIZE", "destOffset")]),

        Proto("void", "CmdInitAtomicCounters",
            [Param("XGL_CMD_BUFFER", "cmdBuffer"),
             Param("XGL_PIPELINE_BIND_POINT", "pipelineBindPoint"),
             Param("uint32_t", "startCounter"),
             Param("uint32_t", "counterCount"),
             Param("const uint32_t*", "pData")]),

        Proto("void", "CmdLoadAtomicCounters",
            [Param("XGL_CMD_BUFFER", "cmdBuffer"),
             Param("XGL_PIPELINE_BIND_POINT", "pipelineBindPoint"),
             Param("uint32_t", "startCounter"),
             Param("uint32_t", "counterCount"),
             Param("XGL_BUFFER", "srcBuffer"),
             Param("XGL_GPU_SIZE", "srcOffset")]),

        Proto("void", "CmdSaveAtomicCounters",
            [Param("XGL_CMD_BUFFER", "cmdBuffer"),
             Param("XGL_PIPELINE_BIND_POINT", "pipelineBindPoint"),
             Param("uint32_t", "startCounter"),
             Param("uint32_t", "counterCount"),
             Param("XGL_BUFFER", "destBuffer"),
             Param("XGL_GPU_SIZE", "destOffset")]),

        Proto("XGL_RESULT", "CreateFramebuffer",
            [Param("XGL_DEVICE", "device"),
             Param("const XGL_FRAMEBUFFER_CREATE_INFO*", "pCreateInfo"),
             Param("XGL_FRAMEBUFFER*", "pFramebuffer")]),

        Proto("XGL_RESULT", "CreateRenderPass",
            [Param("XGL_DEVICE", "device"),
             Param("const XGL_RENDER_PASS_CREATE_INFO*", "pCreateInfo"),
             Param("XGL_RENDER_PASS*", "pRenderPass")]),

        Proto("void", "CmdBeginRenderPass",
            [Param("XGL_CMD_BUFFER", "cmdBuffer"),
             Param("XGL_RENDER_PASS", "renderPass")]),

        Proto("void", "CmdEndRenderPass",
            [Param("XGL_CMD_BUFFER", "cmdBuffer"),
             Param("XGL_RENDER_PASS", "renderPass")]),

        Proto("XGL_RESULT", "DbgSetValidationLevel",
            [Param("XGL_DEVICE", "device"),
             Param("XGL_VALIDATION_LEVEL", "validationLevel")]),

        Proto("XGL_RESULT", "DbgRegisterMsgCallback",
            [Param("XGL_DBG_MSG_CALLBACK_FUNCTION", "pfnMsgCallback"),
             Param("void*", "pUserData")]),

        Proto("XGL_RESULT", "DbgUnregisterMsgCallback",
            [Param("XGL_DBG_MSG_CALLBACK_FUNCTION", "pfnMsgCallback")]),

        Proto("XGL_RESULT", "DbgSetMessageFilter",
            [Param("XGL_DEVICE", "device"),
             Param("int32_t", "msgCode"),
             Param("XGL_DBG_MSG_FILTER", "filter")]),

        Proto("XGL_RESULT", "DbgSetObjectTag",
            [Param("XGL_BASE_OBJECT", "object"),
             Param("size_t", "tagSize"),
             Param("const void*", "pTag")]),

        Proto("XGL_RESULT", "DbgSetGlobalOption",
            [Param("XGL_DBG_GLOBAL_OPTION", "dbgOption"),
             Param("size_t", "dataSize"),
             Param("const void*", "pData")]),

        Proto("XGL_RESULT", "DbgSetDeviceOption",
            [Param("XGL_DEVICE", "device"),
             Param("XGL_DBG_DEVICE_OPTION", "dbgOption"),
             Param("size_t", "dataSize"),
             Param("const void*", "pData")]),

        Proto("void", "CmdDbgMarkerBegin",
            [Param("XGL_CMD_BUFFER", "cmdBuffer"),
             Param("const char*", "pMarker")]),

        Proto("void", "CmdDbgMarkerEnd",
            [Param("XGL_CMD_BUFFER", "cmdBuffer")]),
    ],
)

wsi_x11 = Extension(
    name="XGL_WSI_X11",
    headers=["xglWsiX11Ext.h"],
    objects=[],
    protos=[
        Proto("XGL_RESULT", "WsiX11AssociateConnection",
            [Param("XGL_PHYSICAL_GPU", "gpu"),
             Param("const XGL_WSI_X11_CONNECTION_INFO*", "pConnectionInfo")]),

        Proto("XGL_RESULT", "WsiX11GetMSC",
            [Param("XGL_DEVICE", "device"),
             Param("xcb_window_t", "window"),
             Param("xcb_randr_crtc_t", "crtc"),
             Param("uint64_t*", "pMsc")]),

        Proto("XGL_RESULT", "WsiX11CreatePresentableImage",
            [Param("XGL_DEVICE", "device"),
             Param("const XGL_WSI_X11_PRESENTABLE_IMAGE_CREATE_INFO*", "pCreateInfo"),
             Param("XGL_IMAGE*", "pImage"),
             Param("XGL_GPU_MEMORY*", "pMem")]),

        Proto("XGL_RESULT", "WsiX11QueuePresent",
            [Param("XGL_QUEUE", "queue"),
             Param("const XGL_WSI_X11_PRESENT_INFO*", "pPresentInfo"),
             Param("XGL_FENCE", "fence")]),
    ],
)

extensions = [core, wsi_x11]

object_root_list = [
    "XGL_INSTANCE",
    "XGL_PHYSICAL_GPU",
    "XGL_BASE_OBJECT"
]

object_base_list = [
    "XGL_DEVICE",
    "XGL_QUEUE",
    "XGL_GPU_MEMORY",
    "XGL_OBJECT"
]

object_list = [
    "XGL_BUFFER",
    "XGL_BUFFER_VIEW",
    "XGL_IMAGE",
    "XGL_IMAGE_VIEW",
    "XGL_COLOR_ATTACHMENT_VIEW",
    "XGL_DEPTH_STENCIL_VIEW",
    "XGL_SHADER",
    "XGL_PIPELINE",
    "XGL_PIPELINE_DELTA",
    "XGL_SAMPLER",
    "XGL_DESCRIPTOR_SET",
    "XGL_DESCRIPTOR_SET_LAYOUT",
    "XGL_DESCRIPTOR_REGION",
    "XGL_DYNAMIC_STATE_OBJECT",
    "XGL_CMD_BUFFER",
    "XGL_FENCE",
    "XGL_QUEUE_SEMAPHORE",
    "XGL_EVENT",
    "XGL_QUERY_POOL",
    "XGL_FRAMEBUFFER",
    "XGL_RENDER_PASS"
]

object_dynamic_state_list = [
    "XGL_DYNAMIC_VP_STATE_OBJECT",
    "XGL_DYNAMIC_RS_STATE_OBJECT",
    "XGL_DYNAMIC_CB_STATE_OBJECT",
    "XGL_DYNAMIC_DS_STATE_OBJECT"
]

object_type_list = object_root_list + object_base_list + object_list + object_dynamic_state_list

object_parent_list = ["XGL_BASE_OBJECT", "XGL_OBJECT", "XGL_DYNAMIC_STATE_OBJECT"]

headers = []
objects = []
protos = []
for ext in extensions:
    headers.extend(ext.headers)
    objects.extend(ext.objects)
    protos.extend(ext.protos)

proto_names = [proto.name for proto in protos]

def parse_xgl_h(filename):
    # read object and protoype typedefs
    object_lines = []
    proto_lines = []
    with open(filename, "r") as fp:
        for line in fp:
            line = line.strip()
            if line.startswith("XGL_DEFINE"):
                begin = line.find("(") + 1
                end = line.find(",")
                # extract the object type
                object_lines.append(line[begin:end])
            if line.startswith("typedef") and line.endswith(");"):
                # drop leading "typedef " and trailing ");"
                proto_lines.append(line[8:-2])

    # parse proto_lines to protos
    protos = []
    for line in proto_lines:
        first, rest = line.split(" (XGLAPI *xgl")
        second, third = rest.split("Type)(")

        # get the return type, no space before "*"
        proto_ret = "*".join([t.rstrip() for t in first.split("*")])

        # get the name
        proto_name = second.strip()

        # get the list of params
        param_strs = third.split(", ")
        params = []
        for s in param_strs:
            ty, name = s.rsplit(" ", 1)

            # no space before "*"
            ty = "*".join([t.rstrip() for t in ty.split("*")])
            # attach [] to ty
            idx = name.rfind("[")
            if idx >= 0:
                ty += name[idx:]
                name = name[:idx]

            params.append(Param(ty, name))

        protos.append(Proto(proto_ret, proto_name, params))

    # make them an extension and print
    ext = Extension("XGL_CORE",
            headers=["xgl.h", "xglDbg.h"],
            objects=object_lines,
            protos=protos)
    print("core =", str(ext))

    print("")
    print("typedef struct _XGL_LAYER_DISPATCH_TABLE")
    print("{")
    for proto in ext.protos:
        print("    xgl%sType %s;" % (proto.name, proto.name))
    print("} XGL_LAYER_DISPATCH_TABLE;")

if __name__ == "__main__":
    parse_xgl_h("include/xgl.h")
