Skip to content

Commit

Permalink
Fonctions utilitaires pour les strings de GrList
Browse files Browse the repository at this point in the history
  • Loading branch information
Enalye committed Feb 28, 2024
1 parent da9e652 commit 135c9c9
Showing 1 changed file with 19 additions and 1 deletion.
20 changes: 19 additions & 1 deletion source/grimoire/runtime/list.d
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,11 @@
*/
module grimoire.runtime.list;

import std.conv : to;
import std.exception : enforce;
import std.traits : isSomeString;

import grimoire.assembly;

import grimoire.runtime.channel;
import grimoire.runtime.error;
import grimoire.runtime.object;
Expand Down Expand Up @@ -102,6 +103,15 @@ final class GrList {
return cast(GrString[]) cast(GrPointer[]) _data;
}

pragma(inline) T[] getStrings(T)() if (isSomeString!T) {
GrString[] grlist = cast(GrString[]) cast(GrPointer[]) _data;
T[] result;
foreach (string str; grlist) {
result ~= to!T(str);
}
return result;
}

pragma(inline) GrList[] getLists() {
return cast(GrList[]) cast(GrPointer[]) _data;
}
Expand Down Expand Up @@ -160,6 +170,14 @@ final class GrList {
_data = cast(GrValue[]) values;
}

pragma(inline) void setStrings(T)(T[] values) if (isSomeString!T) {
GrString[] result;
foreach (T str; values) {
result ~= new GrString(str);
}
_data = cast(GrValue[]) result;
}

pragma(inline) void setLists(GrList[] values) {
_data = cast(GrValue[]) values;
}
Expand Down

0 comments on commit 135c9c9

Please sign in to comment.