28 #ifndef TABLES_EXPRNODE_H 29 #define TABLES_EXPRNODE_H 32 #include <casacore/casa/aips.h> 33 #include <casacore/tables/TaQL/ExprNodeRep.h> 34 #include <casacore/tables/TaQL/ExprRange.h> 35 #include <casacore/tables/TaQL/ExprFuncNode.h> 36 #include <casacore/tables/TaQL/ExprConeNode.h> 37 #include <casacore/tables/TaQL/TaQLStyle.h> 38 #include <casacore/casa/Utilities/DataType.h> 39 #include <casacore/casa/BasicSL/Complex.h> 50 class TableExprNodeSet;
51 template<
class T>
class Block;
52 template<
class T>
class Array;
70 TableExprNode
operator+ (
const TableExprNode& left,
71 const TableExprNode& right);
72 TableExprNode
operator- (
const TableExprNode& left,
73 const TableExprNode& right);
74 TableExprNode
operator* (
const TableExprNode& left,
75 const TableExprNode& right);
76 TableExprNode
operator/ (
const TableExprNode& left,
77 const TableExprNode& right);
78 TableExprNode
operator% (
const TableExprNode& left,
79 const TableExprNode& right);
80 TableExprNode
operator& (
const TableExprNode& left,
81 const TableExprNode& right);
82 TableExprNode
operator| (
const TableExprNode& left,
83 const TableExprNode& right);
84 TableExprNode
operator^ (
const TableExprNode& left,
85 const TableExprNode& right);
90 TableExprNode
operator== (
const TableExprNode& left,
91 const TableExprNode& right);
92 TableExprNode
operator!= (
const TableExprNode& left,
93 const TableExprNode& right);
96 TableExprNode
operator>= (
const TableExprNode& left,
97 const TableExprNode& right);
98 TableExprNode
operator> (
const TableExprNode& left,
99 const TableExprNode& right);
100 TableExprNode
operator<= (
const TableExprNode& left,
101 const TableExprNode& right);
102 TableExprNode
operator< (
const TableExprNode& left,
103 const TableExprNode& right);
111 TableExprNode
operator&& (
const TableExprNode& left,
112 const TableExprNode& right);
113 TableExprNode
operator|| (
const TableExprNode& left,
114 const TableExprNode& right);
126 TableExprNode
near (
const TableExprNode& left,
127 const TableExprNode& right);
128 TableExprNode
near (
const TableExprNode& left,
129 const TableExprNode& right,
130 const TableExprNode& tolerance);
131 TableExprNode
nearAbs (
const TableExprNode& left,
132 const TableExprNode& right);
133 TableExprNode
nearAbs (
const TableExprNode& left,
134 const TableExprNode& right,
135 const TableExprNode& tolerance);
144 TableExprNode
angdist (
const TableExprNode& pos1,
145 const TableExprNode& pos2);
149 TableExprNode
angdistx (
const TableExprNode& pos1,
150 const TableExprNode& pos2);
162 TableExprNode
cones (
const TableExprNode& sourcePos,
163 const TableExprNode&
cones);
166 TableExprNode
anyCone (
const TableExprNode& sourcePos,
167 const TableExprNode&
cones);
172 TableExprNode
findCone (
const TableExprNode& sourcePos,
173 const TableExprNode&
cones);
181 TableExprNode
cones (
const TableExprNode& sourcePos,
182 const TableExprNode& conePos,
183 const TableExprNode& radii);
184 TableExprNode
anyCone (
const TableExprNode& sourcePos,
185 const TableExprNode& conePos,
186 const TableExprNode& radii);
187 TableExprNode
findCone (
const TableExprNode& sourcePos,
188 const TableExprNode& conePos,
189 const TableExprNode& radii);
195 TableExprNode
sin (
const TableExprNode& node);
196 TableExprNode
sinh (
const TableExprNode& node);
197 TableExprNode
cos (
const TableExprNode& node);
198 TableExprNode
cosh (
const TableExprNode& node);
199 TableExprNode
exp (
const TableExprNode& node);
200 TableExprNode
log (
const TableExprNode& node);
201 TableExprNode
log10 (
const TableExprNode& node);
202 TableExprNode
pow (
const TableExprNode& x,
const TableExprNode&
exp);
203 TableExprNode
square (
const TableExprNode& node);
204 TableExprNode
cube (
const TableExprNode& node);
205 TableExprNode
sqrt (
const TableExprNode& node);
206 TableExprNode
norm (
const TableExprNode& node);
213 TableExprNode
asin (
const TableExprNode& node);
214 TableExprNode
acos (
const TableExprNode& node);
215 TableExprNode
atan (
const TableExprNode& node);
216 TableExprNode
atan2 (
const TableExprNode& y,
217 const TableExprNode& x);
218 TableExprNode
tan (
const TableExprNode& node);
219 TableExprNode
tanh (
const TableExprNode& node);
220 TableExprNode
sign (
const TableExprNode& node);
221 TableExprNode
round (
const TableExprNode& node);
222 TableExprNode
ceil (
const TableExprNode& node);
223 TableExprNode
abs (
const TableExprNode& node);
224 TableExprNode
floor (
const TableExprNode& node);
225 TableExprNode
fmod (
const TableExprNode& x,
226 const TableExprNode& y);
231 TableExprNode
strlength (
const TableExprNode& node);
232 TableExprNode
upcase (
const TableExprNode& node);
233 TableExprNode
downcase (
const TableExprNode& node);
234 TableExprNode
capitalize(
const TableExprNode& node);
235 TableExprNode
trim (
const TableExprNode& node);
236 TableExprNode
ltrim (
const TableExprNode& node);
237 TableExprNode
rtrim (
const TableExprNode& node);
238 TableExprNode
substr (
const TableExprNode& str,
239 const TableExprNode& pos);
240 TableExprNode
substr (
const TableExprNode& str,
241 const TableExprNode& pos,
242 const TableExprNode& npos);
243 TableExprNode
replace (
const TableExprNode& str,
244 const TableExprNode& patt);
245 TableExprNode
replace (
const TableExprNode& str,
246 const TableExprNode& patt,
247 const TableExprNode& repl);
255 TableExprNode
regex (
const TableExprNode& node);
256 TableExprNode
pattern (
const TableExprNode& node);
257 TableExprNode
sqlpattern (
const TableExprNode& node);
264 TableExprNode
datetime (
const TableExprNode& node);
265 TableExprNode
mjdtodate (
const TableExprNode& node);
266 TableExprNode
mjd (
const TableExprNode& node);
267 TableExprNode
date (
const TableExprNode& node);
268 TableExprNode
year (
const TableExprNode& node);
269 TableExprNode
month (
const TableExprNode& node);
270 TableExprNode
day (
const TableExprNode& node);
271 TableExprNode
cmonth (
const TableExprNode& node);
272 TableExprNode
weekday (
const TableExprNode& node);
273 TableExprNode
cdow (
const TableExprNode& node);
274 TableExprNode
ctodt (
const TableExprNode& node);
275 TableExprNode
cdate (
const TableExprNode& node);
276 TableExprNode
ctime (
const TableExprNode& node);
277 TableExprNode
week (
const TableExprNode& node);
278 TableExprNode
time (
const TableExprNode& node);
284 TableExprNode
hms (
const TableExprNode& node);
285 TableExprNode
dms (
const TableExprNode& node);
286 TableExprNode
hdms (
const TableExprNode& node);
292 TableExprNode
toString (
const TableExprNode& node);
293 TableExprNode
toString (
const TableExprNode& node,
294 const TableExprNode& format);
299 TableExprNode
isNaN (
const TableExprNode& node);
303 TableExprNode
isFinite (
const TableExprNode& node);
310 TableExprNode
min (
const TableExprNode& a,
const TableExprNode& b);
311 TableExprNode
max (
const TableExprNode& a,
const TableExprNode& b);
316 TableExprNode
conj (
const TableExprNode& node);
320 TableExprNode
real (
const TableExprNode& node);
324 TableExprNode
imag (
const TableExprNode& node);
327 TableExprNode
integer (
const TableExprNode& node);
332 TableExprNode
amplitude (
const TableExprNode& node);
337 TableExprNode
phase (
const TableExprNode& node);
341 TableExprNode
arg (
const TableExprNode& node);
346 const TableExprNode&
imag);
351 TableExprNode
sum (
const TableExprNode&
array);
359 TableExprNode
min (
const TableExprNode&
array);
360 TableExprNode
max (
const TableExprNode&
array);
361 TableExprNode
mean (
const TableExprNode&
array);
364 TableExprNode
avdev (
const TableExprNode&
array);
365 TableExprNode
rms (
const TableExprNode&
array);
368 const TableExprNode& fraction);
372 TableExprNode
any (
const TableExprNode&
array);
373 TableExprNode
all (
const TableExprNode&
array);
374 TableExprNode
ntrue (
const TableExprNode&
array);
383 TableExprNode
sums (
const TableExprNode&
array,
384 const TableExprNodeSet& collapseAxes);
386 const TableExprNodeSet& collapseAxes);
388 const TableExprNodeSet& collapseAxes);
389 TableExprNode
mins (
const TableExprNode&
array,
390 const TableExprNodeSet& collapseAxes);
391 TableExprNode
maxs (
const TableExprNode&
array,
392 const TableExprNodeSet& collapseAxes);
393 TableExprNode
means (
const TableExprNode&
array,
394 const TableExprNodeSet& collapseAxes);
396 const TableExprNodeSet& collapseAxes);
398 const TableExprNodeSet& collapseAxes);
400 const TableExprNodeSet& collapseAxes);
401 TableExprNode
rmss (
const TableExprNode&
array,
402 const TableExprNodeSet& collapseAxes);
404 const TableExprNodeSet& collapseAxes);
406 const TableExprNode& fraction,
407 const TableExprNodeSet& collapseAxes);
408 TableExprNode
anys (
const TableExprNode&
array,
409 const TableExprNodeSet& collapseAxes);
410 TableExprNode
alls (
const TableExprNode&
array,
411 const TableExprNodeSet& collapseAxes);
413 const TableExprNodeSet& collapseAxes);
415 const TableExprNodeSet& collapseAxes);
422 const TableExprNodeSet& halfBoxWidth);
424 const TableExprNodeSet& halfBoxWidth);
426 const TableExprNodeSet& halfBoxWidth);
428 const TableExprNodeSet& halfBoxWidth);
430 const TableExprNodeSet& halfBoxWidth);
432 const TableExprNodeSet& halfBoxWidth);
434 const TableExprNodeSet& halfBoxWidth);
436 const TableExprNodeSet& halfBoxWidth);
438 const TableExprNodeSet& halfBoxWidth);
440 const TableExprNodeSet& halfBoxWidth);
445 TableExprNode
array (
const TableExprNode& values,
446 const TableExprNodeSet&
shape);
452 const TableExprNode& axes);
463 TableExprNode
ndim (
const TableExprNode&
array);
468 TableExprNode
shape (
const TableExprNode&
array);
475 TableExprNode
iif (
const TableExprNode& condition,
476 const TableExprNode& arg1,
477 const TableExprNode& arg2);
986 void show (ostream&)
const;
1314 left, right, tolerance);
1327 left, right, tolerance);
1364 sourcePos, conePos, radii);
1371 sourcePos, conePos, radii);
1378 sourcePos, conePos, radii);
1840 array, fraction, axes);
1870 node, halfBoxWidth);
1876 node, halfBoxWidth);
1882 node, halfBoxWidth);
1888 node, halfBoxWidth);
1894 node, halfBoxWidth);
1900 node, halfBoxWidth);
1906 node, halfBoxWidth);
1912 node, halfBoxWidth);
1918 node, halfBoxWidth);
1924 node, halfBoxWidth);
1930 node, halfBoxWidth);
1936 node, halfBoxWidth);
1942 node, halfBoxWidth);
1948 node, halfBoxWidth);
1954 node, halfBoxWidth);
1960 node, halfBoxWidth);
1966 node, halfBoxWidth);
1972 node, halfBoxWidth);
1978 node, halfBoxWidth);
1984 node, halfBoxWidth);
2024 condition, arg1, arg2);
friend TableExprNode runningMax(const TableExprNode &array)
Array< Int64 > getIntAS(const TableExprId &id) const
LatticeExprNode log10(const LatticeExprNode &expr)
friend TableExprNode norm(const TableExprNode &node)
friend TableExprNode cones(const TableExprNode &sourcePos, const TableExprNode &cones)
Cone search; test if the position of a source is inside a cone.
friend TableExprNode ceil(const TableExprNode &node)
friend TableExprNode year(const TableExprNode &node)
virtual Bool isDefined(const TableExprId &id)
Is the value in the given row defined? The default implementation returns True.
Array< String > getArrayString(const TableExprId &id) const
friend TableExprNode operator<(const TableExprNode &left, const TableExprNode &right)
friend TableExprNode ntrues(const TableExprNode &array, const TableExprNodeSet &collapseAxes)
Array< Double > getArrayDouble(const TableExprId &id) const
long long Int64
Define the extra non-standard types used by Casacore (like proposed uSize, Size)
virtual Array< String > getArrayString(const TableExprId &id)
TableExprNode dms(const TableExprNode &node)
friend TableExprNode month(const TableExprNode &node)
TableExprNode boxedStddev(const TableExprNode &node, const TableExprNodeSet &halfBoxWidth)
TableExprNodeRep * newBitOr(TableExprNodeRep *right) const
TableExprNode anyCone(const TableExprNode &sourcePos, const TableExprNode &cones)
The result is always a Bool scalar telling if any cone contains the source.
TableExprNode transpose(const TableExprNode &array)
Transpose all axes of an array.
TableExprNodeRep * newOR(TableExprNodeRep *right) const
return angles as dms strings
friend TableExprNode sin(const TableExprNode &node)
Transcendental functions that can be applied to essentially all numeric nodes containing scalars or a...
Array< Int64 > getArrayInt(const TableExprId &id) const
TableExprNodeRep * newBitXor(TableExprNodeRep *right) const
TableExprNode alls(const TableExprNode &array, const TableExprNodeSet &collapseAxes)
virtual Array< uInt > getColumnuInt(const Vector< uInt > &rownrs)
friend TableExprNode mjdtodate(const TableExprNode &node)
Array< DComplex > getDComplexAS(const TableExprId &id)
LatticeExprNode log(const LatticeExprNode &expr)
friend TableExprNode runningRms(const TableExprNode &array)
friend TableExprNode cdate(const TableExprNode &node)
friend TableExprNode cosh(const TableExprNode &node)
friend TableExprNode rmss(const TableExprNode &array, const TableExprNodeSet &collapseAxes)
LatticeExprNode arg(const LatticeExprNode &expr)
TableExprNode means(const TableExprNode &array, const TableExprNodeSet &collapseAxes)
TableExprNode runningRms(const TableExprNode &array, const TableExprNodeSet &halfBoxWidth)
friend TableExprNode tanh(const TableExprNode &node)
TableExprNode downcase(const TableExprNode &node)
friend TableExprNode means(const TableExprNode &array, const TableExprNodeSet &collapseAxes)
LatticeExprNode median(const LatticeExprNode &expr)
for Int or Double returning Double
friend TableExprNode day(const TableExprNode &node)
Array< DComplex > getColumnDComplex(const Vector< uInt > &rownrs) const
TableExprNode time(const TableExprNode &node)
for any array returning Bool scalar
virtual Array< Bool > getColumnBool(const Vector< uInt > &rownrs)
Get the value of the expression evaluated for the entire column.
friend TableExprNode runningMin(const TableExprNode &array)
friend TableExprNode operator &(const TableExprNode &left, const TableExprNode &right)
for Bool array returning Bool
std::complex< Float > Complex
bool operator==(const std11_allocator< T > &, const std11_allocator< T > &)
Main interface class to a read/write table.
LatticeExprNode operator/(const LatticeExprNode &left, const LatticeExprNode &right)
TableExprNode runningVariance(const TableExprNode &array, const TableExprNodeSet &halfBoxWidth)
const TableExprNodeRep * getNodeRep() const
returns const pointer to the representation-object of it
other functions, implemented in derived class
friend TableExprNode cos(const TableExprNode &node)
friend TableExprNode ndim(const TableExprNode &array)
friend TableExprNode downcase(const TableExprNode &node)
T product(const TableVector< T > &tv)
friend TableExprNode any(const TableExprNode &array)
virtual Array< MVTime > getArrayDate(const TableExprId &id)
LatticeExprNode imag(const LatticeExprNode &expr)
TableExprNode variances(const TableExprNode &array, const TableExprNodeSet &collapseAxes)
Bool isResultDefined(const TableExprId &id) const
Is the result value defined? Normally it is, but not for a column with an undefined value...
friend TableExprNode operator|(const TableExprNode &left, const TableExprNode &right)
friend TableExprNode datetime(const TableExprNode &node)
Functions for date-values.
friend TableExprNode variance(const TableExprNode &array)
Array< Short > getColumnShort(const Vector< uInt > &rownrs) const
bool operator!=(const std11_allocator< T > &, const std11_allocator< T > &)
TableExprNode array(const TableExprNode &values, const TableExprNodeSet &shape)
Create an array of the given shape and fill it with the values.
Class to hold multiple table expression nodes.
LatticeExprNode sum(const LatticeExprNode &expr)
LatticeExprNode max(const LatticeExprNode &left, const LatticeExprNode &right)
TableExprNodeRep * newTimes(TableExprNodeRep *right) const
TableExprNode operator-() const
TableExprNode weekday(const TableExprNode &node)
Handle class for a table column expression tree.
LatticeExprNode operator%(const LatticeExprNode &left, const LatticeExprNode &right)
friend TableExprNode atan(const TableExprNode &node)
TableExprNode runningAll(const TableExprNode &array, const TableExprNodeSet &halfBoxWidth)
friend TableExprNode fmod(const TableExprNode &x, const TableExprNode &y)
TableExprNode phase(const TableExprNode &node)
The phase (i.e.
virtual MVTime getDate(const TableExprId &id)
TableExprNodeRep * newAND(TableExprNodeRep *right) const
friend TableExprNode median(const TableExprNode &array)
friend TableExprNode nelements(const TableExprNode &array)
Functions operating on any scalar or array resulting in a Double scalar.
TableExprNode ltrim(const TableExprNode &node)
static TableExprNode newRandomNode(const Table &table)
Create rand() function node.
Bool near(const GaussianBeam &left, const GaussianBeam &other, const Double relWidthTol, const Quantity &absPaTol)
friend TableExprNode runningAny(const TableExprNode &array)
friend TableExprNode findCone(const TableExprNode &sourcePos, const TableExprNode &cones)
The sourcePos can contain multiple sources.
friend TableExprNode log(const TableExprNode &node)
LatticeExprNode ntrue(const LatticeExprNode &expr)
friend TableExprNode replace(const TableExprNode &str, const TableExprNode &patt)
virtual Int64 getInt(const TableExprId &id)
friend TableExprNode amplitude(const TableExprNode &node)
The amplitude (i.e.
friend TableExprNode pattern(const TableExprNode &node)
void show(ostream &) const
Show the tree.
friend TableExprNode abs(const TableExprNode &node)
TableExprNodeRep * getRep()
returns non-const pointer to the representation-object of it
Array< uChar > getColumnuChar(const Vector< uInt > &rownrs) const
Array< Double > getDoubleAS(const TableExprId &id)
virtual Array< Double > getColumnDouble(const Vector< uInt > &rownrs)
virtual Array< uShort > getColumnuShort(const Vector< uInt > &rownrs)
friend TableExprNode isFinite(const TableExprNode &node)
Function to test if a scalar or array is finite.
friend TableExprNode operator<=(const TableExprNode &left, const TableExprNode &right)
TableExprNode mins(const TableExprNode &array, const TableExprNodeSet &collapseAxes)
virtual Array< Float > getColumnFloat(const Vector< uInt > &rownrs)
uInt nrow() const
Get the number of rows in the table associated with this expression.
friend TableExprNode runningVariance(const TableExprNode &array)
LatticeExprNode fractile(const LatticeExprNode &expr, const LatticeExprNode &fraction)
Determine the value of the element at the part fraction from the beginning of the given lattice...
void adaptUnit(const Unit &)
Adapt the unit of the expression to the given unit (if not empty).
TableExprNode maxs(const TableExprNode &array, const TableExprNodeSet &collapseAxes)
angular distance returning radians
TableExprNode year(const TableExprNode &node)
Bool checkTableSize(const Table &table, Bool canBeConst) const
Check if tables used in expression have the same number of rows as the given table.
friend TableExprNode nearAbs(const TableExprNode &left, const TableExprNode &right)
friend TableExprNode ctime(const TableExprNode &node)
static TableExprNode newFunctionNode(TableExprFuncNode::FunctionType, const TableExprNodeSet &set, const Table &table, const TaQLStyle &=TaQLStyle(0))
Create function node of the given type with the given arguments.
LatticeExprNode exp(const LatticeExprNode &expr)
Bool isNull() const
Does the node contain no actual node?
friend TableExprNode real(const TableExprNode &node)
The real part of a complex node.
friend TableExprNode sum(const TableExprNode &array)
Functions operating on a Double or Complex scalar or array resulting in a scalar with the same data t...
friend TableExprNode angdist(const TableExprNode &pos1, const TableExprNode &pos2)
Angular distance between positions.
TableExprNode mjd(const TableExprNode &node)
Array< String > getStringAS(const TableExprId &id) const
friend TableExprNode substr(const TableExprNode &str, const TableExprNode &pos)
friend TableExprNode runningMedian(const TableExprNode &array)
friend TableExprNode floor(const TableExprNode &node)
friend TableExprNode phase(const TableExprNode &node)
The phase (i.e.
void applySelection(const Vector< uInt > &rownrs)
Re-create the column object for a selection of rows.
TableExprNode month(const TableExprNode &node)
virtual Array< DComplex > getColumnDComplex(const Vector< uInt > &rownrs)
Abstract base class for a node in a table column expression tree.
static TableExprNode newKeyConst(const TableRecord &, const Vector< String > &fieldNames)
Create a TableExprNodeConst for a table keyword (which is handled as a constant). ...
TableExprNode operator+() const
Unary operators on numeric TableExprNode's.
TableExprNode boxedAvdev(const TableExprNode &node, const TableExprNodeSet &halfBoxWidth)
TableExprNode runningMax(const TableExprNode &array, const TableExprNodeSet &halfBoxWidth)
TableExprNode strlength(const TableExprNode &node)
String functions on scalars or arrays.
LatticeExprNode any(const LatticeExprNode &expr)
Functions operating on a logical expression resulting in a scalar; Functions "any" (are any pixels "T...
TableExprNode boxedMedian(const TableExprNode &node, const TableExprNodeSet &halfBoxWidth)
friend TableExprNode isNaN(const TableExprNode &node)
Function to test if a scalar or array is NaN (not-a-number).
Array< Bool > getArrayBool(const TableExprId &id) const
LatticeExprNode floor(const LatticeExprNode &expr)
TableExprNode cones(const TableExprNode &sourcePos, const TableExprNode &cones)
Cone search; test if the position of a source is inside a cone.
virtual Array< Double > getArrayDouble(const TableExprId &id)
DComplex getDComplex(const TableExprId &id) const
friend TableExprNode log10(const TableExprNode &node)
static TableExprNode newRowidNode(const Table &table)
Create rowid() function node.
LatticeExprNode cos(const LatticeExprNode &expr)
ValueType valueType() const
Get the value type.
for any array returning Int scalar
for any array returning Int array
for Int or Double returning Int (using floor)
TableExprNode rtrim(const TableExprNode &node)
friend TableExprNode rms(const TableExprNode &array)
TableExprNode pattern(const TableExprNode &node)
friend TableExprNode operator*(const TableExprNode &left, const TableExprNode &right)
LatticeExprNode operator>=(const LatticeExprNode &left, const LatticeExprNode &right)
virtual void applySelection(const Vector< uInt > &rownrs)
Re-create the column object for a selection of rows.
Array< DComplex > getDComplexAS(const TableExprId &id) const
void ranges(Block< TableExprRange > &)
Convert the tree to a number of range vectors which at least select the same things.
virtual Array< Int > getColumnInt(const Vector< uInt > &rownrs)
friend TableExprNode tan(const TableExprNode &node)
Array< String > getColumnString(const Vector< uInt > &rownrs) const
LatticeExprNode conj(const LatticeExprNode &expr)
Array< Bool > getColumnBool(const Vector< uInt > &rownrs) const
Get the value of the expression evaluated for the entire column.
Array< String > getStringAS(const TableExprId &id)
friend TableExprNode asin(const TableExprNode &node)
Transcendental functions applied to to nodes containing scalars or arrays with double values...
friend TableExprNode stddev(const TableExprNode &array)
friend TableExprNode operator||(const TableExprNode &left, const TableExprNode &right)
friend TableExprNode rtrim(const TableExprNode &node)
friend TableExprNode avdevs(const TableExprNode &array, const TableExprNodeSet &collapseAxes)
const Unit & unit() const
Get the unit of the expression.
virtual Double getDouble(const TableExprId &id)
~TableExprNode()
The destructor deletes all the underlying TableExprNode objects,.
for any type returning array of that type
for Int, Double or DComplex returning Int, Double or Complex
TableExprNode & operator=(const TableExprNode &)
Assignment (reference semantics).
friend TableExprNode runningStddev(const TableExprNode &array)
LatticeExprNode nfalse(const LatticeExprNode &expr)
TableExprNode operator!() const
Unary NOT-operator on boolean TableExprNode's.
friend TableExprNode ntrue(const TableExprNode &array)
friend TableExprNode products(const TableExprNode &array, const TableExprNodeSet &collapseAxes)
Float pow(Float f1, Float f2)
TableExprNodeRep * newNE(TableExprNodeRep *right) const
special function resembling if statement
friend TableExprNode exp(const TableExprNode &node)
TableExprNode medians(const TableExprNode &array, const TableExprNodeSet &collapseAxes)
friend TableExprNode sqrt(const TableExprNode &node)
TableExprNode sumSquares(const TableExprNode &array, const TableExprNodeSet &collapseAxes)
TableExprNodeRep * newIN(TableExprNodeRep *right, const TaQLStyle &) const
TableExprNodeRep * newGT(TableExprNodeRep *right) const
LatticeExprNode tanh(const LatticeExprNode &expr)
friend TableExprNode mjd(const TableExprNode &node)
TableExprNode ntrues(const TableExprNode &array, const TableExprNodeSet &collapseAxes)
for Int, Double or DComplex array returning Bool
TableExprNode fractiles(const TableExprNode &array, const TableExprNode &fraction, const TableExprNodeSet &collapseAxes)
LatticeExprNode min(const LatticeExprNode &left, const LatticeExprNode &right)
TableExprNode boxedAny(const TableExprNode &node, const TableExprNodeSet &halfBoxWidth)
LatticeExprNode avdev(const LatticeExprNode &expr)
friend TableExprNode runningAll(const TableExprNode &array)
TableExprNode isInf(const TableExprNode &node)
friend TableExprNode mins(const TableExprNode &array, const TableExprNodeSet &collapseAxes)
TableExprNodeRep * newMinus(TableExprNodeRep *right) const
for Int, Double or DComplex returning Double or Complex
TableExprNodeRep * node_p
The actual (counted referenced) representation of a node.
LatticeExprNode replace(const LatticeExprNode &arg1, const LatticeExprNode &arg2)
This function replaces every masked-off element in the first argument with the corresponding element ...
TableExprNode useUnit(const Unit &unit) const
Use a unit for the given TableExprNode.
for Int, or Double or Complex returning Bool (2 is with default tolerance)
friend TableExprNode alls(const TableExprNode &array, const TableExprNodeSet &collapseAxes)
friend TableExprNode shape(const TableExprNode &array)
Function operating on any scalar or array resulting in a Double array containing the shape...
static TableExprNode newRownrNode(const Table &table, uInt origin)
Create rownumber() function node.
TableExprNodeRep * newBitAnd(TableExprNodeRep *right) const
std::complex< Double > DComplex
friend TableExprNode upcase(const TableExprNode &node)
TableExprNode cdate(const TableExprNode &node)
LatticeExprNode abs(const LatticeExprNode &expr)
Numerical 1-argument functions which result in a real number regardless of input expression type...
Regular expression class.
return angles as hms/dms strings
for Bool array returning Int scalar
friend TableExprNode cube(const TableExprNode &node)
TableExprNode trim(const TableExprNode &node)
Class with static members defining the TaQL style.
LatticeExprNode ndim(const LatticeExprNode &expr)
1-argument function to get the dimensionality of a lattice.
friend TableExprNode max(const TableExprNode &a, const TableExprNode &b)
LatticeExprNode operator<=(const LatticeExprNode &left, const LatticeExprNode &right)
friend TableExprNode operator!=(const TableExprNode &left, const TableExprNode &right)
String toString(const SubScanKey &subScanKey)
void get(const TableExprId &id, Bool &value) const
Get a value for this node in the given row.
friend TableExprNode transpose(const TableExprNode &array)
Transpose all axes of an array.
Bool isScalar() const
Is the expression a scalar?
for Int, Double or Complex array returning the same
LatticeExprNode formComplex(const LatticeExprNode &left, const LatticeExprNode &right)
Form a complex number from two real numbers.
TableExprNode boxedAll(const TableExprNode &node, const TableExprNodeSet &halfBoxWidth)
LatticeExprNode iif(const LatticeExprNode &condition, const LatticeExprNode &arg1, const LatticeExprNode &arg2)
Function resembling the ternary ?: construct in C++.
LatticeExprNode nelements(const LatticeExprNode &expr)
1-argument function to get the number of elements in a lattice.
friend TableExprNode cmonth(const TableExprNode &node)
virtual Array< String > getColumnString(const Vector< uInt > &rownrs)
uInt nrow() const
Get the number of rows in the table associated with this expression.
friend TableExprNode operator/(const TableExprNode &left, const TableExprNode &right)
friend TableExprNode atan2(const TableExprNode &y, const TableExprNode &x)
friend TableExprNode pow(const TableExprNode &x, const TableExprNode &exp)
TableExprNode anys(const TableExprNode &array, const TableExprNodeSet &collapseAxes)
TableExprNode boxedMax(const TableExprNode &node, const TableExprNodeSet &halfBoxWidth)
LatticeExprNode sign(const LatticeExprNode &expr)
LatticeExprNode sqrt(const LatticeExprNode &expr)
friend TableExprNode stddevs(const TableExprNode &array, const TableExprNodeSet &collapseAxes)
TableExprNode products(const TableExprNode &array, const TableExprNodeSet &collapseAxes)
friend TableExprNode operator%(const TableExprNode &left, const TableExprNode &right)
friend TableExprNode date(const TableExprNode &node)
LatticeExprNode tan(const LatticeExprNode &expr)
friend TableExprNode sumSquare(const TableExprNode &array)
for Int or Double returning Int or Double
TableExprNode isFinite(const TableExprNode &node)
Function to test if a scalar or array is finite.
friend TableExprNode round(const TableExprNode &node)
friend TableExprNode operator==(const TableExprNode &left, const TableExprNode &right)
Comparison operators.
TableExprNode runningAny(const TableExprNode &array, const TableExprNodeSet &halfBoxWidth)
friend TableExprNode array(const TableExprNode &values, const TableExprNodeSet &shape)
Create an array of the given shape and fill it with the values.
LatticeExprNode atan(const LatticeExprNode &expr)
TableExprNode in(const TableExprNode &array, const TaQLStyle &=TaQLStyle(0)) const
The IN operator to test if a value is contained in an array or set.
bool Bool
Define the standard types used by Casacore.
TableExprNode upcase(const TableExprNode &node)
friend TableExprNode operator &&(const TableExprNode &left, const TableExprNode &right)
Logical operators to combine boolean TableExprNode's.
TableExprNode cube(const TableExprNode &node)
LatticeExprNode stddev(const LatticeExprNode &expr)
TableExprNode runningMedian(const TableExprNode &array, const TableExprNodeSet &halfBoxWidth)
TableExprNode angdistx(const TableExprNode &pos1, const TableExprNode &pos2)
Angular distance as above, but only pair-wise enties are used if both arguments are arrays...
virtual void ranges(Block< TableExprRange > &)
Convert the tree to a number of range vectors which at least select the same things.
friend TableExprNode maxs(const TableExprNode &array, const TableExprNodeSet &collapseAxes)
for Int, Double or DComplex returning DComplex
LatticeExprNode round(const LatticeExprNode &expr)
TableExprNodeRep * newPlus(TableExprNodeRep *right) const
Construct a new node for the given operation.
friend TableExprNode operator>(const TableExprNode &left, const TableExprNode &right)
TableExprNode runningStddev(const TableExprNode &array, const TableExprNodeSet &halfBoxWidth)
friend TableExprNode sqlpattern(const TableExprNode &node)
return angles as hms strings
TableExprNode substr(const TableExprNode &str, const TableExprNode &pos)
friend TableExprNode acos(const TableExprNode &node)
const Unit & unit() const
Get the unit.
friend TableExprNode runningAvdev(const TableExprNode &array)
Array< Bool > getBoolAS(const TableExprId &id)
Get a value as an array, even it it is a scalar.
virtual void show(ostream &, uInt indent) const
Show the expression tree.
friend TableExprNode ltrim(const TableExprNode &node)
virtual Bool getBool(const TableExprId &id)
Get a scalar value for this node in the given row.
Bool getBool(const TableExprId &id) const
A drop-in replacement for Block<T*>.
TableExprNode sqlpattern(const TableExprNode &node)
friend TableExprNode anyCone(const TableExprNode &sourcePos, const TableExprNode &cones)
The result is always a Bool scalar telling if any cone contains the source.
DataType dataType() const
Get the data type of the expression.
TableExprNode shape(const TableExprNode &array)
Function operating on any scalar or array resulting in a Double array containing the shape...
LatticeExprNode operator &&(const LatticeExprNode &left, const LatticeExprNode &right)
Logical binary operators.
A hierarchical collection of named fields of various types.
LatticeExprNode operator>(const LatticeExprNode &left, const LatticeExprNode &right)
Array< DComplex > getArrayDComplex(const TableExprId &id) const
static TableExprNode newColumnNode(const Table &tab, const String &name, const Vector< String > &fieldNames)
Create a column node on behalf of the Table class.
friend TableExprNode conj(const TableExprNode &node)
The complex conjugate of a complex node.
Array< Int > getColumnInt(const Vector< uInt > &rownrs) const
TableExprNode cmonth(const TableExprNode &node)
TableExprNode operator|(const TableExprNode &left, const TableExprNode &right)
friend TableExprNode runningMean(const TableExprNode &array)
LatticeExprNode atan2(const LatticeExprNode &left, const LatticeExprNode &right)
Numerical 2-argument functions.
TableExprNode integer(const TableExprNode &node)
Convert double to int (using floor).
friend TableExprNode week(const TableExprNode &node)
TableExprNode runningMean(const TableExprNode &array, const TableExprNodeSet &halfBoxWidth)
static PtrBlock< TableExprNodeRep * > convertBlockTEN(Block< TableExprNode > &nodes)
convert Block of TableExprNode to PtrBlock of TableExprNodeRep*.
TableExprNode findCone(const TableExprNode &sourcePos, const TableExprNode &cones)
The sourcePos can contain multiple sources.
friend TableExprNode fractile(const TableExprNode &array, const TableExprNode &fraction)
TableExprNode boxedMean(const TableExprNode &node, const TableExprNodeSet &halfBoxWidth)
DataType getColumnDataType() const
Get the data type for doing a getColumn on the expression.
virtual Array< Complex > getColumnComplex(const Vector< uInt > &rownrs)
friend TableExprNode avdev(const TableExprNode &array)
TableExprNode nfalses(const TableExprNode &array, const TableExprNodeSet &collapseAxes)
friend TableExprNode strlength(const TableExprNode &node)
String functions on scalars or arrays.
TableExprNode boxedVariance(const TableExprNode &node, const TableExprNodeSet &halfBoxWidth)
friend TableExprNode regex(const TableExprNode &node)
Functions for regular expression matching and pattern matching.
friend TableExprNode weekday(const TableExprNode &node)
TableExprNode angdist(const TableExprNode &pos1, const TableExprNode &pos2)
Angular distance between positions.
for Int or Double array returning Int or Double
TableExprNode isdefined(const TableExprNode &array)
Function operating on a field resulting in a bool scalar.
TableExprNode boxedRms(const TableExprNode &node, const TableExprNodeSet &halfBoxWidth)
Class to hold values from table grammar parser.
LatticeExprNode operator+(const LatticeExprNode &expr)
Global functions operating on a LatticeExprNode.
TableExprNode regex(const TableExprNode &node)
Functions for regular expression matching and pattern matching.
LatticeExprNode fmod(const LatticeExprNode &left, const LatticeExprNode &right)
TableExprNode day(const TableExprNode &node)
friend TableExprNode nfalse(const TableExprNode &array)
virtual Array< Int64 > getArrayInt(const TableExprId &id)
The identification of a TaQL selection subject.
LatticeExprNode asin(const LatticeExprNode &expr)
Array< uShort > getColumnuShort(const Vector< uInt > &rownrs) const
friend TableExprNode ctodt(const TableExprNode &node)
TableExprNode cdow(const TableExprNode &node)
TableExprNode boxedMin(const TableExprNode &node, const TableExprNodeSet &halfBoxWidth)
LatticeExprNode mean(const LatticeExprNode &expr)
Array< Double > getColumnDouble(const Vector< uInt > &rownrs) const
virtual String getString(const TableExprId &id)
Table & table()
Get table.
friend TableExprNode mean(const TableExprNode &array)
TableExprNode rms(const TableExprNode &array)
TableExprNode runningAvdev(const TableExprNode &array, const TableExprNodeSet &halfBoxWidth)
LatticeExprNode sinh(const LatticeExprNode &expr)
for Int, Double or DComplex returning Int or Double
Double getDouble(const TableExprId &id) const
Array< uInt > getColumnuInt(const Vector< uInt > &rownrs) const
TableExprNodeRep * newEQ(TableExprNodeRep *right) const
Class to handle a Regex or StringDistance.
virtual Array< DComplex > getArrayDComplex(const TableExprId &id)
LatticeExprNode acos(const LatticeExprNode &expr)
TableExprNode square(const TableExprNode &node)
virtual TaqlRegex getRegex(const TableExprId &id)
TableExprNode runningMin(const TableExprNode &array, const TableExprNodeSet &halfBoxWidth)
Functions operating for each element on a box around that element.
TableExprNodeRep * newGE(TableExprNodeRep *right) const
friend TableExprNode square(const TableExprNode &node)
static TableExprNode newUDFNode(const String &name, const TableExprNodeSet &set, const Table &table, const TaQLStyle &=TaQLStyle(0))
Create a user defined function node.
TableExprNode sumSquare(const TableExprNode &array)
TableExprNode capitalize(const TableExprNode &node)
friend TableExprNode nfalses(const TableExprNode &array, const TableExprNodeSet &collapseAxes)
LatticeExprNode operator-(const LatticeExprNode &expr)
TableExprNode operator~() const
Unary bitwise negate-operator on integer TableExprNode's.
String: the storage and methods of handling collections of characters.
friend TableExprNode cdow(const TableExprNode &node)
TableExprNode nearAbs(const TableExprNode &left, const TableExprNode &right)
static TableExprNode newArrayPartNode(const TableExprNode &arrayNode, const TableExprNodeSet &indices, const TaQLStyle &=TaQLStyle(0))
Create ArrayElement node for the given array with the given index.
Array< Complex > getColumnComplex(const Vector< uInt > &rownrs) const
TableExprNode stddevs(const TableExprNode &array, const TableExprNodeSet &collapseAxes)
TableExprNode datetime(const TableExprNode &node)
Functions for date-values.
T norm(const TableVector< T > &tv)
LatticeExprNode operator^(const LatticeExprNode &left, const LatticeExprNode &right)
LatticeExprNode operator<(const LatticeExprNode &left, const LatticeExprNode &right)
LatticeExprNode isNaN(const LatticeExprNode &expr)
Test if a value is a NaN.
TableExprNode operator &(const TableExprNode &left, const TableExprNode &right)
friend TableExprNode medians(const TableExprNode &array, const TableExprNodeSet &collapseAxes)
Class to deal with Levensthein distance of strings.
TableExprNode avdevs(const TableExprNode &array, const TableExprNodeSet &collapseAxes)
TableExprNode mjdtodate(const TableExprNode &node)
friend TableExprNode iif(const TableExprNode &condition, const TableExprNode &arg1, const TableExprNode &arg2)
Function resembling the ternary ?: construct in C++.
friend TableExprNode arg(const TableExprNode &node)
The arg (i.e.
Array< Double > getDoubleAS(const TableExprId &id) const
TableExprNode ctodt(const TableExprNode &node)
static void throwInvDT(const String &message)
Throw invalid data type exception.
friend TableExprNode time(const TableExprNode &node)
virtual DComplex getDComplex(const TableExprId &id)
virtual Array< uChar > getColumnuChar(const Vector< uInt > &rownrs)
LatticeExprNode variance(const LatticeExprNode &expr)
friend TableExprNode min(const TableExprNode &a, const TableExprNode &b)
Minimum or maximum of 2 nodes.
TableExprNodeRep * newDivide(TableExprNodeRep *right) const
LatticeExprNode ceil(const LatticeExprNode &expr)
friend TableExprNode imag(const TableExprNode &node)
The imaginary part of a complex node.
for Int or Double array returning Double
String getString(const TableExprId &id) const
Array< Float > getColumnFloat(const Vector< uInt > &rownrs) const
Class to handle date/time type conversions and I/O.
TableExprNode rmss(const TableExprNode &array, const TableExprNodeSet &collapseAxes)
friend TableExprNode sinh(const TableExprNode &node)
TableExprNode ctime(const TableExprNode &node)
TableExprNode hms(const TableExprNode &node)
Functions for angle-values.
LatticeExprNode all(const LatticeExprNode &expr)
friend TableExprNode near(const TableExprNode &left, const TableExprNode &right)
Functions to return whether a value is "relatively" near another.
friend TableExprNode all(const TableExprNode &array)
friend TableExprNode capitalize(const TableExprNode &node)
Array< Bool > getBoolAS(const TableExprId &id) const
Get a value as an array, even it it is a scalar.
Int64 getInt(const TableExprId &id) const
friend TableExprNode isdefined(const TableExprNode &array)
Function operating on a field resulting in a bool scalar.
friend TableExprNode trim(const TableExprNode &node)
friend TableExprNode anys(const TableExprNode &array, const TableExprNodeSet &collapseAxes)
friend TableExprNode operator^(const TableExprNode &left, const TableExprNode &right)
friend TableExprNode operator>=(const TableExprNode &left, const TableExprNode &right)
Not defined for Bool.
Array< Int64 > getIntAS(const TableExprId &id)
TableExprNode operator()(const TableExprNodeSet &indices)
Slicing in a node containing an array.
TableExprNode sums(const TableExprNode &array, const TableExprNodeSet &collapseAxes)
The partial version of the functions above.
LatticeExprNode operator||(const LatticeExprNode &left, const LatticeExprNode &right)
friend TableExprNode formComplex(const TableExprNode &real, const TableExprNode &imag)
Form a complex number from two Doubles.
this file contains all the compiler specific defines
MVBaseline operator*(const RotMatrix &left, const MVBaseline &right)
Rotate a Baseline vector with rotation matrix and other multiplications.
LatticeExprNode cosh(const LatticeExprNode &expr)
friend TableExprNode fractiles(const TableExprNode &array, const TableExprNode &fraction, const TableExprNodeSet &collapseAxes)
virtual Array< Short > getColumnShort(const Vector< uInt > &rownrs)
friend TableExprNode sumSquares(const TableExprNode &array, const TableExprNodeSet &collapseAxes)
TableExprNode week(const TableExprNode &node)
TableExprNode hdms(const TableExprNode &node)
LatticeExprNode real(const LatticeExprNode &expr)
LatticeExprNode value(const LatticeExprNode &expr)
This function returns the value of the expression without a mask.
LatticeExprNode sin(const LatticeExprNode &expr)
Numerical 1-argument functions.
for Int, Double or DComplex returning Double
static TableExprNode newConeNode(TableExprFuncNode::FunctionType, const TableExprNodeSet &set, uInt origin=0)
Create cone function node of the given type with the given arguments.
TableExprNodeRep * newModulo(TableExprNodeRep *right) const
virtual Array< Bool > getArrayBool(const TableExprId &id)
Get an array value for this node in the given row.
const Table & table() const
Get table.
friend TableExprNode sign(const TableExprNode &node)
friend TableExprNode sums(const TableExprNode &array, const TableExprNodeSet &collapseAxes)
The partial version of the functions above.
TableExprNode date(const TableExprNode &node)
friend TableExprNode variances(const TableExprNode &array, const TableExprNodeSet &collapseAxes)
TableExprNode amplitude(const TableExprNode &node)
The amplitude (i.e.
friend TableExprNode product(const TableExprNode &array)