@@ -59,52 +59,97 @@ internal static partial void signal_handler_disconnect(
5959 #region Calldata
6060
6161 /// <summary>
62- /// Gets an integer from calldata.
62+ /// Gets raw data from calldata. This is the core function that other helpers use .
6363 /// </summary>
64- [ LibraryImport ( Lib , EntryPoint = "calldata_get_int " ) ]
64+ [ LibraryImport ( Lib , EntryPoint = "calldata_get_data " ) ]
6565 [ UnmanagedCallConv ( CallConvs = [ typeof ( CallConvCdecl ) ] ) ]
66- internal static partial long calldata_get_int (
66+ private static partial byte calldata_get_data_native (
6767 nint calldata ,
68- [ MarshalUsing ( typeof ( Utf8StringMarshaler ) ) ] string name ) ;
68+ [ MarshalUsing ( typeof ( Utf8StringMarshaler ) ) ] string name ,
69+ nint outPtr ,
70+ nuint size ) ;
71+
72+ /// <summary>
73+ /// Gets an integer from calldata.
74+ /// </summary>
75+ internal static bool calldata_get_int ( nint calldata , string name , out long value )
76+ {
77+ value = 0 ;
78+ unsafe
79+ {
80+ fixed ( long * ptr = & value )
81+ {
82+ return calldata_get_data_native ( calldata , name , ( nint ) ptr , ( nuint ) sizeof ( long ) ) != 0 ;
83+ }
84+ }
85+ }
6986
7087 /// <summary>
7188 /// Gets a float from calldata.
7289 /// </summary>
73- [ LibraryImport ( Lib , EntryPoint = "calldata_get_float" ) ]
74- [ UnmanagedCallConv ( CallConvs = [ typeof ( CallConvCdecl ) ] ) ]
75- internal static partial double calldata_get_float (
76- nint calldata ,
77- [ MarshalUsing ( typeof ( Utf8StringMarshaler ) ) ] string name ) ;
90+ internal static bool calldata_get_float ( nint calldata , string name , out double value )
91+ {
92+ value = 0 ;
93+ unsafe
94+ {
95+ fixed ( double * ptr = & value )
96+ {
97+ return calldata_get_data_native ( calldata , name , ( nint ) ptr , ( nuint ) sizeof ( double ) ) != 0 ;
98+ }
99+ }
100+ }
78101
79102 /// <summary>
80103 /// Gets a bool from calldata.
81104 /// </summary>
82- public static bool calldata_get_bool ( nint calldata , string name )
83- => calldata_get_bool_native ( calldata , name ) != 0 ;
84-
85- [ LibraryImport ( Lib , EntryPoint = "calldata_get_bool" ) ]
86- [ UnmanagedCallConv ( CallConvs = [ typeof ( CallConvCdecl ) ] ) ]
87- private static partial byte calldata_get_bool_native (
88- nint calldata ,
89- [ MarshalUsing ( typeof ( Utf8StringMarshaler ) ) ] string name ) ;
105+ internal static bool calldata_get_bool ( nint calldata , string name , out bool value )
106+ {
107+ value = false ;
108+ unsafe
109+ {
110+ byte byteVal = 0 ;
111+ var result = calldata_get_data_native ( calldata , name , ( nint ) ( & byteVal ) , ( nuint ) sizeof ( byte ) ) != 0 ;
112+ value = byteVal != 0 ;
113+ return result ;
114+ }
115+ }
90116
91117 /// <summary>
92- /// Gets a string from calldata.
118+ /// Gets a pointer from calldata.
93119 /// </summary>
94- [ LibraryImport ( Lib , EntryPoint = "calldata_get_string" ) ]
95- [ UnmanagedCallConv ( CallConvs = [ typeof ( CallConvCdecl ) ] ) ]
96- internal static partial nint calldata_get_string (
97- nint calldata ,
98- [ MarshalUsing ( typeof ( Utf8StringMarshaler ) ) ] string name ) ;
120+ internal static bool calldata_get_ptr ( nint calldata , string name , out nint value )
121+ {
122+ value = nint . Zero ;
123+ unsafe
124+ {
125+ fixed ( nint * ptr = & value )
126+ {
127+ return calldata_get_data_native ( calldata , name , ( nint ) ptr , ( nuint ) sizeof ( nint ) ) != 0 ;
128+ }
129+ }
130+ }
99131
100132 /// <summary>
101- /// Gets a pointer from calldata.
133+ /// Gets a string from calldata.
102134 /// </summary>
103- [ LibraryImport ( Lib , EntryPoint = "calldata_get_ptr" ) ]
135+ internal static bool calldata_get_string ( nint calldata , string name , out nint strPtr )
136+ {
137+ strPtr = nint . Zero ;
138+ unsafe
139+ {
140+ fixed ( nint * ptr = & strPtr )
141+ {
142+ return calldata_get_string_native ( calldata , name , ( nint ) ptr ) != 0 ;
143+ }
144+ }
145+ }
146+
147+ [ LibraryImport ( Lib , EntryPoint = "calldata_get_string" ) ]
104148 [ UnmanagedCallConv ( CallConvs = [ typeof ( CallConvCdecl ) ] ) ]
105- internal static partial nint calldata_get_ptr (
149+ private static partial byte calldata_get_string_native (
106150 nint calldata ,
107- [ MarshalUsing ( typeof ( Utf8StringMarshaler ) ) ] string name ) ;
151+ [ MarshalUsing ( typeof ( Utf8StringMarshaler ) ) ] string name ,
152+ nint strPtrPtr ) ;
108153
109154 #endregion
110155
0 commit comments