Bridging class to allow C++ expressions involving lattices. More...
#include <LatticeExprNode.h>
Public Member Functions | |
LatticeExprNode () | |
Default constructor. | |
LatticeExprNode (Int64 constant) | |
Unary constant expression constructors. | |
LatticeExprNode (Int constant) | |
LatticeExprNode (uInt constant) | |
LatticeExprNode (Long constant) | |
LatticeExprNode (Float constant) | |
LatticeExprNode (Double constant) | |
LatticeExprNode (const Complex &constant) | |
LatticeExprNode (const DComplex &constant) | |
LatticeExprNode (Bool constant) | |
LatticeExprNode (const IPosition &) | |
Constructor from an IPosition (containing indices or axes). | |
LatticeExprNode (const Lattice< Float > &lattice) | |
Lattice expression (gets Lattice pixels) constructors. | |
LatticeExprNode (const Lattice< Double > &lattice) | |
LatticeExprNode (const Lattice< Complex > &lattice) | |
LatticeExprNode (const Lattice< DComplex > &lattice) | |
LatticeExprNode (const Lattice< Bool > &lattice) | |
LatticeExprNode (const MaskedLattice< Float > &lattice) | |
LatticeExprNode (const MaskedLattice< Double > &lattice) | |
LatticeExprNode (const MaskedLattice< Complex > &lattice) | |
LatticeExprNode (const MaskedLattice< DComplex > &lattice) | |
LatticeExprNode (const MaskedLattice< Bool > &lattice) | |
LatticeExprNode (const LCRegion ®ion) | |
Create a lattice expression from a region. | |
LatticeExprNode (const Slicer &slicer) | |
LatticeExprNode (const LattRegionHolder ®ion) | |
LatticeExprNode | operator[] (const LatticeExprNode &cond) const |
Masking operator using a condition. | |
LatticeExprNode (const LatticeExprNode &other) | |
Copy constructor (reference semantics). | |
virtual | ~LatticeExprNode () |
Destructor, does nothing. | |
LatticeExprNode & | operator= (const LatticeExprNode &other) |
Assignment (reference semantics). | |
const IPosition & | getIPosition () const |
Get the IPosition. | |
CountedPtr< LELInterface< Float > > | makeFloat () const |
Convert the expression to another data type. | |
CountedPtr< LELInterface < Double > > | makeDouble () const |
CountedPtr< LELInterface < Complex > > | makeComplex () const |
CountedPtr< LELInterface < DComplex > > | makeDComplex () const |
CountedPtr< LELInterface< Bool > > | makeBool () const |
void | eval (LELArray< Float > &result, const Slicer §ion) const |
Evaluate the expression. | |
void | eval (LELArray< Double > &result, const Slicer §ion) const |
void | eval (LELArray< Complex > &result, const Slicer §ion) const |
void | eval (LELArray< DComplex > &result, const Slicer §ion) const |
void | eval (LELArray< Bool > &result, const Slicer §ion) const |
void | evalRef (LELArrayRef< Float > &result, const Slicer §ion) const |
Evaluate the expression. | |
void | evalRef (LELArrayRef< Double > &result, const Slicer §ion) const |
void | evalRef (LELArrayRef< Complex > &result, const Slicer §ion) const |
void | evalRef (LELArrayRef< DComplex > &result, const Slicer §ion) const |
void | evalRef (LELArrayRef< Bool > &result, const Slicer §ion) const |
void | eval (Float &result) const |
Evaluate the expression (in case it is a scalar). | |
void | eval (Double &result) const |
void | eval (Complex &result) const |
void | eval (DComplex &result) const |
void | eval (Bool &result) const |
Float | getFloat () const |
Double | getDouble () const |
Complex | getComplex () const |
DComplex | getDComplex () const |
Bool | getBool () const |
Array< Float > | getArrayFloat () const |
Evaluate the expression (in case it is a constant array). | |
Array< Double > | getArrayDouble () const |
Array< Complex > | getArrayComplex () const |
Array< DComplex > | getArrayDComplex () const |
Array< Bool > | getArrayBool () const |
DataType | dataType () const |
Get the data type of the expression. | |
Bool | isRegion () const |
Is the expression node a region? | |
Bool | isScalar () const |
Is the result of "eval" a scalar? | |
Bool | isMasked () const |
Is the result of "eval" masked? | |
Bool | isInvalidScalar () const |
Holds the node an invalid scalar? | |
const IPosition & | shape () const |
Return the shape of the Lattice including all degenerate axes (ie. | |
const LELAttribute & | getAttribute () const |
Get the attribute object of the expression. | |
Bool | replaceScalarExpr () |
Replace a scalar subexpression by its result. | |
LatticeExprNode (const CountedPtr< LELInterface< Float > > &expr) | |
Make the object from a Counted<LELInterface> pointer. | |
LatticeExprNode (const CountedPtr< LELInterface< Double > > &expr) | |
LatticeExprNode (const CountedPtr< LELInterface< Complex > > &expr) | |
LatticeExprNode (const CountedPtr< LELInterface< DComplex > > &expr) | |
LatticeExprNode (const CountedPtr< LELInterface< Bool > > &expr) | |
Bool | lock (FileLocker::LockType, uInt nattempts) |
Handle locking of the LatticeExpr which is delegated to all of its parts. | |
void | unlock () |
Bool | hasLock (FileLocker::LockType) const |
void | resync () |
Static Public Member Functions | |
static DataType | resultDataType (DataType left, DataType right) |
Determine the resulting data type from the given data types. | |
static LELAttribute | checkArg (const Block< LatticeExprNode > &arg, const Block< Int > &argType, Bool expectArray, Bool matchAxes=True) |
Check the arguments of a function and return the resulting attribute object. | |
Private Member Functions | |
LatticeExprNode (LELInterface< Float > *expr) | |
Make the object from a LELInterface* pointer. | |
LatticeExprNode (LELInterface< Double > *expr) | |
LatticeExprNode (LELInterface< Complex > *expr) | |
LatticeExprNode (LELInterface< DComplex > *expr) | |
LatticeExprNode (LELInterface< Bool > *expr) | |
void | doPrepare () const |
Do the preparation for the evaluation. | |
Static Private Member Functions | |
static Bool | areRegions (const LatticeExprNode &left, const LatticeExprNode &right) |
Test if both operands represent a region. | |
static LatticeExprNode | newNumUnary (LELUnaryEnums::Operation oper, const LatticeExprNode &expr) |
Create a new node for a numerical unary operation. | |
static LatticeExprNode | newNumFunc1D (LELFunctionEnums::Function func, const LatticeExprNode &expr) |
Create a new node for a numerical function with 1 argument. | |
static LatticeExprNode | newRealFunc1D (LELFunctionEnums::Function func, const LatticeExprNode &expr) |
Create a new node for a real numerical function with 1 argument. | |
static LatticeExprNode | newComplexFunc1D (LELFunctionEnums::Function func, const LatticeExprNode &expr) |
Create a new node for a complex numerical function with 1 argument. | |
static LatticeExprNode | newNumReal1D (LELFunctionEnums::Function func, const LatticeExprNode &expr) |
Create a new node for a numerical function with 1 argument that returns a real number. | |
static LatticeExprNode | newNumFunc2D (LELFunctionEnums::Function func, const LatticeExprNode &left, const LatticeExprNode &right) |
Create a new node for a numerical function with 2 arguments. | |
static LatticeExprNode | newNumBinary (LELBinaryEnums::Operation oper, const LatticeExprNode &left, const LatticeExprNode &right) |
Create a new node for a numerical binary operator. | |
static LatticeExprNode | newLogBinary (LELBinaryEnums::Operation oper, const LatticeExprNode &left, const LatticeExprNode &right) |
Create a new node for a logical binary operator. | |
static LatticeExprNode | newBinaryCmp (LELBinaryEnums::Operation oper, const LatticeExprNode &left, const LatticeExprNode &right) |
Create a new node for a comparison binary operator. | |
static Int | makeEqualDim (LatticeExprNode &expr0, LatticeExprNode &expr1) |
Make (if needed and if possible) the expression nodes such that the dimensionalities are equal. | |
Private Attributes | |
Bool | donePrepare_p |
Member variables. | |
DataType | dtype_p |
Bool | isInvalid_p |
IPosition | iposition_p |
const LELAttribute * | pAttr_p |
CountedPtr< LELInterface< Float > > | pExprFloat_p |
CountedPtr< LELInterface < Double > > | pExprDouble_p |
CountedPtr< LELInterface < Complex > > | pExprComplex_p |
CountedPtr< LELInterface < DComplex > > | pExprDComplex_p |
CountedPtr< LELInterface< Bool > > | pExprBool_p |
Friends | |
LatticeExprNode | operator+ (const LatticeExprNode &expr) |
All global functions need to be declared as friends. | |
LatticeExprNode | operator- (const LatticeExprNode &expr) |
LatticeExprNode | operator! (const LatticeExprNode &expr) |
LatticeExprNode | operator+ (const LatticeExprNode &left, const LatticeExprNode &right) |
LatticeExprNode | operator- (const LatticeExprNode &left, const LatticeExprNode &right) |
LatticeExprNode | operator* (const LatticeExprNode &left, const LatticeExprNode &right) |
LatticeExprNode | operator/ (const LatticeExprNode &left, const LatticeExprNode &right) |
LatticeExprNode | operator% (const LatticeExprNode &left, const LatticeExprNode &right) |
LatticeExprNode | operator^ (const LatticeExprNode &left, const LatticeExprNode &right) |
LatticeExprNode | operator== (const LatticeExprNode &left, const LatticeExprNode &right) |
LatticeExprNode | operator> (const LatticeExprNode &left, const LatticeExprNode &right) |
LatticeExprNode | operator>= (const LatticeExprNode &left, const LatticeExprNode &right) |
LatticeExprNode | operator< (const LatticeExprNode &left, const LatticeExprNode &right) |
LatticeExprNode | operator<= (const LatticeExprNode &left, const LatticeExprNode &right) |
LatticeExprNode | operator!= (const LatticeExprNode &left, const LatticeExprNode &right) |
LatticeExprNode | operator&& (const LatticeExprNode &left, const LatticeExprNode &right) |
LatticeExprNode | operator|| (const LatticeExprNode &left, const LatticeExprNode &right) |
LatticeExprNode | sin (const LatticeExprNode &expr) |
LatticeExprNode | sinh (const LatticeExprNode &expr) |
LatticeExprNode | asin (const LatticeExprNode &expr) |
LatticeExprNode | cos (const LatticeExprNode &expr) |
LatticeExprNode | cosh (const LatticeExprNode &expr) |
LatticeExprNode | acos (const LatticeExprNode &expr) |
LatticeExprNode | tan (const LatticeExprNode &expr) |
LatticeExprNode | tanh (const LatticeExprNode &expr) |
LatticeExprNode | atan (const LatticeExprNode &expr) |
LatticeExprNode | exp (const LatticeExprNode &expr) |
LatticeExprNode | log (const LatticeExprNode &expr) |
LatticeExprNode | log10 (const LatticeExprNode &expr) |
LatticeExprNode | sqrt (const LatticeExprNode &expr) |
LatticeExprNode | sign (const LatticeExprNode &expr) |
LatticeExprNode | round (const LatticeExprNode &expr) |
LatticeExprNode | ceil (const LatticeExprNode &expr) |
LatticeExprNode | floor (const LatticeExprNode &expr) |
LatticeExprNode | conj (const LatticeExprNode &expr) |
LatticeExprNode | atan2 (const LatticeExprNode &left, const LatticeExprNode &right) |
LatticeExprNode | pow (const LatticeExprNode &left, const LatticeExprNode &right) |
LatticeExprNode | fmod (const LatticeExprNode &left, const LatticeExprNode &right) |
LatticeExprNode | min (const LatticeExprNode &left, const LatticeExprNode &right) |
LatticeExprNode | max (const LatticeExprNode &left, const LatticeExprNode &right) |
LatticeExprNode | formComplex (const LatticeExprNode &left, const LatticeExprNode &right) |
LatticeExprNode | abs (const LatticeExprNode &expr) |
LatticeExprNode | arg (const LatticeExprNode &expr) |
LatticeExprNode | real (const LatticeExprNode &expr) |
LatticeExprNode | imag (const LatticeExprNode &expr) |
LatticeExprNode | min (const LatticeExprNode &expr) |
LatticeExprNode | max (const LatticeExprNode &expr) |
LatticeExprNode | sum (const LatticeExprNode &expr) |
LatticeExprNode | median (const LatticeExprNode &expr) |
LatticeExprNode | mean (const LatticeExprNode &expr) |
LatticeExprNode | variance (const LatticeExprNode &expr) |
LatticeExprNode | stddev (const LatticeExprNode &expr) |
LatticeExprNode | avdev (const LatticeExprNode &expr) |
LatticeExprNode | fractile (const LatticeExprNode &expr, const LatticeExprNode &fraction) |
LatticeExprNode | fractileRange (const LatticeExprNode &expr, const LatticeExprNode &fraction1, const LatticeExprNode &fraction2) |
LatticeExprNode | fractileRange (const LatticeExprNode &expr, const LatticeExprNode &fraction) |
LatticeExprNode | nelements (const LatticeExprNode &expr) |
LatticeExprNode | ndim (const LatticeExprNode &expr) |
LatticeExprNode | length (const LatticeExprNode &expr, const LatticeExprNode &axis) |
LatticeExprNode | indexin (const LatticeExprNode &axis, const LatticeExprNode &indexFlags) |
LatticeExprNode | rebin (const LatticeExprNode &expr, const LatticeExprNode &bin) |
LatticeExprNode | isNaN (const LatticeExprNode &expr) |
LatticeExprNode | any (const LatticeExprNode &expr) |
LatticeExprNode | all (const LatticeExprNode &expr) |
LatticeExprNode | ntrue (const LatticeExprNode &expr) |
LatticeExprNode | nfalse (const LatticeExprNode &expr) |
LatticeExprNode | mask (const LatticeExprNode &expr) |
LatticeExprNode | value (const LatticeExprNode &expr) |
LatticeExprNode | amp (const LatticeExprNode &left, const LatticeExprNode &right) |
LatticeExprNode | pa (const LatticeExprNode &left, const LatticeExprNode &right) |
LatticeExprNode | spectralindex (const LatticeExprNode &left, const LatticeExprNode &right) |
LatticeExprNode | iif (const LatticeExprNode &condition, const LatticeExprNode &arg1, const LatticeExprNode &arg2) |
LatticeExprNode | replace (const LatticeExprNode &arg1, const LatticeExprNode &arg2) |
LatticeExprNode | toFloat (const LatticeExprNode &expr) |
LatticeExprNode | toDouble (const LatticeExprNode &expr) |
LatticeExprNode | toComplex (const LatticeExprNode &expr) |
LatticeExprNode | toDComplex (const LatticeExprNode &expr) |
LatticeExprNode | toBool (const LatticeExprNode &expr) |
Bridging class to allow C++ expressions involving lattices.
Public interface
The name is derived from the fact that this class provides an expression interface to the user which s/he may use to write C++ expressions involving Lattices. This class actually constructs the nodes of the expression tree, hence its name. It is used by the envelope class LatticeExpr and provides a bridge to the letter classes derived from LELInterface.
This class is part of the interface which allows the C++ programmer to enter mathematical expressions involving Lattices. It is is part of a Letter/envelope scheme. It's actually a bridge between the envelope class (LatticeExpr) and the letter classes (derived from LELInterface) and it exists largely to handle type conversions. In a single type environment, the envelope class could have directly called the letter classes.
The envelope and bridge provide the interface which the programmer sees. The letter classes do the real work and are hidden from the programmer.
All the expression manipulation functionality that the user has access to is viewable in this class; it is here that the operators, functions and constructors are defined. These allow the programmer to write mathematical expressions which involve Lattices. The letter classes take care of the optimal traversal of the Lattice and the memory mangement thereof. Thus the Lattices are iterated through and the expressions evaluated for each chunk (usually a tile shape) of the iteration.
A description of the implementation details of these classes can be found in Note 216
The available functionality is defined by the global friend functions and operators, plus the public constructors. The other public members functions are generally not of interest to the user of this class.
Generally, if one writes an expression such as a.copyData(sin(b))
, the expression is automatically converted first to a LatticeExprNode and then to a LatticeExpr (which is a Lattice) before evaluation occurs. However, it may occur that you wish to build an expression from subexpressions. To do this, you must explcitly create objects of class LatticeExprNode. You cannot manipulate subexpressions of type LatticeExpr<T>. See below for an example.
ArrayLattice<Float> f1(IPosition (2,nx,ny)); ArrayLattice<Float> f2(IPosition (2,nx,ny)); f2.set(2.0); f1.copyData(2*f2+f2);
In this example, the values of the pixels in Lattice f1 are set to the values resulting from the expression "2*f2 + f2" I.e. the expression is evaluated for each pixel in the Lattices
Note that :
1) the Lattice::copyData function is expecting a Lattice argument. 2) LatticeExpr inherits from Lattice and therefore a LatticeExpr object is a valid argument object type 3) The expression in the copyData call is automatically converted to a LatticeExprNode by the constructors and operators in LatticeExprNode 4) The LatticeExprNode object so created is automatically converted to a LatticeExpr by casting functions in LatticeExprNode.
ArrayLattice<Float> f1(IPosition (2,nx,ny)); ArrayLattice<Float> f2(IPosition (2,nx,ny)); ArrayLattice<Double> d(IPosition (2,nx,ny)); ArrayLattice<Complex> c(IPosition (2,nx,ny)); ArrayLattice<Bool> b(IPosition (2,nx,ny)); f2.set(1.0); d.set(2.0); c.set(Complex(2.0,3.0)); b.set(True); f1.copyData( (3.5*f2) + (cos(d)) - (10/min(d,f2)*(-abs(c))*ntrue(b)) - (C::pi) );
In this rather silly example, we fill Lattice "f1" with the result of the expression. The expression shows the use of constants, unary operations, binary operations, 1D and 2D functions. It also shows how mixed types can be handled. The output Lattice is a Float, whereas mixed into the expression are subexpressions involving Float, Double, Complex and Bool Lattices.
ArrayLattice<Float> f1(IPosition (2,nx,ny)); ArrayLattice<Float> f2(IPosition (2,nx,ny)); f2.set(2.0); LatticeExprNode exp1(sin(f2)); LatticeExprNode exp2(pow(f2,2.0)); f1.copyData(exp1+exp2);
In this example, the expression is "sin(f2) + pow(f2,2.0)", but we have put it together from two subexpressions contained in LatticeExprNode objects exp1 and exp2. Again the LatticeExprNode object formed from summing exp1 and exp2 is automatically converted to a LatticeExpr for consumption by copyData
The Lattice expression classes enable the C++ programmer much simpler handling of mathematical expressions involving lattices. In addition, these classes provide the infrastructure on top of which we can build an image calculator for Glish users
Definition at line 440 of file LatticeExprNode.h.
casacore::LatticeExprNode::LatticeExprNode | ( | ) |
Default constructor.
casacore::LatticeExprNode::LatticeExprNode | ( | Int64 | constant | ) |
Unary constant expression constructors.
casacore::LatticeExprNode::LatticeExprNode | ( | Int | constant | ) |
casacore::LatticeExprNode::LatticeExprNode | ( | uInt | constant | ) |
casacore::LatticeExprNode::LatticeExprNode | ( | Long | constant | ) |
casacore::LatticeExprNode::LatticeExprNode | ( | Float | constant | ) |
casacore::LatticeExprNode::LatticeExprNode | ( | Double | constant | ) |
casacore::LatticeExprNode::LatticeExprNode | ( | const Complex & | constant | ) |
casacore::LatticeExprNode::LatticeExprNode | ( | const DComplex & | constant | ) |
casacore::LatticeExprNode::LatticeExprNode | ( | Bool | constant | ) |
casacore::LatticeExprNode::LatticeExprNode | ( | const IPosition & | ) |
Constructor from an IPosition (containing indices or axes).
casacore::LatticeExprNode::LatticeExprNode | ( | const Lattice< Complex > & | lattice | ) |
casacore::LatticeExprNode::LatticeExprNode | ( | const Lattice< DComplex > & | lattice | ) |
casacore::LatticeExprNode::LatticeExprNode | ( | const MaskedLattice< Float > & | lattice | ) |
casacore::LatticeExprNode::LatticeExprNode | ( | const MaskedLattice< Double > & | lattice | ) |
casacore::LatticeExprNode::LatticeExprNode | ( | const MaskedLattice< Complex > & | lattice | ) |
casacore::LatticeExprNode::LatticeExprNode | ( | const MaskedLattice< DComplex > & | lattice | ) |
casacore::LatticeExprNode::LatticeExprNode | ( | const MaskedLattice< Bool > & | lattice | ) |
casacore::LatticeExprNode::LatticeExprNode | ( | const LCRegion & | region | ) |
Create a lattice expression from a region.
It results in a boolean expression node.
casacore::LatticeExprNode::LatticeExprNode | ( | const Slicer & | slicer | ) |
casacore::LatticeExprNode::LatticeExprNode | ( | const LattRegionHolder & | region | ) |
casacore::LatticeExprNode::LatticeExprNode | ( | const LatticeExprNode & | other | ) |
Copy constructor (reference semantics).
virtual casacore::LatticeExprNode::~LatticeExprNode | ( | ) | [virtual] |
Destructor, does nothing.
casacore::LatticeExprNode::LatticeExprNode | ( | const CountedPtr< LELInterface< Float > > & | expr | ) |
Make the object from a Counted<LELInterface> pointer.
Ideally this function is private, but alas it is needed in LELFunction1D, operator==, and more (too many to make them friend).
casacore::LatticeExprNode::LatticeExprNode | ( | const CountedPtr< LELInterface< Double > > & | expr | ) |
casacore::LatticeExprNode::LatticeExprNode | ( | const CountedPtr< LELInterface< Complex > > & | expr | ) |
casacore::LatticeExprNode::LatticeExprNode | ( | const CountedPtr< LELInterface< DComplex > > & | expr | ) |
casacore::LatticeExprNode::LatticeExprNode | ( | const CountedPtr< LELInterface< Bool > > & | expr | ) |
casacore::LatticeExprNode::LatticeExprNode | ( | LELInterface< Float > * | expr | ) | [private] |
Make the object from a LELInterface* pointer.
casacore::LatticeExprNode::LatticeExprNode | ( | LELInterface< Double > * | expr | ) | [private] |
casacore::LatticeExprNode::LatticeExprNode | ( | LELInterface< Complex > * | expr | ) | [private] |
casacore::LatticeExprNode::LatticeExprNode | ( | LELInterface< DComplex > * | expr | ) | [private] |
casacore::LatticeExprNode::LatticeExprNode | ( | LELInterface< Bool > * | expr | ) | [private] |
static Bool casacore::LatticeExprNode::areRegions | ( | const LatticeExprNode & | left, | |
const LatticeExprNode & | right | |||
) | [static, private] |
Test if both operands represent a region.
An exception is thrown if only one of them is a region.
static LELAttribute casacore::LatticeExprNode::checkArg | ( | const Block< LatticeExprNode > & | arg, | |
const Block< Int > & | argType, | |||
Bool | expectArray, | |||
Bool | matchAxes = True | |||
) | [static] |
Check the arguments of a function and return the resulting attribute object.
The matchAxes argument tells if the axes have to match exactly or whether it is possible that one expression is a subset of another (i.e. that axes may be missing).
The expectArray argument tells if the result should be an array which is the case if one of the arguments is an array.
DataType casacore::LatticeExprNode::dataType | ( | ) | const [inline] |
Get the data type of the expression.
Definition at line 681 of file LatticeExprNode.h.
References dtype_p.
void casacore::LatticeExprNode::doPrepare | ( | ) | const [private] |
Do the preparation for the evaluation.
Referenced by isInvalidScalar().
void casacore::LatticeExprNode::eval | ( | Bool & | result | ) | const |
void casacore::LatticeExprNode::eval | ( | DComplex & | result | ) | const |
void casacore::LatticeExprNode::eval | ( | Complex & | result | ) | const |
void casacore::LatticeExprNode::eval | ( | Double & | result | ) | const |
void casacore::LatticeExprNode::eval | ( | Float & | result | ) | const |
Evaluate the expression (in case it is a scalar).
The "eval" and "get*" functions do the same thing, they just have a slightly different interface.
void casacore::LatticeExprNode::eval | ( | LELArray< DComplex > & | result, | |
const Slicer & | section | |||
) | const |
Evaluate the expression.
One can be sure that the result is not a reference to another array. This function should be used by LatticeExpr and other users.
void casacore::LatticeExprNode::evalRef | ( | LELArrayRef< Bool > & | result, | |
const Slicer & | section | |||
) | const [inline] |
Definition at line 651 of file LatticeExprNode.h.
References pExprBool_p.
void casacore::LatticeExprNode::evalRef | ( | LELArrayRef< DComplex > & | result, | |
const Slicer & | section | |||
) | const [inline] |
Definition at line 649 of file LatticeExprNode.h.
References pExprDComplex_p.
void casacore::LatticeExprNode::evalRef | ( | LELArrayRef< Complex > & | result, | |
const Slicer & | section | |||
) | const [inline] |
Definition at line 647 of file LatticeExprNode.h.
References pExprComplex_p.
void casacore::LatticeExprNode::evalRef | ( | LELArrayRef< Double > & | result, | |
const Slicer & | section | |||
) | const [inline] |
Definition at line 645 of file LatticeExprNode.h.
References pExprDouble_p.
void casacore::LatticeExprNode::evalRef | ( | LELArrayRef< Float > & | result, | |
const Slicer & | section | |||
) | const [inline] |
Evaluate the expression.
The result can be a reference to some internal array (in particular to an array in an ArrayLattice object used as a lattice). This function is meant for internal use by the LEL classes and should not be used externally.
Definition at line 643 of file LatticeExprNode.h.
References pExprFloat_p.
Array<Complex> casacore::LatticeExprNode::getArrayComplex | ( | ) | const |
Array<DComplex> casacore::LatticeExprNode::getArrayDComplex | ( | ) | const |
Evaluate the expression (in case it is a constant array).
const LELAttribute& casacore::LatticeExprNode::getAttribute | ( | ) | const [inline] |
Get the attribute object of the expression.
Definition at line 709 of file LatticeExprNode.h.
References pAttr_p.
Bool casacore::LatticeExprNode::getBool | ( | ) | const |
Complex casacore::LatticeExprNode::getComplex | ( | ) | const |
DComplex casacore::LatticeExprNode::getDComplex | ( | ) | const |
Double casacore::LatticeExprNode::getDouble | ( | ) | const |
Float casacore::LatticeExprNode::getFloat | ( | ) | const |
const IPosition& casacore::LatticeExprNode::getIPosition | ( | ) | const |
Bool casacore::LatticeExprNode::hasLock | ( | FileLocker::LockType | ) | const |
Bool casacore::LatticeExprNode::isInvalidScalar | ( | ) | const [inline] |
Holds the node an invalid scalar?
Definition at line 697 of file LatticeExprNode.h.
References donePrepare_p, doPrepare(), and isInvalid_p.
Bool casacore::LatticeExprNode::isMasked | ( | ) | const [inline] |
Is the result of "eval" masked?
Definition at line 693 of file LatticeExprNode.h.
References casacore::LELAttribute::isMasked(), and pAttr_p.
Bool casacore::LatticeExprNode::isRegion | ( | ) | const [inline] |
Is the expression node a region?
Definition at line 685 of file LatticeExprNode.h.
References casacore::LELAttribute::isRegion(), and pAttr_p.
Bool casacore::LatticeExprNode::isScalar | ( | ) | const [inline] |
Is the result of "eval" a scalar?
Definition at line 689 of file LatticeExprNode.h.
References casacore::LELAttribute::isScalar(), and pAttr_p.
Bool casacore::LatticeExprNode::lock | ( | FileLocker::LockType | , | |
uInt | nattempts | |||
) |
Handle locking of the LatticeExpr which is delegated to all of its parts.
CountedPtr<LELInterface<Bool> > casacore::LatticeExprNode::makeBool | ( | ) | const |
CountedPtr<LELInterface<Complex> > casacore::LatticeExprNode::makeComplex | ( | ) | const |
CountedPtr<LELInterface<DComplex> > casacore::LatticeExprNode::makeDComplex | ( | ) | const |
CountedPtr<LELInterface<Double> > casacore::LatticeExprNode::makeDouble | ( | ) | const |
static Int casacore::LatticeExprNode::makeEqualDim | ( | LatticeExprNode & | expr0, | |
LatticeExprNode & | expr1 | |||
) | [static, private] |
Make (if needed and if possible) the expression nodes such that the dimensionalities are equal.
This is only possible if both nodes have a coordinate system. It is done by creating an ExtendLattice object for the node with the lower dimensionality.
CountedPtr<LELInterface<Float> > casacore::LatticeExprNode::makeFloat | ( | ) | const |
Convert the expression to another data type.
static LatticeExprNode casacore::LatticeExprNode::newBinaryCmp | ( | LELBinaryEnums::Operation | oper, | |
const LatticeExprNode & | left, | |||
const LatticeExprNode & | right | |||
) | [static, private] |
Create a new node for a comparison binary operator.
The result has the same data type as the combined input type.
static LatticeExprNode casacore::LatticeExprNode::newComplexFunc1D | ( | LELFunctionEnums::Function | func, | |
const LatticeExprNode & | expr | |||
) | [static, private] |
Create a new node for a complex numerical function with 1 argument.
The result has the same data type as the input.
static LatticeExprNode casacore::LatticeExprNode::newLogBinary | ( | LELBinaryEnums::Operation | oper, | |
const LatticeExprNode & | left, | |||
const LatticeExprNode & | right | |||
) | [static, private] |
Create a new node for a logical binary operator.
The result has the same data type as the combined input type.
static LatticeExprNode casacore::LatticeExprNode::newNumBinary | ( | LELBinaryEnums::Operation | oper, | |
const LatticeExprNode & | left, | |||
const LatticeExprNode & | right | |||
) | [static, private] |
Create a new node for a numerical binary operator.
The result has the same data type as the combined input type.
static LatticeExprNode casacore::LatticeExprNode::newNumFunc1D | ( | LELFunctionEnums::Function | func, | |
const LatticeExprNode & | expr | |||
) | [static, private] |
Create a new node for a numerical function with 1 argument.
The result has the same data type as the input.
static LatticeExprNode casacore::LatticeExprNode::newNumFunc2D | ( | LELFunctionEnums::Function | func, | |
const LatticeExprNode & | left, | |||
const LatticeExprNode & | right | |||
) | [static, private] |
Create a new node for a numerical function with 2 arguments.
The result has the same data type as the combined input type.
static LatticeExprNode casacore::LatticeExprNode::newNumReal1D | ( | LELFunctionEnums::Function | func, | |
const LatticeExprNode & | expr | |||
) | [static, private] |
Create a new node for a numerical function with 1 argument that returns a real number.
static LatticeExprNode casacore::LatticeExprNode::newNumUnary | ( | LELUnaryEnums::Operation | oper, | |
const LatticeExprNode & | expr | |||
) | [static, private] |
Create a new node for a numerical unary operation.
The result has the same data type as the input.
static LatticeExprNode casacore::LatticeExprNode::newRealFunc1D | ( | LELFunctionEnums::Function | func, | |
const LatticeExprNode & | expr | |||
) | [static, private] |
Create a new node for a real numerical function with 1 argument.
The result has the same data type as the input.
LatticeExprNode& casacore::LatticeExprNode::operator= | ( | const LatticeExprNode & | other | ) |
Assignment (reference semantics).
LatticeExprNode casacore::LatticeExprNode::operator[] | ( | const LatticeExprNode & | cond | ) | const |
Masking operator using a condition.
The given boolean expression forms a mask/region for this expression node.
Bool casacore::LatticeExprNode::replaceScalarExpr | ( | ) |
Replace a scalar subexpression by its result.
static DataType casacore::LatticeExprNode::resultDataType | ( | DataType | left, | |
DataType | right | |||
) | [static] |
Determine the resulting data type from the given data types.
An exception is thrown if they are incompatible.
void casacore::LatticeExprNode::resync | ( | ) |
const IPosition& casacore::LatticeExprNode::shape | ( | ) | const [inline] |
Return the shape of the Lattice including all degenerate axes (ie.
axes with a length of one)
Definition at line 705 of file LatticeExprNode.h.
References pAttr_p, and casacore::LELAttribute::shape().
Referenced by casacore::TableExprNodeSet::toArray().
void casacore::LatticeExprNode::unlock | ( | ) |
LatticeExprNode abs | ( | const LatticeExprNode & | expr | ) | [friend] |
LatticeExprNode acos | ( | const LatticeExprNode & | expr | ) | [friend] |
LatticeExprNode all | ( | const LatticeExprNode & | expr | ) | [friend] |
LatticeExprNode amp | ( | const LatticeExprNode & | left, | |
const LatticeExprNode & | right | |||
) | [friend] |
LatticeExprNode any | ( | const LatticeExprNode & | expr | ) | [friend] |
LatticeExprNode arg | ( | const LatticeExprNode & | expr | ) | [friend] |
LatticeExprNode asin | ( | const LatticeExprNode & | expr | ) | [friend] |
LatticeExprNode atan | ( | const LatticeExprNode & | expr | ) | [friend] |
LatticeExprNode atan2 | ( | const LatticeExprNode & | left, | |
const LatticeExprNode & | right | |||
) | [friend] |
LatticeExprNode avdev | ( | const LatticeExprNode & | expr | ) | [friend] |
LatticeExprNode ceil | ( | const LatticeExprNode & | expr | ) | [friend] |
LatticeExprNode conj | ( | const LatticeExprNode & | expr | ) | [friend] |
LatticeExprNode cos | ( | const LatticeExprNode & | expr | ) | [friend] |
LatticeExprNode cosh | ( | const LatticeExprNode & | expr | ) | [friend] |
LatticeExprNode exp | ( | const LatticeExprNode & | expr | ) | [friend] |
LatticeExprNode floor | ( | const LatticeExprNode & | expr | ) | [friend] |
LatticeExprNode fmod | ( | const LatticeExprNode & | left, | |
const LatticeExprNode & | right | |||
) | [friend] |
LatticeExprNode formComplex | ( | const LatticeExprNode & | left, | |
const LatticeExprNode & | right | |||
) | [friend] |
LatticeExprNode fractile | ( | const LatticeExprNode & | expr, | |
const LatticeExprNode & | fraction | |||
) | [friend] |
LatticeExprNode fractileRange | ( | const LatticeExprNode & | expr, | |
const LatticeExprNode & | fraction | |||
) | [friend] |
LatticeExprNode fractileRange | ( | const LatticeExprNode & | expr, | |
const LatticeExprNode & | fraction1, | |||
const LatticeExprNode & | fraction2 | |||
) | [friend] |
LatticeExprNode iif | ( | const LatticeExprNode & | condition, | |
const LatticeExprNode & | arg1, | |||
const LatticeExprNode & | arg2 | |||
) | [friend] |
LatticeExprNode imag | ( | const LatticeExprNode & | expr | ) | [friend] |
LatticeExprNode indexin | ( | const LatticeExprNode & | axis, | |
const LatticeExprNode & | indexFlags | |||
) | [friend] |
LatticeExprNode isNaN | ( | const LatticeExprNode & | expr | ) | [friend] |
LatticeExprNode length | ( | const LatticeExprNode & | expr, | |
const LatticeExprNode & | axis | |||
) | [friend] |
LatticeExprNode log | ( | const LatticeExprNode & | expr | ) | [friend] |
LatticeExprNode log10 | ( | const LatticeExprNode & | expr | ) | [friend] |
LatticeExprNode mask | ( | const LatticeExprNode & | expr | ) | [friend] |
LatticeExprNode max | ( | const LatticeExprNode & | expr | ) | [friend] |
LatticeExprNode max | ( | const LatticeExprNode & | left, | |
const LatticeExprNode & | right | |||
) | [friend] |
LatticeExprNode mean | ( | const LatticeExprNode & | expr | ) | [friend] |
LatticeExprNode median | ( | const LatticeExprNode & | expr | ) | [friend] |
LatticeExprNode min | ( | const LatticeExprNode & | expr | ) | [friend] |
LatticeExprNode min | ( | const LatticeExprNode & | left, | |
const LatticeExprNode & | right | |||
) | [friend] |
LatticeExprNode ndim | ( | const LatticeExprNode & | expr | ) | [friend] |
LatticeExprNode nelements | ( | const LatticeExprNode & | expr | ) | [friend] |
LatticeExprNode nfalse | ( | const LatticeExprNode & | expr | ) | [friend] |
LatticeExprNode ntrue | ( | const LatticeExprNode & | expr | ) | [friend] |
LatticeExprNode operator! | ( | const LatticeExprNode & | expr | ) | [friend] |
LatticeExprNode operator!= | ( | const LatticeExprNode & | left, | |
const LatticeExprNode & | right | |||
) | [friend] |
LatticeExprNode operator% | ( | const LatticeExprNode & | left, | |
const LatticeExprNode & | right | |||
) | [friend] |
LatticeExprNode operator&& | ( | const LatticeExprNode & | left, | |
const LatticeExprNode & | right | |||
) | [friend] |
LatticeExprNode operator* | ( | const LatticeExprNode & | left, | |
const LatticeExprNode & | right | |||
) | [friend] |
LatticeExprNode operator+ | ( | const LatticeExprNode & | left, | |
const LatticeExprNode & | right | |||
) | [friend] |
LatticeExprNode operator+ | ( | const LatticeExprNode & | expr | ) | [friend] |
All global functions need to be declared as friends.
LatticeExprNode operator- | ( | const LatticeExprNode & | left, | |
const LatticeExprNode & | right | |||
) | [friend] |
LatticeExprNode operator- | ( | const LatticeExprNode & | expr | ) | [friend] |
LatticeExprNode operator/ | ( | const LatticeExprNode & | left, | |
const LatticeExprNode & | right | |||
) | [friend] |
LatticeExprNode operator< | ( | const LatticeExprNode & | left, | |
const LatticeExprNode & | right | |||
) | [friend] |
LatticeExprNode operator<= | ( | const LatticeExprNode & | left, | |
const LatticeExprNode & | right | |||
) | [friend] |
LatticeExprNode operator== | ( | const LatticeExprNode & | left, | |
const LatticeExprNode & | right | |||
) | [friend] |
LatticeExprNode operator> | ( | const LatticeExprNode & | left, | |
const LatticeExprNode & | right | |||
) | [friend] |
LatticeExprNode operator>= | ( | const LatticeExprNode & | left, | |
const LatticeExprNode & | right | |||
) | [friend] |
LatticeExprNode operator^ | ( | const LatticeExprNode & | left, | |
const LatticeExprNode & | right | |||
) | [friend] |
LatticeExprNode operator|| | ( | const LatticeExprNode & | left, | |
const LatticeExprNode & | right | |||
) | [friend] |
LatticeExprNode pa | ( | const LatticeExprNode & | left, | |
const LatticeExprNode & | right | |||
) | [friend] |
LatticeExprNode pow | ( | const LatticeExprNode & | left, | |
const LatticeExprNode & | right | |||
) | [friend] |
LatticeExprNode real | ( | const LatticeExprNode & | expr | ) | [friend] |
LatticeExprNode rebin | ( | const LatticeExprNode & | expr, | |
const LatticeExprNode & | bin | |||
) | [friend] |
LatticeExprNode replace | ( | const LatticeExprNode & | arg1, | |
const LatticeExprNode & | arg2 | |||
) | [friend] |
LatticeExprNode round | ( | const LatticeExprNode & | expr | ) | [friend] |
LatticeExprNode sign | ( | const LatticeExprNode & | expr | ) | [friend] |
LatticeExprNode sin | ( | const LatticeExprNode & | expr | ) | [friend] |
LatticeExprNode sinh | ( | const LatticeExprNode & | expr | ) | [friend] |
LatticeExprNode spectralindex | ( | const LatticeExprNode & | left, | |
const LatticeExprNode & | right | |||
) | [friend] |
LatticeExprNode sqrt | ( | const LatticeExprNode & | expr | ) | [friend] |
LatticeExprNode stddev | ( | const LatticeExprNode & | expr | ) | [friend] |
LatticeExprNode sum | ( | const LatticeExprNode & | expr | ) | [friend] |
LatticeExprNode tan | ( | const LatticeExprNode & | expr | ) | [friend] |
LatticeExprNode tanh | ( | const LatticeExprNode & | expr | ) | [friend] |
LatticeExprNode toBool | ( | const LatticeExprNode & | expr | ) | [friend] |
LatticeExprNode toComplex | ( | const LatticeExprNode & | expr | ) | [friend] |
LatticeExprNode toDComplex | ( | const LatticeExprNode & | expr | ) | [friend] |
LatticeExprNode toDouble | ( | const LatticeExprNode & | expr | ) | [friend] |
LatticeExprNode toFloat | ( | const LatticeExprNode & | expr | ) | [friend] |
LatticeExprNode value | ( | const LatticeExprNode & | expr | ) | [friend] |
LatticeExprNode variance | ( | const LatticeExprNode & | expr | ) | [friend] |
Bool casacore::LatticeExprNode::donePrepare_p [private] |
Member variables.
Definition at line 828 of file LatticeExprNode.h.
Referenced by isInvalidScalar().
DataType casacore::LatticeExprNode::dtype_p [private] |
Definition at line 829 of file LatticeExprNode.h.
Referenced by dataType().
Definition at line 831 of file LatticeExprNode.h.
Bool casacore::LatticeExprNode::isInvalid_p [private] |
Definition at line 830 of file LatticeExprNode.h.
Referenced by isInvalidScalar().
const LELAttribute* casacore::LatticeExprNode::pAttr_p [private] |
Definition at line 832 of file LatticeExprNode.h.
Referenced by getAttribute(), isMasked(), isRegion(), isScalar(), and shape().
CountedPtr<LELInterface<Bool> > casacore::LatticeExprNode::pExprBool_p [private] |
Definition at line 837 of file LatticeExprNode.h.
Referenced by evalRef().
CountedPtr<LELInterface<Complex> > casacore::LatticeExprNode::pExprComplex_p [private] |
Definition at line 835 of file LatticeExprNode.h.
Referenced by evalRef().
CountedPtr<LELInterface<DComplex> > casacore::LatticeExprNode::pExprDComplex_p [private] |
Definition at line 836 of file LatticeExprNode.h.
Referenced by evalRef().
Definition at line 834 of file LatticeExprNode.h.
Referenced by evalRef().
Definition at line 833 of file LatticeExprNode.h.
Referenced by evalRef().