00001
00002
00003
00004
00005
00006
00008
00010
00011
00012
00013 #ifndef _seHelperDataTable_h
00014 #define _seHelperDataTable_h
00015
00021 #include "seDRMDataTable.h"
00022
00023 namespace sedris {
00024
00025
00126 class EXPORT_DLL seHelperDataTable
00127 {
00128 public:
00129
00131 seHelperDataTable();
00132
00134 seHelperDataTable( const seHelperDataTable& other );
00135
00137 seHelperDataTable& operator=( const seHelperDataTable& other );
00138
00140 virtual ~seHelperDataTable();
00141
00165 void init( seDRMDataTable &data_table, SE_Integer_Positive tpd_index,
00166 const SE_Data_Table_Sub_Extent *extents = NULL );
00167
00173 const SE_Data_Table_Sub_Extent &getFullExtents();
00174
00181 const SE_Data_Table_Sub_Extent &getHelperExtents();
00182
00187 SE_Integer_Unsigned getCellCount();
00188
00193 const SE_Table_Property_Description_Fields &getTPDFields();
00194
00206 const SE_Data_Table_Data &getDTData();
00207
00221 SE_Integer_Unsigned getCellIndex( SE_Short_Integer_Unsigned axes_count,
00222 SE_Integer_Unsigned axis_indices[] );
00223
00233 void getDataValue( SE_Integer_Unsigned cell_index, SE_Single_Value &val );
00234
00243 static void getDataValue( const SE_Data_Table_Data &dtd,
00244 SE_Integer_Unsigned cell_index, SE_Single_Value &val );
00245
00247 static SE_Integer_Unsigned getValueTypeSize(
00248 SE_Data_Table_Data_Value_Type type );
00249
00257 static SE_Integer_Unsigned getTPDCount( seDRMDataTable &data_table );
00258
00265 static SE_Integer_Unsigned getCellCount(
00266 SE_Data_Table_Sub_Extent &extents );
00267
00271 static void allocateExtents( seDRMDataTable &data_table,
00272 SE_Data_Table_Sub_Extent &extents );
00273
00275 static void deallocateExtents( SE_Data_Table_Sub_Extent &extents );
00276
00285 static void allocateDataTableData( SE_Data_Table_Data &dtd );
00286
00288 static void deallocateDataTableData( SE_Data_Table_Data &dtd );
00289
00295 static SE_Single_Value_Type mapDTDVTtoSVT(
00296 SE_Data_Table_Data_Value_Type type );
00297 protected:
00298
00300 void reset();
00301
00303 void copyFrom( const seHelperDataTable& other );
00304
00306 void checkValid()
00307 {
00308 if (!_full_extents.axes_count)
00309 SE_ThrowEx("seHelperDataTable - helper is not initialized");
00310 }
00311
00312 SE_Data_Table_Sub_Extent _extents;
00313 SE_Data_Table_Sub_Extent _full_extents;
00314 SE_Table_Property_Description_Fields _tpd_flds;
00315 SE_Data_Table_Data _dt_data;
00316 SE_Integer_Unsigned *_axis_size;
00317 };
00318
00319
00322 }
00323
00324 #endif // _seHelperDataTable_h