Skip to content

Commit 008998e

Browse files
committed
fix missed i_call_String_createFrom
1 parent b937288 commit 008998e

File tree

3 files changed

+28
-3
lines changed

3 files changed

+28
-3
lines changed

Directory.Build.props

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<InvariantGlobalization>true</InvariantGlobalization>
66
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
77
<LangVersion>latest</LangVersion>
8-
<Version>0.30.7</Version>
8+
<Version>0.30.8</Version>
99
<LangVersion>preview</LangVersion>
1010
<TreatWarningsAsErrors>False</TreatWarningsAsErrors>
1111
<EnablePreviewFeatures>true</EnablePreviewFeatures>

GitVersion.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@ merge-message-formats: {}
55
commit-message-incrementing: Enabled
66
patch-version-bump-message: "^(add|bump|drop|mv|move|update|expose|remove|refactoring|additional|use|improvement|fix|refactor)(.+)?"
77
tag-prefix: 'IGNORE'
8-
next-version: "0.30.7"
8+
next-version: "0.30.8"

runtime/ishtar.vm/__builtin/B_String.cs

+26-1
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,28 @@ public static unsafe class B_String
104104
return null;
105105
}
106106

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+
107129
public static void InitTable(ForeignFunctionInterface ffi)
108130
{
109131
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)
130152
"i_call_String_copyTo([std]::std::String,[std]::std::Span<Byte>,[std]::std::Int32) -> [std]::std::Void",
131153
ffi.AsNative(&i_call_String_copyTo));
132154

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+
134159

135160
ffi.Add("i_call_String_Concat", Private | Static | Extern, TYPE_STRING,
136161
("v1", TYPE_STRING), ("v2", TYPE_STRING))

0 commit comments

Comments
 (0)