Index: /code/branches/presentation/src/core/ConfigFileManager.h
===================================================================
--- /code/branches/presentation/src/core/ConfigFileManager.h	(revision 2540)
+++ /code/branches/presentation/src/core/ConfigFileManager.h	(revision 2541)
@@ -38,28 +38,18 @@
 
 #include "util/Math.h"
+#include "util/OrxEnum.h"
 
 namespace orxonox
 {
-    // Use unsigned int as config file type to have an arbitrary number of files
-    class ConfigFileType
-    {
-    public:
-        ConfigFileType() { }
-        ConfigFileType(unsigned int type)              { type_ = type; }
-        ConfigFileType(const ConfigFileType& instance) { type_ = instance.type_; }
-
-        operator unsigned int() { return type_; }
-        ConfigFileType& operator =(unsigned int type) { type_ = type; return *this; }
-        bool operator <(const ConfigFileType& right) const   { return (type_ < right.type_); }
-
-        /* *** Put the different config file types here *** */
-        static const unsigned int NoType              = 0;
-        static const unsigned int Settings            = 1;
-        static const unsigned int JoyStickCalibration = 2;
-
-        static const unsigned int numberOfReservedTypes = 1024;
-
-    private:
-        unsigned int type_;
+    // Use int as config file type to have an arbitrary number of files
+    struct ConfigFileType : OrxEnum<ConfigFileType>
+    {
+        OrxEnumConstructors(ConfigFileType);
+
+        static const int NoType              = 0;
+        static const int Settings            = 1;
+        static const int JoyStickCalibration = 2;
+
+        static const int numberOfReservedTypes = 1024;
     };
 
Index: /code/branches/presentation/src/util/OrxEnum.h
===================================================================
--- /code/branches/presentation/src/util/OrxEnum.h	(revision 2541)
+++ /code/branches/presentation/src/util/OrxEnum.h	(revision 2541)
@@ -0,0 +1,67 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program 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 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program 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 this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Reto Grieder
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+/**
+@file
+@brief
+    Declaration of the OrxEnum class.
+*/
+
+#ifndef _OrxEnum_H__
+#define _OrxEnum_H__
+
+#include "UtilPrereqs.h"
+
+namespace orxonox
+{
+    template <class T>
+    struct OrxEnum
+    {
+        public:
+            OrxEnum() { }
+            OrxEnum(int type)                  { type_ = type; }
+            OrxEnum(const T& instance)   { type_ = instance.type_; }
+
+            operator int()                     { return type_; }
+            T& operator =(int type)      { type_ = type; return *this; }
+            bool operator <(const T& right) const { return (type_ < right.type_); }
+            bool operator >(const T& right) const { return (type_ > right.type_); }
+
+        private:
+            OrxEnum(const OrxEnum& instance);
+            int type_;
+    };
+}
+
+#define OrxEnumConstructors(enumName)              \
+enumName() { }                                     \
+enumName(int type) : OrxEnum<enumName>(type)   { } \
+enumName(const enumName& inst) : OrxEnum(inst) { } \
+void dummyFunction()
+
+#endif /* _OrxEnum_H__ */
Index: /code/branches/presentation/visual_studio/vc8/util.vcproj
===================================================================
--- /code/branches/presentation/visual_studio/vc8/util.vcproj	(revision 2540)
+++ /code/branches/presentation/visual_studio/vc8/util.vcproj	(revision 2541)
@@ -173,4 +173,8 @@
 			</File>
 			<File
+				RelativePath="..\..\src\util\OrxEnum.cc"
+				>
+			</File>
+			<File
 				RelativePath="..\..\src\util\OutputBuffer.cc"
 				>
@@ -247,4 +251,8 @@
 			</File>
 			<File
+				RelativePath="..\..\src\util\OrxEnum.h"
+				>
+			</File>
+			<File
 				RelativePath="..\..\src\util\OrxonoxPlatform.h"
 				>
