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_ */