Jpp
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Static Public Attributes | Friends | List of all members
JDATABASE::JPBS Struct Reference

Product breakdown structure (PBS). More...

#include <JPBS.hh>

Inheritance diagram for JDATABASE::JPBS:
std::vector< int > JDATABASE::JUPI JDETECTOR::JHVCalibration_t

Public Member Functions

 JPBS ()
 Default constructor. More...
 
 JPBS (const int i0, const int i1=-1, const int i2=-1, const int i3=-1, const int i4=-1, const int i5=-1, const int i6=-1, const int i7=-1, const int i8=-1, const int i9=-1)
 Constructor. More...
 
 JPBS (const std::string &input)
 Constructor. More...
 
const JPBSgetPBS () const
 Get PBS. More...
 
bool is_valid () const
 Check validity. More...
 
 ClassDefNV (JPBS, 1)
 

Static Public Attributes

static const char DOT = '.'
 Separator between PBS values. More...
 
static const char SEPARATOR = '/'
 Separator between PBS and variant. More...
 

Friends

bool operator== (const JPBS &first, const JPBS &second)
 Equality operator. More...
 
bool operator< (const JPBS &first, const JPBS &second)
 Less-than operator. More...
 
std::istream & operator>> (std::istream &in, JPBS &object)
 Read PBS from input stream. More...
 
std::ostream & operator<< (std::ostream &out, const JPBS &object)
 Write PBS to output stream. More...
 

Detailed Description

Product breakdown structure (PBS).

The PBS consists of one (or more) integer value(s), separated by JPBS::DOT.
The ASCII format should therefore read "<int>[.<int>]+".

Definition at line 27 of file JPBS.hh.

Constructor & Destructor Documentation

JDATABASE::JPBS::JPBS ( )
inline

Default constructor.

Definition at line 45 of file JPBS.hh.

46  {}
JDATABASE::JPBS::JPBS ( const int  i0,
const int  i1 = -1,
const int  i2 = -1,
const int  i3 = -1,
const int  i4 = -1,
const int  i5 = -1,
const int  i6 = -1,
const int  i7 = -1,
const int  i8 = -1,
const int  i9 = -1 
)
inline

Constructor.

Parameters
i0PBS number
i1PBS number
i2PBS number
i3PBS number
i4PBS number
i5PBS number
i6PBS number
i7PBS number
i8PBS number
i9PBS number

Definition at line 63 of file JPBS.hh.

73  {
74  if (i0 != -1) { push_back(i0); }
75  if (i1 != -1) { push_back(i1); }
76  if (i2 != -1) { push_back(i2); }
77  if (i3 != -1) { push_back(i3); }
78  if (i4 != -1) { push_back(i4); }
79  if (i5 != -1) { push_back(i5); }
80  if (i6 != -1) { push_back(i6); }
81  if (i7 != -1) { push_back(i7); }
82  if (i8 != -1) { push_back(i8); }
83  if (i9 != -1) { push_back(i9); }
84  }
JDATABASE::JPBS::JPBS ( const std::string &  input)
inline

Constructor.

Parameters
inputinput text

Definition at line 92 of file JPBS.hh.

93  {
94  std::istringstream is(input);
95 
96  is >> *this;
97  }
is
Definition: JDAQCHSM.chsm:167

Member Function Documentation

const JPBS& JDATABASE::JPBS::getPBS ( ) const
inline

Get PBS.

Returns
PBS

Definition at line 105 of file JPBS.hh.

106  {
107  return static_cast<const JPBS&>(*this);
108  }
Product breakdown structure (PBS).
Definition: JPBS.hh:27
bool JDATABASE::JPBS::is_valid ( ) const
inline

Check validity.

Returns
true if valid; else false

Definition at line 116 of file JPBS.hh.

117  {
118  return !this->empty();
119  }
JDATABASE::JPBS::ClassDefNV ( JPBS  ,
 
)

Friends And Related Function Documentation

bool operator== ( const JPBS first,
const JPBS second 
)
friend

Equality operator.

Parameters
firstfirst PBS
secondsecond PBS
Returns
true if PBS is equal; else false

Definition at line 129 of file JPBS.hh.

130  {
131  if (first.size() == second.size()) {
132 
133  for (const_iterator p = first.begin(), q = second.begin(); p != first.end(); ++p, ++q) {
134  if (*p != *q) {
135  return false;
136  }
137  }
138 
139  return true;
140  }
141 
142  return false;
143  }
bool operator< ( const JPBS first,
const JPBS second 
)
friend

Less-than operator.

Parameters
firstfirst PBS
secondsecond PBS
Returns
true if first PBS higher in hierarchy; else false

Definition at line 153 of file JPBS.hh.

154  {
155  for (const_iterator p = first.begin(), q = second.begin(); p != first.end() && q != second.end(); ++p, ++q) {
156  if (*p != *q) {
157  return *p < *q;
158  }
159  }
160 
161  return first.size() < second.size();
162  }
std::istream& operator>> ( std::istream &  in,
JPBS object 
)
friend

Read PBS from input stream.

Parameters
ininput stream
objectPBS
Returns
input stream

Definition at line 172 of file JPBS.hh.

173  {
174  using namespace std;
175 
176  object.clear();
177 
178  int pbs;
179 
180  if (in >> pbs) {
181 
182  object.push_back(pbs);
183 
184  while (in.peek() == (int) JPBS::DOT) {
185  if (in.ignore() && in >> pbs)
186  object.push_back(pbs);
187  else
188  in.setstate(ios::failbit);
189  }
190 
191  } else {
192 
193  in.setstate(ios::failbit);
194  }
195 
196  return in;
197  }
esac print_variable DETECTOR INPUT_FILE OUTPUT_FILE CDF for TYPE in
Definition: JSirene.sh:45
static const char DOT
Separator between PBS values.
Definition: JPBS.hh:33
std::ostream& operator<< ( std::ostream &  out,
const JPBS object 
)
friend

Write PBS to output stream.

Parameters
outoutput stream
objectPBS
Returns
output stream

Definition at line 207 of file JPBS.hh.

208  {
209  using namespace std;
210  using namespace JPP;
211 
212  ostringstream os;
213 
214  if (!object.empty()) {
215 
216  const_iterator i = object.begin();
217 
218  os << *i;
219 
220  while (++i != object.end()) {
221  os << JPBS::DOT << *i;
222  }
223  }
224 
225  return out << os.str();
226  }
static const char DOT
Separator between PBS values.
Definition: JPBS.hh:33

Member Data Documentation

const char JDATABASE::JPBS::DOT = '.'
static

Separator between PBS values.

Definition at line 33 of file JPBS.hh.

const char JDATABASE::JPBS::SEPARATOR = '/'
static

Separator between PBS and variant.

Definition at line 39 of file JPBS.hh.


The documentation for this struct was generated from the following file: