diff options
author | James Cook <james@lindenlab.com> | 2007-01-02 08:33:20 +0000 |
---|---|---|
committer | James Cook <james@lindenlab.com> | 2007-01-02 08:33:20 +0000 |
commit | 420b91db29485df39fd6e724e782c449158811cb (patch) | |
tree | b471a94563af914d3ed3edd3e856d21cb1b69945 /indra/newview/VertexCache.h |
Print done when done.
Diffstat (limited to 'indra/newview/VertexCache.h')
-rw-r--r-- | indra/newview/VertexCache.h | 87 |
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 |