Ruby 3.0.5p211 (2022-11-24 revision ba5cf0f7c52d4d35cc6a173c89eda98ceffa2dcf)
Data Structures | Macros | Typedefs | Functions
st.c File Reference
#include "internal.h"
#include "internal/bits.h"
#include "internal/hash.h"
#include "internal/sanitizers.h"
#include <stdio.h>
#include <string.h>
#include <assert.h>

Go to the source code of this file.

Data Structures

struct  st_table_entry
 
struct  st_features
 
struct  functor
 

Macros

#define PREFETCH(addr, write_p)   __builtin_prefetch(addr, write_p)
 
#define EXPECT(expr, val)   __builtin_expect(expr, val)
 
#define ATTRIBUTE_UNUSED   __attribute__((unused))
 
#define type_numhash   st_hashtype_num
 
#define ST_INIT_VAL   0xafafafafafafafaf
 
#define ST_INIT_VAL_BYTE   0xafa
 
#define malloc   ruby_xmalloc
 
#define calloc   ruby_xcalloc
 
#define realloc   ruby_xrealloc
 
#define free   ruby_xfree
 
#define EQUAL(tab, x, y)   ((x) == (y) || (*(tab)->type->compare)((x),(y)) == 0)
 
#define PTR_EQUAL(tab, ptr, hash_val, key_)    ((ptr)->hash == (hash_val) && EQUAL((tab), (key_), (ptr)->key))
 
#define DO_PTR_EQUAL_CHECK(tab, ptr, hash_val, key, res, rebuilt_p)
 
#define MAX_POWER2   30
 
#define RESERVED_HASH_VAL   (~(st_hash_t) 0)
 
#define RESERVED_HASH_SUBSTITUTION_VAL   ((st_hash_t) 0)
 
#define MINIMAL_POWER2   2
 
#define MAX_POWER2_FOR_TABLES_WITHOUT_BINS   4
 
#define EMPTY_BIN   0
 
#define DELETED_BIN   1
 
#define ENTRY_BASE   2
 
#define MARK_BIN_EMPTY(tab, i)   (set_bin((tab)->bins, get_size_ind(tab), i, EMPTY_BIN))
 
#define UNDEFINED_ENTRY_IND   (~(st_index_t) 0)
 
#define UNDEFINED_BIN_IND   (~(st_index_t) 0)
 
#define REBUILT_TABLE_ENTRY_IND   (~(st_index_t) 1)
 
#define REBUILT_TABLE_BIN_IND   (~(st_index_t) 1)
 
#define MARK_BIN_DELETED(tab, i)
 
#define EMPTY_BIN_P(b)   ((b) == EMPTY_BIN)
 
#define DELETED_BIN_P(b)   ((b) == DELETED_BIN)
 
#define EMPTY_OR_DELETED_BIN_P(b)   ((b) <= DELETED_BIN)
 
#define IND_EMPTY_BIN_P(tab, i)   (EMPTY_BIN_P(get_bin((tab)->bins, get_size_ind(tab), i)))
 
#define IND_DELETED_BIN_P(tab, i)   (DELETED_BIN_P(get_bin((tab)->bins, get_size_ind(tab), i)))
 
#define IND_EMPTY_OR_DELETED_BIN_P(tab, i)   (EMPTY_OR_DELETED_BIN_P(get_bin((tab)->bins, get_size_ind(tab), i)))
 
#define MARK_ENTRY_DELETED(e_ptr)   ((e_ptr)->hash = RESERVED_HASH_VAL)
 
#define DELETED_ENTRY_P(e_ptr)   ((e_ptr)->hash == RESERVED_HASH_VAL)
 
#define COLLISION
 
#define FOUND_BIN
 
#define REBUILD_THRESHOLD   4
 
#define FNV1_32A_INIT   0x811c9dc5
 
#define FNV_32_PRIME   0x01000193
 
#define BIG_CONSTANT(x, y)   ((st_index_t)(x)<<32|(st_index_t)(y))
 
#define ROTL(x, n)   ((x)<<(n)|(x)>>(SIZEOF_ST_INDEX_T*CHAR_BIT-(n)))
 
#define C1   (st_index_t)0xcc9e2d51
 
#define C2   (st_index_t)0x1b873593
 
#define r1   (17)
 
#define r2   (11)
 
#define r1   (16)
 
#define r2   (13)
 
#define r3   (16)
 
#define data_at(n)   (st_index_t)((unsigned char)data[(n)])
 
