15#ifndef HASHED_STRING_H
16#define HASHED_STRING_H
19#include<tqdatastream.h>
22#include <ext/hash_map>
28 HashedString() : m_hash( 0 ) {}
30 HashedString(
const TQString& str ) : m_str( str ) {
34 HashedString(
const char* str ) : m_str( str ) {
38 inline size_t hash()
const {
42 TQString str()
const {
46 bool operator == (
const HashedString& rhs )
const {
47 if ( m_hash != rhs.m_hash )
49 return m_str == rhs.m_str;
54 if ( m_hash < rhs.m_hash )
56 if ( m_hash == rhs.m_hash )
57 return m_str < rhs.m_str;
61 static size_t hashString(
const TQString& str );
69 friend TQDataStream& operator << ( TQDataStream& stream,
const HashedString& str );
70 friend TQDataStream& operator >> ( TQDataStream& stream,
HashedString& str );
73TQDataStream& operator << ( TQDataStream& stream,
const HashedString& str );
75TQDataStream& operator >> ( TQDataStream& stream,
HashedString& str );
77class HashedStringSetData;
81class HashedStringSet {
90 HashedStringSet(
const HashedStringSet& rhs );
94 HashedStringSet& operator = (
const HashedStringSet& rhs );
100 HashedStringSet& operator +=(
const HashedStringSet& );
102 HashedStringSet& operator -=(
const HashedStringSet& );
106 bool operator <= (
const HashedStringSet& rhs )
const;
108 bool operator == (
const HashedStringSet& rhs )
const;
110 void read( TQDataStream& stream );
111 void write( TQDataStream& stream )
const;
113 std::string print()
const;
117 friend class HashedStringSetGroup;
118 void makeDataPrivate();
119 TDESharedPtr<HashedStringSetData> m_data;
120 friend HashedStringSet operator + (
const HashedStringSet& lhs,
const HashedStringSet& rhs );
137 typedef std::set<size_t> ItemSet;
139 void enableSet(
size_t id );
140 bool isDisabled(
size_t id )
const;
141 void disableSet(
size_t id );
142 void removeSet(
size_t id );
148 typedef __gnu_cxx::hash_map<HashedString, ItemSet> GroupMap;
149 typedef __gnu_cxx::hash_map<size_t, size_t> SizeMap;
Used to find all registered HashedStringSet's that contain all strings given to findGroups(....
This is a reference-counting string-set optimized for fast lookup of hashed strings.
bool operator[](const HashedString &rhs) const
bool operator<=(const HashedStringSet &rhs) const
intersection-test Returns true if all files that are part of this set are also part of the given set
A simple class that stores a string together with it's appropriate hash-key.
bool operator<(const HashedString &rhs) const
Does not compare alphabetically, uses the hash-key for ordering.