Files
OpenFOAM-12/src/OpenFOAM/db/IOobjects/GlobalIOField/GlobalIOField.H
Will Bainbridge 50aac13df5 typeGlobal, typeGlobalFile: Changed to trait structure
This allows for partial specialisation, so the different variants of the
global IO containers do not need the function to be overloaded for each
contained type. This also fixes an ommission in providing overloads of
these functions for some of the global IO containers.

Resolves bug report https://bugs.openfoam.org/view.php?id=3890
2022-09-20 16:39:05 +01:00

89 lines
2.5 KiB
C++

/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2011-2022 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Class
Foam::GlobalIOField
Description
A primitive field of type \<Type\> with automated input and output.
\*---------------------------------------------------------------------------*/
#ifndef GlobalIOField_H
#define GlobalIOField_H
#include "GlobalIOList.H"
#include "Field.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
/*---------------------------------------------------------------------------*\
Class GlobalIOField Declaration
\*---------------------------------------------------------------------------*/
template<class Type>
class GlobalIOField
:
public GlobalIOListBase<Field, GlobalIOField, Type>
{
public:
//- Runtime type information
TypeName("Field");
// Constructors
//- Inherit constructors
using GlobalIOListBase<Field, GlobalIOField, Type>::GlobalIOListBase;
// Member Operators
//- Inherit assignment operators
using GlobalIOListBase<Field, GlobalIOField, Type>::operator=;
};
//- Trait for obtaining global status
template<class Type>
struct typeGlobal<GlobalIOField<Type>>
{
static const bool global = true;
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //