• Main Page
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

/home/pascal/depot/filedata/src/hdf5filedata.h

00001 //
00002 // C++ Interface: %{MODULE}
00003 //
00004 // Description:
00005 //
00006 //
00007 // Author: %{AUTHOR} <%{EMAIL}>, (C) %{YEAR}
00008 //
00009 // Copyright: See COPYING file that comes with this distribution
00010 //
00011 //
00012 #ifndef HDF5FILEDATA_H
00013 #define HDF5FILEDATA_H
00014 
00015 #include <string.h>
00016 #include <vector>
00017 #include <map>
00018 #include "filedatareader.h"
00019 #include "hdf5.h"
00020 
00021 using namespace std;
00022 
00026 class HDF5FileData : public FileDataReader{
00027 public:
00028     HDF5FileData(const string &name = string(""), const string &mode = string("r"));
00029 
00030     virtual ~HDF5FileData();
00031 
00032     virtual void* read_data(void* data,
00033                             const char* sds_name,
00034                             int * start=NULL,
00035                             int * stride=NULL,
00036                             int *edges=NULL,
00037                             int rank=-1);
00038 
00039     virtual vector<int> get_dataset_dimension(const string &sds_name);
00040 
00041     virtual void get_dataset_fill_value(const string &sds_name, void* fill_value);
00042 
00043     virtual int get_n_dataset();
00044 
00045     virtual string get_dataset_name(int i);
00046 
00047     virtual int get_dataset_data_type(string sds_name);
00048 
00049     virtual string get_values_attr_dataset(string sds_name,string attr_name);
00050 
00051     virtual bool has_attr_dataset(string sds_name,string attr_name);
00052 
00053     virtual string get_values_attr(string attr_name);
00054 
00055     virtual bool has_attr(string attr_name);
00056 
00060     virtual void close_data_file();
00061 
00065     virtual void open_data_file();
00066 
00067     void get_fillValue(const string &sds_name, void *fillValue);
00068 
00069     void get_scaling(const string &sds_name, float64 &scale, float64 &offset);
00070 
00071 protected:
00072     string name;
00073 
00074     void read_all_dataset();
00075 
00076     hid_t file_id;
00077 
00078     map<string,hid_t> dataset_map;
00079     vector<string>    dataset_vect;
00080     vector<hid_t>     attributes;
00081     map<string,string> attribute;
00082     bool read_dataset_done;
00083 
00084     void free_read_write_allocations( const bool *are_limits_initialized, int *start, int *stride, int *edges );
00085     const bool check_read_write_limits(const char* sds_name, int *start, int *stride, int *edges, const int rank);
00086     void init_read_write_null_input_param(const char* sds_name, int *&start, int *&stride, int *&edges, int &rank, bool * initialized_values);
00087     void read_line(string line, string &tag, string &value);
00088     void read_metadata();
00089 
00090     void trim(string &token);
00091     void split(const string& str, vector<string>& tokens, const string& delimiters );
00092 };
00093 #endif

Generated on Thu Feb 14 2013 17:59:03 for filedata.kdevelop by  doxygen 1.7.1