#define UNALIGNED_ADD_4   UNALIGNED_ADD(2); UNALIGNED_ADD(1); UNALIGNED_ADD(0)
 
#define UNALIGNED_ADD_ALL   UNALIGNED_ADD_4
 
#define UNALIGNED_ADD(n)
 
#define UNALIGNED_ADD(n)
 
#define SKIP_TAIL   1
 
#define aligned_data   data
 
#define UNALIGNED_ADD(n)
 

Typedefs

typedef st_index_t st_hash_t
 

Functions

st_tablest_init_table_with_size (const struct st_hash_type *type, st_index_t size)
 
st_tablest_init_table (const struct st_hash_type *type)
 
st_tablest_init_numtable (void)
 
st_tablest_init_numtable_with_size (st_index_t size)
 
st_tablest_init_strtable (void)
 
st_tablest_init_strtable_with_size (st_index_t size)
 
st_tablest_init_strcasetable (void)
 
st_tablest_init_strcasetable_with_size (st_index_t size)
 
void st_clear (st_table *tab)
 
void st_free_table (st_table *tab)
 
size_t st_memsize (const st_table *tab)
 
int st_lookup (st_table *tab, st_data_t key, st_data_t *value)
 
int st_get_key (st_table *tab, st_data_t key, st_data_t *result)
 
int st_insert (st_table *tab, st_data_t key, st_data_t value)
 
void st_add_direct (st_table *tab, st_data_t key, st_data_t value)
 
int st_insert2 (st_table *tab, st_data_t key, st_data_t value, st_data_t(*func)(st_data_t))
 
st_tablest_copy (st_table *old_tab)
 
int st_delete (st_table *tab, st_data_t *key, st_data_t *value)
 
int st_delete_safe (st_table *tab, st_data_t *key, st_data_t *value, st_data_t never ATTRIBUTE_UNUSED)
 
int st_shift (st_table *tab, st_data_t *key, st_data_t *value)
 
void st_cleanup_safe (st_table *tab ATTRIBUTE_UNUSED, st_data_t never ATTRIBUTE_UNUSED)
 
int st_update (st_table *tab, st_data_t key, st_update_callback_func *func, st_data_t arg)
 
int st_foreach_with_replace (st_table *tab, st_foreach_check_callback_func *func, st_update_callback_func *replace, st_data_t arg)
 
int st_foreach (st_table *tab, st_foreach_callback_func *func, st_data_t arg)
 
int st_foreach_check (st_table *tab, st_foreach_check_callback_func *func, st_data_t arg, st_data_t never ATTRIBUTE_UNUSED)
 
st_index_t st_keys (st_table *tab, st_data_t *keys, st_index_t size)
 
st_index_t st_keys_check (st_table *tab, st_data_t *keys, st_index_t size, st_data_t never ATTRIBUTE_UNUSED)
 
st_index_t st_values (st_table *tab, st_data_t *values, st_index_t size)
 
st_index_t st_values_check (st_table *tab, st_data_t *values, st_index_t size, st_data_t never ATTRIBUTE_UNUSED)
 
 NO_SANITIZE ("unsigned-integer-overflow", static inline st_index_t murmur_step(st_index_t h, st_index_t k))
 
 NO_SANITIZE ("unsigned-integer-overflow", static inline st_index_t murmur_finish(st_index_t h))
 
 NO_SANITIZE ("unsigned-integer-overflow", extern st_index_t st_hash(const void *ptr, size_t len, st_index_t h))
 
st_index_t st_hash (const void *ptr, size_t len, st_index_t h)
 
st_index_t st_hash_uint32 (st_index_t h, uint32_t i)
 
 NO_SANITIZE ("unsigned-integer-overflow", extern st_index_t st_hash_uint(st_index_t h, st_index_t i))
 
st_index_t st_hash_uint (st_index_t h, st_index_t i)
 
st_index_t st_hash_end (st_index_t h)
 
st_index_t rb_st_hash_start (st_index_t h)
 
int st_locale_insensitive_strcasecmp (const char *s1, const char *s2)
 
int st_locale_insensitive_strncasecmp (const char *s1, const char *s2, size_t n)
 
 NO_SANITIZE ("unsigned-integer-overflow", static st_index_t strcasehash(st_data_t))
 
int st_numcmp (st_data_t x, st_data_t y)
 
st_index_t st_numhash (st_data_t n)
 
void rb_hash_bulk_insert_into_st_table (long argc, const VALUE *argv, VALUE hash)
 
