From deb4d965cd233ed3c2001a87b2bae65653592a6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D1=80=D0=B0=D0=BD=D0=B8=D0=BC=D0=B8=D1=80=20=D0=9A?= =?UTF-8?q?=D0=B0=D1=80=D0=B0=D1=9F=D0=B8=D1=9B?= Date: Thu, 4 Jul 2019 08:00:35 -0700 Subject: [PATCH] IDL: Generate structs. --- scripts/csharp.lua | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/scripts/csharp.lua b/scripts/csharp.lua index f13e2507b..564aea411 100644 --- a/scripts/csharp.lua +++ b/scripts/csharp.lua @@ -41,14 +41,16 @@ local function convert_type_0(arg) if hasPrefix(arg.ctype, "uint64_t") then return arg.ctype:gsub("uint64_t", "ulong") + elseif hasPrefix(arg.ctype, "int64_t") then + return arg.ctype:gsub("int64_t", "long") elseif hasPrefix(arg.ctype, "uint32_t") then return arg.ctype:gsub("uint32_t", "uint") elseif hasPrefix(arg.ctype, "int32_t") then return arg.ctype:gsub("int32_t", "int") elseif hasPrefix(arg.ctype, "uint16_t") then return arg.ctype:gsub("uint16_t", "ushort") - elseif arg.ctype == "bgfx_view_id_t" then - return "ushort" + elseif hasPrefix(arg.ctype, "bgfx_view_id_t") then + return arg.ctype:gsub("bgfx_view_id_t", "ushort") elseif hasPrefix(arg.ctype, "uint8_t") then return arg.ctype:gsub("uint8_t", "byte") elseif hasPrefix(arg.ctype, "uintptr_t") then @@ -234,6 +236,18 @@ function converter.types(typ) else FlagBlock(typ) end + elseif typ.struct ~= nil then + yield("public unsafe struct " .. typ.name) + yield("{") + + for _, member in ipairs(typ.struct) do + yield( + "\t" + .. convert_type(member) .. " " .. member.name .. ";" + ) + end + + yield("}") end end