Allow passing null pointers to certain rlgl functions (#112)

This commit is contained in:
Not-Nik 2024-06-30 21:03:56 +02:00
parent 140dff9a1a
commit 361d3962cf
No known key found for this signature in database
GPG Key ID: E95F679E3CDD9784
3 changed files with 16 additions and 7 deletions

View File

@ -45,7 +45,7 @@ def c_to_zig_type(c: str) -> str:
return const + c
def ziggify_type(name: str, t: str) -> str:
def ziggify_type(name: str, t: str, func_name) -> str:
NO_STRINGS = ["data", "fileData", "compData"]
single = [
@ -288,7 +288,16 @@ def parse_header(header_name: str, output_file: str, ext_file: str, prefix: str,
arg_type = c_to_zig_type(arg_type)
arg_name, arg_type = fix_pointer(arg_name, arg_type)
zig_type = ziggify_type(arg_name, arg_type)
single_opt = [
("rlDrawVertexArrayElements", "buffer"),
("rlDrawVertexArrayElementsInstanced", "buffer")
]
if arg_type.startswith("*") and (func_name, arg_name) in single_opt:
arg_type = "?" + arg_type
zig_type = ziggify_type(arg_name, arg_type, func_name)
zig_types.add(arg_type)
zig_c_arguments.append(arg_name + ": " + add_namespace_to_type(arg_type)) # Put everything together.
@ -346,7 +355,7 @@ def parse_header(header_name: str, output_file: str, ext_file: str, prefix: str,
if func_name in manual or "FromMemory" in func_name:
continue
zig_return = ziggify_type(func_name, return_type)
zig_return = ziggify_type(func_name, return_type, func_name)
return_cast = make_return_cast(return_type, zig_return, f"cdef.{func_name}({zig_call_args})")
if return_cast:

View File

@ -110,9 +110,9 @@ pub extern "c" fn rlSetVertexAttribute(index: c_uint, compSize: c_int, ty: c_int
pub extern "c" fn rlSetVertexAttributeDivisor(index: c_uint, divisor: c_int) void;
pub extern "c" fn rlSetVertexAttributeDefault(locIndex: c_int, value: *const anyopaque, attribType: c_int, count: c_int) void;
pub extern "c" fn rlDrawVertexArray(offset: c_int, count: c_int) void;
pub extern "c" fn rlDrawVertexArrayElements(offset: c_int, count: c_int, buffer: *const anyopaque) void;
pub extern "c" fn rlDrawVertexArrayElements(offset: c_int, count: c_int, buffer: ?*const anyopaque) void;
pub extern "c" fn rlDrawVertexArrayInstanced(offset: c_int, count: c_int, instances: c_int) void;
pub extern "c" fn rlDrawVertexArrayElementsInstanced(offset: c_int, count: c_int, buffer: *const anyopaque, instances: c_int) void;
pub extern "c" fn rlDrawVertexArrayElementsInstanced(offset: c_int, count: c_int, buffer: ?*const anyopaque, instances: c_int) void;
pub extern "c" fn rlLoadTexture(data: *const anyopaque, width: c_int, height: c_int, format: c_int, mipmapCount: c_int) c_uint;
pub extern "c" fn rlLoadTextureDepth(width: c_int, height: c_int, useRenderBuffer: bool) c_uint;
pub extern "c" fn rlLoadTextureCubemap(data: *const anyopaque, size: c_int, format: c_int) c_uint;

View File

@ -612,7 +612,7 @@ pub fn rlDrawVertexArray(offset: i32, count: i32) void {
cdef.rlDrawVertexArray(@as(c_int, offset), @as(c_int, count));
}
pub fn rlDrawVertexArrayElements(offset: i32, count: i32, buffer: *const anyopaque) void {
pub fn rlDrawVertexArrayElements(offset: i32, count: i32, buffer: ?*const anyopaque) void {
cdef.rlDrawVertexArrayElements(@as(c_int, offset), @as(c_int, count), buffer);
}
@ -620,7 +620,7 @@ pub fn rlDrawVertexArrayInstanced(offset: i32, count: i32, instances: i32) void
cdef.rlDrawVertexArrayInstanced(@as(c_int, offset), @as(c_int, count), @as(c_int, instances));
}
pub fn rlDrawVertexArrayElementsInstanced(offset: i32, count: i32, buffer: *const anyopaque, instances: i32) void {
pub fn rlDrawVertexArrayElementsInstanced(offset: i32, count: i32, buffer: ?*const anyopaque, instances: i32) void {
cdef.rlDrawVertexArrayElementsInstanced(@as(c_int, offset), @as(c_int, count), buffer, @as(c_int, instances));
}