Ruby 2.7.0p0(2019-12-25revision647ee6f091eafcce70ffb75ddf7e121e192ab217)

Data Structures | Macros | Typedefs | Functions
id_table.c File Reference
`#include "id_table.h"`
`#include "ruby_assert.h"`

Go to the source code of this file.

## Data Structures
struct | rb_id_item
struct | rb_id_table

## Macros
#define | ID_TABLE_DEBUG 0
#define | NDEBUG
#define | ITEM_GET_KEY(tbl, i) ((tbl)->items[i].key >> 1)
#define | ITEM_KEY_ISSET(tbl, i) ((tbl)->items[i].key > 1)
#define | ITEM_COLLIDED(tbl, i) ((tbl)->items[i].key & 1)
#define | ITEM_SET_COLLIDED(tbl, i) ((tbl)->items[i].key |= 1)

## Typedefs
typedef rb_id_serial_t | id_key_t
typedef struct rb_id_item | item_t

## Functions
struct rb_id_table * | rb_id_table_create (size_t capa)
void | rb_id_table_free (struct rb_id_table *tbl)
void | rb_id_table_clear (struct rb_id_table *tbl)
size_t | rb_id_table_size (const struct rb_id_table *tbl)
size_t | rb_id_table_memsize (const struct rb_id_table *tbl)
int | rb_id_table_lookup (struct rb_id_table *tbl, ID id, VALUE *valp)
int | rb_id_table_insert (struct rb_id_table *tbl, ID id, VALUE val)
int | rb_id_table_delete (struct rb_id_table *tbl, ID id)
void | rb_id_table_foreach_with_replace (struct rb_id_table *tbl, rb_id_table_foreach_func_t *func, rb_id_table_update_callback_func_t *replace, void *data)
void | rb_id_table_foreach (struct rb_id_table *tbl, rb_id_table_foreach_func_t *func, void *data)
void | rb_id_table_foreach_values (struct rb_id_table *tbl, rb_id_table_foreach_values_func_t *func, void *data)

## Macro Definition Documentation

## ◆ ID_TABLE_DEBUG

#define ID_TABLE_DEBUG 0

Definition at line 6 of file id_table.c.

## ◆ ITEM_COLLIDED

#define ITEM_COLLIDED | ( |  | tbl,
|  |  | i
| ) |  | ((tbl)->items[i].key & 1)

Definition at line 60 of file id_table.c.

## ◆ ITEM_GET_KEY

#define ITEM_GET_KEY | ( |  | tbl,
|  |  | i
| ) |  | ((tbl)->items[i].key >> 1)

Definition at line 58 of file id_table.c.

## ◆ ITEM_KEY_ISSET

#define ITEM_KEY_ISSET | ( |  | tbl,
|  |  | i
| ) |  | ((tbl)->items[i].key > 1)

Definition at line 59 of file id_table.c.

## ◆ ITEM_SET_COLLIDED

#define ITEM_SET_COLLIDED | ( |  | tbl,
|  |  | i
| ) |  | ((tbl)->items[i].key |= 1)

Definition at line 61 of file id_table.c.

## ◆ NDEBUG

#define NDEBUG

Definition at line 10 of file id_table.c.

## Typedef Documentation

## ◆ id_key_t

typedef rb_id_serial_t id_key_t

Definition at line 14 of file id_table.c.

## ◆ item_t

typedef struct rb_id_item item_t

## Function Documentation

## ◆ rb_id_table_clear()

void rb_id_table_clear | ( | struct rb_id_table * | tbl | ) |

Definition at line 109 of file id_table.c.

References rb_id_table::capa, rb_id_table::items, MEMZERO, rb_id_table::num, and rb_id_table::used.

## ◆ rb_id_table_create()

struct rb_id_table* rb_id_table_create | ( | size_t | capa | ) |

Definition at line 95 of file id_table.c.

References ALLOC.

## ◆ rb_id_table_delete()

int rb_id_table_delete | ( | struct rb_id_table * | tbl,
|  | ID | id
| ) |  |

Definition at line 262 of file id_table.c.

References key.

Referenced by rb_const_remove().

## ◆ rb_id_table_foreach()

void rb_id_table_foreach | ( | struct rb_id_table * | tbl,
|  | rb_id_table_foreach_func_t * | func,
|  | void * | data
| ) |  |

Definition at line 292 of file id_table.c.

References rb_id_table::capa, i, ITEM_GET_KEY, ITEM_KEY_ISSET, and key.

Referenced by rb_f_global_variables(), rb_mod_const_at(), rb_obj_singleton_methods(), and rb_undef_methods_from().

## ◆ rb_id_table_foreach_values()

void rb_id_table_foreach_values | ( | struct rb_id_table * | tbl,
|  | rb_id_table_foreach_values_func_t * | func,
|  | void * | data
| ) |  |

Definition at line 311 of file id_table.c.

References rb_id_table::capa, i, ID_TABLE_DELETE, ITEM_KEY_ISSET, rb_id_table::items, and rb_id_item::val.

Referenced by rb_free_const_table().

## ◆ rb_id_table_foreach_with_replace()

void rb_id_table_foreach_with_replace | ( | struct rb_id_table * | tbl,
|  | rb_id_table_foreach_func_t * | func,
|  | rb_id_table_update_callback_func_t * | replace,
|  | void * | data
| ) |  |

Definition at line 270 of file id_table.c.

References assert, rb_id_table::capa, i, ID_TABLE_REPLACE, ID_TABLE_STOP, ITEM_GET_KEY, ITEM_KEY_ISSET, rb_id_table::items, key, NULL, Qundef, TRUE, and rb_id_item::val.

## ◆ rb_id_table_free()

void rb_id_table_free | ( | struct rb_id_table * | tbl | ) |

Definition at line 102 of file id_table.c.

References rb_id_table::items, and xfree.

## ◆ rb_id_table_insert()

int rb_id_table_insert | ( | struct rb_id_table * | tbl,
|  | ID | id,
|  | VALUE | val
| ) |  |

Definition at line 256 of file id_table.c.

## ◆ rb_id_table_lookup()

int rb_id_table_lookup | ( | struct rb_id_table * | tbl,
|  | ID | id,
|  | VALUE * | valp
| ) |  |

Definition at line 226 of file id_table.c.

References key.

Referenced by rb_alias_variable(), rb_const_lookup(), and rb_f_untrace_var().

## ◆ rb_id_table_memsize()

size_t rb_id_table_memsize | ( | const struct rb_id_table * | tbl | ) |

Definition at line 123 of file id_table.c.

References rb_id_table::capa.

## ◆ rb_id_table_size()

size_t rb_id_table_size | ( | const struct rb_id_table * | tbl | ) |

Definition at line 117 of file id_table.c.

References rb_id_table::num.

Referenced by rb_class_has_methods().