st_data_t rb_st_nth_key (st_table *tab, st_index_t index)
 

Macro Definition Documentation

◆ aligned_data

#define aligned_data   data

◆ ATTRIBUTE_UNUSED

#define ATTRIBUTE_UNUSED   __attribute__((unused))

Definition at line 123 of file st.c.

◆ BIG_CONSTANT

#define BIG_CONSTANT (   x,
 
)    ((st_index_t)(x)<<32|(st_index_t)(y))

Definition at line 1677 of file st.c.

◆ C1

#define C1   (st_index_t)0xcc9e2d51

Definition at line 1681 of file st.c.

◆ C2

#define C2   (st_index_t)0x1b873593

Definition at line 1682 of file st.c.

◆ calloc

#define calloc   ruby_xcalloc

Definition at line 171 of file st.c.

◆ COLLISION

#define COLLISION

Definition at line 686 of file st.c.

◆ data_at

#define data_at (   n)    (st_index_t)((unsigned char)data[(n)])

◆ DELETED_BIN

#define DELETED_BIN   1

Definition at line 379 of file st.c.

◆ DELETED_BIN_P

#define DELETED_BIN_P (   b)    ((b) == DELETED_BIN)

Definition at line 408 of file st.c.

◆ DELETED_ENTRY_P

#define DELETED_ENTRY_P (   e_ptr)    ((e_ptr)->hash == RESERVED_HASH_VAL)

Definition at line 420 of file st.c.

◆ DO_PTR_EQUAL_CHECK

#define DO_PTR_EQUAL_CHECK (   tab,
  ptr,
  hash_val,
  key,
  res,
  rebuilt_p 
)
Value:
do { \
unsigned int _old_rebuilds_num = (tab)->rebuilds_num; \
res = PTR_EQUAL(tab, ptr, hash_val, key); \
rebuilt_p = _old_rebuilds_num != (tab)->rebuilds_num; \
} while (FALSE)
struct RIMemo * ptr
Definition: debug.c:88
#define FALSE
Definition: nkf.h:174
#define PTR_EQUAL(tab, ptr, hash_val, key_)
Definition: st.c:177
Definition: enough.c:118

Definition at line 182 of file st.c.

◆ EMPTY_BIN

#define EMPTY_BIN   0

Definition at line 378 of file st.c.

◆ EMPTY_BIN_P

#define EMPTY_BIN_P (   b)    ((b) == EMPTY_BIN)

Definition at line 407 of file st.c.

◆ EMPTY_OR_DELETED_BIN_P

#define EMPTY_OR_DELETED_BIN_P (   b)    ((b) <= DELETED_BIN)

Definition at line 409 of file st.c.

◆ ENTRY_BASE

#define ENTRY_BASE   2

Definition at line 381 of file st.c.

◆ EQUAL

#define EQUAL (   tab,
  x,
 
)    ((x) == (y) || (*(tab)->type->compare)((x),(y)) == 0)

Definition at line 176 of file st.c.

◆ EXPECT

#define EXPECT (   expr,
  val 
)    __builtin_expect(expr, val)

Definition at line 122 of file st.c.

◆ FNV1_32A_INIT

#define FNV1_32A_INIT   0x811c9dc5

Definition at line 1655 of file st.c.

◆ FNV_32_PRIME

#define FNV_32_PRIME   0x01000193

Definition at line 1660 of file st.c.

◆ FOUND_BIN

#define FOUND_BIN

Definition at line 687 of file st.c.

◆ free

#define free   ruby_xfree

Definition at line 173 of file st.c.

◆ IND_DELETED_BIN_P

#define IND_DELETED_BIN_P (   tab,
 
)    (DELETED_BIN_P(get_bin((tab)->bins, get_size_ind(tab), i)))

Definition at line 414 of file st.c.

◆ IND_EMPTY_BIN_P

#define IND_EMPTY_BIN_P (   tab,
 
)    (EMPTY_BIN_P(get_bin((tab)->bins, get_size_ind(tab), i)))

Definition at line 413 of file st.c.

◆ IND_EMPTY_OR_DELETED_BIN_P

#define IND_EMPTY_OR_DELETED_BIN_P (   tab,
 
)    (EMPTY_OR_DELETED_BIN_P(get_bin((tab)->bins, get_size_ind(tab), i)))

Definition at line 415 of file st.c.

◆ malloc

#define malloc   ruby_xmalloc

Definition at line 170 of file st.c.

