Main Page | Class Hierarchy | Class List | File List | Class Members

Dict.h

00001 /**************************************************************************\ 00002 * 00003 * FILE: Dict.h 00004 * 00005 * This source file is part of DIME. 00006 * Copyright (C) 1998-1999 by Systems In Motion. All rights reserved. 00007 * 00008 * This library is free software; you can redistribute it and/or modify it 00009 * under the terms of the GNU General Public License, version 2, as 00010 * published by the Free Software Foundation. 00011 * 00012 * This library is distributed in the hope that it will be useful, but 00013 * WITHOUT ANY WARRANTY; without even the implied warranty of 00014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00015 * General Public License (the accompanying file named COPYING) for more 00016 * details. 00017 * 00018 ************************************************************************** 00019 * 00020 * If you need DIME for a non-GPL project, contact Systems In Motion 00021 * to acquire a Professional Edition License: 00022 * 00023 * Systems In Motion http://www.sim.no/ 00024 * Prof. Brochs gate 6 sales@sim.no 00025 * N-7030 Trondheim Voice: +47 22114160 00026 * NORWAY Fax: +47 67172912 00027 * 00028 \**************************************************************************/ 00029 00030 #ifndef DIME_DICT_H 00031 #define DIME_DICT_H 00032 00033 #include <dime/Basic.h> 00034 #include <string.h> 00035 00036 class DIME_DLL_API dimeDictEntry 00037 { 00038 friend class dimeDict; 00039 00040 private: 00041 dimeDictEntry *next; 00042 dimeDictEntry(const char * const k, void *v) {key = strdup(k); value = v; }; 00043 ~dimeDictEntry() {free(key);} 00044 char *key; 00045 void *value; 00046 00047 }; // class dimeDictEntry 00048 00049 class DIME_DLL_API dimeDict 00050 { 00051 public: 00052 dimeDict(const int entries = 17989); 00053 ~dimeDict(); 00054 void clear(); 00055 00056 bool enter(const char * const key, char *&ptr, void *value); 00057 const char *enter(const char * const key, void *value); 00058 const char *find(const char * const key) const; 00059 bool find(const char * const key, void *&value) const; 00060 bool remove(const char * const key); 00061 void dump(void); 00062 00063 private: 00064 int tableSize; 00065 dimeDictEntry **buckets; 00066 dimeDictEntry *&findEntry(const char * const key) const; 00067 unsigned int bucketNr(const char *key) const; 00068 00069 public: 00070 void print_info(); 00071 00072 }; // class dimeDict 00073 00074 #endif // ! DIME_DICT_H 00075

Copyright © 1998-1999, Systems In Motion <sales@sim.no>. All rights reserved.
System documentation was generated using doxygen.