From 77ee488974095a99fde66226ceca792034ca3b2a Mon Sep 17 00:00:00 2001
From: "1992414357@qq.com" <1992414357@qq.com>
Date: Wed, 18 Jun 2025 05:30:18 +0800
Subject: Create Csharp bindings
---
core/bindings/lang/csharp/.gitignore | 2 ++
.../csharp/NoGamepads_CharpBindings/.gitignore | 11 +++++++
.../NoGamepads_CharpBindings/.run/Example.run.xml | 20 ++++++++++++
.../.run/Generate Csharp Bindings.run.xml | 20 ++++++++++++
.../NoGamepads_Bindings/NoGamepads_Bindings.csproj | 20 ++++++++++++
.../NoGamepads_Bindings/Program.cs | 37 ++++++++++++++++++++++
.../NoGamepads_CharpBindings.sln | 6 ++++
.../NoGamepads_Core/Data/Player.cs | 19 +++++++++++
.../NoGamepads_Core/Native/.gitignore | 2 --
.../NoGamepads_Core/NoGamepads_Core.csproj | 6 ++--
.../NoGamepads_Core/PtrStringConverter.cs | 23 ++++++++++++++
.../NoGamepads_Example/Program.cs | 6 +++-
12 files changed, 167 insertions(+), 5 deletions(-)
create mode 100644 core/bindings/lang/csharp/.gitignore
create mode 100644 core/bindings/lang/csharp/NoGamepads_CharpBindings/.gitignore
create mode 100644 core/bindings/lang/csharp/NoGamepads_CharpBindings/.run/Example.run.xml
create mode 100644 core/bindings/lang/csharp/NoGamepads_CharpBindings/.run/Generate Csharp Bindings.run.xml
create mode 100644 core/bindings/lang/csharp/NoGamepads_CharpBindings/NoGamepads_Bindings/NoGamepads_Bindings.csproj
create mode 100644 core/bindings/lang/csharp/NoGamepads_CharpBindings/NoGamepads_Bindings/Program.cs
create mode 100644 core/bindings/lang/csharp/NoGamepads_CharpBindings/NoGamepads_Core/Data/Player.cs
delete mode 100644 core/bindings/lang/csharp/NoGamepads_CharpBindings/NoGamepads_Core/Native/.gitignore
create mode 100644 core/bindings/lang/csharp/NoGamepads_CharpBindings/NoGamepads_Core/PtrStringConverter.cs
(limited to 'core')
diff --git a/core/bindings/lang/csharp/.gitignore b/core/bindings/lang/csharp/.gitignore
new file mode 100644
index 0000000..1e6dd16
--- /dev/null
+++ b/core/bindings/lang/csharp/.gitignore
@@ -0,0 +1,2 @@
+./Working/
+./Working/*
\ No newline at end of file
diff --git a/core/bindings/lang/csharp/NoGamepads_CharpBindings/.gitignore b/core/bindings/lang/csharp/NoGamepads_CharpBindings/.gitignore
new file mode 100644
index 0000000..a7e5508
--- /dev/null
+++ b/core/bindings/lang/csharp/NoGamepads_CharpBindings/.gitignore
@@ -0,0 +1,11 @@
+./NoGamepads_Bindings/bin/
+./NoGamepads_Bindings/obj/
+
+./NoGamepads_Core/bin/
+./NoGamepads_Core/obj/
+
+./NoGamepads_Example/bin/
+./NoGamepads_Example/obj/
+
+./NoGamepads_Bindings/Native/
+./NoGamepads_Core/Generated/
\ No newline at end of file
diff --git a/core/bindings/lang/csharp/NoGamepads_CharpBindings/.run/Example.run.xml b/core/bindings/lang/csharp/NoGamepads_CharpBindings/.run/Example.run.xml
new file mode 100644
index 0000000..91f4cc3
--- /dev/null
+++ b/core/bindings/lang/csharp/NoGamepads_CharpBindings/.run/Example.run.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/core/bindings/lang/csharp/NoGamepads_CharpBindings/.run/Generate Csharp Bindings.run.xml b/core/bindings/lang/csharp/NoGamepads_CharpBindings/.run/Generate Csharp Bindings.run.xml
new file mode 100644
index 0000000..e70ca09
--- /dev/null
+++ b/core/bindings/lang/csharp/NoGamepads_CharpBindings/.run/Generate Csharp Bindings.run.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/core/bindings/lang/csharp/NoGamepads_CharpBindings/NoGamepads_Bindings/NoGamepads_Bindings.csproj b/core/bindings/lang/csharp/NoGamepads_CharpBindings/NoGamepads_Bindings/NoGamepads_Bindings.csproj
new file mode 100644
index 0000000..b12992a
--- /dev/null
+++ b/core/bindings/lang/csharp/NoGamepads_CharpBindings/NoGamepads_Bindings/NoGamepads_Bindings.csproj
@@ -0,0 +1,20 @@
+
+
+
+ Exe
+ net6.0
+ enable
+ enable
+ NoGamepads_Bindings
+ true
+
+
+
+
+ PreserveNewest
+
+
+
+
+
+
diff --git a/core/bindings/lang/csharp/NoGamepads_CharpBindings/NoGamepads_Bindings/Program.cs b/core/bindings/lang/csharp/NoGamepads_CharpBindings/NoGamepads_Bindings/Program.cs
new file mode 100644
index 0000000..ebb5f76
--- /dev/null
+++ b/core/bindings/lang/csharp/NoGamepads_CharpBindings/NoGamepads_Bindings/Program.cs
@@ -0,0 +1,37 @@
+using CppSharp;
+using CppSharp.AST;
+using CppSharp.Generators;
+using CppSharp.Generators.AST;
+using RecordArgABI = CppSharp.Parser.AST.RecordArgABI;
+
+namespace NoGamepads_Bindings;
+
+internal static class Program
+{
+ public static void Main(string[] args)
+ {
+ ConsoleDriver.Run(new NoGamepadsLibrary());
+ }
+}
+
+public class NoGamepadsLibrary : ILibrary
+{
+ public void Preprocess(Driver driver, ASTContext ctx) { }
+
+ public void Postprocess(Driver driver, ASTContext ctx) { }
+
+ public void SetupPasses(Driver driver) { }
+
+ public void Setup(Driver driver)
+ {
+ var options = driver.Options;
+ options.GeneratorKind = GeneratorKind.CSharp;
+ options.OutputDir = "NoGamepads_Core/Generated";
+ options.GenerateClassTemplates = false;
+
+ var module = options.AddModule("NoGamepads.Native");
+ module.OutputNamespace = "NoGamepads_Sharp";
+ module.IncludeDirs.Add("NoGamepads_Bindings/Native");
+ module.Headers.Add("nogamepads_data.h");
+ }
+}
\ No newline at end of file
diff --git a/core/bindings/lang/csharp/NoGamepads_CharpBindings/NoGamepads_CharpBindings.sln b/core/bindings/lang/csharp/NoGamepads_CharpBindings/NoGamepads_CharpBindings.sln
index c9a183e..0cb984f 100644
--- a/core/bindings/lang/csharp/NoGamepads_CharpBindings/NoGamepads_CharpBindings.sln
+++ b/core/bindings/lang/csharp/NoGamepads_CharpBindings/NoGamepads_CharpBindings.sln
@@ -4,6 +4,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NoGamepads_Core", "NoGamepa
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NoGamepads_Example", "NoGamepads_Example\NoGamepads_Example.csproj", "{D576309A-DCDF-4A71-B3F0-C22EE34B9F2B}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NoGamepads_Bindings", "NoGamepads_Bindings\NoGamepads_Bindings.csproj", "{5A5FFBF1-C1CC-449B-8225-4CA6E4EBD39E}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -18,5 +20,9 @@ Global
{D576309A-DCDF-4A71-B3F0-C22EE34B9F2B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D576309A-DCDF-4A71-B3F0-C22EE34B9F2B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D576309A-DCDF-4A71-B3F0-C22EE34B9F2B}.Release|Any CPU.Build.0 = Release|Any CPU
+ {5A5FFBF1-C1CC-449B-8225-4CA6E4EBD39E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {5A5FFBF1-C1CC-449B-8225-4CA6E4EBD39E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {5A5FFBF1-C1CC-449B-8225-4CA6E4EBD39E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {5A5FFBF1-C1CC-449B-8225-4CA6E4EBD39E}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
EndGlobal
diff --git a/core/bindings/lang/csharp/NoGamepads_CharpBindings/NoGamepads_Core/Data/Player.cs b/core/bindings/lang/csharp/NoGamepads_CharpBindings/NoGamepads_Core/Data/Player.cs
new file mode 100644
index 0000000..a3c3ddd
--- /dev/null
+++ b/core/bindings/lang/csharp/NoGamepads_CharpBindings/NoGamepads_Core/Data/Player.cs
@@ -0,0 +1,19 @@
+using NoGamepads_Sharp;
+
+namespace NoGamepads_Core.Data;
+
+public class Player
+{
+ private FfiPlayer _ffi = nogamepads_data.PlayerRegister("Fuck", "AAAAA");
+
+ public String name
+ {
+ get
+ {
+ unsafe
+ {
+ return PtrStringConverter.ToString(_ffi.Account.PlayerHash);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/core/bindings/lang/csharp/NoGamepads_CharpBindings/NoGamepads_Core/Native/.gitignore b/core/bindings/lang/csharp/NoGamepads_CharpBindings/NoGamepads_Core/Native/.gitignore
deleted file mode 100644
index 73edf03..0000000
--- a/core/bindings/lang/csharp/NoGamepads_CharpBindings/NoGamepads_Core/Native/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-!.gitignore
-*
\ No newline at end of file
diff --git a/core/bindings/lang/csharp/NoGamepads_CharpBindings/NoGamepads_Core/NoGamepads_Core.csproj b/core/bindings/lang/csharp/NoGamepads_CharpBindings/NoGamepads_Core/NoGamepads_Core.csproj
index 03fb85e..cdf58f8 100644
--- a/core/bindings/lang/csharp/NoGamepads_CharpBindings/NoGamepads_Core/NoGamepads_Core.csproj
+++ b/core/bindings/lang/csharp/NoGamepads_CharpBindings/NoGamepads_Core/NoGamepads_Core.csproj
@@ -4,15 +4,17 @@
net6.0
enable
enable
+ true
PreserveNewest
-
+
+
-
+
\ No newline at end of file
diff --git a/core/bindings/lang/csharp/NoGamepads_CharpBindings/NoGamepads_Core/PtrStringConverter.cs b/core/bindings/lang/csharp/NoGamepads_CharpBindings/NoGamepads_Core/PtrStringConverter.cs
new file mode 100644
index 0000000..0760162
--- /dev/null
+++ b/core/bindings/lang/csharp/NoGamepads_CharpBindings/NoGamepads_Core/PtrStringConverter.cs
@@ -0,0 +1,23 @@
+using System.Runtime.InteropServices;
+using System.Text;
+
+namespace NoGamepads_Core;
+
+public static class PtrStringConverter
+{
+ public static unsafe string ToString(sbyte* ptr)
+ {
+ string? str = Marshal.PtrToStringUTF8((IntPtr)ptr);
+ return str ?? "";
+ }
+
+ public static unsafe sbyte* ToPtr(string str)
+ {
+ byte[] bytes = Encoding.ASCII.GetBytes(str + '\0');
+ IntPtr ptr = Marshal.AllocHGlobal(bytes.Length);
+ Marshal.Copy(bytes, 0, ptr, bytes.Length);
+ sbyte* sbytePtr = (sbyte*)ptr.ToPointer();
+ Marshal.FreeHGlobal(ptr);
+ return sbytePtr;
+ }
+}
\ No newline at end of file
diff --git a/core/bindings/lang/csharp/NoGamepads_CharpBindings/NoGamepads_Example/Program.cs b/core/bindings/lang/csharp/NoGamepads_CharpBindings/NoGamepads_Example/Program.cs
index e5dff12..6c450f9 100644
--- a/core/bindings/lang/csharp/NoGamepads_CharpBindings/NoGamepads_Example/Program.cs
+++ b/core/bindings/lang/csharp/NoGamepads_CharpBindings/NoGamepads_Example/Program.cs
@@ -1,3 +1,7 @@
// See https://aka.ms/new-console-template for more information
-Console.WriteLine("Hello, World!");
\ No newline at end of file
+using NoGamepads_Core.Data;
+
+Player player = new Player();
+
+Console.WriteLine(player.name);
\ No newline at end of file
--
cgit