(svn r13575) -Codechange: Move small vector to core since it fits better in there
authorskidd13
Thu, 19 Jun 2008 10:19:02 +0000
changeset 9555 68e7c84b2d19
parent 9554 d677e63894db
child 9556 0cfc541c4d38
(svn r13575) -Codechange: Move small vector to core since it fits better in there
-Codechange: convert smallvector from struct to class
projects/openttd_vs80.vcproj
projects/openttd_vs90.vcproj
source.list
src/core/smallvec_type.hpp
src/fios.h
src/misc/smallvec.h
src/sortlist_type.h
src/vehiclelist.h
src/viewport.cpp
--- a/projects/openttd_vs80.vcproj	Thu Jun 19 09:33:50 2008 +0000
+++ b/projects/openttd_vs80.vcproj	Thu Jun 19 10:19:02 2008 +0000
@@ -1452,6 +1452,10 @@
 				>
 			</File>
 			<File
+				RelativePath=".\..\src\core\smallvec_type.hpp"
+				>
+			</File>
+			<File
 				RelativePath=".\..\src\core\sort_func.hpp"
 				>
 			</File>
@@ -2404,10 +2408,6 @@
 				>
 			</File>
 			<File
-				RelativePath=".\..\src\misc\smallvec.h"
-				>
-			</File>
-			<File
 				RelativePath=".\..\src\misc\str.hpp"
 				>
 			</File>
--- a/projects/openttd_vs90.vcproj	Thu Jun 19 09:33:50 2008 +0000
+++ b/projects/openttd_vs90.vcproj	Thu Jun 19 10:19:02 2008 +0000
@@ -1449,6 +1449,10 @@
 				>
 			</File>
 			<File
+				RelativePath=".\..\src\core\smallvec_type.hpp"
+				>
+			</File>
+			<File
 				RelativePath=".\..\src\core\sort_func.hpp"
 				>
 			</File>
@@ -2401,10 +2405,6 @@
 				>
 			</File>
 			<File
-				RelativePath=".\..\src\misc\smallvec.h"
-				>
-			</File>
-			<File
 				RelativePath=".\..\src\misc\str.hpp"
 				>
 			</File>
--- a/source.list	Thu Jun 19 09:33:50 2008 +0000
+++ b/source.list	Thu Jun 19 10:19:02 2008 +0000
@@ -288,6 +288,7 @@
 signs_type.h
 slope_func.h
 slope_type.h
+core/smallvec_type.hpp
 core/sort_func.hpp
 sortlist_type.h
 sound_func.h
@@ -552,7 +553,6 @@
 misc/dbg_helpers.h
 misc/fixedsizearray.hpp
 misc/hashtable.hpp
