(svn r13575) -Codechange: Move small vector to core since it fits better in there
-Codechange: convert smallvector from struct to class
--- 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"