◆ MARK_BIN_DELETED

#define MARK_BIN_DELETED (   tab,
 
)
Value:
do { \
set_bin((tab)->bins, get_size_ind(tab), i, DELETED_BIN); \
} while (0)
#define DELETED_BIN
Definition: st.c:379

Definition at line 400 of file st.c.

◆ MARK_BIN_EMPTY

#define MARK_BIN_EMPTY (   tab,
 
)    (set_bin((tab)->bins, get_size_ind(tab), i, EMPTY_BIN))

Definition at line 385 of file st.c.

◆ MARK_ENTRY_DELETED

#define MARK_ENTRY_DELETED (   e_ptr)    ((e_ptr)->hash = RESERVED_HASH_VAL)

Definition at line 419 of file st.c.

◆ MAX_POWER2

#define MAX_POWER2   30

Definition at line 274 of file st.c.

◆ MAX_POWER2_FOR_TABLES_WITHOUT_BINS

#define MAX_POWER2_FOR_TABLES_WITHOUT_BINS   4

Definition at line 336 of file st.c.

◆ MINIMAL_POWER2

#define MINIMAL_POWER2   2

Definition at line 328 of file st.c.

◆ PREFETCH

#define PREFETCH (   addr,
  write_p 
)    __builtin_prefetch(addr, write_p)

Definition at line 121 of file st.c.

◆ PTR_EQUAL

#define PTR_EQUAL (   tab,
  ptr,
  hash_val,
  key_ 
)     ((ptr)->hash == (hash_val) && EQUAL((tab), (key_), (ptr)->key))

Definition at line 177 of file st.c.

◆ r1 [1/2]

#define r1   (17)

◆ r1 [2/2]

#define r1   (16)

◆ r2 [1/2]

#define r2   (11)

◆ r2 [2/2]

#define r2   (13)

◆ r3

#define r3   (16)

◆ realloc

#define realloc   ruby_xrealloc

Definition at line 172 of file st.c.

◆ REBUILD_THRESHOLD

#define REBUILD_THRESHOLD   4

Definition at line 693 of file st.c.

◆ REBUILT_TABLE_BIN_IND

#define REBUILT_TABLE_BIN_IND   (~(st_index_t) 1)

Definition at line 395 of file st.c.

◆ REBUILT_TABLE_ENTRY_IND

#define REBUILT_TABLE_ENTRY_IND   (~(st_index_t) 1)

Definition at line 394 of file st.c.

◆ RESERVED_HASH_SUBSTITUTION_VAL

#define RESERVED_HASH_SUBSTITUTION_VAL   ((st_hash_t) 0)

Definition at line 314 of file st.c.

◆ RESERVED_HASH_VAL

#define RESERVED_HASH_VAL   (~(st_hash_t) 0)

Definition at line 313 of file st.c.

◆ ROTL

#define ROTL (   x,
 
)    ((x)<<(n)|(x)>>(SIZEOF_ST_INDEX_T*CHAR_BIT-(n)))

Definition at line 1678 of file st.c.

◆ SKIP_TAIL

#define SKIP_TAIL   1

◆ ST_INIT_VAL

#define ST_INIT_VAL   0xafafafafafafafaf

Definition at line 162 of file st.c.

◆ ST_INIT_VAL_BYTE

#define ST_INIT_VAL_BYTE   0xafa

Definition at line 163 of file st.c.

◆ type_numhash

#define type_numhash   st_hashtype_num

Definition at line 139 of file st.c.

◆ UNALIGNED_ADD [1/3]

#define UNALIGNED_ADD (   n)
Value:
case SIZEOF_ST_INDEX_T - (n) - 1: \
t |= data_at(n) << CHAR_BIT*(n)
#define CHAR_BIT
Definition: limits.h:44
#define data_at(n)
#define SIZEOF_ST_INDEX_T
Definition: st.h:59
#define t
Definition: symbol.c:253

◆ UNALIGNED_ADD [2/3]

#define UNALIGNED_ADD (   n)
Value:
case (n) + 1: \
d |= data_at(n) << CHAR_BIT*(n)

◆ UNALIGNED_ADD [3/3]

#define UNALIGNED_ADD (   n)
Value:
case (n) + 1: \
t |= data_at(n) << CHAR_BIT*(n)

◆ UNALIGNED_ADD_4

#define UNALIGNED_ADD_4   UNALIGNED_ADD(2); UNALIGNED_ADD(1); UNALIGNED_ADD(0)