-misc/smallvec.h
 misc/str.hpp
 misc/strapi.hpp
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/core/smallvec_type.hpp	Thu Jun 19 10:19:02 2008 +0000
@@ -0,0 +1,165 @@
+/* $Id$ */
+
+/** @file smallvec_type.hpp Simple vector class that allows allocating an item without the need to copy this->data needlessly. */
+
+#ifndef SMALLVEC_TYPE_HPP
+#define SMALLVEC_TYPE_HPP
+
+#include "alloc_func.hpp"
+#include "math_func.hpp"
+
+/**
+ * Simple vector template class.
+ *
+ * @note There are no asserts in the class so you have
+ *       to care about that you grab an item which is
+ *       inside the list.
+ *
+ * @param T The type of the items stored
+ * @param S The steps of allocation
+ */
+template <typename T, uint S>
+class SmallVector {
+protected:
+	T *data;       ///< The pointer to the first item
+	uint items;    ///< The number of items stored
+	uint capacity; ///< The avalible space for storing items
+
+public:
+	SmallVector() : data(NULL), items(0), capacity(0) { }
+
+	~SmallVector()
+	{
+		free(this->data);
+	}
+
+	/**
+	 * Remove all items from the list.
+	 */
+	void Clear()
+	{
+		/* In fact we just reset the item counter avoiding the need to
+		 * probably reallocate the same amount of memory the list was
+		 * previously using. */
+		this->items = 0;
+	}
+
+	/**
+	 * Compact the list down to the smallest block size boundary.
+	 */
+	void Compact()
+	{
+		uint capacity = Align(this->items, S);
+		if (capacity >= this->capacity) return;
+
+		this->capacity = capacity;
+		this->data = ReallocT(this->data, this->capacity);
+	}
+
+	/**
+	 * Append an item and return it.
+	 */
+	T *Append()
+	{
+		if (this->items == this->capacity) {
+			this->capacity += S;
+			this->data = ReallocT(this->data, this->capacity);
+		}
+
+		return &this->data[this->items++];
+	}
+
+	/**
+	 * Get the number of items in the list.
+	 */
+	uint Length() const
+	{
+		return this->items;
+	}
+
+	/**
+	 * Get the pointer to the first item (const)
+	 *
+	 * @return the pointer to the first item
+	 */
+	const T *Begin() const
+	{
+		return this->data;
+	}
+
+	/**
+	 * Get the pointer to the first item
+	 *
+	 * @return the pointer to the first item
+	 */
+	T *Begin()
+	{
+		return this->data;
+	}
+
+	/**
+	 * Get the pointer behind the last valid item (const)
+	 *
+	 * @return the pointer behind the last valid item
+	 */
+	const T *End() const
+	{
+		return &this->data[this->items];
+	}
+
+	/**
+	 * Get the pointer behind the last valid item
+	 *
+	 * @return the pointer behind the last valid item
+	 */
+	T *End()
+	{
+		return &this->data[this->items];
+	}
+
+	/**
+	 * Get the pointer to item "number" (const)
+	 *
+	 * @param index the position of the item
+	 * @return the pointer to the item
+	 */
+	const T *Get(uint index) const
+	{
+		return &this->data[index];
+	}
+
+	/**
+	 * Get the pointer to item "number"
+	 *
+	 * @param index the position of the item
+	 * @return the pointer to the item
+	 */
+	T *Get(uint index)
+	{
+		return &this->data[index];
+	}
+
+	/**
+	 * Get item "number" (const)
+	 *
+	 * @param index the positon of the item
+	 * @return the item
+	 */
+	const T &operator[](uint index) const
+	{
+		return this->data[index];
+	}
+
+	/**
+	 * Get item "number"
+	 *
+	 * @param index the positon of the item
+	 * @return the item
+	 */
+	T &operator[](uint index)
+	{
+		return this->data[index];
+	}
+};
+
+#endif /* SMALLVEC_TYPE_HPP */
--- a/src/fios.h	Thu Jun 19 09:33:50 2008 +0000
+++ b/src/fios.h	Thu Jun 19 10:19:02 2008 +0000
@@ -6,7 +6,7 @@
 #define FIOS_H
 
 #include "strings_type.h"
