Packages
orb
0.2.2
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/i32/u8/unsafe_pointer.ex
defmodule Orb.I32.U8.UnsafePointer do
@moduledoc """
Custom `Orb.CustomType` for pointer to 8-bit integer (byte) in memory.
"""
alias Orb.{Memory, I32, VariableReference}
with @behaviour Orb.CustomType do
@impl Orb.CustomType
def wasm_type, do: :i32
@impl Orb.CustomType
def load_instruction, do: :load8_u
end
def memory_alignment, do: 1
with @behaviour Access do
@impl Access
def fetch(%VariableReference{} = var_ref, at!: offset) do
ast = Memory.load!(__MODULE__, Orb.Numeric.Add.optimized(I32, var_ref, offset))
{:ok, ast}
end
@impl Access
def get_and_update(_data, _key, _function) do
raise UndefinedFunctionError, module: __MODULE__, function: :get_and_update, arity: 3
end
@impl Access
def pop(_data, _key) do
raise UndefinedFunctionError, module: __MODULE__, function: :pop, arity: 2
end
end
end