main-apidocs-libatomvm-src-ets-underscore-multimap-dot-h.md
Include dependency graph for ets_multimap.h:
digraph { graph [bgcolor="#00000000"] node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2] edge [color="#1414CE"] "4" [label="atom.h" tooltip="atom.h"] "6" [label="atom_table.h" tooltip="atom_table.h"] "12" [label="erl_nif.h" tooltip="erl_nif.h"] "16" [label="ets.h" tooltip="ets.h"] "1" [label="/__w/AtomVM/AtomVM/src/libAtomVM/ets_multimap.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/ets_multimap.h" fillcolor="#BFBFBF"] "2" [label="globalcontext.h" tooltip="globalcontext.h"] "23" [label="intn.h" tooltip="intn.h"] "18" [label="list.h" tooltip="list.h"] "27" [label="mailbox.h" tooltip="mailbox.h"] "24" [label="memory.h" tooltip="memory.h"] "25" [label="refc_binary.h" tooltip="refc_binary.h"] "26" [label="resources.h" tooltip="resources.h"] "19" [label="smp.h" tooltip="smp.h"] "17" [label="synclist.h" tooltip="synclist.h"] "20" [label="term.h" tooltip="term.h"] "13" [label="term_typedef.h" tooltip="term_typedef.h"] "28" [label="timer_list.h" tooltip="timer_list.h"] "8" [label="utils.h" tooltip="utils.h"] "29" [label="valueshashtable.h" tooltip="valueshashtable.h"] "14" [label="assert.h" tooltip="assert.h"] "9" [label="inttypes.h" tooltip="inttypes.h"] "15" [label="limits.h" tooltip="limits.h"] "7" [label="stdbool.h" tooltip="stdbool.h"] "10" [label="stddef.h" tooltip="stddef.h"] "3" [label="stdint.h" tooltip="stdint.h"] "11" [label="stdio.h" tooltip="stdio.h"] "5" [label="stdlib.h" tooltip="stdlib.h"] "22" [label="string.h" tooltip="string.h"] "21" [label="sys/types.h" tooltip="sys/types.h"] "4" -> "3" [dir=forward tooltip="include"] "4" -> "5" [dir=forward tooltip="include"] "6" -> "7" [dir=forward tooltip="include"] "6" -> "4" [dir=forward tooltip="include"] "6" -> "8" [dir=forward tooltip="include"] "12" -> "13" [dir=forward tooltip="include"] "16" -> "7" [dir=forward tooltip="include"] "16" -> "17" [dir=forward tooltip="include"] "16" -> "20" [dir=forward tooltip="include"] "1" -> "2" [dir=forward tooltip="include"] "1" -> "20" [dir=forward tooltip="include"] "2" -> "3" [dir=forward tooltip="include"] "2" -> "4" [dir=forward tooltip="include"] "2" -> "6" [dir=forward tooltip="include"] "2" -> "12" [dir=forward tooltip="include"] "2" -> "16" [dir=forward tooltip="include"] "2" -> "18" [dir=forward tooltip="include"] "2" -> "27" [dir=forward tooltip="include"] "2" -> "19" [dir=forward tooltip="include"] "2" -> "17" [dir=forward tooltip="include"] "2" -> "20" [dir=forward tooltip="include"] "2" -> "28" [dir=forward tooltip="include"] "2" -> "29" [dir=forward tooltip="include"] "23" -> "7" [dir=forward tooltip="include"] "23" -> "22" [dir=forward tooltip="include"] "23" -> "8" [dir=forward tooltip="include"] "18" -> "7" [dir=forward tooltip="include"] "27" -> "7" [dir=forward tooltip="include"] "27" -> "18" [dir=forward tooltip="include"] "27" -> "13" [dir=forward tooltip="include"] "27" -> "8" [dir=forward tooltip="include"] "24" -> "3" [dir=forward tooltip="include"] "24" -> "5" [dir=forward tooltip="include"] "24" -> "12" [dir=forward tooltip="include"] "24" -> "13" [dir=forward tooltip="include"] "24" -> "8" [dir=forward tooltip="include"] "25" -> "7" [dir=forward tooltip="include"] "25" -> "5" [dir=forward tooltip="include"] "25" -> "18" [dir=forward tooltip="include"] "25" -> "26" [dir=forward tooltip="include"] "26" -> "5" [dir=forward tooltip="include"] "26" -> "12" [dir=forward tooltip="include"] "26" -> "18" [dir=forward tooltip="include"] "26" -> "27" [dir=forward tooltip="include"] "26" -> "24" [dir=forward tooltip="include"] "26" -> "17" [dir=forward tooltip="include"] "19" -> "7" [dir=forward tooltip="include"] "17" -> "11" [dir=forward tooltip="include"] "17" -> "18" [dir=forward tooltip="include"] "17" -> "19" [dir=forward tooltip="include"] "20" -> "21" [dir=forward tooltip="include"] "20" -> "7" [dir=forward tooltip="include"] "20" -> "3" [dir=forward tooltip="include"] "20" -> "11" [dir=forward tooltip="include"] "20" -> "5" [dir=forward tooltip="include"] "20" -> "22" [dir=forward tooltip="include"] "20" -> "4" [dir=forward tooltip="include"] "20" -> "23" [dir=forward tooltip="include"] "20" -> "24" [dir=forward tooltip="include"] "20" -> "25" [dir=forward tooltip="include"] "20" -> "26" [dir=forward tooltip="include"] "20" -> "8" [dir=forward tooltip="include"] "20" -> "13" [dir=forward tooltip="include"] "13" -> "14" [dir=forward tooltip="include"] "13" -> "15" [dir=forward tooltip="include"] "13" -> "9" [dir=forward tooltip="include"] "13" -> "3" [dir=forward tooltip="include"] "28" -> "7" [dir=forward tooltip="include"] "28" -> "3" [dir=forward tooltip="include"] "28" -> "18" [dir=forward tooltip="include"] "8" -> "9" [dir=forward tooltip="include"] "8" -> "7" [dir=forward tooltip="include"] "8" -> "10" [dir=forward tooltip="include"] "8" -> "11" [dir=forward tooltip="include"] "8" -> "5" [dir=forward tooltip="include"] "29" -> "10" [dir=forward tooltip="include"] "29" -> "3" [dir=forward tooltip="include"] }
This graph shows which files directly or indirectly include ets_multimap.h:
digraph { graph [bgcolor="#00000000"] node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2] edge [color="#1414CE"] "2" [label="/__w/AtomVM/AtomVM/src/libAtomVM/ets.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/ets.c"] "3" [label="/__w/AtomVM/AtomVM/src/libAtomVM/ets_multimap.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/ets_multimap.c"] "1" [label="/__w/AtomVM/AtomVM/src/libAtomVM/ets_multimap.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/ets_multimap.h" fillcolor="#BFBFBF"] "1" -> "2" [dir=back tooltip="include"] "1" -> "3" [dir=back tooltip="include"] }
Defines
ETS_MULTIMAP_NUM_BUCKETS 16
Typedefs
typedef struct EtsMultimap EtsMultimap
typedef struct EtsMultimapNode EtsMultimapNode
typedef struct EtsMultimapEntry EtsMultimapEntry
Enums
enum ets_multimap_type_t
Values:
enumerator EtsMultimapTypeSingle
enumerator EtsMultimapTypeSet
enumerator EtsMultimapTypeList
Functions
EtsMultimap *ets_multimap_new(ets_multimap_type_t type, size_t index)
Create a new multimap.
Parameters:
type – the multimap type
index – the index of the tuple element to use as key
Returns:
the created multimap, or NULL on error
void ets_multimap_delete(EtsMultimap *multimap, GlobalContext *global)
Delete the multimap and all its contents.
Parameters:
multimap – the multimap
global – the global context
ets_result_t ets_multimap_lookup(EtsMultimap *multimap, term key, term **tuples, size_t *count, GlobalContext *global)
Lookup tuples by key.
Note
Terms returned by this function come from the ETS heap and should be copied to the process heap if needed.
Note
The returned tuples are ordered in reverse insertion order (most recently added elements first).
Warning
The caller is responsible for freeing the memory pointed to by tuples using free(). When count is zero, memory is not allocated.
Parameters:
multimap – the multimap
key – the key to lookup
tuples – [out] the found tuples (or NULL to only get the count)
count – [out] the number of found tuples; must not be NULL
global – the global context
Returns:
EtsOk on success, otherwise an error status
ets_result_t ets_multimap_insert(EtsMultimap *multimap, term *tuples, size_t count, GlobalContext *global)
Insert one or more tuples into the multimap.
Note
Terms passed to this function will be copied to the ETS heap.
Parameters:
multimap – the multimap
tuples – the tuples to insert
count – the number of tuples to insert
Returns:
EtsOk on success, otherwise an error status
ets_result_t ets_multimap_remove(EtsMultimap *multimap, term key, GlobalContext *global)
Remove all tuples with the given key.
Parameters:
multimap – the multimap
key – the key to lookup
global – the global context
Returns:
EtsOk on success, otherwise an error status
ets_result_t ets_multimap_remove_tuple(EtsMultimap *multimap, term tuple, GlobalContext *global)
Remove a given tuple from the multimap.
Parameters:
multimap – the multimap
tuple – the tuple to remove
global – the global context
Returns:
EtsOk on success, otherwise an error status
struct EtsMultimap
#include <ets_multimap.h>
Collaboration diagram for EtsMultimap:
digraph { graph [bgcolor="#00000000"] node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2] edge [color="#1414CE"] "1" [label="EtsMultimap" tooltip="EtsMultimap" fillcolor="#BFBFBF"] "3" [label="EtsMultimapEntry" tooltip="EtsMultimapEntry"] "2" [label="EtsMultimapNode" tooltip="EtsMultimapNode"] "4" [label="Heap" tooltip="Heap"] "5" [label="HeapFragment" tooltip="HeapFragment"] "1" -> "2" [dir=forward tooltip="usage"] "3" -> "3" [dir=forward tooltip="usage"] "3" -> "4" [dir=forward tooltip="usage"] "2" -> "2" [dir=forward tooltip="usage"] "2" -> "3" [dir=forward tooltip="usage"] "4" -> "5" [dir=forward tooltip="usage"] "5" -> "5" [dir=forward tooltip="usage"] }
Public Members
ets_multimap_type_t type
size_t key_index
struct EtsMultimapNode *buckets[16]
struct EtsMultimapNode
#include <ets_multimap.h>
Collaboration diagram for EtsMultimapNode:
digraph { graph [bgcolor="#00000000"] node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2] edge [color="#1414CE"] "2" [label="EtsMultimapEntry" tooltip="EtsMultimapEntry"] "1" [label="EtsMultimapNode" tooltip="EtsMultimapNode" fillcolor="#BFBFBF"] "3" [label="Heap" tooltip="Heap"] "4" [label="HeapFragment" tooltip="HeapFragment"] "2" -> "2" [dir=forward tooltip="usage"] "2" -> "3" [dir=forward tooltip="usage"] "1" -> "1" [dir=forward tooltip="usage"] "1" -> "2" [dir=forward tooltip="usage"] "3" -> "4" [dir=forward tooltip="usage"] "4" -> "4" [dir=forward tooltip="usage"] }
Public Members
struct EtsMultimapNode *next
struct EtsMultimapEntry *entries
struct EtsMultimapEntry
#include <ets_multimap.h>
Collaboration diagram for EtsMultimapEntry:
digraph { graph [bgcolor="#00000000"] node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2] edge [color="#1414CE"] "1" [label="EtsMultimapEntry" tooltip="EtsMultimapEntry" fillcolor="#BFBFBF"] "2" [label="Heap" tooltip="Heap"] "3" [label="HeapFragment" tooltip="HeapFragment"] "1" -> "1" [dir=forward tooltip="usage"] "1" -> "2" [dir=forward tooltip="usage"] "2" -> "3" [dir=forward tooltip="usage"] "3" -> "3" [dir=forward tooltip="usage"] }
Public Members
struct EtsMultimapEntry *next
term tuple
Heap *heap