Jpp  18.2.1-ARCA-DF-PATCH
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
JGrid.hh
Go to the documentation of this file.
1 #ifndef __JTOOLS__JGRID__
2 #define __JTOOLS__JGRID__
3 
4 #include <istream>
5 #include <ostream>
6 
7 #include "JLang/JClass.hh"
8 
9 #include "JIO/JSerialisable.hh"
10 
12 
13 
14 /**
15  * \author mdejong
16  */
17 
18 namespace JTOOLS {}
19 namespace JPP { using namespace JTOOLS; }
20 
21 namespace JTOOLS {
22 
23  using JIO::JReader;
24  using JIO::JWriter;
25 
26  using JLANG::JClass;
27 
28  template<class JElement_t, class JDistance_t>
29  class JCollection;
30 
31 
32  /**
33  * Simple data structure for an abstract collection of equidistant abscissa values.
34  *
35  * This class implements the JAbstractCollection interface.
36  */
37  template<class JAbscissa_t>
38  struct JGrid :
39  public JAbstractCollection<JAbscissa_t>
40  {
42 
43 
44  /**
45  * Default constructor.
46  */
47  JGrid() :
48  size(0),
49  xmin(),
50  xmax()
51  {}
52 
53 
54  /**
55  * Constructor.
56  *
57  * \param nx number of elements
58  * \param Xmin lower limit
59  * \param Xmax upper limit
60  */
61  JGrid(const int nx,
62  const abscissa_type Xmin,
63  const abscissa_type Xmax) :
64  size(nx),
65  xmin(Xmin),
66  xmax(Xmax)
67  {}
68 
69 
70  /**
71  * Get number of elements.
72  *
73  * \return number of elements
74  */
75  virtual int getSize() const override
76  {
77  return size;
78  }
79 
80 
81  /**
82  * Get abscissa value.
83  *
84  * \param index index
85  * \return abscissa value
86  */
87  virtual abscissa_type getX(int index) const override
88  {
89  return (index == 0 ? xmin : xmin + index * ((xmax - xmin) / (size - 1)));
90  }
91 
92 
93  /**
94  * Get minimal abscissa value.
95  *
96  * \return abscissa value
97  */
98  virtual abscissa_type getXmin() const override
99  {
100  return xmin;
101  }
102 
103 
104  /**
105  * Get maximal abscissa value.
106  *
107  * \return abscissa value
108  */
109  virtual abscissa_type getXmax() const override
110  {
111  return xmax;
112  }
113 
114 
115  /**
116  * Get index of given abscissa value.
117  *
118  * \param x abscissa value
119  * \return index
120  */
122  {
123  return (int) ((size - 1) * (x - xmin) / (xmax - xmin));
124  }
125 
126 
127  /**
128  * Configure collection.
129  *
130  * \param collection collection
131  * \return this grid
132  */
133  template<class JElement_t, class JDistance_t>
135  {
136  collection.configure(*this);
137 
138  return *this;
139  }
140 
141 
142  /**
143  * Binary stream input.
144  *
145  * \param in input stream
146  * \param grid grid
147  * \return input stream
148  */
150  {
151  return in >> grid.size >> grid.xmin >> grid.xmax;
152  }
153 
154 
155  /**
156  * Binary stream output.
157  *
158  * \param out output stream
159  * \param grid grid
160  * \return output stream
161  */
162  friend inline JWriter& operator<<(JWriter& out, const JGrid<JAbscissa_t>& grid)
163  {
164  return out << grid.size << grid.xmin << grid.xmax;
165  }
166 
167 
168  /**
169  * Read grid from input.
170  *
171  * \param in input stream
172  * \param grid grid
173  * \return input stream
174  */
175  friend inline std::istream& operator>>(std::istream& in, JGrid<JAbscissa_t>& grid)
176  {
177  return in >> grid.size >> grid.xmin >> grid.xmax;
178  }
179 
180 
181  /**
182  * Write grid to output.
183  *
184  * \param out output stream
185  * \param grid grid
186  * \return output stream
187  */
188  friend inline std::ostream& operator<<(std::ostream& out, const JGrid<JAbscissa_t>& grid)
189  {
190  return out << grid.size << ' ' << grid.xmin << ' ' << grid.xmax;
191  }
192 
193  protected:
194  int size;
197  };
198 
199 
200  /**
201  * Helper method for JGrid.
202  *
203  * \param nx number of elements
204  * \param Xmin lower limit
205  * \param Xmax upper limit
206  * \return grid
207  */
208  template<class JAbscissa_t>
209  inline JGrid<JAbscissa_t> make_grid(const int nx,
210  const JAbscissa_t Xmin,
211  const JAbscissa_t Xmax)
212  {
213  return JGrid<JAbscissa_t>(nx, Xmin, Xmax);
214  }
215 
216 
217  /**
218  * Helper method to create a grid with a single value.
219  *
220  * \param value value
221  * \return single-valued grid
222  */
223  template<class JAbscissa_t>
224  inline JGrid<JAbscissa_t> make_grid(const JAbscissa_t value)
225  {
226  return JGrid<JAbscissa_t>(1, value, value);
227  }
228 }
229 
230 #endif
JGrid()
Default constructor.
Definition: JGrid.hh:47
Interface for binary output.
const JGrid & operator()(JCollection< JElement_t, JDistance_t > &collection) const
Configure collection.
Definition: JGrid.hh:134
General purpose class for collection of elements, see: &lt;a href=&quot;JTools.PDF&quot;;&gt;Collection of elements...
Definition: JCollection.hh:73
Abstract interface for abscissa values of a collection of elements.
abscissa_type xmin
Definition: JGrid.hh:195
virtual abscissa_type getXmax() const override
Get maximal abscissa value.
Definition: JGrid.hh:109
JArgument< T >::argument_type argument_type
Definition: JClass.hh:82
friend std::istream & operator>>(std::istream &in, JGrid< JAbscissa_t > &grid)
Read grid from input.
Definition: JGrid.hh:175
virtual abscissa_type getXmin() const override
Get minimal abscissa value.
Definition: JGrid.hh:98
virtual abscissa_type getX(int index) const override
Get abscissa value.
Definition: JGrid.hh:87
void configure(const JAbstractCollection< abscissa_type > &bounds)
Configure collection.
Definition: JCollection.hh:332
Interface for binary input.
abscissa_type xmax
Definition: JGrid.hh:196
JGrid(const int nx, const abscissa_type Xmin, const abscissa_type Xmax)
Constructor.
Definition: JGrid.hh:61
Template for generic class types.
Definition: JClass.hh:80
JAbstractCollection< JAbscissa_t >::abscissa_type abscissa_type
Definition: JGrid.hh:41
Simple data structure for an abstract collection of equidistant abscissa values.
Definition: JGrid.hh:38
virtual int getSize() const override
Get number of elements.
Definition: JGrid.hh:75
int getIndex(typename JClass< abscissa_type >::argument_type x) const
Get index of given abscissa value.
Definition: JGrid.hh:121
JGrid< JAbscissa_t > make_grid(const int nx, const JAbscissa_t Xmin, const JAbscissa_t Xmax)
Helper method for JGrid.
Definition: JGrid.hh:209
then fatal Wrong number of arguments fi set_variable DETECTOR $argv[1] set_variable INPUT_FILE $argv[2] eval JPrintDetector a $DETECTOR O IDENTIFIER eval JPrintDetector a $DETECTOR O SUMMARY JAcoustics sh $DETECTOR_ID source JAcousticsToolkit sh CHECK_EXIT_CODE typeset A EMITTERS get_tripods $WORKDIR tripod txt EMITTERS get_transmitters $WORKDIR transmitter txt EMITTERS for EMITTER in
Definition: JCanberra.sh:46
friend JReader & operator>>(JReader &in, JGrid< JAbscissa_t > &grid)
Binary stream input.
Definition: JGrid.hh:149