## -----------------------------------------------------------------------------
library(hashtable)
h1 = hash_table(letters, 1:26)
h2 = hash_fm_table(letters, 1:26)
h3 = hash_env_table(letters, 1:26)
h1
h2
h3

## -----------------------------------------------------------------------------
hash_keys(h1)

## -----------------------------------------------------------------------------
hash_values(h1)

## -----------------------------------------------------------------------------
hash_values(h1, c("a", "b", "c"))

## -----------------------------------------------------------------------------
h1$a
h1[["a"]]
h1[c("a", "b")]

## -----------------------------------------------------------------------------
hash_exists(h1, c("a", "b", "foo"))

## -----------------------------------------------------------------------------
hash_delete(h1, c("a", "b"))
hash_exists(h1, c("a", "b"))

## -----------------------------------------------------------------------------
hash_insert(h1, "c", 100L); h1$c
hash_insert(h1, "c", -1L); h1$c
hash_insert(h1, "foo", 0L); h1$foo

## -----------------------------------------------------------------------------
h1$a = 20L; h1$a
h1[["bar"]] = -100L; h1$bar
h1[c("c", "d", "e")] = c(-1L, -2L, -3L); h1[c("c", "d", "e")]

## -----------------------------------------------------------------------------
h1 = hash_table(c("a", "b"), list(1L, "text"))
h1
h1$c = 3.14
h1$d = lm(1~1) # an lm object
h1

## -----------------------------------------------------------------------------
h1 = hash_table(c("a", "b"), 1:2)
as.vector(h1)

h1 = hash_table(c("a", "b"), list(1L, "text"))
as.vector(h1)

vec = structure(1:2, names = c("a", "b"))
as.hash_table(vec)

lt = structure(list(1L, "text"), names = c("a", "b"))
as.hash_table(lt)

## -----------------------------------------------------------------------------
h1 = hash_set(letters)
h2 = hash_fm_set(letters)
h3 = hash_env_set(letters)
h1

## -----------------------------------------------------------------------------
hash_keys(h1)

## ----error = TRUE-------------------------------------------------------------
hash_values(h1)

## -----------------------------------------------------------------------------
hash_exists(h1, c("a", "foo"))

## -----------------------------------------------------------------------------
hash_insert(h1, "foo")
hash_exists(h1, "foo")

## -----------------------------------------------------------------------------
hash_delete(h1, "foo")
hash_exists(h1, "foo")

## -----------------------------------------------------------------------------
h1$a
h1[["a"]]
h1$foo
h1[c("a", "b", "foo")]

## -----------------------------------------------------------------------------
h1$a = FALSE
hash_exists(h1, "a")
h1$foo = TRUE
hash_exists(h1, "foo")

## -----------------------------------------------------------------------------
as.vector(h1)
as.hash_set(letters)

## ----error = TRUE-------------------------------------------------------------
h = hash_fm_table(letters, 1:26)
h$a = 100L

## ----error = TRUE-------------------------------------------------------------
h$foo = 1L  # insert new key foo
hash_delete(h, "a")

## ----error = TRUE-------------------------------------------------------------
h = hash_fm_set(letters)
h$a = FALSE
h$foo = TRUE

## -----------------------------------------------------------------------------
sessionInfo()

