/*
 * Copyright (c) 2015-2016 The Khronos Group Inc.
 * Copyright (c) 2015-2016 Valve Corporation
 * Copyright (c) 2015-2016 LunarG, Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 * Author: Jon Ashburn <jon@lunarg.com>
 */

#include "vk_loader_platform.h"
#include "loader.h"
#if defined(__GNUC__) && !defined(__clang__)
#pragma GCC optimize(3) // force gcc to use tail-calls
#endif

 // Trampoline function macro for unknown physical device extension command.
#define DevExtTramp(num)                                                       \
VKAPI_ATTR void VKAPI_CALL vkdev_ext##num(VkDevice device) {                   \
        const struct loader_dev_dispatch_table *disp;                          \
        disp = loader_get_dev_dispatch(device);                                \
        disp->ext_dispatch.dev_ext[num](device);                               \
    }

DevExtTramp(0)
DevExtTramp(1)
DevExtTramp(2)
DevExtTramp(3)
DevExtTramp(4)
DevExtTramp(5)
DevExtTramp(6)
DevExtTramp(7)
DevExtTramp(8)
DevExtTramp(9)
DevExtTramp(10)
DevExtTramp(11)
DevExtTramp(12)
DevExtTramp(13)
DevExtTramp(14)
DevExtTramp(15)
DevExtTramp(16)
DevExtTramp(17)
DevExtTramp(18)
DevExtTramp(19)
DevExtTramp(20)
DevExtTramp(21)
DevExtTramp(22)
DevExtTramp(23)
DevExtTramp(24)
DevExtTramp(25)
DevExtTramp(26)
DevExtTramp(27)
DevExtTramp(28)
DevExtTramp(29)
DevExtTramp(30)
DevExtTramp(31)
DevExtTramp(32)
DevExtTramp(33)
DevExtTramp(34)
DevExtTramp(35)
DevExtTramp(36)
DevExtTramp(37)
DevExtTramp(38)
DevExtTramp(39)
DevExtTramp(40)
DevExtTramp(41)
DevExtTramp(42)
DevExtTramp(43)
DevExtTramp(44)
DevExtTramp(45)
DevExtTramp(46)
DevExtTramp(47)
DevExtTramp(48)
DevExtTramp(49)
DevExtTramp(50)
DevExtTramp(51)
DevExtTramp(52)
DevExtTramp(53)
DevExtTramp(54)
DevExtTramp(55)
DevExtTramp(56)
DevExtTramp(57)
DevExtTramp(58)
DevExtTramp(59)
DevExtTramp(60)
DevExtTramp(61)
DevExtTramp(62)
DevExtTramp(63)
DevExtTramp(64)
DevExtTramp(65)
DevExtTramp(66)
DevExtTramp(67)
DevExtTramp(68)
DevExtTramp(69)
DevExtTramp(70)
DevExtTramp(71)
DevExtTramp(72)
DevExtTramp(73)
DevExtTramp(74)
DevExtTramp(75)
DevExtTramp(76)
DevExtTramp(77)
DevExtTramp(78)
DevExtTramp(79)
DevExtTramp(80)
DevExtTramp(81)
DevExtTramp(82)
DevExtTramp(83)
DevExtTramp(84)
DevExtTramp(85)
DevExtTramp(86)
DevExtTramp(87)
DevExtTramp(88)
DevExtTramp(89)
DevExtTramp(90)
DevExtTramp(91)
DevExtTramp(92)
DevExtTramp(93)
DevExtTramp(94)
DevExtTramp(95)
DevExtTramp(96)
DevExtTramp(97)
DevExtTramp(98)
DevExtTramp(99)
DevExtTramp(100)
DevExtTramp(101)
DevExtTramp(102)
DevExtTramp(103)
DevExtTramp(104)
DevExtTramp(105)
DevExtTramp(106)
DevExtTramp(107)
DevExtTramp(108)
DevExtTramp(109)
DevExtTramp(110)
DevExtTramp(111)
DevExtTramp(112)
DevExtTramp(113)
DevExtTramp(114)
DevExtTramp(115)
DevExtTramp(116)
DevExtTramp(117)
DevExtTramp(118)
DevExtTramp(119)
DevExtTramp(120)
DevExtTramp(121)
DevExtTramp(122)
DevExtTramp(123)
DevExtTramp(124)
DevExtTramp(125)
DevExtTramp(126)
DevExtTramp(127)
DevExtTramp(128)
DevExtTramp(129)
DevExtTramp(130)
DevExtTramp(131)
DevExtTramp(132)
DevExtTramp(133)
DevExtTramp(134)
DevExtTramp(135)
DevExtTramp(136)
DevExtTramp(137)
DevExtTramp(138)
DevExtTramp(139)
DevExtTramp(140)
DevExtTramp(141)
DevExtTramp(142)
DevExtTramp(143)
DevExtTramp(144)
DevExtTramp(145)
DevExtTramp(146)
DevExtTramp(147)
DevExtTramp(148)
DevExtTramp(149)
DevExtTramp(150)
DevExtTramp(151)
DevExtTramp(152)
DevExtTramp(153)
DevExtTramp(154)
DevExtTramp(155)
DevExtTramp(156)
DevExtTramp(157)
DevExtTramp(158)
DevExtTramp(159)
DevExtTramp(160)
DevExtTramp(161)
DevExtTramp(162)
DevExtTramp(163)
DevExtTramp(164)
DevExtTramp(165)
DevExtTramp(166)
DevExtTramp(167)
DevExtTramp(168)
DevExtTramp(169)
DevExtTramp(170)
DevExtTramp(171)
DevExtTramp(172)
DevExtTramp(173)
DevExtTramp(174)
DevExtTramp(175)
DevExtTramp(176)
DevExtTramp(177)
DevExtTramp(178)
DevExtTramp(179)
DevExtTramp(180)
DevExtTramp(181)
DevExtTramp(182)
DevExtTramp(183)
DevExtTramp(184)
DevExtTramp(185)
DevExtTramp(186)
DevExtTramp(187)
DevExtTramp(188)
DevExtTramp(189)
DevExtTramp(190)
DevExtTramp(191)
DevExtTramp(192)
DevExtTramp(193)
DevExtTramp(194)
DevExtTramp(195)
DevExtTramp(196)
DevExtTramp(197)
DevExtTramp(198)
DevExtTramp(199)
DevExtTramp(200)
DevExtTramp(201)
DevExtTramp(202)
DevExtTramp(203)
DevExtTramp(204)
DevExtTramp(205)
DevExtTramp(206)
DevExtTramp(207)
DevExtTramp(208)
DevExtTramp(209)
DevExtTramp(210)
DevExtTramp(211)
DevExtTramp(212)
DevExtTramp(213)
DevExtTramp(214)
DevExtTramp(215)
DevExtTramp(216)
DevExtTramp(217)
DevExtTramp(218)
DevExtTramp(219)
DevExtTramp(220)
DevExtTramp(221)
DevExtTramp(222)
DevExtTramp(223)
DevExtTramp(224)
DevExtTramp(225)
DevExtTramp(226)
DevExtTramp(227)
DevExtTramp(228)
DevExtTramp(229)
DevExtTramp(230)
DevExtTramp(231)
DevExtTramp(232)
DevExtTramp(233)
DevExtTramp(234)
DevExtTramp(235)
DevExtTramp(236)
DevExtTramp(237)
DevExtTramp(238)
DevExtTramp(239)
DevExtTramp(240)
DevExtTramp(241)
DevExtTramp(242)
DevExtTramp(243)
DevExtTramp(244)
DevExtTramp(245)
DevExtTramp(246)
DevExtTramp(247)
DevExtTramp(248)
DevExtTramp(249)

