Main Page | Class Hierarchy | Class List | Directories | 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.