3 #include "DM/IGeometry.hpp"
17 attributes = coordinates << 1,
18 vectors = coordinates | attributes,
19 rasters = attributes << 1,
20 neighbors = rasters << 1,
21 full = (neighbors << 1) - 1
29 attributes = coordinates << 1,
30 rasters = attributes << 1,
31 full = (rasters << 1) - 1
38 arithmetic,
string, unknown
55 static void convertOrNaN(
double &value, RasterDataType type);
67 static ICalculator* New(
const char *text, ReadAccess readAccess, WriteAccess writeAccess);
72 virtual ICalculator* operator*(
double factor)
const = 0;
82 virtual void operator()(
const char *msg) = 0;
99 virtual void geometryChanged(
bool *flag =
nullptr) = 0;
104 virtual void init()
const = 0;
126 virtual void inputDatasetCount(
unsigned nDatasets) = 0;
139 virtual void inputBandCount(
unsigned iDataset,
unsigned nBands) = 0;
141 virtual void inputBandName(
unsigned iDataset,
unsigned iBand,
char const *bandName) = 0;
143 virtual void inputBandNoData(
unsigned iDataset,
unsigned iBand,
double noData) = 0;
175 virtual void inputDatasetSubset(
unsigned const *iDatasets = 0,
unsigned nDatasets = 0) = 0;
187 virtual unsigned outputBandCount()
const = 0;
189 virtual const char * outputBandName(
unsigned iBand)
const = 0;
193 virtual void outputBandNoData(
unsigned iBand,
double noData) = 0;
195 virtual void clearOutputBandNoData(
unsigned iBand) = 0;
197 virtual bool hasOutputBandNoData(
unsigned iBand)
const = 0;
199 virtual double outputBandNoData(
unsigned iBand)
const = 0;
210 virtual void outputBandStats(
unsigned iBand,
size_t& nInvalid,
size_t& nNoData,
size_t& nOverflow)
const = 0;
220 virtual size_t nAttributeAssignmentStats()
const = 0;
229 virtual void attributeAssignmentStats(
unsigned iAttribute,
char const*& name,
size_t& nInvalid,
size_t& nOverflow)
const = 0;
278 virtual double resultDouble(
IGeometry &geom,
279 double const *inRaster = 0,
280 IGeometry const *
const *neighbors = 0,
unsigned nNeighbors = 0,
281 double *outRaster = 0)
const = 0;
284 virtual double resultDouble(
IGeometry const& geom,
285 double const* inRaster = 0,
286 IGeometry const*
const* neighbors = 0,
unsigned nNeighbors = 0,
287 double* outRaster = 0)
const = 0;
307 virtual bool isConstant()
const = 0;
310 virtual bool readsRasters()
const = 0;
312 virtual bool readsRastersByIndexOrLimitedSlice()
const = 0;
314 virtual bool readsNeighbors()
const = 0;
317 virtual unsigned assignmentCount()
const = 0;
319 virtual unsigned statementCount()
const = 0;
323 virtual void print(std::ostream&)
const = 0;
325 virtual const char *text()
const = 0;
335 constexpr ICalculator::WriteAccess operator| (
const ICalculator::WriteAccess &left,
const ICalculator::WriteAccess &right)
337 return static_cast<ICalculator::WriteAccess
>(
static_cast<int>(left) |
static_cast<int>(right));