From 94b72a99a78e3a77153a6e6b7dd400bee56db35a Mon Sep 17 00:00:00 2001
From: mattijs <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 00000000000..61d0931f49c
--- /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 <http://www.gnu.org/licenses/>.
+
+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<simpleRegIOobject*>
+{
+public:
+
+    // Constructors
+
+        //- Construct from initial estimate
+        simpleObjectRegistry(const label nIoObjects = 128)
+        :
+            HashTable<simpleRegIOobject*>(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 00000000000..c7ede5e8183
--- /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 <http://www.gnu.org/licenses/>.
+
+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
+
+// ************************************************************************* //
-- 
GitLab