File indexing completed on 2023-05-30 11:30:51

0001 /**
0002  * Copyright (C) 2003-2004 Scott Wheeler <wheeler@kde.org>
0003  *
0004  * This program is free software; you can redistribute it and/or modify it under
0005  * the terms of the GNU General Public License as published by the Free Software
0006  * Foundation; either version 2 of the License, or (at your option) any later
0007  * version.
0008  *
0009  * This program is distributed in the hope that it will be useful, but WITHOUT ANY
0010  * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
0011  * PARTICULAR PURPOSE. See the GNU General Public License for more details.
0012  *
0013  * You should have received a copy of the GNU General Public License along with
0014  * this program.  If not, see <http://www.gnu.org/licenses/>.
0015  */
0016 
0017 #ifndef STRINGHASH_H
0018 #define STRINGHASH_H
0019 
0020 #include <QSet>
0021 
0022 /**
0023  * A simple hash representing an (un-mapped) set of data.
0024  */
0025 template <class T> class Hash : public QSet<T>
0026 {
0027 public:
0028     /**
0029      * To combine two operations into one (that takes the same amount as each
0030      * independently) this inserts an item and returns true if the item was
0031      * already in the set or false if it did not.
0032      */
0033     inline bool insert(const T &value)
0034     {
0035         if(this->contains(value))
0036             return true;
0037         QSet<T>::insert(value);
0038         return false;
0039     }
0040 };
0041 
0042 typedef Hash<QString> StringHash;
0043 
0044 #endif
0045 
0046 // vim: set et sw=4 tw=0 sta: