summaryrefslogtreecommitdiff
path: root/indra/newview/VertexCache.h
diff options
context:
space:
mode:
authorJames Cook <james@lindenlab.com>2007-01-02 08:33:20 +0000
committerJames Cook <james@lindenlab.com>2007-01-02 08:33:20 +0000
commit420b91db29485df39fd6e724e782c449158811cb (patch)
treeb471a94563af914d3ed3edd3e856d21cb1b69945 /indra/newview/VertexCache.h
Print done when done.
Diffstat (limited to 'indra/newview/VertexCache.h')
-rw-r--r--indra/newview/VertexCache.h87
1 files changed, 87 insertions, 0 deletions
diff --git a/indra/newview/VertexCache.h b/indra/newview/VertexCache.h
new file mode 100644
index 0000000000..e2b26ec5ee
--- /dev/null
+++ b/indra/newview/VertexCache.h
@@ -0,0 +1,87 @@
+/**
+ * @file VertexCache.h
+ * @brief VertexCache class definition
+ *
+ * Copyright (c) 2002-$CurrentYear$, Linden Research, Inc.
+ * $License$
+ */
+
+
+#ifndef VERTEX_CACHE_H
+
+#define VERTEX_CACHE_H
+
+class VertexCache
+{
+
+public:
+
+ VertexCache(int size)
+ {
+ numEntries = size;
+
+ entries = new int[numEntries];
+
+ for(int i = 0; i < numEntries; i++)
+ entries[i] = -1;
+ }
+
+ VertexCache() { VertexCache(16); }
+ ~VertexCache() { delete[] entries; entries = 0; }
+
+ bool InCache(int entry)
+ {
+ bool returnVal = false;
+ for(int i = 0; i < numEntries; i++)
+ {
+ if(entries[i] == entry)
+ {
+ returnVal = true;
+ break;
+ }
+ }
+
+ return returnVal;
+ }
+
+ int AddEntry(int entry)
+ {
+ int removed;
+
+ removed = entries[numEntries - 1];
+
+ //push everything right one
+ for(int i = numEntries - 2; i >= 0; i--)
+ {
+ entries[i + 1] = entries[i];
+ }
+
+ entries[0] = entry;
+
+ return removed;
+ }
+
+ void Clear()
+ {
+ memset(entries, -1, sizeof(int) * numEntries);
+ }
+
+ void Copy(VertexCache* inVcache)
+ {
+ for(int i = 0; i < numEntries; i++)
+ {
+ inVcache->Set(i, entries[i]);
+ }
+ }
+
+ int At(int index) { return entries[index]; }
+ void Set(int index, int value) { entries[index] = value; }
+
+private:
+
+ int *entries;
+ int numEntries;
+
+};
+
+#endif