otsdaq  v2_03_00
RegisterView.cpp
1 /*
2  * RegisterView.cpp
3  *
4  * Created on: Jul 29, 2015
5  * Author: parilla
6  */
7 
8 #include "otsdaq-core/ConfigurationDataFormats/RegisterView.h"
9 
10 using namespace ots;
11 
12 RegisterView::RegisterView(std::string name)
13  : name_(name), version_(-1), comment_(""), author_(""), creationTime_(time(0))
14 {
15 }
16 //==============================================================================
17 RegisterView::~RegisterView()
18 {
19  // TODO Auto-generated destructor stub
20 }
21 //==============================================================================
22 unsigned int RegisterView::findRow(unsigned int col, const std::string value) const
23 {
24  for(unsigned int row = 0; row < theDataView_.size(); row++)
25  {
26  if(theDataView_[row][col] == value)
27  return row;
28  }
29  // std::cout << __COUT_HDR_FL__ << "\tIn view: " << name_ << " I Can't find " << value
30  // << " in column " << col << " with name: " << registersInfo_[col].getName() <<
31  // std::endl;
32  assert(0);
33  return 0;
34 }
35 
36 //==============================================================================
37 unsigned int RegisterView::findRow(unsigned int col, const unsigned int value) const
38 {
39  std::stringstream s;
40  s << value;
41  return findRow(col, s.str());
42 }
43 // Getters
44 //==============================================================================
45 std::string RegisterView::getName(void) const { return name_; }
46 
47 //==============================================================================
48 int RegisterView::getVersion(void) const { return version_; }
49 
50 //==============================================================================
51 std::string RegisterView::getComment(void) const { return comment_; }
52 
53 //==============================================================================
54 std::string RegisterView::getAuthor(void) const { return author_; }
55 //==============================================================================
56 time_t RegisterView::getCreationTime(void) const { return creationTime_; }
57 //==============================================================================
58 const std::vector<ViewRegisterInfo>& RegisterView::getRegistersInfo(void) const
59 {
60  return registersInfo_;
61 }
62 //==============================================================================
63 std::vector<ViewRegisterInfo>* RegisterView::getRegistersInfoPointer(void)
64 {
65  return &registersInfo_;
66 }
67 //==============================================================================
68 const std::vector<ViewRegisterSequencerInfo>& RegisterView::getRegistersSequencerInfo(
69  void) const
70 {
71  return registersSequencerInfo_;
72 }
73 //==============================================================================
74 std::vector<ViewRegisterSequencerInfo>* RegisterView::getRegistersSequencerInfoPointer(
75  void)
76 {
77  return &registersSequencerInfo_;
78 }
79 //==============================================================================
80 unsigned int RegisterView::getNumberOfRows(void) const { return theDataView_.size(); }
81 
82 //==============================================================================
83 unsigned int RegisterView::getNumberOfColumns(void) const
84 {
85  // return registersInfo_.getNumberOfColumns();
86  return 1;
87 }
88 // Setters
89 //==============================================================================
90 void RegisterView::setName(std::string name) { name_ = name; }
91 
92 //==============================================================================
93 void RegisterView::setVersion(int version) { version_ = version; }
94 
95 //==============================================================================
96 void RegisterView::setVersion(char* version) { version_ = atoi(version); }
97 
98 //==============================================================================
99 void RegisterView::setComment(std::string comment) { comment_ = comment; }
100 
101 //==============================================================================
102 void RegisterView::setAuthor(std::string author) { author_ = author; }
103 //==============================================================================
104 void RegisterView::setCreationTime(time_t t) { creationTime_ = t; }
105 //==============================================================================
106 /*void RegisterView::reset (void)
107 {
108  version_ = -1;
109  comment_ = "";
110  author_ + "";
111  columnsInfo_.clear();
112  theDataView_.clear();
113  }*/
114 //==============================================================================
115 // returns index of added row, always is last row
116 // return -1 on failure
117 int RegisterView::addRow(void)
118 {
119  int row = getNumberOfRows();
120  theDataView_.resize(getNumberOfRows() + 1,
121  std::vector<std::string>(getNumberOfColumns()));
122 
123  // fill each col of new row with default values
124  for(unsigned int col = 0; col < getNumberOfColumns(); ++col)
125  {
126  theDataView_[row][col] = "DEFAULT"; // GET COLUMN NAMES
127  }
128 
129  return row;
130 }
131 
132 //==============================================================================
133 // returns true on success
134 // return false on failure
135 bool RegisterView::deleteRow(int r)
136 {
137  if(r >= (int)getNumberOfRows())
138  return false; // out of bounds
139 
140  theDataView_.erase(theDataView_.begin() + r);
141  return true;
142 }