Ruby 4.1.0dev (2026-08-15 revision 3349f4107d268658fdf8cc6b979fbb1c923e597f)
set_table.h
1#ifndef INTERNAL_SET_TABLE_H
2#define INTERNAL_SET_TABLE_H
3
4#include "ruby/st.h"
5
6struct set_table_entry;
7
8typedef struct set_table_entry set_table_entry;
9
10struct set_table {
11 /* Cached features of the table -- see st.c for more details. */
12 unsigned char entry_power, bin_power, size_ind;
13 /* How many times the table was rebuilt. */
14 unsigned char rebuilds_num;
15
16 /* Start index of entries in array entries. */
17 unsigned int entries_start;
18 const struct st_hash_type *type;
19 /* Number of entries currently in the table. */
20 st_index_t num_entries;
21
22 /* bound index of entries in array entries.
23 entries_starts and entries_bound are in interval
24 [0,allocated_entries]. */
25 st_index_t entries_bound;
26
31 set_table_entry *entries;
32};
33
34typedef struct set_table set_table;
35
36typedef int set_foreach_callback_func(st_data_t, st_data_t);
37typedef int set_foreach_check_callback_func(st_data_t, st_data_t, int);
38typedef int set_update_callback_func(st_data_t *key, st_data_t arg, int existing);
39
40#define set_table_size rb_set_table_size
41size_t rb_set_table_size(const struct set_table *tbl);
42#define set_init_table_with_size rb_set_init_table_with_size
43set_table *rb_set_init_table_with_size(set_table *tab, const struct st_hash_type *, st_index_t);
44#define set_init_numtable rb_set_init_numtable
45set_table *rb_set_init_numtable(void);
46#define set_init_numtable_with_size rb_set_init_numtable_with_size
47set_table *rb_set_init_numtable_with_size(st_index_t size);
48#define set_init_embedded_numtable_with_size rb_set_init_embedded_numtable_with_size
49set_table *rb_set_init_embedded_numtable_with_size(struct set_table *tbl, st_index_t size);
50#define set_table_delete rb_set_table_delete
51int rb_set_table_delete(set_table *, st_data_t *); /* returns 0:notfound 1:deleted */
52#define set_insert rb_set_insert
53int rb_set_insert(set_table *, st_data_t);
54#define set_table_lookup rb_set_table_lookup
55int rb_set_table_lookup(set_table *, st_data_t);
56#define set_foreach_with_replace rb_set_foreach_with_replace
57int rb_set_foreach_with_replace(set_table *tab, set_foreach_check_callback_func *func, set_update_callback_func *replace, st_data_t arg);
58#define set_table_foreach rb_set_table_foreach
59int rb_set_table_foreach(set_table *, set_foreach_callback_func *, st_data_t);
60#define set_foreach_check rb_set_foreach_check
61int rb_set_foreach_check(set_table *, set_foreach_check_callback_func *, st_data_t, st_data_t);
62#define set_keys rb_set_keys
63st_index_t rb_set_keys(set_table *table, st_data_t *keys, st_index_t size);
64#define set_free_table rb_set_free_table
65void rb_set_free_table(set_table *);
66#define set_free_embedded_table rb_set_free_embedded_table
67void set_free_embedded_table(set_table *tab);
68#define set_table_clear rb_set_table_clear
69void rb_set_table_clear(set_table *);
70#define set_copy rb_set_copy
71set_table *rb_set_copy(set_table *new_table, set_table *old_table);
72#define set_memsize rb_set_memsize
73PUREFUNC(size_t rb_set_memsize(const set_table *));
74#define set_compact_table rb_set_compact_table
75void set_compact_table(set_table *tab);
76
77#endif
set_table_entry * entries
Array of size 2^entry_power.
Definition set_table.h:31