Ruby 3.5.0dev (2025-07-01 revision d3d249b9048b338535ae033acb3606abf174b2da)
id_table.h (d3d249b9048b338535ae033acb3606abf174b2da)
1#ifndef RUBY_ID_TABLE_H
2#define RUBY_ID_TABLE_H 1
3#include "ruby/internal/config.h"
4#include <stddef.h>
5#include "ruby/ruby.h"
6
7struct rb_id_table;
8
9/* compatible with ST_* */
10enum rb_id_table_iterator_result {
11 ID_TABLE_CONTINUE = ST_CONTINUE,
12 ID_TABLE_STOP = ST_STOP,
13 ID_TABLE_DELETE = ST_DELETE,
14 ID_TABLE_REPLACE = ST_REPLACE,
15 ID_TABLE_ITERATOR_RESULT_END
16};
17
18struct rb_id_table *rb_id_table_create(size_t size);
19struct rb_id_table *rb_id_table_init(struct rb_id_table *tbl, size_t capa);
20
21void rb_id_table_free(struct rb_id_table *tbl);
22void rb_id_table_free_items(struct rb_id_table *tbl);
23void rb_id_table_clear(struct rb_id_table *tbl);
24
25size_t rb_id_table_memsize(const struct rb_id_table *tbl);
26
27int rb_id_table_insert(struct rb_id_table *tbl, ID id, VALUE val);
28int rb_id_table_lookup(struct rb_id_table *tbl, ID id, VALUE *valp);
29int rb_id_table_delete(struct rb_id_table *tbl, ID id);
30
31typedef enum rb_id_table_iterator_result rb_id_table_update_value_callback_func_t(VALUE *val, void *data, int existing);
32typedef enum rb_id_table_iterator_result rb_id_table_foreach_func_t(ID id, VALUE val, void *data);
33typedef enum rb_id_table_iterator_result rb_id_table_foreach_values_func_t(VALUE val, void *data);
34void rb_id_table_foreach(struct rb_id_table *tbl, rb_id_table_foreach_func_t *func, void *data);
35void rb_id_table_foreach_values(struct rb_id_table *tbl, rb_id_table_foreach_values_func_t *func, void *data);
36void rb_id_table_foreach_values_with_replace(struct rb_id_table *tbl, rb_id_table_foreach_values_func_t *func, rb_id_table_update_value_callback_func_t *replace, void *data);
37
38VALUE rb_managed_id_table_new(size_t capa);
39VALUE rb_managed_id_table_dup(VALUE table);
40int rb_managed_id_table_insert(VALUE table, ID id, VALUE val);
41int rb_managed_id_table_lookup(VALUE table, ID id, VALUE *valp);
42size_t rb_managed_id_table_size(VALUE table);
43void rb_managed_id_table_foreach(VALUE table, rb_id_table_foreach_func_t *func, void *data);
44
45RUBY_SYMBOL_EXPORT_BEGIN
46size_t rb_id_table_size(const struct rb_id_table *tbl);
47RUBY_SYMBOL_EXPORT_END
48
49#endif /* RUBY_ID_TABLE_H */
int capa
Designed capacity of the buffer.
Definition io.h:11
uintptr_t ID
Type that represents a Ruby identifier such as a variable name.
Definition value.h:52
uintptr_t VALUE
Type that represents a Ruby object.
Definition value.h:40