"""VK 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 vulkan.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 VK 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 VK 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)

# VK core API
core = Extension(
    name="VK_CORE",
    headers=["vulkan.h", "vk_debug_report_lunarg.h"],

    objects=[
        "VkInstance",
        "VkPhysicalDevice",
        "VkDevice",
        "VkQueue",
        "VkDeviceMemory",
        "VkObject",
        "VkBuffer",
        "VkBufferView",
        "VkImage",
        "VkImageView",
        "VkColorAttachmentView",
        "VkDepthStencilView",
        "VkShader",
        "VkPipeline",
        "VkSampler",
        "VkDescriptorSet",
        "VkDescriptorSetLayout",
        "VkPipelineLayout",
        "VkDescriptorPool",
        "VkDynamicStateObject",
        "VkDynamicVpState",
        "VkDynamicRsState",
        "VkDynamicCbState",
        "VkDynamicDsState",
        "VkCmdBuffer",
        "VkFence",
        "VkSemaphore",
        "VkEvent",
        "VkQueryPool",
        "VkFramebuffer",
        "VkRenderPass",
    ],
    protos=[
        Proto("VkResult", "CreateInstance",
            [Param("const VkInstanceCreateInfo*", "pCreateInfo"),
             Param("VkInstance*", "pInstance")]),

        Proto("VkResult", "DestroyInstance",
            [Param("VkInstance", "instance")]),

        Proto("VkResult", "EnumeratePhysicalDevices",
            [Param("VkInstance", "instance"),
             Param("uint32_t*", "pPhysicalDeviceCount"),
             Param("VkPhysicalDevice*", "pPhysicalDevices")]),

        Proto("VkResult", "GetPhysicalDeviceInfo",
            [Param("VkPhysicalDevice", "gpu"),
             Param("VkPhysicalDeviceInfoType", "infoType"),
             Param("size_t*", "pDataSize"),
             Param("void*", "pData")]),

        Proto("void*", "GetInstanceProcAddr",
            [Param("VkInstance", "instance"),
             Param("const char*", "pName")]),

        Proto("void*", "GetDeviceProcAddr",
            [Param("VkDevice", "device"),
             Param("const char*", "pName")]),

        Proto("VkResult", "CreateDevice",
            [Param("VkPhysicalDevice", "gpu"),
             Param("const VkDeviceCreateInfo*", "pCreateInfo"),
             Param("VkDevice*", "pDevice")]),

        Proto("VkResult", "DestroyDevice",
            [Param("VkDevice", "device")]),

        Proto("VkResult", "GetGlobalExtensionInfo",
            [Param("VkExtensionInfoType", "infoType"),
             Param("uint32_t", "extensionIndex"),
             Param("size_t*", "pDataSize"),
             Param("void*", "pData")]),

        Proto("VkResult", "GetPhysicalDeviceExtensionInfo",
            [Param("VkPhysicalDevice", "gpu"),
             Param("VkExtensionInfoType", "infoType"),
             Param("uint32_t", "extensionIndex"),
             Param("size_t*", "pDataSize"),
             Param("void*", "pData")]),

        Proto("VkResult", "GetDeviceQueue",
            [Param("VkDevice", "device"),
             Param("uint32_t", "queueNodeIndex"),
             Param("uint32_t", "queueIndex"),
             Param("VkQueue*", "pQueue")]),

        Proto("VkResult", "QueueSubmit",
            [Param("VkQueue", "queue"),
             Param("uint32_t", "cmdBufferCount"),
             Param("const VkCmdBuffer*", "pCmdBuffers"),
             Param("VkFence", "fence")]),

        Proto("VkResult", "QueueWaitIdle",
            [Param("VkQueue", "queue")]),

        Proto("VkResult", "DeviceWaitIdle",
            [Param("VkDevice", "device")]),

        Proto("VkResult", "AllocMemory",
            [Param("VkDevice", "device"),
             Param("const VkMemoryAllocInfo*", "pAllocInfo"),
             Param("VkDeviceMemory*", "pMem")]),

        Proto("VkResult", "FreeMemory",
            [Param("VkDevice", "device"),
             Param("VkDeviceMemory", "mem")]),

        Proto("VkResult", "SetMemoryPriority",
            [Param("VkDevice", "device"),
             Param("VkDeviceMemory", "mem"),
             Param("VkMemoryPriority", "priority")]),

        Proto("VkResult", "MapMemory",
            [Param("VkDevice", "device"),
             Param("VkDeviceMemory", "mem"),
             Param("VkDeviceSize", "offset"),
             Param("VkDeviceSize", "size"),
             Param("VkFlags", "flags"),
             Param("void**", "ppData")]),

        Proto("VkResult", "UnmapMemory",
            [Param("VkDevice", "device"),
             Param("VkDeviceMemory", "mem")]),

        Proto("VkResult", "FlushMappedMemoryRanges",
            [Param("VkDevice", "device"),
             Param("uint32_t", "memRangeCount"),
             Param("const VkMappedMemoryRange*", "pMemRanges")]),

        Proto("VkResult", "InvalidateMappedMemoryRanges",
            [Param("VkDevice", "device"),
             Param("uint32_t", "memRangeCount"),
             Param("const VkMappedMemoryRange*", "pMemRanges")]),

        Proto("VkResult", "PinSystemMemory",
            [Param("VkDevice", "device"),
             Param("const void*", "pSysMem"),
             Param("size_t", "memSize"),
             Param("VkDeviceMemory*", "pMem")]),

        Proto("VkResult", "GetMultiDeviceCompatibility",
            [Param("VkPhysicalDevice", "gpu0"),
             Param("VkPhysicalDevice", "gpu1"),
             Param("VkPhysicalDeviceCompatibilityInfo*", "pInfo")]),

        Proto("VkResult", "OpenSharedMemory",
            [Param("VkDevice", "device"),
             Param("const VkMemoryOpenInfo*", "pOpenInfo"),
             Param("VkDeviceMemory*", "pMem")]),

        Proto("VkResult", "OpenSharedSemaphore",
            [Param("VkDevice", "device"),
             Param("const VkSemaphoreOpenInfo*", "pOpenInfo"),
             Param("VkSemaphore*", "pSemaphore")]),

        Proto("VkResult", "OpenPeerMemory",
            [Param("VkDevice", "device"),
             Param("const VkPeerMemoryOpenInfo*", "pOpenInfo"),
             Param("VkDeviceMemory*", "pMem")]),

        Proto("VkResult", "OpenPeerImage",
            [Param("VkDevice", "device"),
             Param("const VkPeerImageOpenInfo*", "pOpenInfo"),
             Param("VkImage*", "pImage"),
             Param("VkDeviceMemory*", "pMem")]),

        Proto("VkResult", "DestroyObject",
            [Param("VkDevice", "device"),
             Param("VkObjectType", "objType"),
             Param("VkObject", "object")]),

        Proto("VkResult", "GetObjectInfo",
            [Param("VkDevice", "device"),
             Param("VkObjectType", "objType"),
             Param("VkObject", "object"),
             Param("VkObjectInfoType", "infoType"),
             Param("size_t*", "pDataSize"),
             Param("void*", "pData")]),

        Proto("VkResult", "BindObjectMemory",
            [Param("VkDevice", "device"),
             Param("VkObjectType", "objType"),
             Param("VkObject", "object"),
             Param("VkDeviceMemory", "mem"),
             Param("VkDeviceSize", "offset")]),

        Proto("VkResult", "QueueBindSparseBufferMemory",
            [Param("VkQueue", "queue"),
             Param("VkBuffer", "buffer"),
             Param("VkDeviceSize", "rangeOffset"),
             Param("VkDeviceSize", "rangeSize"),
             Param("VkDeviceMemory", "mem"),
             Param("VkDeviceSize", "memOffset")]),

        Proto("VkResult", "QueueBindSparseImageMemory",
            [Param("VkQueue", "queue"),
             Param("VkImage", "image"),
             Param("const VkImageMemoryBindInfo*", "pBindInfo"),
             Param("VkDeviceMemory", "mem"),
             Param("VkDeviceSize", "memOffset")]),

        Proto("VkResult", "CreateFence",
            [Param("VkDevice", "device"),
             Param("const VkFenceCreateInfo*", "pCreateInfo"),
             Param("VkFence*", "pFence")]),

        Proto("VkResult", "ResetFences",
            [Param("VkDevice", "device"),
             Param("uint32_t", "fenceCount"),
             Param("VkFence*", "pFences")]),

        Proto("VkResult", "GetFenceStatus",
            [Param("VkDevice", "device"),
             Param("VkFence", "fence")]),

        Proto("VkResult", "WaitForFences",
            [Param("VkDevice", "device"),
             Param("uint32_t", "fenceCount"),
             Param("const VkFence*", "pFences"),
             Param("bool32_t", "waitAll"),
             Param("uint64_t", "timeout")]),

        Proto("VkResult", "CreateSemaphore",
            [Param("VkDevice", "device"),
             Param("const VkSemaphoreCreateInfo*", "pCreateInfo"),
             Param("VkSemaphore*", "pSemaphore")]),

        Proto("VkResult", "QueueSignalSemaphore",
            [Param("VkQueue", "queue"),
             Param("VkSemaphore", "semaphore")]),

        Proto("VkResult", "QueueWaitSemaphore",
            [Param("VkQueue", "queue"),
             Param("VkSemaphore", "semaphore")]),

        Proto("VkResult", "CreateEvent",
            [Param("VkDevice", "device"),
             Param("const VkEventCreateInfo*", "pCreateInfo"),
             Param("VkEvent*", "pEvent")]),

        Proto("VkResult", "GetEventStatus",
            [Param("VkDevice", "device"),
             Param("VkEvent", "event")]),

        Proto("VkResult", "SetEvent",
            [Param("VkDevice", "device"),
             Param("VkEvent", "event")]),

        Proto("VkResult", "ResetEvent",
            [Param("VkDevice", "device"),
             Param("VkEvent", "event")]),

        Proto("VkResult", "CreateQueryPool",
            [Param("VkDevice", "device"),
             Param("const VkQueryPoolCreateInfo*", "pCreateInfo"),
             Param("VkQueryPool*", "pQueryPool")]),

        Proto("VkResult", "GetQueryPoolResults",
            [Param("VkDevice", "device"),
             Param("VkQueryPool", "queryPool"),
             Param("uint32_t", "startQuery"),
             Param("uint32_t", "queryCount"),
             Param("size_t*", "pDataSize"),
             Param("void*", "pData"),
             Param("VkQueryResultFlags", "flags")]),

        Proto("VkResult", "GetFormatInfo",
            [Param("VkDevice", "device"),
             Param("VkFormat", "format"),
             Param("VkFormatInfoType", "infoType"),
             Param("size_t*", "pDataSize"),
             Param("void*", "pData")]),

        Proto("VkResult", "CreateBuffer",
            [Param("VkDevice", "device"),
             Param("const VkBufferCreateInfo*", "pCreateInfo"),
             Param("VkBuffer*", "pBuffer")]),

        Proto("VkResult", "CreateBufferView",
            [Param("VkDevice", "device"),
             Param("const VkBufferViewCreateInfo*", "pCreateInfo"),
             Param("VkBufferView*", "pView")]),

        Proto("VkResult", "CreateImage",
            [Param("VkDevice", "device"),
             Param("const VkImageCreateInfo*", "pCreateInfo"),
             Param("VkImage*", "pImage")]),

        Proto("VkResult", "GetImageSubresourceInfo",
            [Param("VkDevice", "device"),
             Param("VkImage", "image"),
             Param("const VkImageSubresource*", "pSubresource"),
             Param("VkSubresourceInfoType", "infoType"),
             Param("size_t*", "pDataSize"),
             Param("void*", "pData")]),

        Proto("VkResult", "CreateImageView",
            [Param("VkDevice", "device"),
             Param("const VkImageViewCreateInfo*", "pCreateInfo"),
             Param("VkImageView*", "pView")]),

        Proto("VkResult", "CreateColorAttachmentView",
            [Param("VkDevice", "device"),
             Param("const VkColorAttachmentViewCreateInfo*", "pCreateInfo"),
             Param("VkColorAttachmentView*", "pView")]),

        Proto("VkResult", "CreateDepthStencilView",
            [Param("VkDevice", "device"),
             Param("const VkDepthStencilViewCreateInfo*", "pCreateInfo"),
             Param("VkDepthStencilView*", "pView")]),

        Proto("VkResult", "CreateShader",
            [Param("VkDevice", "device"),
             Param("const VkShaderCreateInfo*", "pCreateInfo"),
             Param("VkShader*", "pShader")]),

        Proto("VkResult", "CreateGraphicsPipeline",
            [Param("VkDevice", "device"),
             Param("const VkGraphicsPipelineCreateInfo*", "pCreateInfo"),
             Param("VkPipeline*", "pPipeline")]),

        Proto("VkResult", "CreateGraphicsPipelineDerivative",
            [Param("VkDevice", "device"),
             Param("const VkGraphicsPipelineCreateInfo*", "pCreateInfo"),
             Param("VkPipeline", "basePipeline"),
             Param("VkPipeline*", "pPipeline")]),

        Proto("VkResult", "CreateComputePipeline",
            [Param("VkDevice", "device"),
             Param("const VkComputePipelineCreateInfo*", "pCreateInfo"),
             Param("VkPipeline*", "pPipeline")]),

        Proto("VkResult", "StorePipeline",
            [Param("VkDevice", "device"),
             Param("VkPipeline", "pipeline"),
             Param("size_t*", "pDataSize"),
             Param("void*", "pData")]),

        Proto("VkResult", "LoadPipeline",
            [Param("VkDevice", "device"),
             Param("size_t", "dataSize"),
             Param("const void*", "pData"),
             Param("VkPipeline*", "pPipeline")]),

        Proto("VkResult", "LoadPipelineDerivative",
            [Param("VkDevice", "device"),
             Param("size_t", "dataSize"),
             Param("const void*", "pData"),
             Param("VkPipeline", "basePipeline"),
             Param("VkPipeline*", "pPipeline")]),

        Proto("VkResult", "CreatePipelineLayout",
            [Param("VkDevice", "device"),
             Param("const VkPipelineLayoutCreateInfo*", "pCreateInfo"),
             Param("VkPipelineLayout*", "pPipelineLayout")]),

        Proto("VkResult", "CreateSampler",
            [Param("VkDevice", "device"),
             Param("const VkSamplerCreateInfo*", "pCreateInfo"),
             Param("VkSampler*", "pSampler")]),

        Proto("VkResult", "CreateDescriptorSetLayout",
            [Param("VkDevice", "device"),
             Param("const VkDescriptorSetLayoutCreateInfo*", "pCreateInfo"),
             Param("VkDescriptorSetLayout*", "pSetLayout")]),

        Proto("VkResult", "CreateDescriptorPool",
            [Param("VkDevice", "device"),
             Param("VkDescriptorPoolUsage", "poolUsage"),
             Param("uint32_t", "maxSets"),
             Param("const VkDescriptorPoolCreateInfo*", "pCreateInfo"),
             Param("VkDescriptorPool*", "pDescriptorPool")]),

        Proto("VkResult", "ResetDescriptorPool",
            [Param("VkDevice", "device"),
             Param("VkDescriptorPool", "descriptorPool")]),

        Proto("VkResult", "AllocDescriptorSets",
            [Param("VkDevice", "device"),
             Param("VkDescriptorPool", "descriptorPool"),
             Param("VkDescriptorSetUsage", "setUsage"),
             Param("uint32_t", "count"),
             Param("const VkDescriptorSetLayout*", "pSetLayouts"),
             Param("VkDescriptorSet*", "pDescriptorSets"),
             Param("uint32_t*", "pCount")]),

        Proto("void", "ClearDescriptorSets",
            [Param("VkDevice", "device"),
             Param("VkDescriptorPool", "descriptorPool"),
             Param("uint32_t", "count"),
             Param("const VkDescriptorSet*", "pDescriptorSets")]),

        Proto("VkResult", "UpdateDescriptorSets",
            [Param("VkDevice", "device"),
             Param("uint32_t", "writeCount"),
             Param("const VkWriteDescriptorSet*", "pDescriptorWrites"),
             Param("uint32_t", "copyCount"),
             Param("const VkCopyDescriptorSet*", "pDescriptorCopies")]),

        Proto("VkResult", "CreateDynamicViewportState",
            [Param("VkDevice", "device"),
             Param("const VkDynamicVpStateCreateInfo*", "pCreateInfo"),
             Param("VkDynamicVpState*", "pState")]),

        Proto("VkResult", "CreateDynamicRasterState",
            [Param("VkDevice", "device"),
             Param("const VkDynamicRsStateCreateInfo*", "pCreateInfo"),
             Param("VkDynamicRsState*", "pState")]),

        Proto("VkResult", "CreateDynamicColorBlendState",
            [Param("VkDevice", "device"),
             Param("const VkDynamicCbStateCreateInfo*", "pCreateInfo"),
             Param("VkDynamicCbState*", "pState")]),

        Proto("VkResult", "CreateDynamicDepthStencilState",
            [Param("VkDevice", "device"),
             Param("const VkDynamicDsStateCreateInfo*", "pCreateInfo"),
             Param("VkDynamicDsState*", "pState")]),

        Proto("VkResult", "CreateCommandBuffer",
            [Param("VkDevice", "device"),
             Param("const VkCmdBufferCreateInfo*", "pCreateInfo"),
             Param("VkCmdBuffer*", "pCmdBuffer")]),

        Proto("VkResult", "BeginCommandBuffer",
            [Param("VkCmdBuffer", "cmdBuffer"),
             Param("const VkCmdBufferBeginInfo*", "pBeginInfo")]),

        Proto("VkResult", "EndCommandBuffer",
            [Param("VkCmdBuffer", "cmdBuffer")]),

        Proto("VkResult", "ResetCommandBuffer",
            [Param("VkCmdBuffer", "cmdBuffer")]),

        Proto("void", "CmdBindPipeline",
            [Param("VkCmdBuffer", "cmdBuffer"),
             Param("VkPipelineBindPoint", "pipelineBindPoint"),
             Param("VkPipeline", "pipeline")]),

        Proto("void", "CmdBindDynamicStateObject",
            [Param("VkCmdBuffer", "cmdBuffer"),
             Param("VkStateBindPoint", "stateBindPoint"),
             Param("VkDynamicStateObject", "state")]),

        Proto("void", "CmdBindDescriptorSets",
            [Param("VkCmdBuffer", "cmdBuffer"),
             Param("VkPipelineBindPoint", "pipelineBindPoint"),
             Param("uint32_t", "firstSet"),
             Param("uint32_t", "setCount"),
             Param("const VkDescriptorSet*", "pDescriptorSets"),
             Param("uint32_t", "dynamicOffsetCount"),
             Param("const uint32_t*", "pDynamicOffsets")]),

        Proto("void", "CmdBindVertexBuffers",
            [Param("VkCmdBuffer", "cmdBuffer"),
             Param("uint32_t", "startBinding"),
             Param("uint32_t", "bindingCount"),
             Param("const VkBuffer*", "pBuffers"),
             Param("const VkDeviceSize*", "pOffsets")]),


        Proto("void", "CmdBindIndexBuffer",
            [Param("VkCmdBuffer", "cmdBuffer"),
             Param("VkBuffer", "buffer"),
             Param("VkDeviceSize", "offset"),
             Param("VkIndexType", "indexType")]),

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

        Proto("void", "CmdDrawIndexed",
            [Param("VkCmdBuffer", "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("VkCmdBuffer", "cmdBuffer"),
             Param("VkBuffer", "buffer"),
             Param("VkDeviceSize", "offset"),
             Param("uint32_t", "count"),
             Param("uint32_t", "stride")]),

        Proto("void", "CmdDrawIndexedIndirect",
            [Param("VkCmdBuffer", "cmdBuffer"),
             Param("VkBuffer", "buffer"),
             Param("VkDeviceSize", "offset"),
             Param("uint32_t", "count"),
             Param("uint32_t", "stride")]),

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

        Proto("void", "CmdDispatchIndirect",
            [Param("VkCmdBuffer", "cmdBuffer"),
             Param("VkBuffer", "buffer"),
             Param("VkDeviceSize", "offset")]),

        Proto("void", "CmdCopyBuffer",
            [Param("VkCmdBuffer", "cmdBuffer"),
             Param("VkBuffer", "srcBuffer"),
             Param("VkBuffer", "destBuffer"),
             Param("uint32_t", "regionCount"),
             Param("const VkBufferCopy*", "pRegions")]),

        Proto("void", "CmdCopyImage",
            [Param("VkCmdBuffer", "cmdBuffer"),
             Param("VkImage", "srcImage"),
             Param("VkImageLayout", "srcImageLayout"),
             Param("VkImage", "destImage"),
             Param("VkImageLayout", "destImageLayout"),
             Param("uint32_t", "regionCount"),
             Param("const VkImageCopy*", "pRegions")]),

        Proto("void", "CmdBlitImage",
            [Param("VkCmdBuffer", "cmdBuffer"),
             Param("VkImage", "srcImage"),
             Param("VkImageLayout", "srcImageLayout"),
             Param("VkImage", "destImage"),
             Param("VkImageLayout", "destImageLayout"),
             Param("uint32_t", "regionCount"),
             Param("const VkImageBlit*", "pRegions"),
             Param("VkTexFilter", "filter")]),

        Proto("void", "CmdCopyBufferToImage",
            [Param("VkCmdBuffer", "cmdBuffer"),
             Param("VkBuffer", "srcBuffer"),
             Param("VkImage", "destImage"),
             Param("VkImageLayout", "destImageLayout"),
             Param("uint32_t", "regionCount"),
             Param("const VkBufferImageCopy*", "pRegions")]),

        Proto("void", "CmdCopyImageToBuffer",
            [Param("VkCmdBuffer", "cmdBuffer"),
             Param("VkImage", "srcImage"),
             Param("VkImageLayout", "srcImageLayout"),
             Param("VkBuffer", "destBuffer"),
             Param("uint32_t", "regionCount"),
             Param("const VkBufferImageCopy*", "pRegions")]),

        Proto("void", "CmdUpdateBuffer",
            [Param("VkCmdBuffer", "cmdBuffer"),
             Param("VkBuffer", "destBuffer"),
             Param("VkDeviceSize", "destOffset"),
             Param("VkDeviceSize", "dataSize"),
             Param("const uint32_t*", "pData")]),

        Proto("void", "CmdFillBuffer",
            [Param("VkCmdBuffer", "cmdBuffer"),
             Param("VkBuffer", "destBuffer"),
             Param("VkDeviceSize", "destOffset"),
             Param("VkDeviceSize", "fillSize"),
             Param("uint32_t", "data")]),

        Proto("void", "CmdClearColorImage",
            [Param("VkCmdBuffer", "cmdBuffer"),
             Param("VkImage", "image"),
             Param("VkImageLayout", "imageLayout"),
             Param("const VkClearColor*", "pColor"),
             Param("uint32_t", "rangeCount"),
             Param("const VkImageSubresourceRange*", "pRanges")]),

        Proto("void", "CmdClearDepthStencil",
            [Param("VkCmdBuffer", "cmdBuffer"),
             Param("VkImage", "image"),
             Param("VkImageLayout", "imageLayout"),
             Param("float", "depth"),
             Param("uint32_t", "stencil"),
             Param("uint32_t", "rangeCount"),
             Param("const VkImageSubresourceRange*", "pRanges")]),

        Proto("void", "CmdResolveImage",
            [Param("VkCmdBuffer", "cmdBuffer"),
             Param("VkImage", "srcImage"),
             Param("VkImageLayout", "srcImageLayout"),
             Param("VkImage", "destImage"),
             Param("VkImageLayout", "destImageLayout"),
             Param("uint32_t", "regionCount"),
             Param("const VkImageResolve*", "pRegions")]),

        Proto("void", "CmdSetEvent",
            [Param("VkCmdBuffer", "cmdBuffer"),
             Param("VkEvent", "event"),
             Param("VkPipeEvent", "pipeEvent")]),

        Proto("void", "CmdResetEvent",
            [Param("VkCmdBuffer", "cmdBuffer"),
             Param("VkEvent", "event"),
             Param("VkPipeEvent", "pipeEvent")]),

        Proto("void", "CmdWaitEvents",
            [Param("VkCmdBuffer", "cmdBuffer"),
             Param("VkWaitEvent", "waitEvent"),
             Param("uint32_t", "eventCount"),
             Param("const VkEvent*", "pEvents"),
             Param("uint32_t", "memBarrierCount"),
             Param("const void**", "ppMemBarriers")]),

        Proto("void", "CmdPipelineBarrier",
            [Param("VkCmdBuffer", "cmdBuffer"),
             Param("VkWaitEvent", "waitEvent"),
             Param("uint32_t", "pipeEventCount"),
             Param("const VkPipeEvent*", "pPipeEvents"),
             Param("uint32_t", "memBarrierCount"),
             Param("const void**", "ppMemBarriers")]),

        Proto("void", "CmdBeginQuery",
            [Param("VkCmdBuffer", "cmdBuffer"),
             Param("VkQueryPool", "queryPool"),
             Param("uint32_t", "slot"),
             Param("VkFlags", "flags")]),

        Proto("void", "CmdEndQuery",
            [Param("VkCmdBuffer", "cmdBuffer"),
             Param("VkQueryPool", "queryPool"),
             Param("uint32_t", "slot")]),

        Proto("void", "CmdResetQueryPool",
            [Param("VkCmdBuffer", "cmdBuffer"),
             Param("VkQueryPool", "queryPool"),
             Param("uint32_t", "startQuery"),
             Param("uint32_t", "queryCount")]),

        Proto("void", "CmdWriteTimestamp",
            [Param("VkCmdBuffer", "cmdBuffer"),
             Param("VkTimestampType", "timestampType"),
             Param("VkBuffer", "destBuffer"),
             Param("VkDeviceSize", "destOffset")]),

        Proto("void", "CmdCopyQueryPoolResults",
            [Param("VkCmdBuffer", "cmdBuffer"),
             Param("VkQueryPool", "queryPool"),
             Param("uint32_t", "startQuery"),
             Param("uint32_t", "queryCount"),
             Param("VkBuffer", "destBuffer"),
             Param("VkDeviceSize", "destOffset"),
             Param("VkDeviceSize", "destStride"),
             Param("VkFlags", "flags")]),

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

        Proto("void", "CmdLoadAtomicCounters",
            [Param("VkCmdBuffer", "cmdBuffer"),
             Param("VkPipelineBindPoint", "pipelineBindPoint"),
             Param("uint32_t", "startCounter"),
             Param("uint32_t", "counterCount"),
             Param("VkBuffer", "srcBuffer"),
             Param("VkDeviceSize", "srcOffset")]),

        Proto("void", "CmdSaveAtomicCounters",
            [Param("VkCmdBuffer", "cmdBuffer"),
             Param("VkPipelineBindPoint", "pipelineBindPoint"),
             Param("uint32_t", "startCounter"),
             Param("uint32_t", "counterCount"),
             Param("VkBuffer", "destBuffer"),
             Param("VkDeviceSize", "destOffset")]),

        Proto("VkResult", "CreateFramebuffer",
            [Param("VkDevice", "device"),
             Param("const VkFramebufferCreateInfo*", "pCreateInfo"),
             Param("VkFramebuffer*", "pFramebuffer")]),

        Proto("VkResult", "CreateRenderPass",
            [Param("VkDevice", "device"),
             Param("const VkRenderPassCreateInfo*", "pCreateInfo"),
             Param("VkRenderPass*", "pRenderPass")]),

        Proto("void", "CmdBeginRenderPass",
            [Param("VkCmdBuffer", "cmdBuffer"),
             Param("const VkRenderPassBegin*", "pRenderPassBegin")]),

        Proto("void", "CmdEndRenderPass",
            [Param("VkCmdBuffer", "cmdBuffer"),
             Param("VkRenderPass", "renderPass")]),
    ],
)

wsi_lunarg = Extension(
    name="VK_WSI_LunarG",
    headers=["vk_wsi_lunarg.h"],
    objects=[
        "VkDisplayWSI",
        "VkSwapChainWSI",
        "VkDbgMsgCallback",
    ],
    protos=[
        Proto("VkResult", "GetDisplayInfoWSI",
            [Param("VkDisplayWSI", "display"),
             Param("VkDisplayInfoTypeWSI", "infoType"),
             Param("size_t*", "pDataSize"),
             Param("void*", "pData")]),

        Proto("VkResult", "CreateSwapChainWSI",
            [Param("VkDevice", "device"),
             Param("const VkSwapChainCreateInfoWSI*", "pCreateInfo"),
             Param("VkSwapChainWSI*", "pSwapChain")]),

        Proto("VkResult", "DestroySwapChainWSI",
            [Param("VkSwapChainWSI", "swapChain")]),

        Proto("VkResult", "GetSwapChainInfoWSI",
            [Param("VkSwapChainWSI", "swapChain"),
             Param("VkSwapChainInfoTypeWSI", "infoType"),
             Param("size_t*", "pDataSize"),
             Param("void*", "pData")]),

        Proto("VkResult", "QueuePresentWSI",
            [Param("VkQueue", "queue"),
             Param("const VkPresentInfoWSI*", "pPresentInfo")]),

#        Proto("VkResult", "DbgCreateMsgCallback",
#            [Param("VkInstance", "instance"),
#             Param("VkFlags", "msgFlags"),
#             Param("PFN_vkDbgMsgCallback", "pfnMsgCallback"),
#             Param("void*", "pUserData"),
#             Param("VkDbgMsgCallback*", "pMsgCallback")]),
    ],
)

extensions = [core, wsi_lunarg]

object_root_list = [
    "VkInstance",
    "VkPhysicalDevice",
    "VkDisplayWSI",
    "VkSwapChainWSI",
]

object_base_list = [
    "VkDevice",
    "VkQueue",
    "VkDeviceMemory",
    "VkObject"
]

object_list = [
    "VkBuffer",
    "VkBufferView",
    "VkImage",
    "VkImageView",
    "VkColorAttachmentView",
    "VkDepthStencilView",
    "VkShader",
    "VkPipeline",
    "VkPipelineLayout",
    "VkSampler",
    "VkDescriptorSet",
    "VkDescriptorSetLayout",
    "VkDescriptorPool",
    "VkDynamicStateObject",
    "VkCmdBuffer",
    "VkFence",
    "VkSemaphore",
    "VkEvent",
    "VkQueryPool",
    "VkFramebuffer",
    "VkRenderPass"
]

object_dynamic_state_list = [
    "VkDynamicVpState",
    "VkDynamicRsState",
    "VkDynamicCbState",
    "VkDynamicDsState"
]

object_type_list = object_root_list + object_base_list + object_list + object_dynamic_state_list

object_parent_list = ["VkObject", "VkDynamicStateObject"]

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_vk_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("VK_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(" (VKAPI *PFN_vk")
        second, third = rest.split(")(")

        # 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("VK_CORE",
            headers=["vulkan.h", "vk_debug_report_lunarg.h"],
            objects=object_lines,
            protos=protos)
    print("core =", str(ext))

    print("")
    print("typedef struct VkLayerDispatchTable_")
    print("{")
    for proto in ext.protos:
        print("    vk%sType %s;" % (proto.name, proto.name))
    print("} VkLayerDispatchTable;")

if __name__ == "__main__":
    parse_vk_h("include/vulkan.h")
