mirror of
https://github.com/fluencelabs/assemblyscript
synced 2025-06-19 18:01:31 +00:00
Add preliminary support for map keys/values, set values
Makes arrays instead of iterators for now
This commit is contained in:
@ -189,6 +189,34 @@ export class Map<K,V> {
|
||||
this.entriesOffset = this.entriesCount;
|
||||
}
|
||||
|
||||
keys(): K[] {
|
||||
// FIXME: this is preliminary, needs iterators/closures
|
||||
var start = changetype<usize>(this.entries);
|
||||
var size = this.entriesOffset;
|
||||
var keys = Array.create<K>(size);
|
||||
for (let i = 0; i < size; ++i) {
|
||||
let entry = changetype<MapEntry<K,V>>(start + <usize>i * ENTRY_SIZE<K,V>());
|
||||
if (!(entry.taggedNext & EMPTY)) {
|
||||
keys.push(entry.key);
|
||||
}
|
||||
}
|
||||
return keys;
|
||||
}
|
||||
|
||||
values(): V[] {
|
||||
// FIXME: this is preliminary, needs iterators/closures
|
||||
var start = changetype<usize>(this.entries);
|
||||
var size = this.entriesOffset;
|
||||
var values = Array.create<V>(size);
|
||||
for (let i = 0; i < size; ++i) {
|
||||
let entry = changetype<MapEntry<K,V>>(start + <usize>i * ENTRY_SIZE<K,V>());
|
||||
if (!(entry.taggedNext & EMPTY)) {
|
||||
values.push(entry.value);
|
||||
}
|
||||
}
|
||||
return values;
|
||||
}
|
||||
|
||||
toString(): string {
|
||||
return "[object Map]";
|
||||
}
|
||||
|
Reference in New Issue
Block a user