roadrunner  2.6.0
Fast simulator for SBML models
rrArrayListItem.h
1 #ifndef rrArrayListItemH
2 #define rrArrayListItemH
3 #include "rrExporter.h"
4 #include "rrcStringList.h"
5 #include "rrArrayListItemBase.h"
6 
7 //This unit contains
8 // 1) a base class for ArrayListItems
9 // 2) Template for basic type ArrayListItems, such as int, char double etc.
10 // 3) An ArrayListItem class, that represent an ArrayList, within an ArrayList object
11 
12 namespace rrc
13 {
14 
18  template <class T>
19  class ArrayListItem : public ArrayListItemBase
20  {
21  private:
22  T mItemValue;
23 
24  public:
25  ArrayListItem(const T& val);
26 
27  virtual ~ArrayListItem() {}
28  operator T() { return mItemValue; }
29  virtual const char operator[](const int& pos) const { return '\0'; } //Make sense for string types
30  ArrayListItem<T>& operator=(const ArrayListItem<T>& rhs);
31  };
32 
33  template<class T>
34  ArrayListItem<T>::ArrayListItem(const T& val)
35  :
36  mItemValue(val)
37  {}
38 
39  template<class T>
40  ArrayListItem<T>& ArrayListItem<T>::operator=(const ArrayListItem<T>& rhs)
41  {
42  if (this != &rhs)
43  {
44  mItemValue = rhs.mItemValue;
45  }
46 
47  return *this;
48  }
49 
50  std::ostream& operator<<(std::ostream& stream, const ArrayListItemBase& item);
53 }
54 #endif