strhash.h - enscript - GNU Enscript
 (HTM) git clone git://thinkerwim.org/enscript.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
       strhash.h (2628B)
       ---
            1 /*
            2  * String hash table.
            3  * Copyright (c) 1995, 1996, 1997 Markku Rossi.
            4  *
            5  * Author: Markku Rossi <mtr@iki.fi>
            6  */
            7 
            8 /*
            9  * Enscript is free software: you can redistribute it and/or modify
           10  * it under the terms of the GNU General Public License as published by
           11  * the Free Software Foundation, either version 3 of the License, or
           12  * (at your option) any later version.
           13  *
           14  * Enscript is distributed in the hope that it will be useful,
           15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
           16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
           17  * GNU General Public License for more details.
           18  *
           19  * You should have received a copy of the GNU General Public License
           20  * along with Enscript.  If not, see <http://www.gnu.org/licenses/>.
           21  */
           22 
           23 #ifndef STRHASH_H
           24 #define STRHASH_H
           25 
           26 #ifndef ___P
           27 #if PROTOTYPES
           28 #define ___P(protos) protos
           29 #else /* no PROTOTYPES */
           30 #define ___P(protos) ()
           31 #endif /* no PROTOTYPES */
           32 #endif
           33 
           34 typedef struct stringhash_st *StringHashPtr;
           35 
           36 /*
           37  * Init a hash and return a hash handle or NULL if there were errors.
           38  */
           39 StringHashPtr strhash_init ___P ((void));
           40 
           41 /*
           42  * Free hash <hash>. Frees all resources that hash has allocated. <hash>
           43  * shouldn't be used after this function is called.
           44  */
           45 void strhash_free ___P ((StringHashPtr hash));
           46 
           47 /*
           48  * Put key <key> to hash <hash>. <data> will be bind to <key>. Returns
           49  * true (1) if operation was successful or false (0) otherwise. If <key>
           50  * is already bind to another data, then <old_data> will be set to old
           51  * data. Otherwise it will be set to NULL.
           52  */
           53 int strhash_put ___P ((StringHashPtr hash, char *key, int keylen, void *data,
           54                        void **old_data_return));
           55 
           56 /*
           57  * Get data associated to key <key>. Data is returned in <*data>.
           58  * Returns true (1) is key was found or false (0) otherwise.
           59  */
           60 int strhash_get ___P ((StringHashPtr hash, const char *key, int keylen,
           61                        void **data_return));
           62 
           63 /*
           64  * Deletes key <key> form <hash>. Data is returned in <*data>. Returns
           65  * true (1) if <key> was found or false (0) if <key> was not found or
           66  * errors were encountered.
           67  */
           68 int strhash_delete ___P ((StringHashPtr hash, const char *key, int keylen,
           69                           void **data_return));
           70 
           71 /*
           72  * Get first item from hash <hash>.  Returns 1 if there were items
           73  * or 0 otherwise.
           74  */
           75 int strhash_get_first ___P ((StringHashPtr hash, char **key_return,
           76                              int *keylen_return, void **data_return));
           77 
           78 /*
           79  * Get next item from hash <hash>.  Returns 1 if there were items
           80  * or 0 otherwise.
           81  */
           82 int strhash_get_next ___P ((StringHashPtr hash, char **key_return,
           83                             int *keylen_return, void **data_return));
           84 
           85 #endif /* not STRHASH_H */