Packages
orb
0.2.1
0.2.2
0.2.1
0.2.0
0.1.1
0.1.0
0.0.51
0.0.49
0.0.48
0.0.47
0.0.46
0.0.45
0.0.44
0.0.43
0.0.42
0.0.41
0.0.40
0.0.39
0.0.38
0.0.37
0.0.36
0.0.35
0.0.34
0.0.33
0.0.32
0.0.31
0.0.30
0.0.28
0.0.27
0.0.26
0.0.25
0.0.24
0.0.23
0.0.22
0.0.21
0.0.20
0.0.19
0.0.18
0.0.17
0.0.16
0.0.15
0.0.14
0.0.13
0.0.12
retired
0.0.11
0.0.10
0.0.9
0.0.8
0.0.7
0.0.6
0.0.5
0.0.4
0.0.3
0.0.2
0.0.1
DSL for WebAssembly
Current section
Files
Jump to
Current section
Files
lib/orb/iterator.ex
defmodule Orb.Iterator do
# def fetch(%Orb.VariableReference{} = var, :valid?), do: {:ok, Orb.I32.le_u(var, ?z)}
# def fetch(%Orb.VariableReference{} = var, :value), do: {:ok, var}
# def fetch(%Orb.VariableReference{} = var, :next), do: {:ok, Orb.I32.add(var, 1)}
@type var_ref :: %Orb.VariableReference{}
@doc """
Calculates whether the iterator is done or not.
"""
@callback valid?(var_ref) :: %Orb.Instruction{} | integer()
@doc """
The type for iterated elements.
"""
@callback value_type() :: atom() | tuple()
@doc """
Extracts or calculates the current element value.
"""
@callback value(var_ref) :: %Orb.Instruction{} | integer() | float()
@doc """
Mutates the iterator advancing it to the next element.
"""
@callback next(var_ref) :: %Orb.Instruction{} | integer() | float()
end