mirror of
https://github.com/bkaradzic/bgfx.git
synced 2026-02-18 04:53:06 +01:00
99 lines
1.7 KiB
Lua
99 lines
1.7 KiB
Lua
-- Copyright 2019 云风 https://github.com/cloudwu . All rights reserved.
|
|
-- License (the same with bgfx) : https://github.com/bkaradzic/bgfx/blob/master/LICENSE
|
|
|
|
function doIdl()
|
|
|
|
local idl = require "idl"
|
|
local codegen = require "codegen"
|
|
|
|
assert(loadfile("bgfx.idl" , "t", idl))()
|
|
|
|
codegen.nameconversion(idl.types, idl.funcs)
|
|
|
|
local code_temp_include = [[
|
|
/*
|
|
* License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause
|
|
*/
|
|
|
|
/*
|
|
*
|
|
* AUTO GENERATED! DO NOT EDIT!
|
|
*
|
|
*/
|
|
|
|
$c99decl
|
|
/**/
|
|
typedef struct bgfx_interface_vtbl
|
|
{
|
|
$interface_struct
|
|
} bgfx_interface_vtbl_t;
|
|
]]
|
|
|
|
local code_temp_impl = [[
|
|
/*
|
|
* License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause
|
|
*/
|
|
|
|
/*
|
|
*
|
|
* AUTO GENERATED! DO NOT EDIT!
|
|
*
|
|
*/
|
|
|
|
$c99
|
|
/**/
|
|
BGFX_C_API bgfx_interface_vtbl_t* bgfx_get_interface(uint32_t _version)
|
|
{
|
|
if (_version == BGFX_API_VERSION)
|
|
{
|
|
static bgfx_interface_vtbl_t s_bgfx_interface =
|
|
{
|
|
$interface_import
|
|
};
|
|
|
|
return &s_bgfx_interface;
|
|
}
|
|
|
|
return NULL;
|
|
}
|
|
]]
|
|
|
|
local function codes()
|
|
local temp = {}
|
|
local action = {
|
|
c99 = "\n",
|
|
c99decl = "\n",
|
|
interface_struct = "\n\t",
|
|
interface_import = ",\n\t\t\t",
|
|
}
|
|
for k in pairs(action) do
|
|
temp[k] = {}
|
|
end
|
|
for _, f in ipairs(idl.funcs) do
|
|
for k in pairs(action) do
|
|
table.insert(temp[k], (codegen["gen_"..k](f)))
|
|
end
|
|
end
|
|
|
|
for k, ident in pairs(action) do
|
|
temp[k] = table.concat(temp[k], ident)
|
|
end
|
|
|
|
return temp
|
|
end
|
|
|
|
local codes_tbl = codes()
|
|
|
|
for filename, temp in pairs {
|
|
["../include/bgfx/c99/bgfx.idl.h"] = code_temp_include ,
|
|
["../src/bgfx.idl.inl"] = code_temp_impl } do
|
|
|
|
print ("Generate " .. filename)
|
|
local out = io.open(filename, "wb")
|
|
out:write((temp:gsub("$([%l%d_]+)", codes_tbl)))
|
|
out:close()
|
|
end
|
|
|
|
os.exit()
|
|
end
|