12#ifndef HDFEOS2ARRAYSWATHDIMMAPFIELD_H
13#define HDFEOS2ARRAYSWATHDIMMAPFIELD_H
15#include <libdap/Array.h>
18#include "HDFEOS2EnumType.h"
20class HDFEOS2ArraySwathDimMapField:
public libdap::Array
23 HDFEOS2ArraySwathDimMapField (
int rank,
const std::string & filename,
bool isgeofile,
const int sdfd,
const int swathfd,
const std::string & gridname,
const std::string & swathname,
const std::string & fieldname,
const std::vector < struct dimmap_entry >&dimmaps, SOType sotype,
const string & n =
"", libdap::BaseType * v =
nullptr):
31 swathname (swathname),
32 fieldname (fieldname),
37 ~ HDFEOS2ArraySwathDimMapField ()
override =
default;
40 int format_constraint (
int *cor,
int *step,
int *edg);
42 libdap::BaseType *ptr_duplicate ()
override
44 return new HDFEOS2ArraySwathDimMapField (*
this);
48 bool read ()
override;
68 std::string swathname;
71 std::string fieldname;
74 std::vector < struct dimmap_entry >dimmaps;
81 int write_dap_data_scale_comp(int32 swid,
const int nelms, std::vector<int32> &offset32, std::vector<int32> &count32, std::vector<int32> &step32);
82 int write_dap_data_disable_scale_comp(int32 swid,
const int nelms, std::vector<int32> &offset32,std::vector<int32> &count32,std::vector<int32> &step32);
84 template <
class T >
int GetFieldValue (int32,
const std::string &,
const std::vector < struct dimmap_entry >&, std::vector < T > &, std::vector<int32>&);
87 template <
class T >
int _expand_dimmap_field (std::vector < T > *pvals, int32 rank, int32 dimsa[],
int dimindex, int32 ddimsize, int32 offset, int32 inc)
const;
90 template <
class T >
bool FieldSubset (T * outlatlon,
const std::vector<int32>&newdims, T * latlon,
const int32 * offset,
const int32 * count,
const int32 * step) ;
92 template <
class T >
bool Field1DSubset (T * outlatlon,
const int majordim, T * latlon,
const int32 * offset,
const int32 * count,
const int32 * step);
95 template <
class T >
bool Field2DSubset (T * outlatlon,
const int majordim,
const int minordim, T * latlon,
const int32 * offset,
const int32 * count,
const int32 * step);
97 template <
class T >
bool Field3DSubset (T * outlatlon,
const std::vector<int32>& newdims, T * latlon,
const int32 * offset,
const int32 * count,
const int32 * step);
101 void close_fileid(
const int32 swid,
const int32 sfid);
104 bool check_num_elems_constraint(
const int num_elems,
const std::vector<int32>&newdims)
const;