Jpp
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
JContainer.hh
Go to the documentation of this file.
1 #ifndef __JEEP__JCONTAINER__
2 #define __JEEP__JCONTAINER__
3 
4 #include <istream>
5 #include <ostream>
6 #include <iomanip>
7 #include <vector>
8 
9 #include "JSystem/JStat.hh"
10 #include "JLang/JStringStream.hh"
11 #include "Jeep/JComment.hh"
12 
13 
14 /**
15  * \file
16  *
17  * Container I/O.
18  * \author mdejong
19  */
20 namespace JEEP {}
21 namespace JPP { using namespace JEEP; }
22 
23 namespace JEEP {
24 
25  /**
26  * Auxiliary container for detector elements.
27  */
28  template<class T>
29  struct JContainer :
30  public std::vector<T>
31  {
36 
37 
38  /**
39  * Read container from input.
40  *
41  * \param in input stream
42  * \param container container
43  * \return input stream
44  */
45  friend inline std::istream& operator>>(std::istream& in, JContainer& container)
46  {
47  using namespace JPP;
48 
49  JStringStream is(in);
50 
51  if (getFileStatus(is.str().c_str())) {
52  is.load();
53  }
54 
55  is >> container.comment;
56 
57  for (T value; is >> value; ) {
58  container.push_back(value);
59  }
60 
61  return in;
62  }
63 
64 
65  /**
66  * Write container to output.
67  *
68  * \param out output stream
69  * \param container container
70  * \return output stream
71  */
72  friend inline std::ostream& operator<<(std::ostream& out, const JContainer& container)
73  {
74  using namespace std;
75 
76  out << container.comment;
77 
78  for (JContainer::const_iterator i = container.begin(); i != container.end(); ++i) {
79  out << *i << endl;
80  }
81 
82  return out;
83  }
84 
86  };
87 }
88 
89 #endif
friend std::istream & operator>>(std::istream &in, JContainer &container)
Read container from input.
Definition: JContainer.hh:45
std::vector< T >::const_reverse_iterator const_reverse_iterator
Definition: JContainer.hh:34
std::vector< T >::const_iterator const_iterator
Definition: JContainer.hh:32
esac print_variable DETECTOR INPUT_FILE OUTPUT_FILE CDF for TYPE in
Definition: JSirene.sh:45
is
Definition: JDAQCHSM.chsm:167
Auxiliary container for detector elements.
Definition: JContainer.hh:29
do set_variable OUTPUT_DIRECTORY $WORKDIR T
std::vector< T >::reverse_iterator reverse_iterator
Definition: JContainer.hh:35
static JStat getFileStatus
Function object for file status.
Definition: JStat.hh:173
Auxiliary class for comment.
Definition: JComment.hh:29
JComment comment
Definition: JContainer.hh:85
std::vector< T >::iterator iterator
Definition: JContainer.hh:33
friend std::ostream & operator<<(std::ostream &out, const JContainer &container)
Write container to output.
Definition: JContainer.hh:72
File status.