diff options
Diffstat (limited to 'src/name_table.h')
| -rw-r--r-- | src/name_table.h | 36 |
1 files changed, 25 insertions, 11 deletions
diff --git a/src/name_table.h b/src/name_table.h index 4bc1361..70d71cc 100644 --- a/src/name_table.h +++ b/src/name_table.h @@ -3,7 +3,7 @@ #include "mytype.h" #include "id_table.h" - +#include "inpla.h" /************************************** NAME TABLE @@ -15,13 +15,9 @@ typedef struct NameList { - char *name; // KEY - IDTYPE id; + char *name; // KEY + int id; // -1: no entry - // `heap' stores a heap only of a global name, - // that is, is kept having NULL for other nodes, such as agents. - VALUE heap; - struct NameList *next; } NameList; @@ -35,12 +31,16 @@ void NameTable_init(); void NameTable_set_heap_id(char *key, VALUE heap, IDTYPE id); -// Erace key entry from NameHashTable -void NameTable_erase(char *key); +// Set id at key entry to -1 +void NameTable_erase_id(char *key); + + +int NameTable_get_id(char *key); +void NameTable_set_id(char *key, IDTYPE id); -VALUE NameTable_get_heap(char *key); -IDTYPE NameTable_get_set_id(char *key); +IDTYPE NameTable_get_set_id_with_IdTable_forAgent(char *key); + void NameTable_puts_all(); void NameTable_free_all(); @@ -52,4 +52,18 @@ int keynode_exists_in_another_term(VALUE keynode, VALUE *connected_from); void global_replace_keynode_in_another_term(VALUE keynode, VALUE term); +#ifndef THREAD +// Mark and Sweep for error recovery + +/* 30bit目が 1 ならば、Garbage Collection の Mark&Sweep にて、 + Mark されたことを意味する*/ +#define FLAG_MARKED 0x01 << 30 +#define IS_FLAG_MARKED(a) ((a) & FLAG_MARKED) +#define SET_FLAG_MARKED(a) ((a) = ((a) | FLAG_MARKED)) +#define TOGGLE_FLAG_MARKED(a) ((a) = ((a) ^ FLAG_MARKED)) + +void mark_allHash(void); +#endif + + #endif |
