DataSource.h
Go to the documentation of this file.
1 /* -*- c++ -*- */
2 
14 #ifndef DataSource_H
15 #define DataSource_H
16 
17 #ifdef _MSC_VER
18 #include <msdevstudio/MSconfig.h>
19 #endif
20 
21 #include "pattern/Observable.h"
22 
23 #include <string>
24 #include <vector>
25 
26 #ifndef _MSC_VER
27 #include <inttypes.h>
28 #endif
29 
30 namespace hippodraw {
31  class Range;
32 
33 
56 {
57 
58  private:
59 
66  std::string m_ds_name;
67 
70  std::string m_title;
71 
74  std::vector<std::string> m_labels;
75 
82  bool m_is_null;
83 
84 protected:
85 
88  mutable std::vector < double > m_array;
89 
96  std::vector < unsigned int > m_shape;
97 
100  std::vector < std::string > m_dups;
101 
104  DataSource ( const std::vector < std::string > & labels );
105 
107  DataSource ( const std::string & name );
108 
114  DataSource ( const char * name );
115 
119  DataSource ( const DataSource & nt);
120 
131  DataSource ( bool dummy );
132 
135  DataSource ();
136 
140  virtual void copyPrivate ( const DataSource & other );
141 
144  virtual void addLabel ( const std::string & label );
145 
149  bool isValidColumn ( unsigned int index ) const;
150 
156  virtual void checkWidth ( const DataSource * source );
157 
158  public:
159 
162  virtual ~DataSource();
163 
167  bool isNull () const;
168 
171  void setName ( const std::string & name );
172 
175  const std::string & getName () const;
176 
182  inline unsigned int columns() const;
183 
186  virtual unsigned int rows () const = 0;
187 
190  virtual bool empty () const = 0;
191 
194  const std::string & title() const;
195 
198  virtual void setTitle ( const std::string & title );
199 
204  bool isValidLabel ( const std::string & label ) const;
205 
212  virtual void throwIfInvalidLabel ( const std::string & label ) const;
213 
217  void throwIfInvalidRowSize ( const std::vector < double > & row );
218 
225  virtual bool setLabelAt ( const std::string & s, unsigned int index );
226 
229  virtual void setLabels ( const std::vector<std::string> & v );
230 
234  virtual double valueAt ( unsigned int row, unsigned int column ) const = 0;
235 
239  virtual double valueAtNoCache ( unsigned int row, unsigned int column ) const;
240 
243  virtual const std::vector < double > &
244  getColumn ( const std::string & name ) const;
245 
248  virtual const std::vector < double > &
249  getColumn ( unsigned int column ) const;
250 
253  virtual const std::vector < double > & getRow ( unsigned int ) const = 0;
254 
257  virtual const std::vector < std::string > & getLabels () const;
258 
263  virtual const std::string & getLabelAt ( unsigned int index ) const;
264 
273  virtual int indexOf ( const std::string & label ) const;
274 
281  virtual void setShape ( std::vector < unsigned int > & shape );
282 
285  virtual const std::vector < unsigned int > & getShape () const;
286 
294  virtual void fillShape ( std::vector < int > & v,
295  unsigned int column ) const;
296 
304  virtual void fillShape ( std::vector < int > & v,
305  const std::string & label ) const;
306 
310  unsigned int getRank () const;
311 
320  virtual void replaceColumn ( const std::string & label,
321  const std::vector < double > & array );
322 
327  virtual void replaceColumn ( unsigned int index,
328  const std::vector < double > & array );
329 
338  virtual void replaceColumn ( const std::string & label,
339  const std::vector < double > & data,
340  const std::vector < intptr_t > & shape );
341 
349  virtual int addColumn ( const std::string & label,
350  const std::vector < double > & data,
351  const std::vector < intptr_t > & shape );
352 
359  virtual int addColumn ( const std::string & label,
360  const std::vector < double > & data );
361 
367  virtual bool fillRange ( unsigned int column, Range & ) const;
368 
372  virtual unsigned int indexOfMaxElement ( unsigned int index ) const;
373 
377  virtual unsigned int indexOfMinElement ( unsigned int index ) const;
378 
379 
383  virtual double sum ( unsigned int column ) const;
384 
389  virtual bool isMultiDimensional ( const std::string & column ) const;
390 
395  virtual bool isUseable ( const std::string & column ) const;
396 
400  virtual bool setReleventIndex( const std::string & column,
401  const std::vector< unsigned int >& index );
402 
405  virtual void clear () = 0;
406 
410  virtual void reserve ( unsigned int count ) = 0;
411 
416  virtual void addRow ( const std::vector < double > & row );
417 
421  virtual void eraseRow ( unsigned int index );
422 
423  virtual double
424  operator [] ( std::vector < unsigned int > & indices ) const = 0;
425 
426 
429  const std::vector < std::string > & getDuplicatedLabels () const;
430 
437  virtual void append ( const DataSource * source );
438 
444  virtual double * doubleArrayAt ( unsigned int row,
445  unsigned int column ) const;
446 
447 
451  virtual void expandIfNeeded( const std::vector<std::string> & labels ) const;
452 
453 };
454 
455 inline
456 unsigned int
458 columns () const
459 {
460  return static_cast < unsigned int > ( m_labels.size() );
461 }
462 
463 } // namespace hippodraw
464 
465 #endif // DataSource_H

Generated for HippoDraw Class Library by doxygen