VertexCache.h

Go to the documentation of this file.
00001 
00033 #ifndef VERTEX_CACHE_H
00034 
00035 #define VERTEX_CACHE_H
00036 
00037 class VertexCache
00038 {
00039         
00040 public:
00041         
00042         VertexCache(int size)
00043         {
00044                 numEntries = size;
00045                 
00046                 entries = new int[numEntries];
00047                 
00048                 for(int i = 0; i < numEntries; i++)
00049                         entries[i] = -1;
00050         }
00051                 
00052         VertexCache() { VertexCache(16); }
00053         ~VertexCache() { delete[] entries; entries = 0; }
00054         
00055         bool InCache(int entry)
00056         {
00057                 bool returnVal = false;
00058                 for(int i = 0; i < numEntries; i++)
00059                 {
00060                         if(entries[i] == entry)
00061                         {
00062                                 returnVal = true;
00063                                 break;
00064                         }
00065                 }
00066                 
00067                 return returnVal;
00068         }
00069         
00070         int AddEntry(int entry)
00071         {
00072                 int removed;
00073                 
00074                 removed = entries[numEntries - 1];
00075                 
00076                 //push everything right one
00077                 for(int i = numEntries - 2; i >= 0; i--)
00078                 {
00079                         entries[i + 1] = entries[i];
00080                 }
00081                 
00082                 entries[0] = entry;
00083                 
00084                 return removed;
00085         }
00086 
00087         void Clear()
00088         {
00089                 memset(entries, -1, sizeof(int) * numEntries);
00090         }
00091         
00092         void Copy(VertexCache* inVcache) 
00093         {
00094                 for(int i = 0; i < numEntries; i++)
00095                 {
00096                         inVcache->Set(i, entries[i]);
00097                 }
00098         }
00099 
00100         int At(int index) { return entries[index]; }
00101         void Set(int index, int value) { entries[index] = value; }
00102 
00103 private:
00104 
00105   int *entries;
00106   int numEntries;
00107 
00108 };
00109 
00110 #endif

Generated on Thu Jul 1 06:10:02 2010 for Second Life Viewer by  doxygen 1.4.7