00001 /*************************************************************************** 00002 * Copyright (C) 2005 by Nicolas PASCAL * 00003 * nicolas.pascal@icare.univ-lille1.fr * 00004 * * 00005 * This program is free software; you can redistribute it and/or modify * 00006 * it under the terms of the GNU General Public License as published by * 00007 * the Free Software Foundation; either version 2 of the License, or * 00008 * (at your option) any later version. * 00009 * * 00010 * This program is distributed in the hope that it will be useful, * 00011 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 00012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 00013 * GNU General Public License for more details. * 00014 * * 00015 * You should have received a copy of the GNU General Public License * 00016 * along with this program; if not, write to the * 00017 * Free Software Foundation, Inc., * 00018 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * 00019 ***************************************************************************/ 00020 #ifndef PARASOLLEADER_H 00021 #define PARASOLLEADER_H 00022 00023 #define PARASOLLEADER_TEST 0 00024 00025 #include "parasolfilereader.h" 00026 00027 #include <string> 00028 using namespace std; 00029 00037 class PARASOLLeader : public PARASOLFileReader{ 00038 friend class PARASOLFileData; 00039 public: 00040 LeaderFileDescriptorRecord *leader_file_descriptor; 00041 protected: 00042 string filename; 00043 PARASOLLeaderFormat *leader_file_format; 00044 00045 // record storage classes 00046 HeaderRecord *header; 00047 SpatioTemporalCharacteristicsRecord *spatio_temp_char; 00048 InstrumentSettingParametersRecord *instrument_setting_param; 00049 TechnologicalParametersRecord *techno_param; 00050 DataProcessingParametersRecord *data_processing_param; 00051 ScalingFactorsRecord *scaling_factors; 00052 AnnotationsRecord *annotations; 00053 00058 virtual const PARASOLFileFormat* get_leader_file_format(){ 00059 return leader_file_format; 00060 }; 00065 const bool is_record_loaded(const Record &rec); 00070 void free_record(const Record &rec); 00074 void free_records(); 00080 PARASOLFileRecord* init_record(const Record &rec); 00087 const int get_record_offset(const Record &rec); 00098 const int get_entry_offset( const Record rec, const int entry_idx, const int group_idx=-1, const int subgroup_index=-1, const int val_index=-1); 00107 // const int get_entry_offset( const Record rec, const int entry_idx, const vector <int>& i_val); 00115 // const int get_entry_group_size(const Record rec, const int entry_idx); 00122 // const int get_entry_group_nb_val(const Record rec, const int entry_idx) const; 00129 vector <EntryBlock> get_entry_block (const Record rec, const int entry_idx) const; 00135 const RecordFormat* get_record_format(const Record &rec); 00141 PARASOLFileRecord* get_record(const Record &rec); 00142 public: 00143 PARASOLLeader( const string leader_filename =""); 00144 virtual ~PARASOLLeader(); 00148 void print_leader_file_descriptor(); 00152 void print_spatio_temp_char(); 00156 void print_header(); 00160 void print_instr_setting_param(); 00164 void print_scaling_factors(); 00168 void print_techno_param(); 00169 }; 00170 00171 #endif