◆ UNALIGNED_ADD_ALL

#define UNALIGNED_ADD_ALL   UNALIGNED_ADD_4

◆ UNDEFINED_BIN_IND

#define UNDEFINED_BIN_IND   (~(st_index_t) 0)

Definition at line 390 of file st.c.

◆ UNDEFINED_ENTRY_IND

#define UNDEFINED_ENTRY_IND   (~(st_index_t) 0)

Definition at line 389 of file st.c.

Typedef Documentation

◆ st_hash_t

Definition at line 131 of file st.c.

Function Documentation

◆ NO_SANITIZE() [1/5]

NO_SANITIZE ( "unsigned-integer-overflow"  ,
extern st_index_t   st_hashconst void *ptr, size_t len, st_index_t h 
)

◆ NO_SANITIZE() [2/5]

NO_SANITIZE ( "unsigned-integer-overflow"  ,
extern st_index_t   st_hash_uintst_index_t h, st_index_t i 
)

◆ NO_SANITIZE() [3/5]

NO_SANITIZE ( "unsigned-integer-overflow"  ,
static inline st_index_t   murmur_finishst_index_t h 
)

◆ NO_SANITIZE() [4/5]

NO_SANITIZE ( "unsigned-integer-overflow"  ,
static inline st_index_t   murmur_stepst_index_t h, st_index_t k 
)

◆ NO_SANITIZE() [5/5]

NO_SANITIZE ( "unsigned-integer-overflow"  ,
static st_index_t   strcasehashst_data_t 
)

◆ rb_hash_bulk_insert_into_st_table()

void rb_hash_bulk_insert_into_st_table ( long  argc,
const VALUE argv,
VALUE  hash 
)

Definition at line 2224 of file st.c.

References argc, argv, MAX_POWER2_FOR_TABLES_WITHOUT_BINS, RHASH_TBL_RAW, and UNLIKELY.

Referenced by rb_hash_bulk_insert().

◆ rb_st_hash_start()

st_index_t rb_st_hash_start ( st_index_t  h)

Definition at line 1917 of file st.c.

◆ rb_st_nth_key()

st_data_t rb_st_nth_key ( st_table tab,
st_index_t  index 
)

Definition at line 2244 of file st.c.

References LIKELY, and rb_bug().

◆ st_add_direct()

void st_add_direct ( st_table tab,
st_data_t  key,
st_data_t  value 
)

Definition at line 1145 of file st.c.

References key.

◆ st_cleanup_safe()

void st_cleanup_safe ( st_table *tab  ATTRIBUTE_UNUSED,
st_data_t never  ATTRIBUTE_UNUSED 
)

Definition at line 1365 of file st.c.

◆ st_clear()

void st_clear ( st_table tab)

Definition at line 628 of file st.c.

◆ st_copy()

st_table * st_copy ( st_table old_tab)

Definition at line 1204 of file st.c.

References st_table::bins, st_table::entries, free, malloc, MEMCPY, NULL, and st_free_table.

◆ st_delete()

int st_delete ( st_table tab,
st_data_t key,
st_data_t value 
)

Definition at line 1295 of file st.c.

References key.

◆ st_delete_safe()

int st_delete_safe ( st_table tab,
st_data_t key,
st_data_t value,
st_data_t never  ATTRIBUTE_UNUSED 
)

Definition at line 1306 of file st.c.

References key.

◆ st_foreach()

int st_foreach ( st_table tab,
st_foreach_callback_func func,
st_data_t  arg 
)

Definition at line 1566 of file st.c.

References functor::arg, f, FALSE, and functor::func.

◆ st_foreach_check()

int st_foreach_check ( st_table tab,
st_foreach_check_callback_func func,
st_data_t  arg,
st_data_t never  ATTRIBUTE_UNUSED 
)

Definition at line 1574 of file st.c.

References functor::arg, functor::func, and TRUE.

◆ st_foreach_with_replace()

int st_foreach_with_replace ( st_table tab,
st_foreach_check_callback_func func,
st_update_callback_func replace,
st_data_t  arg 
)

Definition at line 1548 of file st.c.

References TRUE.

◆ st_free_table()

void st_free_table ( st_table tab)

Definition at line 636 of file st.c.

References free, and NULL.

◆ st_get_key()

int st_get_key ( st_table tab,
st_data_t  key,
st_data_t result 
)

Definition at line 1036 of file st.c.

References ENTRY_BASE, EXPECT, key, NULL, REBUILT_TABLE_ENTRY_IND, and UNDEFINED_ENTRY_IND.