-#include "misc/smallvec.h"
+#include "core/smallvec_type.hpp"
 
 enum {
 	/**
--- a/src/misc/smallvec.h	Thu Jun 19 09:33:50 2008 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,163 +0,0 @@
-/* $Id$ */
-
-/** @file smallvec.h Simple vector class that allows allocating an item without the need to copy this->data needlessly. */
-
-#ifndef SMALLVEC_H
-#define SMALLVEC_H
-
-#include "../core/alloc_func.hpp"
-#include "../core/math_func.hpp"
-
-/**
- * Simple vector template class.
- *
- * @note There are no asserts in the class so you have
- *       to care about that you grab an item which is
- *       inside the list.
- *
- * @param T The type of the items stored
- * @param S The steps of allocation
- */
-template <typename T, uint S>
-struct SmallVector {
-	T *data;       ///< The pointer to the first item
-	uint items;    ///< The number of items stored
-	uint capacity; ///< The avalible space for storing items
-
-	SmallVector() : data(NULL), items(0), capacity(0) { }
-
-	~SmallVector()
-	{
-		free(this->data);
-	}
-
-	/**
-	 * Remove all items from the list.
-	 */
-	void Clear()
-	{
-		/* In fact we just reset the item counter avoiding the need to
-		 * probably reallocate the same amount of memory the list was
-		 * previously using. */
-		this->items = 0;
-	}
-
-	/**
-	 * Compact the list down to the smallest block size boundary.
-	 */
-	void Compact()
-	{
-		uint capacity = Align(this->items, S);
-		if (capacity >= this->capacity) return;
-
-		this->capacity = capacity;
-		this->data = ReallocT(this->data, this->capacity);
-	}
-
-	/**
-	 * Append an item and return it.
-	 */
-	T *Append()
-	{
-		if (this->items == this->capacity) {
-			this->capacity += S;
-			this->data = ReallocT(this->data, this->capacity);
-		}
-
-		return &this->data[this->items++];
-	}
-
-	/**
-	 * Get the number of items in the list.
-	 */
-	uint Length() const
-	{
-		return this->items;
-	}
-
-	/**
-	 * Get the pointer to the first item (const)
-	 *
-	 * @return the pointer to the first item
-	 */
-	const T *Begin() const
-	{
-		return this->data;
-	}
-
-	/**
-	 * Get the pointer to the first item
-	 *
-	 * @return the pointer to the first item
-	 */
-	T *Begin()
-	{
-		return this->data;
-	}
-
-	/**
-	 * Get the pointer behind the last valid item (const)
-	 *
-	 * @return the pointer behind the last valid item
-	 */
-	const T *End() const
-	{
-		return &this->data[this->items];
-	}
-
-	/**
-	 * Get the pointer behind the last valid item
-	 *
-	 * @return the pointer behind the last valid item
-	 */
-	T *End()
-	{
-		return &this->data[this->items];
-	}
-
-	/**
-	 * Get the pointer to item "number" (const)
-	 *
-	 * @param index the position of the item
-	 * @return the pointer to the item
-	 */
-	const T *Get(uint index) const
-	{
-		return &this->data[index];
-	}
-
-	/**
-	 * Get the pointer to item "number"
-	 *
-	 * @param index the position of the item
-	 * @return the pointer to the item
-	 */
-	T *Get(uint index)
-	{
-		return &this->data[index];
-	}
-
-	/**
-	 * Get item "number" (const)
-	 *
-	 * @param index the positon of the item
-	 * @return the item
-	 */
-	const T &operator[](uint index) const
-	{
-		return this->data[index];
-	}
-
-	/**
-	 * Get item "number"
-	 *
-	 * @param index the positon of the item
-	 * @return the item
-	 */
-	T &operator[](uint index)
-	{
-		return this->data[index];
-	}
-};
-
-#endif /* SMALLVEC_H */
--- a/src/sortlist_type.h	Thu Jun 19 09:33:50 2008 +0000
+++ b/src/sortlist_type.h	Thu Jun 19 10:19:02 2008 +0000
@@ -9,7 +9,7 @@
 #include "core/bitmath_func.hpp"
 #include "core/mem_func.hpp"
 #include "core/sort_func.hpp"
-#include "misc/smallvec.h"
+#include "core/smallvec_type.hpp"
 #include "date_type.h"
 
 enum SortListFlags {
--- a/src/vehiclelist.h	Thu Jun 19 09:33:50 2008 +0000
+++ b/src/vehiclelist.h	Thu Jun 19 10:19:02 2008 +0000
@@ -5,7 +5,7 @@
 #ifndef VEHICLELIST_H
 #define VEHICLELIST_H
 
-#include "misc/smallvec.h"
+#include "core/smallvec_type.hpp"
 
 typedef SmallVector<const Vehicle *, 32> VehicleList;
 
--- a/src/viewport.cpp	Thu Jun 19 09:33:50 2008 +0000
+++ b/src/viewport.cpp	Thu Jun 19 10:19:02 2008 +0000
@@ -44,7 +44,7 @@
 #include "settings_type.h"
 #include "station_func.h"
 #include "core/alloc_type.hpp"
-#include "misc/smallvec.h"
+#include "core/smallvec_type.hpp"
 #include "window_func.h"
 #include "tilehighlight_func.h"
 #include "window_gui.h"