56class FONcArray: 
public FONcBaseType {
 
   59    libdap::Array *d_a = 
nullptr;
 
   61    nc_type d_array_type = NC_NAT;
 
   65    int d_actual_ndims = 0;
 
   67    size_t d_nelements = 1;
 
   69    std::vector<FONcDim *> d_dims;
 
   71    std::vector<int> d4_dim_ids{};
 
   73    std::vector<bool>use_d4_dim_ids;
 
   74    std::vector<int> d4_rds_nums;
 
   77    std::vector<int> d_dim_ids{};
 
   80    std::vector<size_t> d_dim_sizes{};
 
   87    bool d_dont_use_it = 
false;
 
   91    std::vector<size_t> d_chunksizes{};
 
   98    std::vector<FONcMap*> d_grid_maps{};
 
  101    bool d4_def_dim = 
false;
 
  107    bool farray_dio_flag = 
false;
 
  111    FONcDim * find_dim(
const std::vector<std::string> &embed, 
const std::string &
name, int64_t size, 
bool ignore_size = 
false);
 
  114    void write_for_nc4_types(
int ncid);
 
  115    void write_for_nc3_types(
int ncid);
 
  116    void write_nc_variable(
int ncid, nc_type var_type);
 
  118    void write_string_array(
int ncid);
 
  119    void write_equal_length_string_array(
int ncid);
 
  121    void define_dio_filters(
int ncid, 
int d_varid);
 
  122    void obtain_dio_filters_order(
const string&,
bool &,
bool &, 
bool &, 
bool &, 
bool &) 
const;
 
  123    void allocate_dio_nc4_def_filters(
int, 
int, 
bool ,
bool , 
bool , 
bool , 
bool, 
const vector<unsigned int> &) 
const; 
 
  124    void write_direct_io_data(
int, 
int);
 
  126    FONcArray() = 
default;      
 
  127    friend class FONcArrayTest;
 
  130    explicit FONcArray(libdap::BaseType *b);
 
  131    FONcArray(libdap::BaseType *b, 
const std::vector<int>&dim_ids, 
const std::vector<bool>&use_dim_ids,
 
  132              const std::vector<int>&rds_nums);
 
  135    virtual void convert(std::vector<std::string> embed, 
bool _dap4=
false, 
bool is_dap4_group=
false) 
override;
 
  136    virtual void define(
int ncid) 
override;
 
  137    virtual void write(
int ncid) 
override;
 
  139    std::string 
name() 
override;
 
  141    virtual libdap::Array *array() { 
return d_a; }
 
  143    virtual void dump(std::ostream &strm) 
const override;
 
  148    size_t obtain_max_chunk_size(
size_t total_size, 
int m_num_chunks, 
int chunk_dim_size, 
int allowed_chunk_dim_size) {
 
  150        int actual_num_chunks = total_size/(chunk_dim_size*chunk_dim_size);
 
  151        if ((actual_num_chunks > m_num_chunks) && (chunk_dim_size < allowed_chunk_dim_size)) 
 
  152            chunk_dim_size = obtain_max_chunk_size(total_size,m_num_chunks,2*chunk_dim_size,allowed_chunk_dim_size);
 
  153        return chunk_dim_size;
 
  160    virtual libdap::AttrType getAttrType(nc_type nct) 
override;
 
  166    bool get_dio_flag()
 const {
return farray_dio_flag; }
 
  167    void set_dio_flag(
bool dio_flag_value = 
true) { farray_dio_flag = dio_flag_value; }
 
  170    static std::vector<FONcDim *> Dimensions;
 
 
virtual void convert(std::vector< std::string > embed, bool _dap4=false, bool is_dap4_group=false) override
Converts the DAP Array to a FONcArray.