From 1d354fd87d4c07906e82d104ba8614d30ae9cbbe Mon Sep 17 00:00:00 2001 From: reinelt Date: Thu, 17 Jun 2004 06:23:43 +0000 Subject: [lcd4linux @ 2004-06-17 06:23:39 by reinelt] hash handling rewritten to solve performance issues git-svn-id: https://ssl.bulix.org/svn/lcd4linux/trunk@473 3ae390bd-cb1e-0410-b409-cd5a39f66f1f --- hash.h | 61 +++++++++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 41 insertions(+), 20 deletions(-) (limited to 'hash.h') diff --git a/hash.h b/hash.h index 6c3870d..a5b8c0a 100644 --- a/hash.h +++ b/hash.h @@ -1,4 +1,4 @@ -/* $Id: hash.h,v 1.13 2004/06/13 01:12:52 reinelt Exp $ +/* $Id: hash.h,v 1.14 2004/06/17 06:23:43 reinelt Exp $ * * hashes (associative arrays) * @@ -23,6 +23,10 @@ * * * $Log: hash.h,v $ + * Revision 1.14 2004/06/17 06:23:43 reinelt + * + * hash handling rewritten to solve performance issues + * * Revision 1.13 2004/06/13 01:12:52 reinelt * * debug widgets changed (thanks to Andy Baxter) @@ -87,40 +91,57 @@ #ifndef _HASH_H_ #define _HASH_H_ - +// struct timeval #include -typedef struct timeval timeval; + typedef struct { - timeval time; - double val; + int size; + char *value; + struct timeval timestamp; } HASH_SLOT; +typedef struct { + char *key; + int val; +} HASH_COLUMN; + typedef struct { char *key; - char *val; - int len; - timeval time; - int root; + int index; + int nSlot; HASH_SLOT *Slot; } HASH_ITEM; typedef struct { - int sorted; - timeval time; - int nItems; - HASH_ITEM *Items; + int sorted; + struct timeval timestamp; + int nItems; + HASH_ITEM *Items; + int nColumns; + HASH_COLUMN *Columns; + char *delimiter; } HASH; -void hash_set (HASH *Hash, char *key, char *val); -void hash_set_delta (HASH *Hash, char *key, char *val); -int hash_age (HASH *Hash, char *key, char **value); -char *hash_get (HASH *Hash, char *key); -double hash_get_delta (HASH *Hash, char *key, int delay); -double hash_get_regex (HASH *Hash, char *key, int delay); -void hash_destroy (HASH *Hash); + +void hash_create (HASH *Hash); + +int hash_age (HASH *Hash, const char *key); + +void hash_set_column (HASH *Hash, int number, const char *column); +void hash_set_delimiter (HASH *Hash, const char *delimiter); + +char *hash_get (HASH *Hash, const char *key, const char *column); +double hash_get_delta (HASH *Hash, const char *key, const char *column, int delay); +double hash_get_regex (HASH *Hash, const char *key, const char *column, int delay); + +void hash_put (HASH *Hash, const char *key, const char *value); +void hash_put_delta (HASH *Hash, const char *key, const char *value); + +void hash_destroy (HASH *Hash); + #endif -- cgit v1.2.3