00001
00002
00014 #ifndef FitsNTuple_H
00015 #define FitsNTuple_H
00016
00017 #include "datasrcs/DataSource.h"
00018
00019 class FitsFile;
00020
00028 class MDL_HIPPOPLOT_API FitsNTuple : public DataSource
00029 {
00030
00031 private:
00032
00035 std::vector < std::vector < double > * > m_data;
00036
00039 FitsFile * m_file;
00040
00044 int m_hdu_num;
00045
00051 FitsNTuple ( );
00052
00053 public:
00054
00057 FitsNTuple ( FitsFile * file );
00058
00061 virtual ~FitsNTuple();
00062
00066 virtual void copy ( const DataSource & );
00067
00070 const FitsFile * getFile () const;
00071
00075 virtual void notifyObservers ( ) const;
00076
00079 virtual unsigned int rows () const;
00080
00083 virtual bool empty () const;
00084
00088 virtual void clear ();
00089
00093 virtual void reserve ( unsigned int count );
00094
00098 virtual void addRow ( const std::vector < double > & row );
00099
00102 virtual double
00103 operator [] ( std::vector < unsigned int > & indices ) const;
00104
00105 virtual double valueAt ( unsigned int row, unsigned int column ) const;
00106
00115 int addColumn ( const std::string & label,
00116 const std::vector < double > & column );
00117
00125 void replaceColumn ( unsigned int index,
00126 const std::vector < double > & data );
00127
00135 void replaceColumn ( const std::string & label,
00136 const std::vector < double > & data );
00137
00140 virtual const std::vector < double > & getRow ( unsigned int index ) const;
00141
00148 virtual void setShape ( std::vector < unsigned int > & shape );
00149
00152 const std::vector < unsigned int > & getShape () const;
00153
00157 unsigned int getRank () const;
00158
00159 virtual bool fillRange ( unsigned int column, Range & ) const;
00160
00161 private:
00162
00165 void initColumns ();
00166
00170 int fillDataCache ( unsigned int column );
00171
00172 };
00173
00174 #endif // FitsNTuple_H