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)
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.
friend TableExprNode operator<(const TableExprNode &left, const TableExprNode &right)
friend TableExprNode ntrues(const TableExprNode &array, const TableExprNodeSet &collapseAxes)
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)
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.
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...
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)
TableExprNode useUnit(const Unit &unit) const
Use a unit for the given TableExprNode.
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)
uInt nrow() const
Get the number of rows in the table associated with this expression.
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)
String getString(const TableExprId &id) 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)
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.
TableExprNodeRep * newIN(TableExprNodeRep *right, const TaQLStyle &) const
LatticeExprNode operator/(const LatticeExprNode &left, const LatticeExprNode &right)
TableExprNode runningVariance(const TableExprNode &array, const TableExprNodeSet &halfBoxWidth)
DComplex getDComplex(const TableExprId &id) const
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)
TableExprNodeRep * newMinus(TableExprNodeRep *right) const
virtual Array< MVTime > getArrayDate(const TableExprId &id)
LatticeExprNode imag(const LatticeExprNode &expr)
TableExprNode variances(const TableExprNode &array, const TableExprNodeSet &collapseAxes)
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)
TableExprNodeRep * newGT(TableExprNodeRep *right) 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)
TableExprNode weekday(const TableExprNode &node)
Handle class for a table column expression tree.
LatticeExprNode operator%(const LatticeExprNode &left, const LatticeExprNode &right)
Double getDouble(const TableExprId &id) const
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)
friend TableExprNode median(const TableExprNode &array)
TableExprNode operator+() const
Unary operators on numeric TableExprNode's.
friend TableExprNode nelements(const TableExprNode &array)
Functions operating on any scalar or array resulting in a Double scalar.
TableExprNodeRep * newEQ(TableExprNodeRep *right) const
virtual void show(ostream &, uInt indent) const
Show the expression tree.
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)
friend TableExprNode abs(const TableExprNode &node)
TableExprNodeRep * getRep()
returns non-const pointer to the representation-object of it
Bool getBool(const TableExprId &id) const
DataType dataType() const
Get the data type of the expression.
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.
Array< uInt > getColumnuInt(const Vector< uInt > &rownrs) const
friend TableExprNode operator<=(const TableExprNode &left, const TableExprNode &right)
TableExprNodeRep * newGE(TableExprNodeRep *right) const
const Table & table() const
Get table.
TableExprNode mins(const TableExprNode &array, const TableExprNodeSet &collapseAxes)
virtual Array< Float > getColumnFloat(const Vector< uInt > &rownrs)
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)
friend TableExprNode nearAbs(const TableExprNode &left, const TableExprNode &right)
friend TableExprNode ctime(const TableExprNode &node)
TableExprNode operator&(const TableExprNode &left, const TableExprNode &right)
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.
TableExprNodeRep * newModulo(TableExprNodeRep *right) const
LatticeExprNode exp(const LatticeExprNode &expr)
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)
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.
Array< Double > getArrayDouble(const TableExprId &id) const
static TableExprNode newKeyConst(const TableRecord &, const Vector< String > &fieldNames)
Create a TableExprNodeConst for a table keyword (which is handled as a constant). ...
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).
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)
friend TableExprNode log10(const TableExprNode &node)
static TableExprNode newRowidNode(const Table &table)
Create rowid() function node.
LatticeExprNode cos(const LatticeExprNode &expr)
DataType getColumnDataType() const
Get the data type for doing a getColumn on the expression.
void get(const TableExprId &id, Bool &value) const
Get a value for this node in the given row.
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.
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)
const TableExprNodeRep * getNodeRep() const
returns const pointer to the representation-object of it
LatticeExprNode conj(const LatticeExprNode &expr)
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)
Array< Double > getDoubleAS(const TableExprId &id) const
friend TableExprNode rtrim(const TableExprNode &node)
friend TableExprNode avdevs(const TableExprNode &array, const TableExprNodeSet &collapseAxes)
void show(ostream &) const
Show the tree.
Array< Int64 > getArrayInt(const TableExprId &id) const
TableExprNodeRep * newBitXor(TableExprNodeRep *right) const
Array< uShort > getColumnuShort(const Vector< uInt > &rownrs) const
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)
friend TableExprNode ntrue(const TableExprNode &array)
friend TableExprNode products(const TableExprNode &array, const TableExprNodeSet &collapseAxes)
Float pow(Float f1, Float f2)
Array< String > getArrayString(const TableExprId &id) 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)
TableExprNode operator~() const
Unary bitwise negate-operator on integer TableExprNode's.
Array< Short > getColumnShort(const Vector< uInt > &rownrs) 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)
const Unit & unit() const
Get the unit of the expression.
Array< DComplex > getDComplexAS(const TableExprId &id) const
friend TableExprNode operator&&(const TableExprNode &left, const TableExprNode &right)
Logical operators to combine boolean TableExprNode's.
friend TableExprNode runningAll(const TableExprNode &array)
TableExprNode isInf(const TableExprNode &node)
friend TableExprNode mins(const TableExprNode &array, const TableExprNodeSet &collapseAxes)
TableExprNodeRep * newDivide(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 ...
for Int, or Double or Complex returning Bool (2 is with default tolerance)
Array< Complex > getColumnComplex(const Vector< uInt > &rownrs) const
TableExprNode operator!() const
Unary NOT-operator on boolean TableExprNode's.
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.
Array< Double > getColumnDouble(const Vector< uInt > &rownrs) const
TableExprNodeRep * newPlus(TableExprNodeRep *right) const
Construct a new node for the given operation.
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
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.
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)
Array< DComplex > getArrayDComplex(const TableExprId &id) const
String toString(const SubScanKey &subScanKey)
friend TableExprNode transpose(const TableExprNode &array)
Transpose all axes of an array.
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)
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)
ValueType valueType() const
Get the value type.
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)
bool Bool
Define the standard types used by Casacore.
TableExprNode upcase(const TableExprNode &node)
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)
Array< Bool > getArrayBool(const TableExprId &id) const
TableExprNodeRep * newBitOr(TableExprNodeRep *right) const
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)
friend TableExprNode runningAvdev(const TableExprNode &array)
Array< String > getStringAS(const TableExprId &id) const
TableExprNode operator-() const
Array< Bool > getBoolAS(const TableExprId &id)
Get a value as an array, even it it is a scalar.
friend TableExprNode ltrim(const TableExprNode &node)
virtual Bool getBool(const TableExprId &id)
Get a scalar value for this node in the given row.
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.
TableExprNode shape(const TableExprNode &array)
Function operating on any scalar or array resulting in a Double array containing the shape...
A hierarchical collection of named fields of various types.
LatticeExprNode operator>(const LatticeExprNode &left, const LatticeExprNode &right)
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.
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)
const Unit & unit() const
Get the unit.
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)
friend TableExprNode operator&(const TableExprNode &left, const TableExprNode &right)
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.
TableExprNodeRep * newAND(TableExprNodeRep *right) const
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.
Array< Int64 > getIntAS(const TableExprId &id) const
LatticeExprNode asin(const LatticeExprNode &expr)
Array< DComplex > getColumnDComplex(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)
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)
TableExprNodeRep * newTimes(TableExprNodeRep *right) const
Bool checkTableSize(const Table &table, Bool canBeConst) const
Check if tables used in expression have the same number of rows as the given table.
LatticeExprNode sinh(const LatticeExprNode &expr)
for Int, Double or DComplex returning Int or Double
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.
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)
String: the storage and methods of handling collections of characters.
friend TableExprNode cdow(const TableExprNode &node)
TableExprNode nearAbs(const TableExprNode &left, const TableExprNode &right)
Array< Int > getColumnInt(const Vector< uInt > &rownrs) const
static TableExprNode newArrayPartNode(const TableExprNode &arrayNode, const TableExprNodeSet &indices, const TaQLStyle &=TaQLStyle(0))
Create ArrayElement node for the given array with the given index.
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.
Array< String > getColumnString(const Vector< uInt > &rownrs) const
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++.
Bool isNull() const
Does the node contain no actual node?
friend TableExprNode arg(const TableExprNode &node)
The arg (i.e.
TableExprNode ctodt(const TableExprNode &node)
static void throwInvDT(const String &message)
Throw invalid data type exception.
friend TableExprNode time(const TableExprNode &node)
uInt nrow() const
Get the number of rows in the table associated with this expression.
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.
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
Class to handle date/time type conversions and I/O.
TableExprNode rmss(const TableExprNode &array, const TableExprNodeSet &collapseAxes)
friend TableExprNode sinh(const TableExprNode &node)
Array< Float > getColumnFloat(const Vector< uInt > &rownrs) const
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.
Bool isScalar() const
Is the expression a scalar?
friend TableExprNode all(const TableExprNode &array)
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 capitalize(const TableExprNode &node)
TableExprNodeRep * newBitAnd(TableExprNodeRep *right) const
Array< uChar > getColumnuChar(const Vector< uInt > &rownrs) const
TableExprNodeRep * newOR(TableExprNodeRep *right) const
friend TableExprNode isdefined(const TableExprNode &array)
Function operating on a field resulting in a bool scalar.
friend TableExprNode trim(const TableExprNode &node)
Array< Bool > getBoolAS(const TableExprId &id) const
Get a value as an array, even it it is a scalar.
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)
TableExprNodeRep * newNE(TableExprNodeRep *right) const
Int64 getInt(const TableExprId &id) const
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.
LatticeExprNode operator&&(const LatticeExprNode &left, const LatticeExprNode &right)
Logical binary operators.
virtual Array< Bool > getArrayBool(const TableExprId &id)
Get an array value for this node in the given row.
Array< Bool > getColumnBool(const Vector< uInt > &rownrs) const
Get the value of the expression evaluated for the entire column.
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)