1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- export default class WebGPUWeakMap extends WeakMap {
- constructor() {
- super();
- }
- get( keys ) {
- if ( Array.isArray( keys ) ) {
- let map = this;
- for ( let i = 0; i < keys.length - 1; i ++ ) {
- map = map.get( keys[ i ] );
- if ( map === undefined ) return undefined;
- }
- return map.get( keys[ keys.length - 1 ] );
- } else {
- return super.get( keys );
- }
- }
- set( keys, value ) {
- if ( Array.isArray( keys ) ) {
- let map = this;
- for ( let i = 0; i < keys.length - 1; i ++ ) {
- const key = keys[ i ];
- if ( map.has( key ) === false ) map.set( key, new WeakMap() );
- map = map.get( key );
- }
- return map.set( keys[ keys.length - 1 ], value );
- } else {
- return super.set( keys, value );
- }
- }
- delete( keys ) {
- if ( Array.isArray( keys ) ) {
- let map = this;
- for ( let i = 0; i < keys.length - 1; i ++ ) {
- map = map.get( keys[ i ] );
- if ( map === undefined ) return false;
- }
- return map.delete( keys[ keys.length - 1 ] );
- } else {
- return super.delete( keys );
- }
- }
- }
|