Forward compatibility: flex
[foam-extend-3.2.git] / src / mesh / cfMesh / utilities / anisotropicMeshing / coordinateModification / coordinateModification.H
blobb3702ba0f9126752d4461e5f17d7eddef810e5e3
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | cfMesh: A library for mesh generation
4    \\    /   O peration     |
5     \\  /    A nd           | Author: Franjo Juretic (franjo.juretic@c-fields.com)
6      \\/     M anipulation  | Copyright (C) Creative Fields, Ltd.
7 -------------------------------------------------------------------------------
8 License
9     This file is part of cfMesh.
11     cfMesh 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     cfMesh 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 cfMesh.  If not, see <http://www.gnu.org/licenses/>.
24 Class
25     coordinateModification
27 Description
28     Base class for modifiers of point coordinates.
30 SourceFiles
31     coordinateModification.C
33 \*---------------------------------------------------------------------------*/
35 #ifndef coordinateModification_H
36 #define coordinateModification_H
38 #include "word.H"
39 #include "point.H"
40 #include "dictionary.H"
41 #include "PtrList.H"
43 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
45 namespace Foam
48 // Forward declarations
49 class boundBox;
50 class plane;
52 /*---------------------------------------------------------------------------*\
53                    Class coordinateModification Declaration
54 \*---------------------------------------------------------------------------*/
56 class coordinateModification
58     // Private data
60         //- Modification name
61         word name_;
63 public:
65     // Runtime type information
66         TypeName("coordinateModification");
69     // Constructors
71         //- Null construct
72         coordinateModification();
74         //- Construct from dictionary
75         coordinateModification(const word& name, const dictionary&);
77     // Declare run-time constructor selection table
79         declareRunTimeSelectionTable
80         (
81             autoPtr,
82             coordinateModification,
83             dictionary,
84             (
85                 const word& name,
86                 const dictionary& dict
87             ),
88             (name, dict)
89         );
92     // Selectors
94         //- Select constructed from dictionary
95         static autoPtr<coordinateModification> New
96         (
97             const word& name,
98             const dictionary& dict
99         );
101     // Destructor
103         virtual ~coordinateModification();
106     // Member Functions
108         //- return the origin point of the modification object
109         virtual point origin() const = 0;
111         //- translate the object for backward transformation
112         virtual void translateAndModifyObject(const vector&) = 0;
114         //- calculate the displacement vector for this modification
115         virtual vector displacement(const point&) const = 0;
117         //- calculate the displacement vector for the backward modification
118         virtual vector backwardDisplacement(const point&) const = 0;
120         //- can this modification object be combined with other ones
121         virtual bool combiningPossible() const = 0;
123         //- return that "bounding planes" of the scaling region for
124         //- the given object
125         virtual void boundingPlanes(PtrList<plane>&) const = 0;
128       // Access
130         //- Return name
131         const word& name() const
132         {
133             return name_;
134         }
136         //- set the name
137         void setName(const word& name)
138         {
139             name_ = name;
140         }
142         //- Return as dictionary of entries
143         virtual dictionary dict(bool ignoreType = false) const = 0;
145       // Write
147         //- Write
148         virtual void write(Ostream&) const = 0;
150         //- Write dictionary
151         virtual void writeDict(Ostream&, bool subDict = true) const = 0;
153     // Member Operators
155         //- assign from dictionary
156         virtual void operator=(const dictionary&) = 0;
158     // IOstream Operators
160         friend Ostream& operator<<(Ostream&, const coordinateModification&);
164 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
166 } // End namespace Foam
168 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
170 #endif
172 // ************************************************************************* //