Initial commit for version 2.0.x patch release
[OpenFOAM-2.0.x.git] / src / OpenFOAM / db / dynamicLibrary / dynamicCode / dynamicCodeContext.H
blob2aa4403137b792f86be0dcd780a098ff68e29855
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2011-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::dynamicCodeContext
27 Description
28     Encapsulation of dynamic code dictionaries
30 SourceFiles
31     dynamicCodeContext.C
33 \*---------------------------------------------------------------------------*/
35 #ifndef dynamicCodeContext_H
36 #define dynamicCodeContext_H
38 #include "dictionary.H"
39 #include "SHA1Digest.H"
41 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
43 namespace Foam
46 /*---------------------------------------------------------------------------*\
47                      Class dynamicCodeContext Declaration
48 \*---------------------------------------------------------------------------*/
50 class dynamicCodeContext
52     // Private data
54         //- The parent dictionary context
55         const dictionary& dict_;
57         //- Mandatory "code" entry
58         string code_;
60         //- Optional "localCode" entry
61         string localCode_;
63         //- Optional "codeInclude" entry
64         string include_;
66         //- Optional "codeOptions" entry
67         string options_;
69         //- Optional "codeLib" entry
70         string libs_;
72         //- Calculated SHA1Digest
73         SHA1Digest sha1_;
75 public:
77     // Constructors
79         //- Construct from a dictionary
80         dynamicCodeContext(const dictionary&);
82     // Member functions
84         //- Return the parent dictionary context
85         const dictionary& dict() const
86         {
87             return dict_;
88         }
90         //- Return the code-includes
91         const string& include() const
92         {
93             return include_;
94         }
96         //- Return the code-options
97         const string& options() const
98         {
99             return options_;
100         }
102         //- Return the code-libs
103         const string& libs() const
104         {
105             return libs_;
106         }
108         //- Return the code
109         const string& code() const
110         {
111             return code_;
112         }
114         //- Return the local (file-scope) code
115         const string& localCode() const
116         {
117             return localCode_;
118         }
120         //- Return SHA1 digest calculated from include, options, code
121         const SHA1Digest& sha1() const
122         {
123             return sha1_;
124         }
126         //- Helper: add #line directive
127         static void addLineDirective
128         (
129             string&,
130             const label lineNum,
131             const fileName& name
132         );
137 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
139 } // End namespace Foam
141 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
143 #endif
145 // ************************************************************************* //