mmcfilters
Public API documentation
Loading...
Searching...
No Matches
ProperPartDomain.hpp
1#pragma once
2
3#include <cstddef>
4#include <limits>
5#include <stdexcept>
6#include <string>
7
8namespace mmcfilters {
9
19 int rows = 0;
21 int columns = 0;
22
27
34 constexpr GridDomain2D(int numRows, int numColumns) noexcept : rows(numRows), columns(numColumns) {}
35
42 [[nodiscard]] std::size_t size(const char* context) const {
43 if (rows <= 0 || columns <= 0) {
44 throw std::invalid_argument(std::string(context) + " requires a non-empty 2D grid.");
45 }
46 const std::size_t gridSize = static_cast<std::size_t>(rows) * static_cast<std::size_t>(columns);
47 if (gridSize > static_cast<std::size_t>(std::numeric_limits<int>::max())) {
48 throw std::invalid_argument(std::string(context) + " exceeds the supported pixel-id range.");
49 }
50 return gridSize;
51 }
52};
53
54} // namespace mmcfilters
Owning result for one computed scalar attribute layout and buffer.
Shape metadata optionally attached to the pixel domain.
constexpr GridDomain2D() noexcept=default
Creates an empty domain.
int columns
Number of grid columns.
std::size_t size(const char *context) const
Returns the number of grid elements after validating the shape.
int rows
Number of grid rows.