src/misc/smallvec.h
changeset 8949 4c9fbf5ec359
child 8951 618a0b1a5061
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/misc/smallvec.h	Wed Apr 16 19:01:09 2008 +0000
@@ -0,0 +1,44 @@
+/* $Id$ */
+
+/* @file smallvec.h */
+
+#ifndef SMALLVEC_H
+#define SMALLVEC_H
+
+template <typename T, uint S> struct SmallVector {
+	T *data;
+	uint items;
+	uint capacity;
+
+	SmallVector() : data(NULL), items(0), capacity(0) { }
+
+	~SmallVector()
+	{
+		free(data);
+	}
+
+	/**
+	 * Append an item and return it.
+	 */
+	T *Append()
+	{
+		if (items == capacity) {
+			capacity += S;
+			data = ReallocT(data, capacity);
+		}
+
+		return &data[items++];
+	}
+
+	const T *Begin() const
+	{
+		return data;
+	}
+
+	const T *End() const
+	{
+		return &data[items];
+	}
+};
+
+#endif /* SMALLVEC_H */