00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef TABLES_EXPRNODE_H
00029 #define TABLES_EXPRNODE_H
00030
00031
00032 #include <casa/aips.h>
00033 #include <tables/Tables/ExprNodeRep.h>
00034 #include <tables/Tables/ExprRange.h>
00035 #include <tables/Tables/ExprFuncNode.h>
00036 #include <tables/Tables/ExprConeNode.h>
00037 #include <tables/Tables/TaQLStyle.h>
00038 #include <casa/Utilities/DataType.h>
00039 #include <casa/BasicSL/Complex.h>
00040 #include <casa/Utilities/Regex.h>
00041
00042 namespace casa {
00043
00044
00045 class Table;
00046 class String;
00047 class Unit;
00048 class TableRecord;
00049 class TableExprNodeSet;
00050 template<class T> class Block;
00051 template<class T> class Array;
00052 class TableExprNode;
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069 TableExprNode operator+ (const TableExprNode& left,
00070 const TableExprNode& right);
00071 TableExprNode operator- (const TableExprNode& left,
00072 const TableExprNode& right);
00073 TableExprNode operator* (const TableExprNode& left,
00074 const TableExprNode& right);
00075 TableExprNode operator/ (const TableExprNode& left,
00076 const TableExprNode& right);
00077 TableExprNode operator% (const TableExprNode& left,
00078 const TableExprNode& right);
00079 TableExprNode operator^ (const TableExprNode& left,
00080 const TableExprNode& right);
00081
00082
00083
00084
00085 TableExprNode operator== (const TableExprNode& left,
00086 const TableExprNode& right);
00087 TableExprNode operator!= (const TableExprNode& left,
00088 const TableExprNode& right);
00089
00090
00091 TableExprNode operator>= (const TableExprNode& left,
00092 const TableExprNode& right);
00093 TableExprNode operator> (const TableExprNode& left,
00094 const TableExprNode& right);
00095 TableExprNode operator<= (const TableExprNode& left,
00096 const TableExprNode& right);
00097 TableExprNode operator< (const TableExprNode& left,
00098 const TableExprNode& right);
00099
00100
00101
00102
00103
00104 TableExprNode operator&& (const TableExprNode& left,
00105 const TableExprNode& right);
00106 TableExprNode operator|| (const TableExprNode& left,
00107 const TableExprNode& right);
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119 TableExprNode near (const TableExprNode& left,
00120 const TableExprNode& right);
00121 TableExprNode near (const TableExprNode& left,
00122 const TableExprNode& right,
00123 const TableExprNode& tolerance);
00124 TableExprNode nearAbs (const TableExprNode& left,
00125 const TableExprNode& right);
00126 TableExprNode nearAbs (const TableExprNode& left,
00127 const TableExprNode& right,
00128 const TableExprNode& tolerance);
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141 TableExprNode cones (const TableExprNode& sourcePos,
00142 const TableExprNode& cones);
00143
00144
00145 TableExprNode anyCone (const TableExprNode& sourcePos,
00146 const TableExprNode& cones);
00147
00148
00149
00150
00151 TableExprNode findCone (const TableExprNode& sourcePos,
00152 const TableExprNode& cones);
00153
00154
00155
00156
00157
00158
00159
00160 TableExprNode cones (const TableExprNode& sourcePos,
00161 const TableExprNode& conePos,
00162 const TableExprNode& radii);
00163 TableExprNode anyCone (const TableExprNode& sourcePos,
00164 const TableExprNode& conePos,
00165 const TableExprNode& radii);
00166 TableExprNode findCone (const TableExprNode& sourcePos,
00167 const TableExprNode& conePos,
00168 const TableExprNode& radii);
00169
00170
00171
00172
00173
00174 TableExprNode sin (const TableExprNode& node);
00175 TableExprNode sinh (const TableExprNode& node);
00176 TableExprNode cos (const TableExprNode& node);
00177 TableExprNode cosh (const TableExprNode& node);
00178 TableExprNode exp (const TableExprNode& node);
00179 TableExprNode log (const TableExprNode& node);
00180 TableExprNode log10 (const TableExprNode& node);
00181 TableExprNode pow (const TableExprNode& x,
00182 const TableExprNode& y);
00183 TableExprNode square (const TableExprNode& node);
00184 TableExprNode sqrt (const TableExprNode& node);
00185 TableExprNode norm (const TableExprNode& node);
00186
00187
00188
00189
00190
00191
00192 TableExprNode asin (const TableExprNode& node);
00193 TableExprNode acos (const TableExprNode& node);
00194 TableExprNode atan (const TableExprNode& node);
00195 TableExprNode atan2 (const TableExprNode& y,
00196 const TableExprNode& x);
00197 TableExprNode tan (const TableExprNode& node);
00198 TableExprNode tanh (const TableExprNode& node);
00199 TableExprNode sign (const TableExprNode& node);
00200 TableExprNode round (const TableExprNode& node);
00201 TableExprNode ceil (const TableExprNode& node);
00202 TableExprNode abs (const TableExprNode& node);
00203 TableExprNode floor (const TableExprNode& node);
00204 TableExprNode fmod (const TableExprNode& x,
00205 const TableExprNode& y);
00206
00207
00208
00209
00210 TableExprNode strlength (const TableExprNode& node);
00211 TableExprNode upcase (const TableExprNode& node);
00212 TableExprNode downcase (const TableExprNode& node);
00213 TableExprNode trim (const TableExprNode& node);
00214
00215
00216
00217
00218
00219
00220
00221 TableExprNode regex (const TableExprNode& node);
00222 TableExprNode pattern (const TableExprNode& node);
00223 TableExprNode sqlpattern (const TableExprNode& node);
00224
00225
00226
00227
00228 TableExprNode datetime (const TableExprNode& node);
00229 TableExprNode mjdtodate (const TableExprNode& node);
00230 TableExprNode mjd (const TableExprNode& node);
00231 TableExprNode date (const TableExprNode& node);
00232 TableExprNode year (const TableExprNode& node);
00233 TableExprNode month (const TableExprNode& node);
00234 TableExprNode day (const TableExprNode& node);
00235 TableExprNode cmonth (const TableExprNode& node);
00236 TableExprNode weekday (const TableExprNode& node);
00237 TableExprNode cdow (const TableExprNode& node);
00238 TableExprNode week (const TableExprNode& node);
00239 TableExprNode time (const TableExprNode& node);
00240
00241
00242
00243
00244 TableExprNode isNaN (const TableExprNode& node);
00245
00246
00247
00248
00249
00250
00251 TableExprNode min (const TableExprNode& a, const TableExprNode& b);
00252 TableExprNode max (const TableExprNode& a, const TableExprNode& b);
00253
00254
00255
00256
00257 TableExprNode conj (const TableExprNode& node);
00258
00259
00260
00261 TableExprNode real (const TableExprNode& node);
00262
00263
00264
00265 TableExprNode imag (const TableExprNode& node);
00266
00267
00268
00269
00270 TableExprNode amplitude (const TableExprNode& node);
00271
00272
00273
00274
00275 TableExprNode phase (const TableExprNode& node);
00276
00277
00278
00279 TableExprNode arg (const TableExprNode& node);
00280
00281
00282
00283 TableExprNode formComplex (const TableExprNode& real,
00284 const TableExprNode& imag);
00285
00286
00287
00288
00289 TableExprNode sum (const TableExprNode& array);
00290 TableExprNode product (const TableExprNode& array);
00291 TableExprNode sumSquare (const TableExprNode& array);
00292
00293
00294
00295
00296
00297 TableExprNode min (const TableExprNode& array);
00298 TableExprNode max (const TableExprNode& array);
00299 TableExprNode mean (const TableExprNode& array);
00300 TableExprNode variance (const TableExprNode& array);
00301 TableExprNode stddev (const TableExprNode& array);
00302 TableExprNode avdev (const TableExprNode& array);
00303 TableExprNode rms (const TableExprNode& array);
00304 TableExprNode median (const TableExprNode& array);
00305 TableExprNode fractile (const TableExprNode& array,
00306 const TableExprNode& fraction);
00307
00308
00309
00310 TableExprNode any (const TableExprNode& array);
00311 TableExprNode all (const TableExprNode& array);
00312 TableExprNode ntrue (const TableExprNode& array);
00313 TableExprNode nfalse (const TableExprNode& array);
00314
00315
00316
00317
00318
00319
00320
00321 TableExprNode sums (const TableExprNode& array,
00322 const TableExprNodeSet& collapseAxes);
00323 TableExprNode products (const TableExprNode& array,
00324 const TableExprNodeSet& collapseAxes);
00325 TableExprNode sumSquares (const TableExprNode& array,
00326 const TableExprNodeSet& collapseAxes);
00327 TableExprNode mins (const TableExprNode& array,
00328 const TableExprNodeSet& collapseAxes);
00329 TableExprNode maxs (const TableExprNode& array,
00330 const TableExprNodeSet& collapseAxes);
00331 TableExprNode means (const TableExprNode& array,
00332 const TableExprNodeSet& collapseAxes);
00333 TableExprNode variances (const TableExprNode& array,
00334 const TableExprNodeSet& collapseAxes);
00335 TableExprNode stddevs (const TableExprNode& array,
00336 const TableExprNodeSet& collapseAxes);
00337 TableExprNode avdevs (const TableExprNode& array,
00338 const TableExprNodeSet& collapseAxes);
00339 TableExprNode rmss (const TableExprNode& array,
00340 const TableExprNodeSet& collapseAxes);
00341 TableExprNode medians (const TableExprNode& array,
00342 const TableExprNodeSet& collapseAxes);
00343 TableExprNode fractiles (const TableExprNode& array,
00344 const TableExprNode& fraction,
00345 const TableExprNodeSet& collapseAxes);
00346 TableExprNode anys (const TableExprNode& array,
00347 const TableExprNodeSet& collapseAxes);
00348 TableExprNode alls (const TableExprNode& array,
00349 const TableExprNodeSet& collapseAxes);
00350 TableExprNode ntrues (const TableExprNode& array,
00351 const TableExprNodeSet& collapseAxes);
00352 TableExprNode nfalses (const TableExprNode& array,
00353 const TableExprNodeSet& collapseAxes);
00354
00355
00356
00357
00358
00359 TableExprNode runningMin (const TableExprNode& array,
00360 const TableExprNodeSet& halfBoxWidth);
00361 TableExprNode runningMax (const TableExprNode& array,
00362 const TableExprNodeSet& halfBoxWidth);
00363 TableExprNode runningMean (const TableExprNode& array,
00364 const TableExprNodeSet& halfBoxWidth);
00365 TableExprNode runningVariance (const TableExprNode& array,
00366 const TableExprNodeSet& halfBoxWidth);
00367 TableExprNode runningStddev (const TableExprNode& array,
00368 const TableExprNodeSet& halfBoxWidth);
00369 TableExprNode runningAvdev (const TableExprNode& array,
00370 const TableExprNodeSet& halfBoxWidth);
00371 TableExprNode runningRms (const TableExprNode& array,
00372 const TableExprNodeSet& halfBoxWidth);
00373 TableExprNode runningMedian (const TableExprNode& array,
00374 const TableExprNodeSet& halfBoxWidth);
00375 TableExprNode runningAny (const TableExprNode& array,
00376 const TableExprNodeSet& halfBoxWidth);
00377 TableExprNode runningAll (const TableExprNode& array,
00378 const TableExprNodeSet& halfBoxWidth);
00379
00380
00381
00382
00383 TableExprNode array (const TableExprNode& values,
00384 const TableExprNodeSet& shape);
00385
00386
00387
00388
00389 TableExprNode isdefined (const TableExprNode& array);
00390
00391
00392
00393
00394 TableExprNode nelements (const TableExprNode& array);
00395 TableExprNode ndim (const TableExprNode& array);
00396
00397
00398
00399
00400 TableExprNode shape (const TableExprNode& array);
00401
00402
00403
00404
00405
00406
00407 TableExprNode iif (const TableExprNode& condition,
00408 const TableExprNode& arg1,
00409 const TableExprNode& arg2);
00410
00411
00412
00413
00414
00415
00416
00417
00418
00419
00420
00421
00422
00423
00424
00425
00426
00427
00428
00429
00430
00431
00432
00433
00434
00435
00436
00437
00438
00439
00440
00441
00442
00443
00444
00445
00446
00447
00448
00449
00450
00451
00452
00453
00454
00455
00456
00457
00458
00459
00460
00461
00462
00463
00464
00465
00466
00467
00468
00469
00470
00471
00472
00473
00474
00475
00476
00477
00478
00479
00480
00481
00482
00483
00484
00485
00486
00487
00488
00489
00490
00491
00492
00493
00494
00495
00496
00497
00498
00499
00500
00501
00502
00503
00504
00505
00506
00507
00508 class TableExprNode
00509 {
00510
00511 friend class TableExprNodeRep;
00512 friend class TableParse;
00513
00514
00515
00516
00517
00518
00519
00520
00521
00522
00523
00524 friend TableExprNode operator+ (const TableExprNode& left,
00525 const TableExprNode& right);
00526 friend TableExprNode operator- (const TableExprNode& left,
00527 const TableExprNode& right);
00528 friend TableExprNode operator* (const TableExprNode& left,
00529 const TableExprNode& right);
00530 friend TableExprNode operator/ (const TableExprNode& left,
00531 const TableExprNode& right);
00532 friend TableExprNode operator% (const TableExprNode& left,
00533 const TableExprNode& right);
00534 friend TableExprNode operator^ (const TableExprNode& left,
00535 const TableExprNode& right);
00536 friend TableExprNode operator== (const TableExprNode& left,
00537 const TableExprNode& right);
00538 friend TableExprNode operator!= (const TableExprNode& left,
00539 const TableExprNode& right);
00540 friend TableExprNode operator>= (const TableExprNode& left,
00541 const TableExprNode& right);
00542 friend TableExprNode operator> (const TableExprNode& left,
00543 const TableExprNode& right);
00544 friend TableExprNode operator<= (const TableExprNode& left,
00545 const TableExprNode& right);
00546 friend TableExprNode operator< (const TableExprNode& left,
00547 const TableExprNode& right);
00548 friend TableExprNode operator&& (const TableExprNode& left,
00549 const TableExprNode& right);
00550 friend TableExprNode operator|| (const TableExprNode& left,
00551 const TableExprNode& right);
00552 friend TableExprNode near (const TableExprNode& left,
00553 const TableExprNode& right);
00554 friend TableExprNode near (const TableExprNode& left,
00555 const TableExprNode& right,
00556 const TableExprNode& tolerance);
00557 friend TableExprNode nearAbs (const TableExprNode& left,
00558 const TableExprNode& right);
00559 friend TableExprNode nearAbs (const TableExprNode& left,
00560 const TableExprNode& right,
00561 const TableExprNode& tolerance);
00562 friend TableExprNode cones (const TableExprNode& sourcePos,
00563 const TableExprNode& cones);
00564 friend TableExprNode anyCone (const TableExprNode& sourcePos,
00565 const TableExprNode& cones);
00566 friend TableExprNode findCone (const TableExprNode& sourcePos,
00567 const TableExprNode& cones);
00568 friend TableExprNode cones (const TableExprNode& sourcePos,
00569 const TableExprNode& conePos,
00570 const TableExprNode& radii);
00571 friend TableExprNode anyCone (const TableExprNode& sourcePos,
00572 const TableExprNode& conePos,
00573 const TableExprNode& radii);
00574 friend TableExprNode findCone (const TableExprNode& sourcePos,
00575 const TableExprNode& conePos,
00576 const TableExprNode& radii);
00577 friend TableExprNode sin (const TableExprNode& node);
00578 friend TableExprNode sinh (const TableExprNode& node);
00579 friend TableExprNode cos (const TableExprNode& node);
00580 friend TableExprNode cosh (const TableExprNode& node);
00581 friend TableExprNode exp (const TableExprNode& node);
00582 friend TableExprNode log (const TableExprNode& node);
00583 friend TableExprNode log10 (const TableExprNode& node);
00584 friend TableExprNode pow (const TableExprNode& x,
00585 const TableExprNode& y);
00586 friend TableExprNode square (const TableExprNode& node);
00587 friend TableExprNode sqrt (const TableExprNode& node);
00588 friend TableExprNode norm (const TableExprNode& node);
00589 friend TableExprNode asin (const TableExprNode& node);
00590 friend TableExprNode acos (const TableExprNode& node);
00591 friend TableExprNode atan (const TableExprNode& node);
00592 friend TableExprNode atan2 (const TableExprNode& y,
00593 const TableExprNode& x);
00594 friend TableExprNode tan (const TableExprNode& node);
00595 friend TableExprNode tanh (const TableExprNode& node);
00596 friend TableExprNode sign (const TableExprNode& node);
00597 friend TableExprNode round (const TableExprNode& node);
00598 friend TableExprNode ceil (const TableExprNode& node);
00599 friend TableExprNode abs (const TableExprNode& node);
00600 friend TableExprNode floor (const TableExprNode& node);
00601 friend TableExprNode fmod (const TableExprNode& x,
00602 const TableExprNode& y);
00603 friend TableExprNode strlength (const TableExprNode& node);
00604 friend TableExprNode upcase (const TableExprNode& node);
00605 friend TableExprNode downcase (const TableExprNode& node);
00606 friend TableExprNode trim (const TableExprNode& node);
00607 friend TableExprNode regex (const TableExprNode& node);
00608 friend TableExprNode pattern (const TableExprNode& node);
00609 friend TableExprNode sqlpattern (const TableExprNode& node);
00610 friend TableExprNode datetime (const TableExprNode& node);
00611 friend TableExprNode mjdtodate (const TableExprNode& node);
00612 friend TableExprNode mjd (const TableExprNode& node);
00613 friend TableExprNode date (const TableExprNode& node);
00614 friend TableExprNode year (const TableExprNode& node);
00615 friend TableExprNode month (const TableExprNode& node);
00616 friend TableExprNode day (const TableExprNode& node);
00617 friend TableExprNode cmonth (const TableExprNode& node);
00618 friend TableExprNode weekday (const TableExprNode& node);
00619 friend TableExprNode cdow (const TableExprNode& node);
00620 friend TableExprNode week (const TableExprNode& node);
00621 friend TableExprNode time (const TableExprNode& node);
00622 friend TableExprNode isNaN (const TableExprNode& node);
00623 friend TableExprNode min (const TableExprNode& a, const TableExprNode& b);
00624 friend TableExprNode max (const TableExprNode& a, const TableExprNode& b);
00625 friend TableExprNode conj (const TableExprNode& node);
00626 friend TableExprNode real (const TableExprNode& node);
00627 friend TableExprNode imag (const TableExprNode& node);
00628 friend TableExprNode amplitude (const TableExprNode& node);
00629 friend TableExprNode phase (const TableExprNode& node);
00630 friend TableExprNode arg (const TableExprNode& node);
00631 friend TableExprNode formComplex (const TableExprNode& real,
00632 const TableExprNode& imag);
00633 friend TableExprNode sum (const TableExprNode& array);
00634 friend TableExprNode product (const TableExprNode& array);
00635 friend TableExprNode sumSquare (const TableExprNode& array);
00636 friend TableExprNode min (const TableExprNode& array);
00637 friend TableExprNode max (const TableExprNode& array);
00638 friend TableExprNode mean (const TableExprNode& array);
00639 friend TableExprNode variance (const TableExprNode& array);
00640 friend TableExprNode stddev (const TableExprNode& array);
00641 friend TableExprNode avdev (const TableExprNode& array);
00642 friend TableExprNode rms (const TableExprNode& array);
00643 friend TableExprNode median (const TableExprNode& array);
00644 friend TableExprNode fractile (const TableExprNode& array,
00645 const TableExprNode& fraction);
00646 friend TableExprNode any (const TableExprNode& array);
00647 friend TableExprNode all (const TableExprNode& array);
00648 friend TableExprNode ntrue (const TableExprNode& array);
00649 friend TableExprNode nfalse (const TableExprNode& array);
00650 friend TableExprNode sums (const TableExprNode& array,
00651 const TableExprNodeSet& collapseAxes);
00652 friend TableExprNode products (const TableExprNode& array,
00653 const TableExprNodeSet& collapseAxes);
00654 friend TableExprNode sumSquares (const TableExprNode& array,
00655 const TableExprNodeSet& collapseAxes);
00656 friend TableExprNode mins (const TableExprNode& array,
00657 const TableExprNodeSet& collapseAxes);
00658 friend TableExprNode maxs (const TableExprNode& array,
00659 const TableExprNodeSet& collapseAxes);
00660 friend TableExprNode means (const TableExprNode& array,
00661 const TableExprNodeSet& collapseAxes);
00662 friend TableExprNode variances (const TableExprNode& array,
00663 const TableExprNodeSet& collapseAxes);
00664 friend TableExprNode stddevs (const TableExprNode& array,
00665 const TableExprNodeSet& collapseAxes);
00666 friend TableExprNode avdevs (const TableExprNode& array,
00667 const TableExprNodeSet& collapseAxes);
00668 friend TableExprNode rmss (const TableExprNode& array,
00669 const TableExprNodeSet& collapseAxes);
00670 friend TableExprNode medians (const TableExprNode& array,
00671 const TableExprNodeSet& collapseAxes);
00672 friend TableExprNode fractiles (const TableExprNode& array,
00673 const TableExprNode& fraction,
00674 const TableExprNodeSet& collapseAxes);
00675 friend TableExprNode anys (const TableExprNode& array,
00676 const TableExprNodeSet& collapseAxes);
00677 friend TableExprNode alls (const TableExprNode& array,
00678 const TableExprNodeSet& collapseAxes);
00679 friend TableExprNode ntrues (const TableExprNode& array,
00680 const TableExprNodeSet& collapseAxes);
00681 friend TableExprNode nfalses (const TableExprNode& array,
00682 const TableExprNodeSet& collapseAxes);
00683 friend TableExprNode runningMin (const TableExprNode& array);
00684 friend TableExprNode runningMax (const TableExprNode& array);
00685 friend TableExprNode runningMean (const TableExprNode& array);
00686 friend TableExprNode runningVariance (const TableExprNode& array);
00687 friend TableExprNode runningStddev (const TableExprNode& array);
00688 friend TableExprNode runningAvdev (const TableExprNode& array);
00689 friend TableExprNode runningRms (const TableExprNode& array);
00690 friend TableExprNode runningMedian (const TableExprNode& array);
00691 friend TableExprNode runningAny (const TableExprNode& array);
00692 friend TableExprNode runningAll (const TableExprNode& array);
00693 friend TableExprNode array (const TableExprNode& values,
00694 const TableExprNodeSet& shape);
00695 friend TableExprNode isdefined (const TableExprNode& array);
00696 friend TableExprNode nelements (const TableExprNode& array);
00697 friend TableExprNode ndim (const TableExprNode& array);
00698 friend TableExprNode shape (const TableExprNode& array);
00699 friend TableExprNode iif (const TableExprNode& condition,
00700 const TableExprNode& arg1,
00701 const TableExprNode& arg2);
00702
00703
00704 public:
00705 TableExprNode ();
00706
00707
00708
00709 TableExprNode operator+ () const;
00710 TableExprNode operator- () const;
00711
00712
00713 TableExprNode operator! () const;
00714
00715
00716
00717
00718
00719
00720
00721
00722
00723
00724
00725
00726 TableExprNode operator() (const TableExprNodeSet& indices);
00727
00728
00729
00730
00731 TableExprNode in (const TableExprNode& array) const;
00732 TableExprNode in (const TableExprNodeSet& set) const;
00733
00734
00735
00736
00737
00738 TableExprNode useUnit (const Unit& unit) const;
00739
00740
00741
00742
00743
00744
00745 TableExprNode (const Bool& value);
00746 TableExprNode (const Int& value);
00747 TableExprNode (const uInt& value);
00748 TableExprNode (const Float& value);
00749 TableExprNode (const Double& value);
00750 TableExprNode (const Complex& value);
00751 TableExprNode (const DComplex& value);
00752 TableExprNode (const String& value);
00753 TableExprNode (const char*);
00754 TableExprNode (const Regex& value);
00755 TableExprNode (const MVTime& value);
00756 TableExprNode (const Array<Bool>& value);
00757 TableExprNode (const Array<uChar>& value);
00758 TableExprNode (const Array<Short>& value);
00759 TableExprNode (const Array<uShort>& value);
00760 TableExprNode (const Array<Int>& value);
00761 TableExprNode (const Array<uInt>& value);
00762 TableExprNode (const Array<Float>& value);
00763 TableExprNode (const Array<Double>& value);
00764 TableExprNode (const Array<Complex>& value);
00765 TableExprNode (const Array<DComplex>& value);
00766 TableExprNode (const Array<String>& value);
00767 TableExprNode (const Array<MVTime>& value);
00768
00769
00770
00771 TableExprNode (TableExprNodeRep*);
00772
00773
00774 TableExprNode (const TableExprNode&);
00775
00776
00777 TableExprNode& operator= (const TableExprNode&);
00778
00779
00780 ~TableExprNode ();
00781
00782
00783 Bool isNull() const
00784 { return node_p == 0; }
00785
00786
00787 const Unit& unit() const
00788 { return node_p->unit(); }
00789
00790
00791
00792
00793
00794
00795 DataType dataType() const;
00796
00797
00798 Bool isScalar() const
00799 { return (node_p->valueType() == TableExprNodeRep::VTScalar); }
00800
00801
00802
00803
00804 uInt nrow() const
00805 { return node_p->nrow(); }
00806
00807
00808
00809
00810
00811
00812 void get (const TableExprId& id, Bool& value) const;
00813 void get (const TableExprId& id, Double& value) const;
00814 void get (const TableExprId& id, DComplex& value) const;
00815 void get (const TableExprId& id, String& value) const;
00816 void get (const TableExprId& id, Regex& value) const;
00817 void get (const TableExprId& id, MVTime& value) const;
00818 void get (const TableExprId& id, Array<Bool>& value) const;
00819 void get (const TableExprId& id, Array<Double>& value) const;
00820 void get (const TableExprId& id, Array<DComplex>& value) const;
00821 void get (const TableExprId& id, Array<String>& value) const;
00822 void get (const TableExprId& id, Array<MVTime>& value) const;
00823 Bool getBool (const TableExprId& id) const;
00824 Double getDouble (const TableExprId& id) const;
00825 DComplex getDComplex (const TableExprId& id) const;
00826 String getString (const TableExprId& id) const;
00827 Array<Bool> getArrayBool (const TableExprId& id) const;
00828 Array<Double> getArrayDouble (const TableExprId& id) const;
00829 Array<DComplex> getArrayDComplex (const TableExprId& id) const;
00830 Array<String> getArrayString (const TableExprId& id) const;
00831
00832
00833
00834
00835
00836
00837
00838 DataType getColumnDataType() const;
00839
00840
00841
00842
00843
00844 Array<Bool> getColumnBool() const;
00845 Array<uChar> getColumnuChar() const;
00846 Array<Short> getColumnShort() const;
00847 Array<uShort> getColumnuShort() const;
00848 Array<Int> getColumnInt() const;
00849 Array<uInt> getColumnuInt() const;
00850 Array<Float> getColumnFloat() const;
00851 Array<Double> getColumnDouble() const;
00852 Array<Complex> getColumnComplex() const;
00853 Array<DComplex> getColumnDComplex() const;
00854 Array<String> getColumnString() const;
00855
00856
00857
00858 void show (ostream&) const;
00859
00860
00861
00862
00863
00864
00865
00866
00867
00868
00869 void ranges (Block<TableExprRange>&);
00870
00871
00872
00873 Bool checkTable (const Table& table) const;
00874
00875
00876
00877
00878
00879
00880
00881
00882
00883 Bool checkReplaceTable (const Table& table, Bool canBeConst=False) const;
00884
00885
00886
00887
00888
00889 const Table& table() const;
00890
00891
00892
00893
00894
00895 static TableExprNode newColumnNode (const Table& tab,
00896 const String& name,
00897 const Vector<String>& fieldNames);
00898
00899
00900
00901 static TableExprNode newKeyConst (const TableRecord&,
00902 const Vector<String>& fieldNames);
00903
00904
00905
00906 static void throwInvDT();
00907 static void throwInvDT (const String& message);
00908
00909
00910
00911
00912 static TableExprNode newFunctionNode (TableExprFuncNode::FunctionType,
00913 const TableExprNodeSet& set,
00914 const Table& table,
00915 const TaQLStyle& = TaQLStyle(0));
00916 static TableExprNode newFunctionNode (TableExprFuncNode::FunctionType,
00917 const TableExprNode& node);
00918 static TableExprNode newFunctionNode (TableExprFuncNode::FunctionType,
00919 const TableExprNode& node1,
00920 const TableExprNode& node2);
00921 static TableExprNode newFunctionNode (TableExprFuncNode::FunctionType,
00922 const TableExprNode& node1,
00923 const TableExprNode& node2,
00924 const TableExprNode& node3);
00925 static TableExprNode newFunctionNode (TableExprFuncNode::FunctionType,
00926 const TableExprNode& array,
00927 const TableExprNodeSet& axes);
00928 static TableExprNode newFunctionNode (TableExprFuncNode::FunctionType,
00929 const TableExprNode& array,
00930 const TableExprNode& node,
00931 const TableExprNodeSet& axes);
00932
00933
00934
00935
00936 static TableExprNode newConeNode (TableExprFuncNode::FunctionType,
00937 const TableExprNodeSet& set,
00938 uInt origin = 0);
00939 static TableExprNode newConeNode (TableExprFuncNode::FunctionType,
00940 const TableExprNode& node1,
00941 const TableExprNode& node2);
00942 static TableExprNode newConeNode (TableExprFuncNode::FunctionType,
00943 const TableExprNode& node1,
00944 const TableExprNode& node2,
00945 const TableExprNode& node3);
00946
00947
00948
00949
00950
00951 static TableExprNode newRownrNode (const Table& table, uInt origin);
00952
00953
00954
00955 static TableExprNode newRowidNode (const Table& table);
00956
00957
00958 static TableExprNode newRandomNode (const Table& table);
00959
00960
00961
00962 static TableExprNode newArrayPartNode (const TableExprNode& arrayNode,
00963 const TableExprNodeSet& indices,
00964 const TaQLStyle& = TaQLStyle(0));
00965
00966
00967 const TableExprNodeRep* getNodeRep() const;
00968
00969
00970 void adaptUnit (const Unit&);
00971
00972 private:
00973
00974 TableExprNodeRep* getRep();
00975
00976
00977 static PtrBlock<TableExprNodeRep*> convertBlockTEN
00978 (Block<TableExprNode>& nodes);
00979
00980
00981
00982 TableExprNodeRep* newPlus (TableExprNodeRep* right) const;
00983 TableExprNodeRep* newMinus (TableExprNodeRep* right) const;
00984 TableExprNodeRep* newTimes (TableExprNodeRep* right) const;
00985 TableExprNodeRep* newDivide (TableExprNodeRep* right) const;
00986 TableExprNodeRep* newModulo (TableExprNodeRep* right) const;
00987 TableExprNodeRep* newEQ (TableExprNodeRep* right) const;
00988 TableExprNodeRep* newNE (TableExprNodeRep* right) const;
00989 TableExprNodeRep* newGE (TableExprNodeRep* right) const;
00990 TableExprNodeRep* newGT (TableExprNodeRep* right) const;
00991 TableExprNodeRep* newIN (TableExprNodeRep* right) const;
00992 TableExprNodeRep* newOR (TableExprNodeRep* right) const;
00993 TableExprNodeRep* newAND (TableExprNodeRep* right) const;
00994
00995
00996
00997 TableExprNodeRep* node_p;
00998 };
00999
01000
01001
01002 inline void TableExprNode::ranges (Block<TableExprRange>& blrange)
01003 { node_p->ranges (blrange); }
01004
01005
01006 inline const Table& TableExprNode::table() const
01007 { return node_p->table(); }
01008
01009
01010 inline void TableExprNode::get (const TableExprId& id, Bool& value) const
01011 { value = node_p->getBool (id); }
01012 inline void TableExprNode::get (const TableExprId& id, Double& value) const
01013 { value = node_p->getDouble (id); }
01014 inline void TableExprNode::get (const TableExprId& id, DComplex& value) const
01015 { value = node_p->getDComplex (id); }
01016 inline void TableExprNode::get (const TableExprId& id, String& value) const
01017 { value = node_p->getString (id); }
01018 inline void TableExprNode::get (const TableExprId& id, Regex& value) const
01019 { value = node_p->getRegex (id); }
01020 inline void TableExprNode::get (const TableExprId& id, MVTime& value) const
01021 { value = node_p->getDate (id); }
01022 inline void TableExprNode::get (const TableExprId& id,
01023 Array<Bool>& value) const
01024 { value = node_p->getArrayBool (id); }
01025 inline void TableExprNode::get (const TableExprId& id,
01026 Array<Double>& value) const
01027 { value = node_p->getArrayDouble (id); }
01028 inline void TableExprNode::get (const TableExprId& id,
01029 Array<DComplex>& value) const
01030 { value = node_p->getArrayDComplex (id); }
01031 inline void TableExprNode::get (const TableExprId& id,
01032 Array<String>& value) const
01033 { value = node_p->getArrayString (id); }
01034 inline void TableExprNode::get (const TableExprId& id,
01035 Array<MVTime>& value) const
01036 { value = node_p->getArrayDate (id); }
01037 inline Bool TableExprNode::getBool (const TableExprId& id) const
01038 { return node_p->getBool (id); }
01039 inline Double TableExprNode::getDouble (const TableExprId& id) const
01040 { return node_p->getDouble (id); }
01041 inline DComplex TableExprNode::getDComplex (const TableExprId& id) const
01042 { return node_p->getDComplex (id); }
01043 inline String TableExprNode::getString (const TableExprId& id) const
01044 { return node_p->getString (id); }
01045 inline Array<Bool> TableExprNode::getArrayBool (const TableExprId& id) const
01046 { return node_p->getArrayBool (id); }
01047 inline Array<Double> TableExprNode::getArrayDouble (const TableExprId& id) const
01048 { return node_p->getArrayDouble (id); }
01049 inline Array<DComplex> TableExprNode::getArrayDComplex (const TableExprId& id) const
01050 { return node_p->getArrayDComplex (id); }
01051 inline Array<String> TableExprNode::getArrayString (const TableExprId& id) const
01052 { return node_p->getArrayString (id); }
01053
01054 inline Array<Bool> TableExprNode::getColumnBool() const
01055 { return node_p->getColumnBool(); }
01056 inline Array<uChar> TableExprNode::getColumnuChar() const
01057 { return node_p->getColumnuChar(); }
01058 inline Array<Short> TableExprNode::getColumnShort() const
01059 { return node_p->getColumnShort(); }
01060 inline Array<uShort> TableExprNode::getColumnuShort() const
01061 { return node_p->getColumnuShort(); }
01062 inline Array<Int> TableExprNode::getColumnInt() const
01063 { return node_p->getColumnInt(); }
01064 inline Array<uInt> TableExprNode::getColumnuInt() const
01065 { return node_p->getColumnuInt(); }
01066 inline Array<Float> TableExprNode::getColumnFloat() const
01067 { return node_p->getColumnFloat(); }
01068 inline Array<Double> TableExprNode::getColumnDouble() const
01069 { return node_p->getColumnDouble(); }
01070 inline Array<Complex> TableExprNode::getColumnComplex() const
01071 { return node_p->getColumnComplex(); }
01072 inline Array<DComplex> TableExprNode::getColumnDComplex() const
01073 { return node_p->getColumnDComplex(); }
01074 inline Array<String> TableExprNode::getColumnString() const
01075 { return node_p->getColumnString(); }
01076
01077
01078 inline TableExprNode operator+ (const TableExprNode& left,
01079 const TableExprNode& right)
01080 {
01081 return left.newPlus (right.node_p);
01082 }
01083 inline TableExprNode operator- (const TableExprNode& left,
01084 const TableExprNode& right)
01085 {
01086 return left.newMinus (right.node_p);
01087 }
01088 inline TableExprNode operator* (const TableExprNode& left,
01089 const TableExprNode& right)
01090 {
01091 return left.newTimes (right.node_p);
01092 }
01093 inline TableExprNode operator/ (const TableExprNode& left,
01094 const TableExprNode& right)
01095 {
01096 return left.newDivide (right.node_p);
01097 }
01098 inline TableExprNode operator% (const TableExprNode& left,
01099 const TableExprNode& right)
01100 {
01101 return left.newModulo (right.node_p);
01102 }
01103 inline TableExprNode operator^ (const TableExprNode& left,
01104 const TableExprNode& right)
01105 {
01106 return pow(left, right);
01107 }
01108 inline TableExprNode operator== (const TableExprNode& left,
01109 const TableExprNode& right)
01110 {
01111 return left.newEQ (right.node_p);
01112 }
01113 inline TableExprNode operator!= (const TableExprNode& left,
01114 const TableExprNode& right)
01115 {
01116 return left.newNE (right.node_p);
01117 }
01118 inline TableExprNode operator> (const TableExprNode& left,
01119 const TableExprNode& right)
01120 {
01121 return left.newGT (right.node_p);
01122 }
01123 inline TableExprNode operator>= (const TableExprNode& left,
01124 const TableExprNode& right)
01125 {
01126 return left.newGE (right.node_p);
01127 }
01128 inline TableExprNode operator<= (const TableExprNode& left,
01129 const TableExprNode& right)
01130 {
01131 return right.newGE (left.node_p);
01132 }
01133 inline TableExprNode operator< (const TableExprNode& left,
01134 const TableExprNode& right)
01135 {
01136 return right.newGT (left.node_p);
01137 }
01138 inline TableExprNode TableExprNode::in (const TableExprNode& right) const
01139 {
01140 return newIN (right.node_p);
01141 }
01142 inline TableExprNode operator&& (const TableExprNode& left,
01143 const TableExprNode& right)
01144 {
01145 return left.newAND (right.node_p);
01146 }
01147 inline TableExprNode operator|| (const TableExprNode& left,
01148 const TableExprNode& right)
01149 {
01150 return left.newOR (right.node_p);
01151 }
01152 inline TableExprNode TableExprNode::operator() (const TableExprNodeSet& indices)
01153 {
01154
01155 return newArrayPartNode (*this, indices, 0);
01156 }
01157
01158 inline TableExprNode near (const TableExprNode& left,
01159 const TableExprNode& right)
01160 {
01161 return TableExprNode::newFunctionNode (TableExprFuncNode::near2FUNC,
01162 left, right);
01163 }
01164 inline TableExprNode near (const TableExprNode& left,
01165 const TableExprNode& right,
01166 const TableExprNode& tolerance)
01167 {
01168 return TableExprNode::newFunctionNode (TableExprFuncNode::near3FUNC,
01169 left, right, tolerance);
01170 }
01171 inline TableExprNode nearAbs (const TableExprNode& left,
01172 const TableExprNode& right)
01173 {
01174 return TableExprNode::newFunctionNode (TableExprFuncNode::nearabs2FUNC,
01175 left, right);
01176 }
01177 inline TableExprNode nearAbs (const TableExprNode& left,
01178 const TableExprNode& right,
01179 const TableExprNode& tolerance)
01180 {
01181 return TableExprNode::newFunctionNode (TableExprFuncNode::nearabs3FUNC,
01182 left, right, tolerance);
01183 }
01184 inline TableExprNode cones (const TableExprNode& sourcePos,
01185 const TableExprNode& cones)
01186 {
01187 return TableExprNode::newConeNode (TableExprFuncNode::conesFUNC,
01188 sourcePos, cones);
01189 }
01190 inline TableExprNode anyCone (const TableExprNode& sourcePos,
01191 const TableExprNode& cones)
01192 {
01193 return TableExprNode::newConeNode (TableExprFuncNode::anyconeFUNC,
01194 sourcePos, cones);
01195 }
01196 inline TableExprNode findCone (const TableExprNode& sourcePos,
01197 const TableExprNode& cones)
01198 {
01199 return TableExprNode::newConeNode (TableExprFuncNode::findconeFUNC,
01200 sourcePos, cones);
01201 }
01202 inline TableExprNode cones (const TableExprNode& sourcePos,
01203 const TableExprNode& conePos,
01204 const TableExprNode& radii)
01205 {
01206 return TableExprNode::newConeNode (TableExprFuncNode::cones3FUNC,
01207 sourcePos, conePos, radii);
01208 }
01209 inline TableExprNode anyCone (const TableExprNode& sourcePos,
01210 const TableExprNode& conePos,
01211 const TableExprNode& radii)
01212 {
01213 return TableExprNode::newConeNode (TableExprFuncNode::anycone3FUNC,
01214 sourcePos, conePos, radii);
01215 }
01216 inline TableExprNode findCone (const TableExprNode& sourcePos,
01217 const TableExprNode& conePos,
01218 const TableExprNode& radii)
01219 {
01220 return TableExprNode::newConeNode (TableExprFuncNode::findcone3FUNC,
01221 sourcePos, conePos, radii);
01222 }
01223 inline TableExprNode cos (const TableExprNode& node)
01224 {
01225 return TableExprNode::newFunctionNode (TableExprFuncNode::cosFUNC, node);
01226 }
01227 inline TableExprNode cosh (const TableExprNode& node)
01228 {
01229 return TableExprNode::newFunctionNode (TableExprFuncNode::coshFUNC, node);
01230 }
01231 inline TableExprNode exp (const TableExprNode& node)
01232 {
01233 return TableExprNode::newFunctionNode (TableExprFuncNode::expFUNC, node);
01234 }
01235 inline TableExprNode log (const TableExprNode& node)
01236 {
01237 return TableExprNode::newFunctionNode (TableExprFuncNode::logFUNC, node);
01238 }
01239 inline TableExprNode log10 (const TableExprNode& node)
01240 {
01241 return TableExprNode::newFunctionNode (TableExprFuncNode::log10FUNC, node);
01242 }
01243 inline TableExprNode pow (const TableExprNode& x, const TableExprNode& y)
01244 {
01245 return TableExprNode::newFunctionNode (TableExprFuncNode::powFUNC, x, y);
01246 }
01247 inline TableExprNode sin (const TableExprNode& node)
01248 {
01249 return TableExprNode::newFunctionNode (TableExprFuncNode::sinFUNC, node);
01250 }
01251 inline TableExprNode sinh (const TableExprNode& node)
01252 {
01253 return TableExprNode::newFunctionNode (TableExprFuncNode::sinhFUNC, node);
01254 }
01255 inline TableExprNode square (const TableExprNode& node)
01256 {
01257 return TableExprNode::newFunctionNode (TableExprFuncNode::squareFUNC,
01258 node);
01259 }
01260 inline TableExprNode sqrt (const TableExprNode& node)
01261 {
01262 return TableExprNode::newFunctionNode (TableExprFuncNode::sqrtFUNC, node);
01263 }
01264 inline TableExprNode norm (const TableExprNode& node)
01265 {
01266 return TableExprNode::newFunctionNode (TableExprFuncNode::normFUNC, node);
01267 }
01268 inline TableExprNode acos (const TableExprNode& node)
01269 {
01270 return TableExprNode::newFunctionNode (TableExprFuncNode::acosFUNC, node);
01271 }
01272 inline TableExprNode asin (const TableExprNode& node)
01273 {
01274 return TableExprNode::newFunctionNode (TableExprFuncNode::asinFUNC, node);
01275 }
01276 inline TableExprNode atan (const TableExprNode& node)
01277 {
01278 return TableExprNode::newFunctionNode (TableExprFuncNode::atanFUNC, node);
01279 }
01280 inline TableExprNode atan2 (const TableExprNode& y, const TableExprNode& x)
01281 {
01282 return TableExprNode::newFunctionNode (TableExprFuncNode::atan2FUNC, y, x);
01283 }
01284 inline TableExprNode sign (const TableExprNode& node)
01285 {
01286 return TableExprNode::newFunctionNode (TableExprFuncNode::signFUNC, node);
01287 }
01288 inline TableExprNode round (const TableExprNode& node)
01289 {
01290 return TableExprNode::newFunctionNode (TableExprFuncNode::roundFUNC, node);
01291 }
01292 inline TableExprNode ceil (const TableExprNode& node)
01293 {
01294 return TableExprNode::newFunctionNode (TableExprFuncNode::ceilFUNC, node);
01295 }
01296 inline TableExprNode abs (const TableExprNode& node)
01297 {
01298 return TableExprNode::newFunctionNode (TableExprFuncNode::absFUNC, node);
01299 }
01300 inline TableExprNode floor (const TableExprNode& node)
01301 {
01302 return TableExprNode::newFunctionNode (TableExprFuncNode::floorFUNC, node);
01303 }
01304 inline TableExprNode fmod (const TableExprNode& x, const TableExprNode& y)
01305 {
01306 return TableExprNode::newFunctionNode (TableExprFuncNode::fmodFUNC, x, y);
01307 }
01308 inline TableExprNode tan (const TableExprNode& node)
01309 {
01310 return TableExprNode::newFunctionNode (TableExprFuncNode::tanFUNC, node);
01311 }
01312 inline TableExprNode tanh (const TableExprNode& node)
01313 {
01314 return TableExprNode::newFunctionNode (TableExprFuncNode::tanhFUNC, node);
01315 }
01316 inline TableExprNode min (const TableExprNode& a, const TableExprNode& b)
01317 {
01318 return TableExprNode::newFunctionNode (TableExprFuncNode::minFUNC, a, b);
01319 }
01320 inline TableExprNode max (const TableExprNode& a, const TableExprNode& b)
01321 {
01322 return TableExprNode::newFunctionNode (TableExprFuncNode::maxFUNC, a, b);
01323 }
01324 inline TableExprNode real (const TableExprNode& node)
01325 {
01326 return TableExprNode::newFunctionNode (TableExprFuncNode::realFUNC, node);
01327 }
01328 inline TableExprNode imag (const TableExprNode& node)
01329 {
01330 return TableExprNode::newFunctionNode (TableExprFuncNode::imagFUNC, node);
01331 }
01332 inline TableExprNode conj (const TableExprNode& node)
01333 {
01334 return TableExprNode::newFunctionNode (TableExprFuncNode::conjFUNC, node);
01335 }
01336 inline TableExprNode amplitude (const TableExprNode& node)
01337 {
01338 return TableExprNode::newFunctionNode (TableExprFuncNode::absFUNC, node);
01339 }
01340 inline TableExprNode arg (const TableExprNode& node)
01341 {
01342 return TableExprNode::newFunctionNode (TableExprFuncNode::argFUNC, node);
01343 }
01344 inline TableExprNode phase (const TableExprNode& node)
01345 {
01346 return TableExprNode::newFunctionNode (TableExprFuncNode::argFUNC, node);
01347 }
01348 inline TableExprNode formComplex (const TableExprNode& real,
01349 const TableExprNode& imag)
01350 {
01351 return TableExprNode::newFunctionNode (TableExprFuncNode::complexFUNC,
01352 real, imag);
01353 }
01354 inline TableExprNode strlength (const TableExprNode& node)
01355 {
01356 return TableExprNode::newFunctionNode (TableExprFuncNode::strlengthFUNC,
01357 node);
01358 }
01359 inline TableExprNode upcase (const TableExprNode& node)
01360 {
01361 return TableExprNode::newFunctionNode (TableExprFuncNode::upcaseFUNC,
01362 node);
01363 }
01364 inline TableExprNode downcase (const TableExprNode& node)
01365 {
01366 return TableExprNode::newFunctionNode (TableExprFuncNode::downcaseFUNC,
01367 node);
01368 }
01369 inline TableExprNode regex (const TableExprNode& node)
01370 {
01371 return TableExprNode::newFunctionNode (TableExprFuncNode::regexFUNC, node);
01372 }
01373 inline TableExprNode pattern (const TableExprNode& node)
01374 {
01375 return TableExprNode::newFunctionNode (TableExprFuncNode::patternFUNC,
01376 node);
01377 }
01378 inline TableExprNode sqlpattern (const TableExprNode& node)
01379 {
01380 return TableExprNode::newFunctionNode (TableExprFuncNode::sqlpatternFUNC,
01381 node);
01382 }
01383 inline TableExprNode datetime (const TableExprNode& node)
01384 {
01385 return TableExprNode::newFunctionNode (TableExprFuncNode::datetimeFUNC,
01386 node);
01387 }
01388 inline TableExprNode mjdtodate (const TableExprNode& node)
01389 {
01390 return TableExprNode::newFunctionNode (TableExprFuncNode::mjdtodateFUNC,
01391 node);
01392 }
01393 inline TableExprNode mjd (const TableExprNode& node)
01394 {
01395 return TableExprNode::newFunctionNode (TableExprFuncNode::mjdFUNC, node);
01396 }
01397 inline TableExprNode date (const TableExprNode& node)
01398 {
01399 return TableExprNode::newFunctionNode (TableExprFuncNode::dateFUNC, node);
01400 }
01401 inline TableExprNode year (const TableExprNode& node)
01402 {
01403 return TableExprNode::newFunctionNode (TableExprFuncNode::yearFUNC, node);
01404 }
01405 inline TableExprNode month (const TableExprNode& node)
01406 {
01407 return TableExprNode::newFunctionNode (TableExprFuncNode::monthFUNC, node);
01408 }
01409 inline TableExprNode day (const TableExprNode& node)
01410 {
01411 return TableExprNode::newFunctionNode (TableExprFuncNode::dayFUNC, node);
01412 }
01413 inline TableExprNode cmonth (const TableExprNode& node)
01414 {
01415 return TableExprNode::newFunctionNode (TableExprFuncNode::cmonthFUNC,
01416 node);
01417 }
01418 inline TableExprNode weekday (const TableExprNode& node)
01419 {
01420 return TableExprNode::newFunctionNode (TableExprFuncNode::weekdayFUNC,
01421 node);
01422 }
01423 inline TableExprNode cdow (const TableExprNode& node)
01424 {
01425 return TableExprNode::newFunctionNode (TableExprFuncNode::cdowFUNC, node);
01426 }
01427 inline TableExprNode week (const TableExprNode& node)
01428 {
01429 return TableExprNode::newFunctionNode (TableExprFuncNode::weekFUNC, node);
01430 }
01431 inline TableExprNode time (const TableExprNode& node)
01432 {
01433 return TableExprNode::newFunctionNode (TableExprFuncNode::timeFUNC, node);
01434 }
01435 inline TableExprNode trim (const TableExprNode& node)
01436 {
01437 return TableExprNode::newFunctionNode (TableExprFuncNode::trimFUNC, node);
01438 }
01439 inline TableExprNode isNaN (const TableExprNode& node)
01440 {
01441 return TableExprNode::newFunctionNode (TableExprFuncNode::isnanFUNC, node);
01442 }
01443 inline TableExprNode min (const TableExprNode& node)
01444 {
01445 return TableExprNode::newFunctionNode (TableExprFuncNode::arrminFUNC,
01446 node);
01447 }
01448 inline TableExprNode max (const TableExprNode& node)
01449 {
01450 return TableExprNode::newFunctionNode (TableExprFuncNode::arrmaxFUNC,
01451 node);
01452 }
01453 inline TableExprNode sum (const TableExprNode& node)
01454 {
01455 return TableExprNode::newFunctionNode (TableExprFuncNode::arrsumFUNC,
01456 node);
01457 }
01458 inline TableExprNode product (const TableExprNode& node)
01459 {
01460 return TableExprNode::newFunctionNode (TableExprFuncNode::arrproductFUNC,
01461 node);
01462 }
01463 inline TableExprNode sumSquare (const TableExprNode& node)
01464 {
01465 return TableExprNode::newFunctionNode (TableExprFuncNode::arrsumsqrFUNC,
01466 node);
01467 }
01468 inline TableExprNode mean (const TableExprNode& node)
01469 {
01470 return TableExprNode::newFunctionNode (TableExprFuncNode::arrmeanFUNC,
01471 node);
01472 }
01473 inline TableExprNode variance (const TableExprNode& node)
01474 {
01475 return TableExprNode::newFunctionNode (TableExprFuncNode::arrvarianceFUNC,
01476 node);
01477 }
01478 inline TableExprNode stddev (const TableExprNode& node)
01479 {
01480 return TableExprNode::newFunctionNode (TableExprFuncNode::arrstddevFUNC,
01481 node);
01482 }
01483 inline TableExprNode avdev (const TableExprNode& node)
01484 {
01485 return TableExprNode::newFunctionNode (TableExprFuncNode::arravdevFUNC,
01486 node);
01487 }
01488 inline TableExprNode rms (const TableExprNode& node)
01489 {
01490 return TableExprNode::newFunctionNode (TableExprFuncNode::arrrmsFUNC,
01491 node);
01492 }
01493 inline TableExprNode median (const TableExprNode& node)
01494 {
01495 return TableExprNode::newFunctionNode (TableExprFuncNode::arrmedianFUNC,
01496 node);
01497 }
01498 inline TableExprNode fractile (const TableExprNode& node,
01499 const TableExprNode& fraction)
01500 {
01501 return TableExprNode::newFunctionNode (TableExprFuncNode::arrfractileFUNC,
01502 node, fraction);
01503 }
01504 inline TableExprNode any (const TableExprNode& node)
01505 {
01506 return TableExprNode::newFunctionNode (TableExprFuncNode::anyFUNC, node);
01507 }
01508 inline TableExprNode all (const TableExprNode& node)
01509 {
01510 return TableExprNode::newFunctionNode (TableExprFuncNode::allFUNC, node);
01511 }
01512 inline TableExprNode ntrue (const TableExprNode& node)
01513 {
01514 return TableExprNode::newFunctionNode (TableExprFuncNode::ntrueFUNC, node);
01515 }
01516 inline TableExprNode nfalse (const TableExprNode& node)
01517 {
01518 return TableExprNode::newFunctionNode (TableExprFuncNode::nfalseFUNC, node);
01519 }
01520 inline TableExprNode sums (const TableExprNode& array,
01521 const TableExprNodeSet& axes)
01522 {
01523 return TableExprNode::newFunctionNode (TableExprFuncNode::arrsumsFUNC,
01524 array, axes);
01525 }
01526 inline TableExprNode products (const TableExprNode& array,
01527 const TableExprNodeSet& axes)
01528 {
01529 return TableExprNode::newFunctionNode (TableExprFuncNode::arrproductsFUNC,
01530 array, axes);
01531 }
01532 inline TableExprNode sumSquares (const TableExprNode& array,
01533 const TableExprNodeSet& axes)
01534 {
01535 return TableExprNode::newFunctionNode (TableExprFuncNode::arrsumsqrsFUNC,
01536 array, axes);
01537 }
01538 inline TableExprNode mins (const TableExprNode& array,
01539 const TableExprNodeSet& axes)
01540 {
01541 return TableExprNode::newFunctionNode (TableExprFuncNode::arrminsFUNC,
01542 array, axes);
01543 }
01544 inline TableExprNode maxs (const TableExprNode& array,
01545 const TableExprNodeSet& axes)
01546 {
01547 return TableExprNode::newFunctionNode (TableExprFuncNode::arrmaxsFUNC,
01548 array, axes);
01549 }
01550 inline TableExprNode means (const TableExprNode& array,
01551 const TableExprNodeSet& axes)
01552 {
01553 return TableExprNode::newFunctionNode (TableExprFuncNode::arrmeansFUNC,
01554 array, axes);
01555 }
01556 inline TableExprNode variances (const TableExprNode& array,
01557 const TableExprNodeSet& axes)
01558 {
01559 return TableExprNode::newFunctionNode (TableExprFuncNode::arrvariancesFUNC,
01560 array, axes);
01561 }
01562 inline TableExprNode stddevs (const TableExprNode& array,
01563 const TableExprNodeSet& axes)
01564 {
01565 return TableExprNode::newFunctionNode (TableExprFuncNode::arrstddevsFUNC,
01566 array, axes);
01567 }
01568 inline TableExprNode avdevs (const TableExprNode& array,
01569 const TableExprNodeSet& axes)
01570 {
01571 return TableExprNode::newFunctionNode (TableExprFuncNode::arravdevsFUNC,
01572 array, axes);
01573 }
01574 inline TableExprNode rmss (const TableExprNode& array,
01575 const TableExprNodeSet& axes)
01576 {
01577 return TableExprNode::newFunctionNode (TableExprFuncNode::arrrmssFUNC,
01578 array, axes);
01579 }
01580 inline TableExprNode medians (const TableExprNode& array,
01581 const TableExprNodeSet& axes)
01582 {
01583 return TableExprNode::newFunctionNode (TableExprFuncNode::arrmediansFUNC,
01584 array, axes);
01585 }
01586 inline TableExprNode fractiles (const TableExprNode& array,
01587 const TableExprNode& fraction,
01588 const TableExprNodeSet& axes)
01589 {
01590 return TableExprNode::newFunctionNode (TableExprFuncNode::arrfractilesFUNC,
01591 array, fraction, axes);
01592 }
01593 inline TableExprNode anys (const TableExprNode& array,
01594 const TableExprNodeSet& axes)
01595 {
01596 return TableExprNode::newFunctionNode (TableExprFuncNode::anysFUNC,
01597 array, axes);
01598 }
01599 inline TableExprNode alls (const TableExprNode& array,
01600 const TableExprNodeSet& axes)
01601 {
01602 return TableExprNode::newFunctionNode (TableExprFuncNode::allsFUNC,
01603 array, axes);
01604 }
01605 inline TableExprNode ntrues (const TableExprNode& array,
01606 const TableExprNodeSet& axes)
01607 {
01608 return TableExprNode::newFunctionNode (TableExprFuncNode::ntruesFUNC,
01609 array, axes);
01610 }
01611 inline TableExprNode nfalses (const TableExprNode& array,
01612 const TableExprNodeSet& axes)
01613 {
01614 return TableExprNode::newFunctionNode (TableExprFuncNode::nfalsesFUNC,
01615 array, axes);
01616 }
01617 inline TableExprNode runningMin (const TableExprNode& node,
01618 const TableExprNodeSet& halfBoxWidth)
01619 {
01620 return TableExprNode::newFunctionNode (TableExprFuncNode::runminFUNC,
01621 node, halfBoxWidth);
01622 }
01623 inline TableExprNode runningMax (const TableExprNode& node,
01624 const TableExprNodeSet& halfBoxWidth)
01625 {
01626 return TableExprNode::newFunctionNode (TableExprFuncNode::runmaxFUNC,
01627 node, halfBoxWidth);
01628 }
01629 inline TableExprNode runningMean (const TableExprNode& node,
01630 const TableExprNodeSet& halfBoxWidth)
01631 {
01632 return TableExprNode::newFunctionNode (TableExprFuncNode::runmeanFUNC,
01633 node, halfBoxWidth);
01634 }
01635 inline TableExprNode runningVariance (const TableExprNode& node,
01636 const TableExprNodeSet& halfBoxWidth)
01637 {
01638 return TableExprNode::newFunctionNode (TableExprFuncNode::runvarianceFUNC,
01639 node, halfBoxWidth);
01640 }
01641 inline TableExprNode runningStddev (const TableExprNode& node,
01642 const TableExprNodeSet& halfBoxWidth)
01643 {
01644 return TableExprNode::newFunctionNode (TableExprFuncNode::runstddevFUNC,
01645 node, halfBoxWidth);
01646 }
01647 inline TableExprNode runningAvdev (const TableExprNode& node,
01648 const TableExprNodeSet& halfBoxWidth)
01649 {
01650 return TableExprNode::newFunctionNode (TableExprFuncNode::runavdevFUNC,
01651 node, halfBoxWidth);
01652 }
01653 inline TableExprNode runningRms (const TableExprNode& node,
01654 const TableExprNodeSet& halfBoxWidth)
01655 {
01656 return TableExprNode::newFunctionNode (TableExprFuncNode::runrmsFUNC,
01657 node, halfBoxWidth);
01658 }
01659 inline TableExprNode runningMedian (const TableExprNode& node,
01660 const TableExprNodeSet& halfBoxWidth)
01661 {
01662 return TableExprNode::newFunctionNode (TableExprFuncNode::runmedianFUNC,
01663 node, halfBoxWidth);
01664 }
01665 inline TableExprNode runningAny (const TableExprNode& node,
01666 const TableExprNodeSet& halfBoxWidth)
01667 {
01668 return TableExprNode::newFunctionNode (TableExprFuncNode::runanyFUNC,
01669 node, halfBoxWidth);
01670 }
01671 inline TableExprNode runningAll (const TableExprNode& node,
01672 const TableExprNodeSet& halfBoxWidth)
01673 {
01674 return TableExprNode::newFunctionNode (TableExprFuncNode::runallFUNC,
01675 node, halfBoxWidth);
01676 }
01677 inline TableExprNode array (const TableExprNode& values,
01678 const TableExprNodeSet& shape)
01679 {
01680 return TableExprNode::newFunctionNode (TableExprFuncNode::arrayFUNC,
01681 values, shape);
01682 }
01683 inline TableExprNode isdefined (const TableExprNode& node)
01684 {
01685 return TableExprNode::newFunctionNode (TableExprFuncNode::isdefFUNC, node);
01686 }
01687 inline TableExprNode nelements (const TableExprNode& node)
01688 {
01689 return TableExprNode::newFunctionNode (TableExprFuncNode::nelemFUNC, node);
01690 }
01691 inline TableExprNode ndim (const TableExprNode& node)
01692 {
01693 return TableExprNode::newFunctionNode (TableExprFuncNode::ndimFUNC, node);
01694 }
01695 inline TableExprNode shape (const TableExprNode& node)
01696 {
01697 return TableExprNode::newFunctionNode (TableExprFuncNode::shapeFUNC, node);
01698 }
01699 inline TableExprNode iif (const TableExprNode& condition,
01700 const TableExprNode& arg1,
01701 const TableExprNode& arg2)
01702 {
01703 return TableExprNode::newFunctionNode (TableExprFuncNode::iifFUNC,
01704 condition, arg1, arg2);
01705 }
01706
01707
01708 inline void TableExprNode::show (ostream& os) const
01709 {
01710 node_p->show (os, 0);
01711 }
01712 inline const TableExprNodeRep* TableExprNode::getNodeRep() const
01713 {
01714 return node_p;
01715 }
01716 inline TableExprNodeRep* TableExprNode::getRep()
01717 {
01718 return node_p;
01719 }
01720
01721
01722
01723 }
01724
01725 #endif