* A Subarray object is associated with an array, and * is oriented by a set of 1D ranges per dimension over the array * domain. The ranges may overlap. The subarray essentially represents * a new logical domain constructed by choosing cell slabs from * the array domain. This is applicable to both dense and sparse * array domains. * * **Example:** * * Consider the following array with doma
| 273 | * by default will cover the entire domain of that dimension. |
| 274 | */ |
| 275 | class Subarray { |
| 276 | public: |
| 277 | /* ********************************* */ |
| 278 | /* PUBLIC DATA TYPES */ |
| 279 | /* ********************************* */ |
| 280 | /** |
| 281 | * Size type for the number of dimensions of an array and for dimension |
| 282 | * indices. |
| 283 | * |
| 284 | * Note: This should be the same as `Domain::dimension_size_type`. We're |
| 285 | * not including `domain.h`, otherwise we'd use that definition here. |
| 286 | */ |
| 287 | using dimension_size_type = unsigned int; |
| 288 | |
| 289 | /** |
| 290 | * Result size (in bytes) for an attribute/dimension used for |
| 291 | * partitioning. |
| 292 | */ |
| 293 | struct ResultSize { |
| 294 | /** Size for fixed-sized attributes/dimensions or offsets of var-sized |
| 295 | * attributes/dimensions. |
| 296 | */ |
| 297 | double size_fixed_; |
| 298 | |
| 299 | /** Size of values for var-sized attributes/dimensions. */ |
| 300 | double size_var_; |
| 301 | |
| 302 | /** Size of validity values for nullable attributes. */ |
| 303 | double size_validity_; |
| 304 | }; |
| 305 | |
| 306 | /** |
| 307 | * Maximum memory size (in bytes) for an attribute/dimension used for |
| 308 | * partitioning. |
| 309 | */ |
| 310 | struct MemorySize { |
| 311 | /** |
| 312 | * Maximum size of overlapping tiles fetched into memory for |
| 313 | * fixed-sized attributes/dimensions or offsets of var-sized |
| 314 | * attributes/dimensions. |
| 315 | */ |
| 316 | uint64_t size_fixed_; |
| 317 | |
| 318 | /** |
| 319 | * Maximum size of overlapping tiles fetched into memory for |
| 320 | * var-sized attributes/dimensions. |
| 321 | */ |
| 322 | uint64_t size_var_; |
| 323 | |
| 324 | /** |
| 325 | * Maximum size of overlapping validity tiles fetched into memory for |
| 326 | * nullable attributes. |
| 327 | */ |
| 328 | uint64_t size_validity_; |
| 329 | }; |
| 330 | |
| 331 | /** |
| 332 | * Wrapper for optional<tuple<std::string, RangeSetAndSuperset>> for |