◆ st_hash()

st_index_t st_hash ( const void *  ptr,
size_t  len,
st_index_t  h 
)

Definition at line 1744 of file st.c.

References aligned_data, C2, CHAR_BIT, data_at, int(), len, ptr, ROTL, SIZEOF_ST_INDEX_T, t, and UNALIGNED_ADD_ALL.

◆ st_hash_end()

st_index_t st_hash_end ( st_index_t  h)

Definition at line 1909 of file st.c.

◆ st_hash_uint()

st_index_t st_hash_uint ( st_index_t  h,
st_index_t  i 
)

Definition at line 1896 of file st.c.

◆ st_hash_uint32()

st_index_t st_hash_uint32 ( st_index_t  h,
uint32_t  i 
)

Definition at line 1889 of file st.c.

◆ st_init_numtable()

st_table * st_init_numtable ( void  )

Definition at line 583 of file st.c.

References st_init_table, and type_numhash.

◆ st_init_numtable_with_size()

st_table * st_init_numtable_with_size ( st_index_t  size)

Definition at line 590 of file st.c.

References st_init_table_with_size, and type_numhash.

◆ st_init_strcasetable()

st_table * st_init_strcasetable ( void  )

Definition at line 613 of file st.c.

References st_init_table.

◆ st_init_strcasetable_with_size()

st_table * st_init_strcasetable_with_size ( st_index_t  size)

Definition at line 621 of file st.c.

References st_init_table_with_size.

◆ st_init_strtable()

st_table * st_init_strtable ( void  )

Definition at line 598 of file st.c.

References st_init_table.

◆ st_init_strtable_with_size()

st_table * st_init_strtable_with_size ( st_index_t  size)

Definition at line 605 of file st.c.

References st_init_table_with_size.

◆ st_init_table()

st_table * st_init_table ( const struct st_hash_type type)

Definition at line 575 of file st.c.

References st_init_table_with_size.

◆ st_init_table_with_size()

st_table * st_init_table_with_size ( const struct st_hash_type type,
st_index_t  size 
)

◆ st_insert()

int st_insert ( st_table tab,
st_data_t  key,
st_data_t  value 
)

◆ st_insert2()

int st_insert2 ( st_table tab,
st_data_t  key,
st_data_t  value,
st_data_t(*)(st_data_t func 
)

◆ st_keys()

st_index_t st_keys ( st_table tab,
st_data_t keys,
st_index_t  size 
)

Definition at line 1605 of file st.c.

◆ st_keys_check()

st_index_t st_keys_check ( st_table tab,
st_data_t keys,
st_index_t  size,
st_data_t never  ATTRIBUTE_UNUSED 
)

Definition at line 1612 of file st.c.

◆ st_locale_insensitive_strcasecmp()

int st_locale_insensitive_strcasecmp ( const char *  s1,
const char *  s2 
)

Definition at line 1930 of file st.c.

◆ st_locale_insensitive_strncasecmp()

int st_locale_insensitive_strncasecmp ( const char *  s1,
const char *  s2,
size_t  n 
)

Definition at line 1954 of file st.c.

◆ st_lookup()

int st_lookup ( st_table tab,
st_data_t  key,
st_data_t value 
)

Definition at line 1007 of file st.c.

References ENTRY_BASE, EXPECT, key, NULL, REBUILT_TABLE_ENTRY_IND, and UNDEFINED_ENTRY_IND.

◆ st_memsize()

size_t st_memsize ( const st_table tab)

Definition at line 646 of file st.c.

References NULL.

◆ st_numcmp()

int st_numcmp ( st_data_t  x,
st_data_t  y 
)

Definition at line 2017 of file st.c.

◆ st_numhash()

st_index_t st_numhash ( st_data_t  n)

Definition at line 2023 of file st.c.

◆ st_shift()

int st_shift ( st_table tab,
st_data_t key,
st_data_t value 
)

◆ st_update()

int st_update ( st_table tab,
st_data_t  key,
st_update_callback_func func,
st_data_t  arg 
)

◆ st_values()

st_index_t st_values ( st_table tab,
st_data_t values,
st_index_t  size 
)

Definition at line 1642 of file st.c.

◆ st_values_check()

st_index_t st_values_check ( st_table tab,
st_data_t values,
st_index_t  size,
st_data_t never  ATTRIBUTE_UNUSED 
)

Definition at line 1649 of file st.c.