From 62148b324702158d14366f214b56aa32984d92dc Mon Sep 17 00:00:00 2001
From: Marc Zinnschlag <marc@zpages.de>
Date: Fri, 27 Sep 2013 15:04:09 +0200
Subject: [PATCH] moved implementation of searchColumnIndex and findColumnIndex
 functions from IdTable to CollectionBase

---
 apps/opencs/model/world/collectionbase.cpp | 25 ++++++++++++++++++++++
 apps/opencs/model/world/collectionbase.hpp |  8 +++++++
 apps/opencs/model/world/idtable.cpp        | 15 ++-----------
 3 files changed, 35 insertions(+), 13 deletions(-)

diff --git a/apps/opencs/model/world/collectionbase.cpp b/apps/opencs/model/world/collectionbase.cpp
index 932ea27b58..241f198cb2 100644
--- a/apps/opencs/model/world/collectionbase.cpp
+++ b/apps/opencs/model/world/collectionbase.cpp
@@ -1,6 +1,31 @@
 
 #include "collectionbase.hpp"
 
+#include <stdexcept>
+
+#include "columnbase.hpp"
+
 CSMWorld::CollectionBase::CollectionBase() {}
 
 CSMWorld::CollectionBase::~CollectionBase() {}
+
+int CSMWorld::CollectionBase::searchColumnIndex (Columns::ColumnId id) const
+{
+    int columns = getColumns();
+
+    for (int i=0; i<columns; ++i)
+        if (getColumn (i).mColumnId==id)
+            return i;
+
+    return -1;
+}
+
+int CSMWorld::CollectionBase::findColumnIndex (Columns::ColumnId id) const
+{
+    int index = searchColumnIndex (id);
+
+    if (index==-1)
+        throw std::logic_error ("invalid column index");
+
+    return index;
+}
\ No newline at end of file
diff --git a/apps/opencs/model/world/collectionbase.hpp b/apps/opencs/model/world/collectionbase.hpp
index ff6dab247d..1056a961d5 100644
--- a/apps/opencs/model/world/collectionbase.hpp
+++ b/apps/opencs/model/world/collectionbase.hpp
@@ -4,6 +4,7 @@
 #include <string>
 
 #include "universalid.hpp"
+#include "columns.hpp"
 
 class QVariant;
 
@@ -83,6 +84,13 @@ namespace CSMWorld
             ///< Return a sorted collection of all IDs
             ///
             /// \param listDeleted include deleted record in the list
+
+            int searchColumnIndex (Columns::ColumnId id) const;
+            ///< Return index of column with the given \a id. If no such column exists, -1 is returned.
+
+            int findColumnIndex (Columns::ColumnId id) const;
+            ///< Return index of column with the given \a id. If no such column exists, an exception is
+            /// thrown.
     };
 }
 
diff --git a/apps/opencs/model/world/idtable.cpp b/apps/opencs/model/world/idtable.cpp
index baaf75289c..b7b1a9db05 100644
--- a/apps/opencs/model/world/idtable.cpp
+++ b/apps/opencs/model/world/idtable.cpp
@@ -161,21 +161,10 @@ const CSMWorld::RecordBase& CSMWorld::IdTable::getRecord (const std::string& id)
 
 int CSMWorld::IdTable::searchColumnIndex (Columns::ColumnId id) const
 {
-    int columns = mIdCollection->getColumns();
-
-    for (int i=0; i<columns; ++i)
-        if (mIdCollection->getColumn (i).mColumnId==id)
-            return i;
-
-    return -1;
+    return mIdCollection->searchColumnIndex (id);
 }
 
 int CSMWorld::IdTable::findColumnIndex (Columns::ColumnId id) const
 {
-    int index = searchColumnIndex (id);
-
-    if (index==-1)
-        throw std::logic_error ("invalid column index");
-
-    return index;
+    return mIdCollection->findColumnIndex (id);
 }
\ No newline at end of file