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