From 94b72a99a78e3a77153a6e6b7dd400bee56db35a Mon Sep 17 00:00:00 2001 From: mattijs Date: Tue, 11 Dec 2012 15:58:59 +0000 Subject: [PATCH] ENH: debug: registered objects --- .../global/debug/simpleObjectRegistry.H | 74 +++++++++++++++ src/OpenFOAM/global/debug/simpleRegIOobject.H | 92 +++++++++++++++++++ 2 files changed, 166 insertions(+) create mode 100644 src/OpenFOAM/global/debug/simpleObjectRegistry.H create mode 100644 src/OpenFOAM/global/debug/simpleRegIOobject.H diff --git a/src/OpenFOAM/global/debug/simpleObjectRegistry.H b/src/OpenFOAM/global/debug/simpleObjectRegistry.H new file mode 100644 index 0000000000..61d0931f49 --- /dev/null +++ b/src/OpenFOAM/global/debug/simpleObjectRegistry.H @@ -0,0 +1,74 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 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 . + +Class + Foam::simpleObjectRegistry + +Description + Object registry for simpleRegIOobject + +SourceFiles + +\*---------------------------------------------------------------------------*/ + +#ifndef simpleObjectRegistry_H +#define simpleObjectRegistry_H + +#include "HashTable.H" +#include "simpleRegIOobject.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class simpleObjectRegistry Declaration +\*---------------------------------------------------------------------------*/ + +class simpleObjectRegistry +: + public HashTable +{ +public: + + // Constructors + + //- Construct from initial estimate + simpleObjectRegistry(const label nIoObjects = 128) + : + HashTable(nIoObjects) + {} + +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/OpenFOAM/global/debug/simpleRegIOobject.H b/src/OpenFOAM/global/debug/simpleRegIOobject.H new file mode 100644 index 0000000000..c7ede5e818 --- /dev/null +++ b/src/OpenFOAM/global/debug/simpleRegIOobject.H @@ -0,0 +1,92 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 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 . + +Class + Foam::simpleRegIOobject + +Description + Abstract base class for registered object with I/O. Used in debug symbol + registration. + +SourceFiles + +\*---------------------------------------------------------------------------*/ + +#ifndef simpleRegIOobject_H +#define simpleRegIOobject_H + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// Forward declaration of classes +class Istream; +class Ostream; + +/*---------------------------------------------------------------------------*\ + Class simpleRegIOobject Declaration +\*---------------------------------------------------------------------------*/ + +class simpleRegIOobject +{ +public: + + // Constructors + + //- Construct from objectregistry inserter and name + simpleRegIOobject + ( + void (*fn)(const char* name, simpleRegIOobject*), + const char* name + ) + { + (*fn)(name, this); + } + + + //- Destructor + virtual ~simpleRegIOobject() + {}; + + + // Member Functions + + //- Read + virtual void readData(Istream&) = 0; + + //- Write + virtual void writeData(Ostream&) const = 0; + +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* //