Forward compatibility: flex
[foam-extend-3.2.git] / src / foam / global / controlSwitches / infoSwitch.H
blob5ae398d938737a08d8d318180378985da86c408b
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::infoSwitch
27 Author
28     Martin Beaudoin, Hydro-Quebec, 2014.  All rights reserved
30 Description
31     Handling of runtime controlSwitches.
32     Specialization of controlSwitches class for info switches
34 \*---------------------------------------------------------------------------*/
36 #ifndef infoSwitch_H
37 #define infoSwitch_H
39 #include "controlSwitches.H"
41 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
43 namespace Foam
46 namespace debug
48 // Typedefs
49 // Hashtable to static class attributes addresses holding the
50 // runtime info switch values
51 typedef std::map<std::string, std::list<controlSwitches<int> *> >
52 ListInfoControlSwitches;
54 extern ListInfoControlSwitches* infoSwitchValues_;
56 class infoSwitch
58     public controlSwitches<int>
60     // Private member functions
62         //- Disallow construct as copy
63         infoSwitch(const infoSwitch&);
65         //- Disallow default bitwise assignment
66         void operator=(const infoSwitch&);
69 public:
71     // Constructors
73         //- Construct from name and value
74         infoSwitch
75         (
76             const std::string& switchName,
77             const int& switchValue,
78             const std::string& switchDescription = ""
79         )
80         :
81             controlSwitches<int>
82             (
83                 switchName,
84                 debug::infoSwitchFromDict(switchName.c_str(), switchValue),
85                 switchDescription,
86                 debug::INFO_SWITCHES,
87                 &infoSwitchValues_
88             )
89         {}
92     //- Destructor
93     virtual ~infoSwitch()
94     {}
97     // Member operators
99         //- Assignement operator
100         void operator=(const int& rhs)
101         {
102             controlSwitches<int>::operator=(rhs);
103         }
106 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
108 } // End namespace debug
111 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
113 } // End namespace Foam
115 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
117 #endif
119 // ************************************************************************* //