Home | History | Annotate | Line # | Download | only in lisp
      1 /*
      2  * Copyright (c) 2002 by The XFree86 Project, Inc.
      3  *
      4  * Permission is hereby granted, free of charge, to any person obtaining a
      5  * copy of this software and associated documentation files (the "Software"),
      6  * to deal in the Software without restriction, including without limitation
      7  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
      8  * and/or sell copies of the Software, and to permit persons to whom the
      9  * Software is furnished to do so, subject to the following conditions:
     10  *
     11  * The above copyright notice and this permission notice shall be included in
     12  * all copies or substantial portions of the Software.
     13  *
     14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
     15  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
     16  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
     17  * THE XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
     18  * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
     19  * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
     20  * SOFTWARE.
     21  *
     22  * Except as contained in this notice, the name of the XFree86 Project shall
     23  * not be used in advertising or otherwise to promote the sale, use or other
     24  * dealings in this Software without prior written authorization from the
     25  * XFree86 Project.
     26  *
     27  * Author: Paulo Csar Pereira de Andrade
     28  */
     29 
     30 /* $XFree86: xc/programs/xedit/lisp/hash.h,v 1.2tsi Exp $ */
     31 
     32 #ifndef Lisp_hash_h
     33 #define Lisp_hash_h
     34 
     35 #include "lisp/private.h"
     36 
     37 typedef struct _LispHashEntry {
     38     LispObj **keys;
     39     LispObj **values;
     40     long cache;
     41     long count;
     42 } LispHashEntry;
     43 
     44 struct _LispHashTable {
     45     LispHashEntry *entries;
     46     long num_entries;
     47     long count;
     48     int function;		/* Function is EQ, EQL, EQUAL, or EQUALP */
     49     double rehash_size;
     50     double rehash_threshold;
     51 };
     52 
     53 /*
     54  * Prototypes
     55  */
     56 void LispFreeHashTable(LispHashTable*);
     57 
     58 LispObj *Lisp_Clrhash(LispBuiltin*);
     59 LispObj *Lisp_Gethash(LispBuiltin*);
     60 LispObj *Lisp_HashTableCount(LispBuiltin*);
     61 LispObj *Lisp_HashTableP(LispBuiltin*);
     62 LispObj *Lisp_HashTableRehashSize(LispBuiltin*);
     63 LispObj *Lisp_HashTableRehashThreshold(LispBuiltin*);
     64 LispObj *Lisp_HashTableSize(LispBuiltin*);
     65 LispObj *Lisp_HashTableTest(LispBuiltin*);
     66 LispObj *Lisp_Maphash(LispBuiltin*);
     67 LispObj *Lisp_MakeHashTable(LispBuiltin*);
     68 LispObj *Lisp_Remhash(LispBuiltin*);
     69 LispObj *Lisp_XeditPuthash(LispBuiltin*);
     70 
     71 #endif /* Lisp_hash_h */
     72