00001 #ifndef REACTANTLIST_HH_ 00002 #define REACTANTLIST_HH_ 00003 00004 00005 00006 00007 #include "../NFreactions.hh" 00008 00009 namespace NFcore 00010 { 00011 //Forward Declarations 00012 class TransformationSet; 00013 class MappingSet; 00014 00015 00017 00034 class ReactantList : public ReactantContainer 00035 { 00036 public: 00037 00044 ReactantList(unsigned int reactantIndex, TransformationSet *ts, unsigned int init_capacity); 00045 00046 00050 virtual ~ReactantList(); 00051 00052 00056 virtual int size() const { return n_mappingSets; }; 00057 00063 virtual MappingSet * pushNextAvailableMappingSet(); 00064 00068 virtual void popLastMappingSet(); 00069 00074 virtual void removeMappingSet(unsigned int mappingSetId); 00075 00079 void pickRandom(MappingSet *&ms); 00080 00081 00082 virtual MappingSet * getMappingSet(unsigned int mappingSetId) const; 00083 00084 00088 virtual void printDetails() const; 00089 00090 protected: 00091 00093 int n_mappingSets; 00094 00096 int capacity; 00097 00099 TransformationSet *ts; 00100 00102 unsigned int reactantIndex; 00103 00106 unsigned int * msPositionMap; 00107 00109 MappingSet **mappingSets; 00110 }; 00111 } 00112 00113 00114 00115 00116 00117 00118 00119 00120 00121 00122 00123 00124 00125 00126 00127 00128 #endif /*REACTANTLIST_HH_*/