Mercurial > hg > xemacs-beta
diff src/elhash.h @ 5118:e0db3c197671 ben-lisp-object
merge up to latest default branch, doesn't compile yet
author | Ben Wing <ben@xemacs.org> |
---|---|
date | Sat, 26 Dec 2009 21:18:49 -0600 |
parents | aa28d959af41 |
children | d1247f3cc363 |
line wrap: on
line diff
--- a/src/elhash.h Sat Dec 26 00:20:27 2009 -0600 +++ b/src/elhash.h Sat Dec 26 21:18:49 2009 -0600 @@ -25,7 +25,7 @@ typedef struct Lisp_Hash_Table Lisp_Hash_Table; -DECLARE_LRECORD (hash_table, Lisp_Hash_Table); +DECLARE_LISP_OBJECT (hash_table, Lisp_Hash_Table); #define XHASH_TABLE(x) XRECORD (x, hash_table, Lisp_Hash_Table) #define wrap_hash_table(p) wrap_record (p, hash_table) @@ -33,6 +33,31 @@ #define CHECK_HASH_TABLE(x) CHECK_RECORD (x, hash_table) #define CONCHECK_HASH_TABLE(x) CONCHECK_RECORD (x, hash_table) +typedef struct htentry +{ +#ifdef NEW_GC + struct lrecord_header lheader; +#endif /* NEW_GC */ + Lisp_Object key; + Lisp_Object value; +} htentry; + +#define HTENTRY_CLEAR_P(htentry) ((*(EMACS_UINT*)(&((htentry)->key))) == 0) + +#ifdef NEW_GC + +typedef struct htentry Lisp_Hash_Table_Entry; + +DECLARE_LISP_OBJECT (hash_table_entry, Lisp_Hash_Table_Entry); + +#define XHASH_TABLE_ENTRY(x) \ + XRECORD (x, hash_table_entry, Lisp_Hash_Table_Entry) +#define wrap_hash_table_entry(p) wrap_record (p, hash_table_entry) +#define HASH_TABLE_ENTRYP(x) RECORDP (x, hash_table_entry) +#define CHECK_HASH_TABLE_ENTRY(x) CHECK_RECORD (x, hash_table_entry) +#define CONCHECK_HASH_TABLE_ENTRY(x) CONCHECK_RECORD (x, hash_table_entry) +#endif /* NEW_GC */ + enum hash_table_weakness { HASH_TABLE_NON_WEAK, @@ -99,4 +124,6 @@ void inchash_eq (Lisp_Object key, Lisp_Object table, EMACS_INT offset); +htentry *find_htentry (Lisp_Object key, const Lisp_Hash_Table *ht); + #endif /* INCLUDED_elhash_h_ */