Initial commit for version 2.0.x patch release
[OpenFOAM-2.0.x.git] / src / OpenFOAM / primitives / strings / lists / hashedWordList.H
blob4c5c1c43fdb92e085c171bee5cf821c4fe979cb7
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2010-2011 OpenCFD Ltd.
6      \\/     M anipulation  |
7 -------------------------------------------------------------------------------
8 License
9     This file is part of OpenFOAM.
11     OpenFOAM is free software: you can redistribute it and/or modify it
12     under the terms of the GNU General Public License as published by
13     the Free Software Foundation, either version 3 of the License, or
14     (at your option) any later version.
16     OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18     FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
19     for more details.
21     You should have received a copy of the GNU General Public License
22     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
24 Class
25     Foam::hashedWordList
27 Description
28     A wordList with hashed indices for faster lookup by name.
30 SourceFiles
31     hashedWordListI.H
32     hashedWordList.C
34 \*---------------------------------------------------------------------------*/
36 #ifndef hashedWordList_H
37 #define hashedWordList_H
39 #include "wordList.H"
40 #include "HashTable.H"
42 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
44 namespace Foam
47 class hashedWordList;
49 // Forward declaration of friend functions and operators
50 Istream& operator>>(Istream&, hashedWordList&);
51 Ostream& operator<<(Ostream&, const hashedWordList&);
54 /*---------------------------------------------------------------------------*\
55                        Class hashedWordList Declaration
56 \*---------------------------------------------------------------------------*/
58 class hashedWordList
60     public List<word>
62     // Private data
64         HashTable<label, word> indices_;
67     // Private Member Functions
69         //- rebuild the hash of indices
70         void rehash();
72 public:
74     // Constructors
76         //- Construct null
77         hashedWordList();
79         //- Copy constructor.
80         hashedWordList(const hashedWordList&);
82         //- Construct from list of names
83         hashedWordList(const UList<word>& names);
85         //- Construct by transferring the parameter contents
86         hashedWordList(const Xfer< List<word> >& names);
88         //- Construct from number and list of names
89         hashedWordList(const label nNames, const char** names);
91         //- Construct from a NULL-terminated list of names
92         hashedWordList(const char** names);
94         //- Construct from Istream
95         hashedWordList(Istream&);
98     // Member Functions
100         //- Clear the list, i.e. set size to zero.
101         void clear();
103         //- Append an element at the end of the list
104         void append(const word&);
106         //- Does the list contain the specified name
107         inline bool contains(const word&) const;
109         //- Transfer the contents of the argument List into this list
110         //  and annul the argument list.
111         void transfer(List<word>&);
114     // Member Operators
116         //- Assignment operator from list of names
117         inline void operator=(const UList<word>& names);
119         //- Assignment operator.
120         inline void operator=(const hashedWordList&);
122         //- Return name corresponding to specified index
123         inline const word& operator[](const label index) const;
125         //- Return index corresponding to specified name
126         inline label operator[](const word&) const;
129     // Istream operators
131         friend Istream& operator>>(Istream&, hashedWordList&);
132         friend Ostream& operator<<(Ostream&, const hashedWordList&);
136 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
138 } // End namespace Foam
140 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
142 #include "hashedWordListI.H"
144 #endif
146 // ************************************************************************* //