26#ifndef LATTICES_LELINTERFACE_H
27#define LATTICES_LELINTERFACE_H
31#include <casacore/casa/aips.h>
32#include <casacore/lattices/LEL/LELAttribute.h>
33#include <casacore/casa/Arrays/IPosition.h>
34#include <casacore/casa/Utilities/DataType.h>
35#include <casacore/casa/IO/FileLocker.h>
41template <
class T>
class LELScalar;
42template <
class T>
class LELArray;
43template <
class T>
class LELArrayRef;
157 const Slicer& section)
const = 0;
159 const Slicer& section)
const;
221#ifndef CASACORE_NO_AUTO_TEMPLATES
222#include <casacore/lattices/LEL/LELUnary.h>
LockType
Define the possible lock types.
This LEL class holds a possible referenced array with a mask.
Bool isScalar() const
Is expression a scalar?
const IPosition & shape() const
What is the shape of the expression?
const LELAttribute & getAttribute() const
Get expression attribute.
virtual Bool hasLock(FileLocker::LockType) const
const IPosition & shape() const
Get the shape of the expression result.
virtual ~LELInterface()
Virtual destructor.
virtual void eval(LELArray< T > &result, const Slicer §ion) const =0
Evaluate the expression and fill the result array.
virtual void evalRef(LELArrayRef< T > &result, const Slicer §ion) const
virtual String className() const =0
Get class name.
virtual Bool lock(FileLocker::LockType, uInt nattempts)
Handle locking/syncing of the parts of a lattice expression.
void setAttr(const LELAttribute &attrib)
Set the expression attributes of this object.
static Bool replaceScalarExpr(std::shared_ptr< LELInterface< T > > &expr)
If the given expression is a valid scalar, replace it by its result.
Bool isScalar() const
Is the result of evaluating this expression a scalar ?
virtual LELScalar< T > getScalar() const =0
Get the result of a scalar subexpression.
virtual Bool prepareScalarExpr()=0
Do further preparations (e.g.
LELArray< T > getArray() const
Get the result of an array subexpression.
String: the storage and methods of handling collections of characters.
this file contains all the compiler specific defines
bool Bool
Define the standard types used by Casacore.