Culled D bindings for header-only C++ functions (#3130)

* Reformatted comments; fixed a couple of oversights

* D bindings: deterministic sub-struct order

* Added missing default to IDL

* Fixed sub-struct linkage; regenerate D binds

* Culled D bindings for header-only C++ functions

* Added missing default to bgfx.idl

* cppinline now supported by all auto-gen bindings

The pattern "func.cppinline and not func.conly" is to make sure that C bindings for `bgfx_vertex_layout_has` are still generated.
This commit is contained in:
IchorDev 2023-07-20 10:53:42 +07:00 committed by GitHub
parent faf69bbe20
commit 878767e751
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 16 additions and 34 deletions

View File

@ -1357,13 +1357,6 @@ extern(C++, "bgfx") struct VertexLayout{
*/
[q{void}, q{decode}, q{bgfx.fakeenum.Attrib.Enum attrib, ref ubyte num, ref bgfx.fakeenum.AttribType.Enum type, ref bool normalized, ref bool asInt}, `C++`, q{const}],
/**
Returns `true` if VertexLayout contains attribute.
Params:
attrib = Attribute semantics. See: `bgfx::Attrib`
*/
[q{bool}, q{has}, q{bgfx.fakeenum.Attrib.Enum attrib}, `C++`, q{const}],
/**
Skip `_num` bytes in vertex stream.
Params:
@ -1375,25 +1368,6 @@ extern(C++, "bgfx") struct VertexLayout{
End VertexLayout.
*/
[q{void}, q{end}, q{}, `C++`],
/**
Returns relative attribute offset from the vertex.
Params:
attrib = Attribute semantics. See: `bgfx::Attrib`
*/
[q{ushort}, q{getOffset}, q{bgfx.fakeenum.Attrib.Enum attrib}, `C++`, q{const}],
/**
Returns vertex stride.
*/
[q{ushort}, q{getStride}, q{}, `C++`, q{const}],
/**
Returns size of vertex buffer for number of vertices.
Params:
num = Number of vertices.
*/
[q{uint}, q{getSize}, q{uint num}, `C++`, q{const}],
], true);
return ret;
}(), typeof(this).stringof));
@ -1487,7 +1461,7 @@ extern(C++, "bgfx") struct Encoder{
mtx = Pointer to first matrix in array.
num = Number of matrices in array.
*/
[q{uint}, q{setTransform}, q{const(void)* mtx, ushort num}, `C++`],
[q{uint}, q{setTransform}, q{const(void)* mtx, ushort num=1}, `C++`],
/**
Set model matrix from matrix cache for draw primitive.

View File

@ -32,7 +32,7 @@ local type_actions = {
local function cfunc(f)
return function(func)
if not func.cpponly then
if (not func.cpponly) and (not func.cppinline or func.conly) then
return f(func)
end
end

View File

@ -1039,7 +1039,7 @@ func.VertexLayout.decode { const }
.asInt "bool &" { out } --- Attribute is packed as int.
--- Returns `true` if VertexLayout contains attribute.
func.VertexLayout.has { const }
func.VertexLayout.has { const, conly, cppinline }
"bool" --- True if VertexLayout contains attribute.
.attrib "Attrib::Enum" --- Attribute semantics. See: `bgfx::Attrib`
@ -1054,16 +1054,16 @@ func.VertexLayout["end"]
"void"
--- Returns relative attribute offset from the vertex.
func.VertexLayout.getOffset { const , cpponly }
func.VertexLayout.getOffset { const, cppinline }
"uint16_t" --- Relative attribute offset from the vertex.
.attrib "Attrib::Enum" --- Attribute semantics. See: `bgfx::Attrib`
--- Returns vertex stride.
func.VertexLayout.getStride { const , cpponly }
func.VertexLayout.getStride { const, cppinline }
"uint16_t" --- Vertex stride.
--- Returns size of vertex buffer for number of vertices.
func.VertexLayout.getSize { const, cpponly }
func.VertexLayout.getSize { const, cppinline }
"uint32_t" --- Size of vertex buffer for number of vertices.
.num "uint32_t" --- Number of vertices.
@ -2216,6 +2216,7 @@ func.Encoder.setTransform
--- to be used for other draw primitive call.
.mtx "const void*" --- Pointer to first matrix in array.
.num "uint16_t" --- Number of matrices in array.
{ default = 1 }
--- Set model matrix from matrix cache for draw primitive.
func.Encoder.setTransform { cname = "set_transform_cached" }

View File

@ -357,6 +357,8 @@ function converter.funcs(func)
if func.cpponly then
return
elseif func.cppinline and not func.conly then
return
end
if func.comments ~= nil then

View File

@ -387,6 +387,8 @@ function converter.funcs(func)
if func.cpponly then
return
elseif func.cppinline and not func.conly then
return
end
if func.comments ~= nil then

View File

@ -334,7 +334,7 @@ local function genVersion()
end
local function genStructMemberFn(func) --NOTE: this does not work on nested structs
if func.class ~= nil and func.conly == nil then
if func.class ~= nil and func.conly == nil and func.cppinline == nil then
local st = allStructs[func.class]
local attribs = ""
if func.comments ~= nil then
@ -804,7 +804,7 @@ extern(C++, "bgfx") package final abstract class %s{
end
function converter.funcs(func)
if func.class == nil and func.conly == nil then
if func.class == nil and func.conly == nil and func.cppinline == nil then
local extern = "C++, \"bgfx\""
local attribs = ""
if func.cfunc ~= nil and func.name ~= "init" then --what the is "cfunc" even meant to mean?

View File

@ -405,6 +405,8 @@ function converter.funcs(params)
local func = params.obj
if func.cpponly then
return
elseif func.cppinline and not func.conly then
return
end
-- skip for now, don't know how to handle variadic functions

View File

@ -235,6 +235,7 @@ idl.cfunc = "cfunc"
idl.underscore = "underscore"
idl.conly = "conly"
idl.cpponly = "cpponly"
idl.cppinline = "cppinline"
idl.shortname = "shortname"
idl.NULL = "NULL"
idl.UINT16_MAX = "UINT16_MAX"