diff options
Diffstat (limited to 'src/javascript/jsc/bindings/bindings.zig')
-rw-r--r-- | src/javascript/jsc/bindings/bindings.zig | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/javascript/jsc/bindings/bindings.zig b/src/javascript/jsc/bindings/bindings.zig index cdc53927a..6377a52c9 100644 --- a/src/javascript/jsc/bindings/bindings.zig +++ b/src/javascript/jsc/bindings/bindings.zig @@ -100,6 +100,10 @@ pub const ZigString = extern struct { return ZigString{ .ptr = slice_.ptr, .len = slice_.len }; } + pub inline fn toRef(slice_: []const u8, global: *JSGlobalObject) C_API.JSValueRef { + return init(slice_).toValue(global).asRef(); + } + pub const Empty = ZigString{ .ptr = "", .len = 0 }; pub fn slice(this: *const ZigString) []const u8 { @@ -1076,6 +1080,26 @@ pub const URL = extern struct { pub const Extern = [_][]const u8{ "fromFileSystemPath", "fromString", "isEmpty", "isValid", "protocol", "encodedUser", "encodedPassword", "host", "path", "lastPathComponent", "query", "fragmentIdentifier", "queryWithLeadingQuestionMark", "fragmentIdentifierWithLeadingNumberSign", "stringWithoutQueryOrFragmentIdentifier", "stringWithoutFragmentIdentifier", "protocolHostAndPort", "hostAndPort", "user", "password", "fileSystemPath", "setProtocol", "setHost", "setHostAndPort", "setUser", "setPassword", "setPath", "setQuery", "truncatedForUseAsBase" }; }; +pub const JSArrayIterator = struct { + i: u32 = 0, + len: u32 = 0, + array: JSValue, + global: *JSGlobalObject, + + pub fn init(value: JSValue, global: *JSGlobalObject) JSArrayIterator { + return .{ .array = value, .global = global, .len = value.getLengthOfArray(global) }; + } + + pub fn next(this: *JSArrayIterator) ?JSValue { + if (this.i >= this.len) { + return null; + } + const i = this.i; + this.i += 1; + return JSObject.getIndex(this.array, this.global, i); + } +}; + pub const String = extern struct { pub const shim = Shimmer("WTF", "String", @This()); bytes: shim.Bytes, @@ -1226,6 +1250,10 @@ pub const JSValue = enum(i64) { }); } + pub inline fn arrayIterator(this: JSValue, global: *JSGlobalObject) JSArrayIterator { + return JSArrayIterator.init(this, global); + } + pub fn jsNumberFromDouble(i: f64) JSValue { return cppFn("jsNumberFromDouble", .{i}); } |