mirror of https://github.com/ppy/SDL3-CS.git
Fix `Unsafe_` method generation in SDL_ttf
This commit is contained in:
parent
bfa753159c
commit
88efab5deb
|
|
@ -5,7 +5,6 @@ using System.Collections.Generic;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
using Microsoft.CodeAnalysis;
|
using Microsoft.CodeAnalysis;
|
||||||
using Microsoft.CodeAnalysis.CSharp;
|
using Microsoft.CodeAnalysis.CSharp;
|
||||||
using Microsoft.CodeAnalysis.CSharp.Syntax;
|
using Microsoft.CodeAnalysis.CSharp.Syntax;
|
||||||
|
|
@ -142,7 +141,10 @@ using System;
|
||||||
if (gm.RequiredChanges.HasFlag(Changes.ChangeReturnTypeToString))
|
if (gm.RequiredChanges.HasFlag(Changes.ChangeReturnTypeToString))
|
||||||
{
|
{
|
||||||
expr = SyntaxFactory.InvocationExpression(
|
expr = SyntaxFactory.InvocationExpression(
|
||||||
SyntaxFactory.IdentifierName("PtrToStringUTF8"))
|
SyntaxFactory.MemberAccessExpression(
|
||||||
|
SyntaxKind.SimpleMemberAccessExpression,
|
||||||
|
SyntaxFactory.IdentifierName("SDL3"),
|
||||||
|
SyntaxFactory.IdentifierName("PtrToStringUTF8")))
|
||||||
.WithArguments(new[]
|
.WithArguments(new[]
|
||||||
{
|
{
|
||||||
SyntaxFactory.Argument(makeFunctionCall(gm)),
|
SyntaxFactory.Argument(makeFunctionCall(gm)),
|
||||||
|
|
|
||||||
|
|
@ -27,8 +27,7 @@ namespace SDL.Tests
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Assert.That(font != null, SDL_GetError);
|
Assert.That(font != null, SDL_GetError);
|
||||||
string? name = PtrToStringUTF8(TTF_GetFontFamilyName(font)); // TODO: fix Unsafe_ generation
|
Assert.That(TTF_GetFontFamilyName(font), Is.EqualTo("Times New Roman"));
|
||||||
Assert.That(name, Is.EqualTo("Times New Roman"));
|
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@ Usage:
|
||||||
Example:
|
Example:
|
||||||
- python generate_bindings.py
|
- python generate_bindings.py
|
||||||
- python generate_bindings.py SDL3/SDL_audio.h
|
- python generate_bindings.py SDL3/SDL_audio.h
|
||||||
|
- python generate_bindings.py SDL3_ttf/SDL_ttf.h
|
||||||
- python generate_bindings.py SDL_audio.h
|
- python generate_bindings.py SDL_audio.h
|
||||||
- python generate_bindings.py SDL_audio
|
- python generate_bindings.py SDL_audio
|
||||||
- python generate_bindings.py audio
|
- python generate_bindings.py audio
|
||||||
|
|
@ -365,7 +366,10 @@ def generate_platform_specific_headers(sdl_api, header: Header, platforms):
|
||||||
def get_string_returning_functions(sdl_api):
|
def get_string_returning_functions(sdl_api):
|
||||||
for f in sdl_api:
|
for f in sdl_api:
|
||||||
if f["retval"] in ("const char*", "char*"):
|
if f["retval"] in ("const char*", "char*"):
|
||||||
yield f
|
yield f["name"]
|
||||||
|
|
||||||
|
yield "TTF_GetFontFamilyName"
|
||||||
|
yield "TTF_GetFontStyleName"
|
||||||
|
|
||||||
|
|
||||||
def should_skip(solo_headers: list[Header], header: Header):
|
def should_skip(solo_headers: list[Header], header: Header):
|
||||||
|
|
@ -397,8 +401,7 @@ def main():
|
||||||
str_ret_funcs = list(get_string_returning_functions(sdl_api))
|
str_ret_funcs = list(get_string_returning_functions(sdl_api))
|
||||||
if str_ret_funcs:
|
if str_ret_funcs:
|
||||||
base_command.append("--remap")
|
base_command.append("--remap")
|
||||||
for func in str_ret_funcs:
|
for name in str_ret_funcs:
|
||||||
name = func["name"]
|
|
||||||
# add unsafe prefix to `const char *` functions so that the source generator can make friendly overloads with the unprefixed name.
|
# add unsafe prefix to `const char *` functions so that the source generator can make friendly overloads with the unprefixed name.
|
||||||
base_command.append(f"{name}={unsafe_prefix}{name}")
|
base_command.append(f"{name}={unsafe_prefix}{name}")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -257,13 +257,13 @@ namespace SDL
|
||||||
[return: NativeTypeName("bool")]
|
[return: NativeTypeName("bool")]
|
||||||
public static extern SDLBool TTF_FontIsScalable([NativeTypeName("const TTF_Font *")] TTF_Font* font);
|
public static extern SDLBool TTF_FontIsScalable([NativeTypeName("const TTF_Font *")] TTF_Font* font);
|
||||||
|
|
||||||
[DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
[DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, EntryPoint = "TTF_GetFontFamilyName", ExactSpelling = true)]
|
||||||
[return: NativeTypeName("const char *")]
|
[return: NativeTypeName("const char *")]
|
||||||
public static extern byte* TTF_GetFontFamilyName([NativeTypeName("const TTF_Font *")] TTF_Font* font);
|
public static extern byte* Unsafe_TTF_GetFontFamilyName([NativeTypeName("const TTF_Font *")] TTF_Font* font);
|
||||||
|
|
||||||
[DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
[DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, EntryPoint = "TTF_GetFontStyleName", ExactSpelling = true)]
|
||||||
[return: NativeTypeName("const char *")]
|
[return: NativeTypeName("const char *")]
|
||||||
public static extern byte* TTF_GetFontStyleName([NativeTypeName("const TTF_Font *")] TTF_Font* font);
|
public static extern byte* Unsafe_TTF_GetFontStyleName([NativeTypeName("const TTF_Font *")] TTF_Font* font);
|
||||||
|
|
||||||
[DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
[DllImport("SDL3_ttf", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||||
[return: NativeTypeName("bool")]
|
[return: NativeTypeName("bool")]
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue