Forward compatibility: flex
[foam-extend-3.2.git] / src / thermophysicalModels / reactionThermo / chemistryReaders / chemistryReader / chemistryReader.H
blobd173ed70bffc45f746195578aa87a2f76ebbd241
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | foam-extend: Open Source CFD
4    \\    /   O peration     | Version:     3.2
5     \\  /    A nd           | Web:         http://www.foam-extend.org
6      \\/     M anipulation  | For copyright notice see file Copyright
7 -------------------------------------------------------------------------------
8 License
9     This file is part of foam-extend.
11     foam-extend is free software: you can redistribute it and/or modify it
12     under the terms of the GNU General Public License as published by the
13     Free Software Foundation, either version 3 of the License, or (at your
14     option) any later version.
16     foam-extend is distributed in the hope that it will be useful, but
17     WITHOUT ANY WARRANTY; without even the implied warranty of
18     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
19     General Public License for more details.
21     You should have received a copy of the GNU General Public License
22     along with foam-extend.  If not, see <http://www.gnu.org/licenses/>.
24 Class
25     Foam::chemistryReader
27 Description
28     Abstract class for reading chemistry
30 SourceFiles
31     chemistryReader.C
33 \*---------------------------------------------------------------------------*/
35 #ifndef chemistryReader_H
36 #define chemistryReader_H
38 #include "typeInfo.H"
39 #include "runTimeSelectionTables.H"
40 #include "Reaction.H"
42 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
44 namespace Foam
47 /*---------------------------------------------------------------------------*\
48                       Class chemistryReader Declaration
49 \*---------------------------------------------------------------------------*/
51 template<class ThermoType>
52 class chemistryReader
54     // Private Member Functions
56         //- Disallow default bitwise copy construct
57         chemistryReader(const chemistryReader&);
59         //- Disallow default bitwise assignment
60         void operator=(const chemistryReader&);
63 public:
65     //- Runtime type information
66     TypeName("chemistryReader");
68     //- The type of thermo package the reader was instantiated for
69     typedef ThermoType thermoType;
72     // Constructors
74         //- Construct null
75         chemistryReader()
76         {}
79     // Declare run-time constructor selection table
81         declareRunTimeSelectionTable
82         (
83             autoPtr,
84             chemistryReader,
85             dictionary,
86             (
87                 const dictionary& thermoDict
88             ),
89             (thermoDict)
90         );
93     // Selectors
95         //- Select constructed from dictionary
96         static autoPtr<chemistryReader> New(const dictionary& thermoDict);
99     //- Destructor
100     virtual ~chemistryReader()
101     {}
104     // Member Functions
106         virtual const speciesTable& species() const = 0;
108         // Bug fix: cannot be named speciesThermo because of name clash
109         // with the speciesThermo class.  HJ, 21/Sep/2010
110         virtual const HashPtrTable<ThermoType>& sThermo() const = 0;
112         virtual const SLPtrList<Reaction<ThermoType> >& reactions() const = 0;
116 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
118 } // End namespace Foam
120 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
122 #define makeChemistryReader(Thermo)                                           \
123                                                                               \
124 defineTemplateTypeNameAndDebug                                                \
125 (                                                                             \
126     chemistryReader<Thermo>,                                                  \
127     0                                                                         \
128 );                                                                            \
129                                                                               \
130 defineTemplateRunTimeSelectionTable(chemistryReader<Thermo>, dictionary);
133 #define makeChemistryReaderType(SS, Thermo)                                   \
134                                                                               \
135 defineNamedTemplateTypeNameAndDebug(SS<Thermo>, 0);                           \
136                                                                               \
137 chemistryReader<Thermo>::adddictionaryConstructorToTable<SS<Thermo> >         \
138     add##SS##Thermo##ConstructorToTable_;
141 #define addChemistryReaderType(SS, Thermo)                                    \
142                                                                               \
143 defineTypeNameAndDebug(SS, 0);                                                \
144                                                                               \
145 chemistryReader<Thermo>::adddictionaryConstructorToTable<SS>                  \
146     add##SS##Thermo##ConstructorToTable_;
149 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
151 #ifdef NoRepository
152 #   include "chemistryReader.C"
153 #endif
155 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
157 #endif
159 // ************************************************************************* //