Skip to content

Commit 12ffe04

Browse files
authored
jsdom, builtin/js: WebGL W.I.P; Added support for casting V arrays to typed arrays (#12551)
* builtin/js: TypedArray support * jsdom: WebGL W.I.P
1 parent e9efed0 commit 12ffe04

File tree

2 files changed

+386
-6
lines changed

2 files changed

+386
-6
lines changed

vlib/builtin/js/array.js.v

Lines changed: 201 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -405,3 +405,204 @@ pub fn (a array) to_js_array() JS.Array {
405405
}
406406
return tmp
407407
}
408+
409+
type EveryFn = fn (JS.Number, JS.Number) JS.Boolean
410+
411+
type BigEveryFn = fn (JS.BigInt, JS.Number) JS.Boolean
412+
413+
pub interface JS.TypedArray {
414+
mut:
415+
byteLength JS.Number
416+
byteOffset JS.Number
417+
length JS.Number
418+
}
419+
420+
pub interface JS.Uint8Array {
421+
JS.TypedArray
422+
at(index JS.Number) JS.Number
423+
every(JS.EveryFn) JS.Boolean
424+
}
425+
426+
pub interface JS.Uint16Array {
427+
JS.TypedArray
428+
at(index JS.Number) JS.Number
429+
every(JS.EveryFn) JS.Boolean
430+
}
431+
432+
pub interface JS.Uint32Array {
433+
JS.TypedArray
434+
at(index JS.Number) JS.Number
435+
every(JS.EveryFn) JS.Boolean
436+
}
437+
438+
pub interface JS.BigUint64Array {
439+
JS.TypedArray
440+
at(index JS.Number) JS.BigInt
441+
every(JS.BigEveryFn) JS.Boolean
442+
}
443+
444+
pub interface JS.Int8Array {
445+
JS.TypedArray
446+
at(index JS.Number) JS.Number
447+
every(JS.EveryFn) JS.Boolean
448+
}
449+
450+
pub interface JS.Int16Array {
451+
JS.TypedArray
452+
at(index JS.Number) JS.Number
453+
every(JS.EveryFn) JS.Boolean
454+
}
455+
456+
pub interface JS.Int32Array {
457+
JS.TypedArray
458+
at(index JS.Number) JS.Number
459+
every(JS.EveryFn) JS.Boolean
460+
}
461+
462+
pub interface JS.BigInt64Array {
463+
JS.TypedArray
464+
at(index JS.Number) JS.BigInt
465+
every(JS.BigEveryFn) JS.Boolean
466+
}
467+
468+
pub interface JS.Float32Array {
469+
JS.TypedArray
470+
at(index JS.Number) JS.Number
471+
every(JS.EveryFn) JS.Boolean
472+
}
473+
474+
pub interface JS.Float64Array {
475+
JS.TypedArray
476+
at(index JS.Number) JS.Number
477+
every(JS.EveryFn) JS.Boolean
478+
}
479+
480+
pub fn uint8_array(arr []byte) JS.Uint8Array {
481+
#let tmp = new Array();
482+
483+
for elem in arr {
484+
_ := elem
485+
#tmp.push(elem.val)
486+
}
487+
mut uint_arr := JS.Uint8Array{}
488+
#uint_arr = new Uint8Array(tmp)
489+
490+
return uint_arr
491+
}
492+
493+
pub fn uint16_array(arr []u16) JS.Uint16Array {
494+
#let tmp = new Array();
495+
496+
for elem in arr {
497+
_ := elem
498+
#tmp.push(elem.val)
499+
}
500+
mut uint_arr := JS.Uint16Array{}
501+
#uint_arr = new Uint16Array(tmp)
502+
503+
return uint_arr
504+
}
505+
506+
pub fn uint32_array(arr []u32) JS.Uint32Array {
507+
#let tmp = new Array();
508+
509+
for elem in arr {
510+
_ := elem
511+
#tmp.push(elem.val)
512+
}
513+
mut uint_arr := JS.Uint32Array{}
514+
#uint_arr = new Uint32Array(tmp)
515+
516+
return uint_arr
517+
}
518+
519+
pub fn int8_array(arr []i8) JS.Int8Array {
520+
#let tmp = new Array();
521+
522+
for elem in arr {
523+
_ := elem
524+
#tmp.push(elem.val)
525+
}
526+
mut int_arr := JS.Int8Array{}
527+
#int_arr = new Int8Array(tmp)
528+
529+
return int_arr
530+
}
531+
532+
pub fn int16_array(arr []i16) JS.Int16Array {
533+
#let tmp = new Array();
534+
535+
for elem in arr {
536+
_ := elem
537+
#tmp.push(elem.val)
538+
}
539+
mut int_arr := JS.Int16Array{}
540+
#int_arr = new Int16Array(tmp)
541+
542+
return int_arr
543+
}
544+
545+
pub fn int32_array(arr []int) JS.Int32Array {
546+
#let tmp = new Array();
547+
548+
for elem in arr {
549+
_ := elem
550+
#tmp.push(elem.val)
551+
}
552+
mut int_arr := JS.Int32Array{}
553+
#int_arr = new Int32Array(tmp)
554+
555+
return int_arr
556+
}
557+
558+
pub fn int64_array(arr []i64) JS.BigInt64Array {
559+
#let tmp = new Array();
560+
561+
for elem in arr {
562+
_ := elem
563+
#tmp.push(elem.val)
564+
}
565+
mut int_arr := JS.BigInt64Array{}
566+
#int_arr = new BigInt64Array(tmp)
567+
568+
return int_arr
569+
}
570+
571+
pub fn uint64_array(arr []u64) JS.BigUint64Array {
572+
#let tmp = new Array();
573+
574+
for elem in arr {
575+
_ := elem
576+
#tmp.push(elem.val)
577+
}
578+
mut int_arr := JS.BigUint64Array{}
579+
#int_arr = new BigUint64Array(tmp)
580+
581+
return int_arr
582+
}
583+
584+
pub fn float32_array(arr []f32) JS.Float32Array {
585+
#let tmp = new Array();
586+
587+
for elem in arr {
588+
_ := elem
589+
#tmp.push(elem.val)
590+
}
591+
mut float_arr := JS.Float32Array{}
592+
#float_arr = new Float32Array(tmp)
593+
594+
return float_arr
595+
}
596+
597+
pub fn float64_array(arr []f64) JS.Float64Array {
598+
#let tmp = new Array();
599+
600+
for elem in arr {
601+
_ := elem
602+
#tmp.push(elem.val)
603+
}
604+
mut float_arr := JS.Float64Array{}
605+
#float_arr = new Float64Array(tmp)
606+
607+
return float_arr
608+
}

0 commit comments

Comments
 (0)