void *loader_get_dev_ext_trampoline(uint32_t index) {
    switch (index) {
#define CASE_HANDLE(num) case num: return vkdev_ext##num
        CASE_HANDLE(0);
        CASE_HANDLE(1);
        CASE_HANDLE(2);
        CASE_HANDLE(3);
        CASE_HANDLE(4);
        CASE_HANDLE(5);
        CASE_HANDLE(6);
        CASE_HANDLE(7);
        CASE_HANDLE(8);
        CASE_HANDLE(9);
        CASE_HANDLE(10);
        CASE_HANDLE(11);
        CASE_HANDLE(12);
        CASE_HANDLE(13);
        CASE_HANDLE(14);
        CASE_HANDLE(15);
        CASE_HANDLE(16);
        CASE_HANDLE(17);
        CASE_HANDLE(18);
        CASE_HANDLE(19);
        CASE_HANDLE(20);
        CASE_HANDLE(21);
        CASE_HANDLE(22);
        CASE_HANDLE(23);
        CASE_HANDLE(24);
        CASE_HANDLE(25);
        CASE_HANDLE(26);
        CASE_HANDLE(27);
        CASE_HANDLE(28);
        CASE_HANDLE(29);
        CASE_HANDLE(30);
        CASE_HANDLE(31);
        CASE_HANDLE(32);
        CASE_HANDLE(33);
        CASE_HANDLE(34);
        CASE_HANDLE(35);
        CASE_HANDLE(36);
        CASE_HANDLE(37);
        CASE_HANDLE(38);
        CASE_HANDLE(39);
        CASE_HANDLE(40);
        CASE_HANDLE(41);
        CASE_HANDLE(42);
        CASE_HANDLE(43);
        CASE_HANDLE(44);
        CASE_HANDLE(45);
        CASE_HANDLE(46);
        CASE_HANDLE(47);
        CASE_HANDLE(48);
        CASE_HANDLE(49);
        CASE_HANDLE(50);
        CASE_HANDLE(51);
        CASE_HANDLE(52);
        CASE_HANDLE(53);
        CASE_HANDLE(54);
        CASE_HANDLE(55);
        CASE_HANDLE(56);
        CASE_HANDLE(57);
        CASE_HANDLE(58);
        CASE_HANDLE(59);
        CASE_HANDLE(60);
        CASE_HANDLE(61);
        CASE_HANDLE(62);
        CASE_HANDLE(63);
        CASE_HANDLE(64);
        CASE_HANDLE(65);
        CASE_HANDLE(66);
        CASE_HANDLE(67);
        CASE_HANDLE(68);
        CASE_HANDLE(69);
        CASE_HANDLE(70);
        CASE_HANDLE(71);
        CASE_HANDLE(72);
        CASE_HANDLE(73);
        CASE_HANDLE(74);
        CASE_HANDLE(75);
        CASE_HANDLE(76);
        CASE_HANDLE(77);
        CASE_HANDLE(78);
        CASE_HANDLE(79);
        CASE_HANDLE(80);
        CASE_HANDLE(81);
        CASE_HANDLE(82);
        CASE_HANDLE(83);
        CASE_HANDLE(84);
        CASE_HANDLE(85);
        CASE_HANDLE(86);
        CASE_HANDLE(87);
        CASE_HANDLE(88);
        CASE_HANDLE(89);
        CASE_HANDLE(90);
        CASE_HANDLE(91);
        CASE_HANDLE(92);
        CASE_HANDLE(93);
        CASE_HANDLE(94);
        CASE_HANDLE(95);
        CASE_HANDLE(96);
        CASE_HANDLE(97);
        CASE_HANDLE(98);
        CASE_HANDLE(99);
        CASE_HANDLE(100);
        CASE_HANDLE(101);
        CASE_HANDLE(102);
        CASE_HANDLE(103);
        CASE_HANDLE(104);
        CASE_HANDLE(105);
        CASE_HANDLE(106);
        CASE_HANDLE(107);
        CASE_HANDLE(108);
        CASE_HANDLE(109);
        CASE_HANDLE(110);
        CASE_HANDLE(111);
        CASE_HANDLE(112);
        CASE_HANDLE(113);
        CASE_HANDLE(114);
        CASE_HANDLE(115);
        CASE_HANDLE(116);
        CASE_HANDLE(117);
        CASE_HANDLE(118);
        CASE_HANDLE(119);
        CASE_HANDLE(120);
        CASE_HANDLE(121);
        CASE_HANDLE(122);
        CASE_HANDLE(123);
        CASE_HANDLE(124);
        CASE_HANDLE(125);
        CASE_HANDLE(126);
        CASE_HANDLE(127);
        CASE_HANDLE(128);
        CASE_HANDLE(129);
        CASE_HANDLE(130);
        CASE_HANDLE(131);
        CASE_HANDLE(132);
        CASE_HANDLE(133);
        CASE_HANDLE(134);
        CASE_HANDLE(135);
        CASE_HANDLE(136);
        CASE_HANDLE(137);
        CASE_HANDLE(138);
        CASE_HANDLE(139);
        CASE_HANDLE(140);
        CASE_HANDLE(141);
        CASE_HANDLE(142);
        CASE_HANDLE(143);
        CASE_HANDLE(144);
        CASE_HANDLE(145);
        CASE_HANDLE(146);
        CASE_HANDLE(147);
        CASE_HANDLE(148);
        CASE_HANDLE(149);
        CASE_HANDLE(150);
        CASE_HANDLE(151);
        CASE_HANDLE(152);
        CASE_HANDLE(153);
        CASE_HANDLE(154);
        CASE_HANDLE(155);
        CASE_HANDLE(156);
        CASE_HANDLE(157);
        CASE_HANDLE(158);
        CASE_HANDLE(159);
        CASE_HANDLE(160);
        CASE_HANDLE(161);
        CASE_HANDLE(162);
        CASE_HANDLE(163);
        CASE_HANDLE(164);
        CASE_HANDLE(165);
        CASE_HANDLE(166);
        CASE_HANDLE(167);
        CASE_HANDLE(168);
        CASE_HANDLE(169);
        CASE_HANDLE(170);
        CASE_HANDLE(171);
        CASE_HANDLE(172);
        CASE_HANDLE(173);
        CASE_HANDLE(174);
        CASE_HANDLE(175);
        CASE_HANDLE(176);
        CASE_HANDLE(177);
        CASE_HANDLE(178);
        CASE_HANDLE(179);
        CASE_HANDLE(180);
        CASE_HANDLE(181);
        CASE_HANDLE(182);
        CASE_HANDLE(183);
        CASE_HANDLE(184);
        CASE_HANDLE(185);
        CASE_HANDLE(186);
        CASE_HANDLE(187);
        CASE_HANDLE(188);
        CASE_HANDLE(189);
        CASE_HANDLE(190);
        CASE_HANDLE(191);
        CASE_HANDLE(192);
        CASE_HANDLE(193);
        CASE_HANDLE(194);
        CASE_HANDLE(195);
        CASE_HANDLE(196);
        CASE_HANDLE(197);
        CASE_HANDLE(198);
        CASE_HANDLE(199);
        CASE_HANDLE(200);
        CASE_HANDLE(201);
        CASE_HANDLE(202);
        CASE_HANDLE(203);
        CASE_HANDLE(204);
        CASE_HANDLE(205);
        CASE_HANDLE(206);
        CASE_HANDLE(207);
        CASE_HANDLE(208);
        CASE_HANDLE(209);
        CASE_HANDLE(210);
        CASE_HANDLE(211);
        CASE_HANDLE(212);
        CASE_HANDLE(213);
        CASE_HANDLE(214);
        CASE_HANDLE(215);
        CASE_HANDLE(216);
        CASE_HANDLE(217);
        CASE_HANDLE(218);
        CASE_HANDLE(219);
        CASE_HANDLE(220);
        CASE_HANDLE(221);
        CASE_HANDLE(222);
        CASE_HANDLE(223);
        CASE_HANDLE(224);
        CASE_HANDLE(225);
        CASE_HANDLE(226);
        CASE_HANDLE(227);
        CASE_HANDLE(228);
        CASE_HANDLE(229);
        CASE_HANDLE(230);
        CASE_HANDLE(231);
        CASE_HANDLE(232);
        CASE_HANDLE(233);
        CASE_HANDLE(234);
        CASE_HANDLE(235);
        CASE_HANDLE(236);
        CASE_HANDLE(237);
        CASE_HANDLE(238);
        CASE_HANDLE(239);
        CASE_HANDLE(240);
        CASE_HANDLE(241);
        CASE_HANDLE(242);
        CASE_HANDLE(243);
        CASE_HANDLE(244);
        CASE_HANDLE(245);
        CASE_HANDLE(246);
        CASE_HANDLE(247);
        CASE_HANDLE(248);
        CASE_HANDLE(249);
    }

    return NULL;
}
