SymbolSet.h
Go to the documentation of this file.
00001 #ifndef SymbolSet_H
00002 #define SymbolSet_H
00003 
00004 
00005 // Finite, ordered set
00006 // each symbol has an id
00007 
00008 #include <vector>
00009 #include <stdexcept>
00010 #include "SymbolSetIterator.h"
00011 using namespace std;
00012 using namespace momdp;
00013 namespace momdp 
00014 {
00015 
00016 template <typename T> 
00017 class SymbolSet
00018 {
00019 
00020 private:
00021         int totalSize;
00022         vector<T> symbolTable;
00023 
00024         void symbolInputIDSanityCheck(int& id)
00025         {
00026                 if(id < 0 )
00027                 {
00028                         throw runtime_error("Bug, negative id");
00029                 }
00030                 if(id >= totalSize)
00031                 {
00032                         throw runtime_error("Bug, symbol id exceeds symbol count");
00033                 }
00034         }
00035 
00036 public:
00037         typedef SymbolSetIterator<T> iterator;
00038 
00039         SymbolSet()
00040         {
00041                 totalSize = 0;
00042                 symbolTable.clear();
00043         }
00044 
00045         iterator begin()
00046         {
00047                 return (iterator(this, 0));
00048         }
00049 
00050         iterator end()
00051         {
00052                 return (iterator(this, totalSize));
00053         }
00054 
00055         virtual int size()
00056         {
00057                 return symbolTable.size();
00058         }
00059 
00060         virtual void resize( int newSize)
00061         {
00062                 totalSize = newSize;
00063                 symbolTable.resize(newSize);
00064         }
00065 
00066         virtual int add( T& symbol)
00067         {
00068                 totalSize ++;
00069                 symbolTable.push_back(symbol);
00070                 return symbolTable.size() -1;
00071         }
00072 
00073         virtual void set(int id, T& symbol)
00074         {
00075                 symbolInputIDSanityCheck(id);
00076                 symbolTable[id] = symbol;
00077         }
00078         virtual T& get(int id)
00079         {
00080                 symbolInputIDSanityCheck(id);
00081                 return symbolTable[id];
00082         }
00083         virtual ~SymbolSet(void)
00084         {
00085                 symbolTable.clear();
00086         }
00087 };
00088 
00089 }
00090 
00091 #endif
00092 


appl
Author(s): petercai
autogenerated on Tue Jan 7 2014 11:02:29