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;
83 virtual void operator()(
const char *msg) = 0;
100 virtual void geometryChanged(
bool *flag =
nullptr) = 0;
105 virtual void init()
const = 0;
127 virtual void inputDatasetCount(
unsigned nDatasets) = 0;
140 virtual void inputBandCount(
unsigned iDataset,
unsigned nBands) = 0;
142 virtual void inputBandName(
unsigned iDataset,
unsigned iBand,
char const *bandName) = 0;
144 virtual void inputBandNoData(
unsigned iDataset,
unsigned iBand,
double noData) = 0;
176 virtual void inputDatasetSubset(
unsigned const *iDatasets = 0,
unsigned nDatasets = 0) = 0;
188 virtual unsigned outputBandCount()
const = 0;
190 virtual const char * outputBandName(
unsigned iBand)
const = 0;
194 virtual void outputBandNoData(
unsigned iBand,
double noData) = 0;
196 virtual void clearOutputBandNoData(
unsigned iBand) = 0;
198 virtual bool hasOutputBandNoData(
unsigned iBand)
const = 0;
200 virtual double outputBandNoData(
unsigned iBand)
const = 0;
211 virtual void outputBandStats(
unsigned iBand,
size_t& nInvalid,
size_t& nNoData,
size_t& nOverflow)
const = 0;
221 virtual size_t nAttributeAssignmentStats()
const = 0;
230 virtual void attributeAssignmentStats(
unsigned iAttribute,
char const*& name,
size_t& nInvalid,
size_t& nOverflow)
const = 0;
279 virtual double resultDouble(
IGeometry &geom,
280 double const *inRaster = 0,
281 IGeometry const *
const *neighbors = 0,
unsigned nNeighbors = 0,
282 double *outRaster = 0)
const = 0;
285 virtual double resultDouble(
IGeometry const& geom,
286 double const* inRaster = 0,
287 IGeometry const*
const* neighbors = 0,
unsigned nNeighbors = 0,
288 double* outRaster = 0)
const = 0;
308 virtual bool isConstant()
const = 0;
311 virtual bool readsRasters()
const = 0;
313 virtual bool readsRastersByIndexOrLimitedSlice()
const = 0;
315 virtual bool readsNeighbors()
const = 0;
318 virtual unsigned assignmentCount()
const = 0;
320 virtual unsigned statementCount()
const = 0;
324 virtual void print(std::ostream&)
const = 0;
326 virtual const char *text()
const = 0;
336 constexpr ICalculator::WriteAccess operator| (
const ICalculator::WriteAccess &left,
const ICalculator::WriteAccess &right)
338 return static_cast<ICalculator::WriteAccess
>(
static_cast<int>(left) |
static_cast<int>(right));