@@ -104,6 +104,28 @@ public static unsafe class B_String
104
104
return null ;
105
105
}
106
106
107
+ private static IshtarObject * i_call_String_createFrom ( CallFrame * current , IshtarObject * * args )
108
+ {
109
+ var buffer = new Vein_Span_u8 ( args [ 0 ] ) ;
110
+ var span = new Span < byte > ( buffer . _ptr , buffer . _length ) ;
111
+ var encoding = IshtarMarshal . ToDotnetInt32 ( args [ 1 ] , current ) ;
112
+
113
+ if ( encoding == 0 )
114
+ return current ->vm ->gc ->ToIshtarObject ( Encoding . UTF32 . GetString ( span ) , current ) ;
115
+ else if ( encoding == 1 )
116
+ return current ->vm ->gc ->ToIshtarObject ( Encoding . Unicode . GetString ( span ) , current ) ;
117
+ else if ( encoding == 2 )
118
+ return current ->vm ->gc ->ToIshtarObject ( Encoding . BigEndianUnicode . GetString ( span ) , current ) ;
119
+ else if ( encoding == 3 )
120
+ return current ->vm ->gc ->ToIshtarObject ( Encoding . UTF8 . GetString ( span ) , current ) ;
121
+ else if ( encoding == 4 )
122
+ return current ->vm ->gc ->ToIshtarObject ( Encoding . ASCII . GetString ( span ) , current ) ;
123
+ else if ( encoding == 5 )
124
+ return current ->vm ->gc ->ToIshtarObject ( Encoding . Latin1 . GetString ( span ) , current ) ;
125
+
126
+ return null ;
127
+ }
128
+
107
129
public static void InitTable ( ForeignFunctionInterface ffi )
108
130
{
109
131
ffi . Add ( "i_call_String_fmt([std]::std::String,[std]::std::Object) -> [std]::std::String" ,
@@ -130,7 +152,10 @@ public static void InitTable(ForeignFunctionInterface ffi)
130
152
"i_call_String_copyTo([std]::std::String,[std]::std::Span<Byte>,[std]::std::Int32) -> [std]::std::Void" ,
131
153
ffi . AsNative ( & i_call_String_copyTo ) ) ;
132
154
133
- //method 'print_any([std]::std::Object) -> [std]::std::Void
155
+ ffi . Add (
156
+ "i_call_String_createFrom([std]::std::Span<Byte>,[std]::std::Int32) -> [std]::std::Void" ,
157
+ ffi . AsNative ( & i_call_String_createFrom ) ) ;
158
+
134
159
135
160
ffi . Add ( "i_call_String_Concat" , Private | Static | Extern , TYPE_STRING ,
136
161
( "v1" , TYPE_STRING ) , ( "v2" , TYPE_STRING ) )
0 commit comments