00001 #ifndef __Simple1DIndexList_H__
00002 #define __Simple1DIndexList_H__
00003 
00004 
00025 #include <string.h>
00026 
00027 class Simple1DIndexList
00028 {
00029 private:
00030 
00031 int                     n,nmax;
00032 int*    index;
00033 
00034 int                     position;
00035         
00036 public:
00037 Simple1DIndexList(int maxItems=5)
00038         {
00039         nmax= maxItems;    n=position=0;
00040         index= new int[nmax];
00041         clearAll();
00042         }
00043 ~Simple1DIndexList(){delete[] index;}
00044 
00045 void clear(){memset(index, 0, n*sizeof(int)); n=0; position=0;}
00046 void clearAll(){memset(index, 0, nmax*sizeof(int)); n=0; position=0; }
00047 
00048 inline int get(int i){ return index[i]; }
00049 inline void set(int i, int val){ index[i]= val; }
00050 
00051 inline int first()
00052                 { if(isEmpty()) return -1; 
00053                 position=0; return index[0]; }
00054 
00055 inline int next()
00056                 { if(isEmpty() || position == n-1) return -1; 
00057                 position++; return index[position]; }
00058 
00059 inline int previous()
00060                 { if(isEmpty() || position == 0) return -1; 
00061                 position--; return index[position]; }
00062 
00063 inline int last()               
00064                 { if(isEmpty()) return -1; 
00065                 position=n-1; return index[n-1]; }
00066 
00067 inline int maxIndexes(){ return nmax; } 
00068 inline int numberOfIndexes(){ return n; }       
00069 inline bool isEmpty(){ return (n==0) ? true : false; }
00070 inline bool isFull(){ return (n==nmax) ? true : false; }
00071 
00072 inline bool push(int newIndex)
00073         {
00074         if( isFull() ) return false;
00075         index[n]= newIndex;
00076         n++;
00077         return true;
00078         }
00079 
00080 inline int pop()
00081         {
00082         if( isEmpty() ) return -1;                      
00083         int nOld=n;
00084         n--;
00085         return index[nOld];
00086         }
00087 
00088 void output()
00089         {
00090         printf("indexes[%d,%d]: (", n,nmax);
00091         for(int i=0; i<n;i++)
00092                 printf(" %d", index[i]);
00093         printf(")\n");
00094         }
00095 };
00096 
00097 #endif
00098 
00099