def makeFuncPtrInterfaceImpl():
    for function in api.functions:
        if ((function.getType() in functionTypes) and (not function.isAlias)):
            (yield '')
            (yield ('%s %s::%s (%s) const' % (function.returnType, className, getInterfaceName(function), argListToStr(function.arguments))))
            (yield '{')
            if (function.name == 'vkEnumerateInstanceVersion'):
                (yield '\tif (m_vk.enumerateInstanceVersion)')
                (yield '\t\treturn m_vk.enumerateInstanceVersion(pApiVersion);')
                (yield '')
                (yield '\t*pApiVersion = VK_API_VERSION_1_0;')
                (yield '\treturn VK_SUCCESS;')
            elif ((function.getType() == Function.TYPE_INSTANCE) and (function.arguments[0].getType() == 'VkPhysicalDevice') and (function.alias != None)):
                (yield '\tvk::VkPhysicalDeviceProperties props;')
                (yield '\tm_vk.getPhysicalDeviceProperties(physicalDevice, &props);')
                (yield '\tif (props.apiVersion >= VK_API_VERSION_1_1)')
                (yield ('\t\t%sm_vk.%s(%s);' % (('return ' if (function.returnType != 'void') else ''), getInterfaceName(function), ', '.join((a.name for a in function.arguments)))))
                (yield '\telse')
                (yield ('\t\t%sm_vk.%s(%s);' % (('return ' if (function.returnType != 'void') else ''), getInterfaceName(function.alias), ', '.join((a.name for a in function.arguments)))))
            else:
                (yield ('\t%sm_vk.%s(%s);' % (('return ' if (function.returnType != 'void') else ''), getInterfaceName(function), ', '.join((a.name for a in function.arguments)))))
            (yield '}')
def makeFuncPtrInterfaceImpl():
    for function in api.functions:
        if ((function.getType() in functionTypes) and (not function.isAlias)):
            (yield )
            (yield ('%s %s::%s (%s) const' % (function.returnType, className, getInterfaceName(function), argListToStr(function.arguments))))
            (yield '{')
            if (function.name == 'vkEnumerateInstanceVersion'):
                (yield '\tif (m_vk.enumerateInstanceVersion)')
                (yield '\t\treturn m_vk.enumerateInstanceVersion(pApiVersion);')
                (yield )
                (yield '\t*pApiVersion = VK_API_VERSION_1_0;')
                (yield '\treturn VK_SUCCESS;')
            elif ((function.getType() == Function.TYPE_INSTANCE) and (function.arguments[0].getType() == 'VkPhysicalDevice') and (function.alias != None)):
                (yield '\tvk::VkPhysicalDeviceProperties props;')
                (yield '\tm_vk.getPhysicalDeviceProperties(physicalDevice, &props);')
                (yield '\tif (props.apiVersion >= VK_API_VERSION_1_1)')
                (yield ('\t\t%sm_vk.%s(%s);' % (('return ' if (function.returnType != 'void') else ), getInterfaceName(function), ', '.join((a.name for a in function.arguments)))))
                (yield '\telse')
                (yield ('\t\t%sm_vk.%s(%s);' % (('return ' if (function.returnType != 'void') else ), getInterfaceName(function.alias), ', '.join((a.name for a in function.arguments)))))
            else:
                (yield ('\t%sm_vk.%s(%s);' % (('return ' if (function.returnType != 'void') else ), getInterfaceName(function), ', '.join((a.name for a in function.arguments)))))
            (yield '}')