compiler/iterator: add missing iterator.Concat function

We have a syscall for it, so it should be exposed.
This commit is contained in:
Roman Khimov 2020-05-18 15:38:11 +03:00
parent a17bd6176f
commit eb82661f6b
2 changed files with 10 additions and 0 deletions

View file

@ -105,6 +105,7 @@ var syscalls = map[string]map[string]string{
"GetExecutingScriptHash": "System.ExecutionEngine.GetExecutingScriptHash", "GetExecutingScriptHash": "System.ExecutionEngine.GetExecutingScriptHash",
}, },
"iterator": { "iterator": {
"Concat": "Neo.Iterator.Concat",
"Create": "Neo.Iterator.Create", "Create": "Neo.Iterator.Create",
"Key": "Neo.Iterator.Key", "Key": "Neo.Iterator.Key",
"Keys": "Neo.Iterator.Keys", "Keys": "Neo.Iterator.Keys",

View file

@ -18,6 +18,15 @@ func Create(items []interface{}) Iterator {
return Iterator{} return Iterator{}
} }
// Concat concatenates two given iterators returning one that will range on
// a first and then continue with b. Iterator positions are not reset for a
// and b, so if any of them was already advanced by Next the resulting
// Iterator will point at this new position and never go back to previous
// key-value pairs. This function uses `Neo.Iterator.Concat` syscall.
func Concat(a, b Iterator) Iterator {
return Iterator{}
}
// Key returns iterator's key at current position. It's only valid to call after // Key returns iterator's key at current position. It's only valid to call after
// successful Next call. This function uses `Neo.Iterator.Key` syscall. // successful Next call. This function uses `Neo.Iterator.Key` syscall.
func Key(it Iterator) interface{} { func Key(it Iterator) interface{} {