Back to Atomvm

Module erts_internal

main-apidocs-erlang-estdlib-erts-underscore-internal.md

latest2.1 KB
Original Source

Module erts_internal

An implementation of a subset of the Erlang/OTP erts_internal interface.

Description

These functions are not meant to be called directly. They are helpers, called from code generated by the compiler. In particular mc_iterator/1 and mc_refill/1 implement map comprehensions (#{K => V || K := V <- M}), introduced in OTP 26. The generated bytecode is identical from OTP 26 to at least OTP 29.

Function Index

| mc_iterator/1 | Start iterating over a map comprehension generator. | | mc_refill/1 | Advance a map comprehension iterator. |

Function Details

mc_iterator/1

mc_iterator(MapOrIter) -> Iter
  • MapOrIter = map() | maps:iterator()
  • Iter = {term(), term(), maps:iterator()} | none | []

MapOrIter: a map or a map iterator to iterate over

returns: the first association as {Key, Value, NextIterator}, none if the map or iterator is empty, or [] if the argument is not a valid generator

Start iterating over a map comprehension generator.

This function is a helper called from compiler generated code for map comprehensions. It must be kept compatible as long as code calling this helper can still be loaded.

mc_refill/1

mc_refill(IterMap) -> Iter
  • IterMap = nonempty_improper_list(non_neg_integer() | list(), map())
  • Iter = {term(), term(), maps:iterator()} | none

IterMap: a map iterator to refill

returns: the next association as {Key, Value, NextIterator} or none

Advance a map comprehension iterator.

This function is a helper called from compiler generated code for map comprehensions. It must be kept compatible as long as code calling this helper can still be loaded.