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_TAQLNODEDER_H
00029 #define TABLES_TAQLNODEDER_H
00030
00031
00032 #include <casacore/casa/aips.h>
00033 #include <casacore/tables/TaQL/TaQLNode.h>
00034 #include <casacore/casa/BasicSL/Complex.h>
00035 #include <casacore/casa/BasicSL/String.h>
00036 #include <casacore/casa/Utilities/Regex.h>
00037 #include <casacore/casa/Quanta/MVTime.h>
00038 #include <casacore/casa/Containers/Block.h>
00039 #include <vector>
00040 #include <iostream>
00041
00042 namespace casacore {
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061 class TaQLConstNodeRep: public TaQLNodeRep
00062 {
00063 public:
00064
00065 enum Type {CTBool =0,
00066 CTInt =1,
00067 CTReal =2,
00068 CTComplex=3,
00069 CTString =4,
00070 CTTime =5};
00071 explicit TaQLConstNodeRep (Bool value);
00072 explicit TaQLConstNodeRep (Int64 value, Bool isTableName=False);
00073 explicit TaQLConstNodeRep (Double value);
00074 explicit TaQLConstNodeRep (Double value, const String& unit);
00075 explicit TaQLConstNodeRep (DComplex value);
00076 explicit TaQLConstNodeRep (const String& value, Bool isTableName=False);
00077 explicit TaQLConstNodeRep (const MVTime& value);
00078 virtual ~TaQLConstNodeRep();
00079 void setIsTableName()
00080 { itsIsTableName = True; }
00081 const String& getString() const;
00082 const String& getUnit() const
00083 { return itsUnit; }
00084 virtual TaQLNodeResult visit (TaQLNodeVisitor&) const;
00085 virtual void show (std::ostream& os) const;
00086 virtual void save (AipsIO& aio) const;
00087 static TaQLConstNodeRep* restore (AipsIO& aio);
00088
00089 Type itsType;
00090 Bool itsIsTableName;
00091 Bool itsBValue;
00092 Int64 itsIValue;
00093 Double itsRValue;
00094 DComplex itsCValue;
00095 String itsSValue;
00096 MVTime itsTValue;
00097 String itsUnit;
00098 };
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118 class TaQLRegexNodeRep: public TaQLNodeRep
00119 {
00120 public:
00121 explicit TaQLRegexNodeRep (const String& value);
00122 TaQLRegexNodeRep (const String& value, Bool caseInsensitive, Bool negate,
00123 Bool ignoreBlanks, Int maxDistance);
00124 virtual ~TaQLRegexNodeRep();
00125 virtual TaQLNodeResult visit (TaQLNodeVisitor&) const;
00126 virtual void show (std::ostream& os) const;
00127 virtual void save (AipsIO& aio) const;
00128 static TaQLRegexNodeRep* restore (AipsIO& aio);
00129
00130 String itsValue;
00131 Bool itsCaseInsensitive;
00132 Bool itsNegate;
00133
00134 Bool itsIgnoreBlanks;
00135 Int itsMaxDistance;
00136 };
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155 class TaQLUnaryNodeRep: public TaQLNodeRep
00156 {
00157 public:
00158
00159 enum Type {U_MINUS =0,
00160 U_NOT =1,
00161 U_EXISTS =2,
00162 U_NOTEXISTS=3,
00163 U_BITNOT =4};
00164 TaQLUnaryNodeRep (Type type, const TaQLNode& child);
00165 virtual ~TaQLUnaryNodeRep();
00166 virtual TaQLNodeResult visit (TaQLNodeVisitor&) const;
00167 virtual void show (std::ostream& os) const;
00168 virtual void save (AipsIO& aio) const;
00169 static TaQLUnaryNodeRep* restore (AipsIO& aio);
00170
00171 Type itsType;
00172 TaQLNode itsChild;
00173 };
00174
00175
00176
00177
00178
00179
00180
00181
00182
00183
00184
00185
00186
00187
00188
00189
00190
00191
00192
00193 class TaQLBinaryNodeRep: public TaQLNodeRep
00194 {
00195 public:
00196
00197 enum Type {B_PLUS =0,
00198 B_MINUS =1,
00199 B_TIMES =2,
00200 B_DIVIDE=3,
00201 B_MODULO=4,
00202 B_POWER =5,
00203 B_EQ =6,
00204 B_NE =7,
00205 B_GT =8,
00206 B_GE =9,
00207 B_LT =10,
00208 B_LE =11,
00209 B_OR =12,
00210 B_AND =13,
00211 B_IN =14,
00212 B_INDEX =15,
00213 B_DIVIDETRUNC=16,
00214 B_EQREGEX =17,
00215 B_NEREGEX =18,
00216 B_BITAND =19,
00217 B_BITXOR =20,
00218 B_BITOR =21};
00219 TaQLBinaryNodeRep (Type type, const TaQLNode& left, const TaQLNode& right);
00220 virtual ~TaQLBinaryNodeRep();
00221 virtual TaQLNodeResult visit (TaQLNodeVisitor&) const;
00222 virtual void show (std::ostream& os) const;
00223 virtual void save (AipsIO& aio) const;
00224 static TaQLBinaryNodeRep* restore (AipsIO& aio);
00225
00226
00227 static TaQLBinaryNodeRep* handleRegex (const TaQLNode& left,
00228 const TaQLRegexNode& regex);
00229
00230 Type itsType;
00231 TaQLNode itsLeft;
00232 TaQLNode itsRight;
00233 };
00234
00235
00236
00237
00238
00239
00240
00241
00242
00243
00244
00245
00246
00247
00248
00249
00250 class TaQLMultiNodeRep: public TaQLNodeRep
00251 {
00252 public:
00253 explicit TaQLMultiNodeRep (Bool isSetOrArray=False);
00254 TaQLMultiNodeRep(const String& prefix, const String& postfix,
00255 Bool isSetOrArray=False);
00256 virtual ~TaQLMultiNodeRep();
00257 void setIsSetOrArray()
00258 { itsIsSetOrArray = True; }
00259 void setPPFix (const String& prefix, const String& postfix)
00260 { itsPrefix = prefix; itsPostfix = postfix; }
00261 void setSeparator (const String& sep)
00262 { itsSep = sep; }
00263 void setSeparator (uInt incr, const String& sep)
00264 { itsIncr = incr; itsSep2 = sep; }
00265 void add (const TaQLNode& node)
00266 { itsNodes.push_back (node); }
00267 const std::vector<TaQLNode>& getNodes() const
00268 { return itsNodes; }
00269 virtual TaQLNodeResult visit (TaQLNodeVisitor&) const;
00270 virtual void show (std::ostream& os) const;
00271 virtual void save (AipsIO& aio) const;
00272 static TaQLMultiNodeRep* restore (AipsIO& aio);
00273
00274 std::vector<TaQLNode> itsNodes;
00275 Bool itsIsSetOrArray;
00276 String itsPrefix;
00277 String itsPostfix;
00278 String itsSep;
00279 String itsSep2;
00280 uInt itsIncr;
00281 };
00282
00283
00284
00285
00286
00287
00288
00289
00290
00291
00292
00293
00294
00295
00296
00297
00298 class TaQLFuncNodeRep: public TaQLNodeRep
00299 {
00300 public:
00301 TaQLFuncNodeRep (const String& name);
00302 TaQLFuncNodeRep (const String& name, const TaQLMultiNode& args);
00303 virtual ~TaQLFuncNodeRep();
00304 virtual TaQLNodeResult visit (TaQLNodeVisitor&) const;
00305 virtual void show (std::ostream& os) const;
00306 virtual void save (AipsIO& aio) const;
00307 static TaQLFuncNodeRep* restore (AipsIO& aio);
00308
00309 String itsName;
00310 TaQLMultiNode itsArgs;
00311 };
00312
00313
00314
00315
00316
00317
00318
00319
00320
00321
00322
00323
00324
00325
00326
00327
00328
00329 class TaQLRangeNodeRep: public TaQLNodeRep
00330 {
00331 public:
00332 TaQLRangeNodeRep (Bool leftClosed, TaQLNode start,
00333 const TaQLNode& end, Bool rightClosed);
00334 TaQLRangeNodeRep (Bool leftClosed, const TaQLNode& start);
00335 TaQLRangeNodeRep (const TaQLNode& end, Bool rightClosed);
00336 virtual ~TaQLRangeNodeRep();
00337 virtual TaQLNodeResult visit (TaQLNodeVisitor&) const;
00338 virtual void show (std::ostream& os) const;
00339 virtual void save (AipsIO& aio) const;
00340 static TaQLRangeNodeRep* restore (AipsIO& aio);
00341
00342 Bool itsLeftClosed;
00343 TaQLNode itsStart;
00344 TaQLNode itsEnd;
00345 Bool itsRightClosed;
00346 };
00347
00348
00349
00350
00351
00352
00353
00354
00355
00356
00357
00358
00359
00360
00361
00362
00363
00364 class TaQLIndexNodeRep: public TaQLNodeRep
00365 {
00366 public:
00367 TaQLIndexNodeRep (const TaQLNode& start, const TaQLNode& end,
00368 const TaQLNode& incr);
00369 virtual ~TaQLIndexNodeRep();
00370 virtual TaQLNodeResult visit (TaQLNodeVisitor&) const;
00371 virtual void show (std::ostream& os) const;
00372 virtual void save (AipsIO& aio) const;
00373 static TaQLIndexNodeRep* restore (AipsIO& aio);
00374
00375 TaQLNode itsStart;
00376 TaQLNode itsEnd;
00377 TaQLNode itsIncr;
00378 };
00379
00380
00381
00382
00383
00384
00385
00386
00387
00388
00389
00390
00391
00392
00393
00394
00395
00396 class TaQLJoinNodeRep: public TaQLNodeRep
00397 {
00398 public:
00399 TaQLJoinNodeRep (const TaQLMultiNode& tables, const TaQLNode& condition);
00400 virtual ~TaQLJoinNodeRep();
00401 virtual TaQLNodeResult visit (TaQLNodeVisitor&) const;
00402 virtual void show (std::ostream& os) const;
00403 virtual void save (AipsIO& aio) const;
00404 static TaQLJoinNodeRep* restore (AipsIO& aio);
00405
00406 TaQLMultiNode itsTables;
00407 TaQLNode itsCondition;
00408 };
00409
00410
00411
00412
00413
00414
00415
00416
00417
00418
00419
00420
00421
00422
00423
00424
00425
00426 class TaQLKeyColNodeRep: public TaQLNodeRep
00427 {
00428 public:
00429 TaQLKeyColNodeRep (const String& name, const String& nameMask = String());
00430 virtual ~TaQLKeyColNodeRep();
00431 virtual TaQLNodeResult visit (TaQLNodeVisitor&) const;
00432 virtual void show (std::ostream& os) const;
00433 virtual void save (AipsIO& aio) const;
00434 static TaQLKeyColNodeRep* restore (AipsIO& aio);
00435
00436 String itsName;
00437 String itsNameMask;
00438 };
00439
00440
00441
00442
00443
00444
00445
00446
00447
00448
00449
00450
00451
00452
00453
00454
00455
00456
00457 class TaQLTableNodeRep: public TaQLNodeRep
00458 {
00459 public:
00460 TaQLTableNodeRep (const TaQLNode& table, const String& alias);
00461 virtual ~TaQLTableNodeRep();
00462 virtual TaQLNodeResult visit (TaQLNodeVisitor&) const;
00463 virtual void show (std::ostream& os) const;
00464 virtual void save (AipsIO& aio) const;
00465 static TaQLTableNodeRep* restore (AipsIO& aio);
00466
00467 TaQLNode itsTable;
00468 String itsAlias;
00469 };
00470
00471
00472
00473
00474
00475
00476
00477
00478
00479
00480
00481
00482
00483
00484
00485
00486
00487
00488
00489
00490 class TaQLColNodeRep: public TaQLNodeRep
00491 {
00492 public:
00493 TaQLColNodeRep (const TaQLNode& expr, const String& name,
00494 const String& nameMask, const String& dtype);
00495 virtual ~TaQLColNodeRep();
00496 virtual TaQLNodeResult visit (TaQLNodeVisitor&) const;
00497 virtual void show (std::ostream& os) const;
00498 virtual void save (AipsIO& aio) const;
00499 static TaQLColNodeRep* restore (AipsIO& aio);
00500
00501 TaQLNode itsExpr;
00502 String itsName;
00503 String itsNameMask;
00504 String itsDtype;
00505 };
00506
00507
00508
00509
00510
00511
00512
00513
00514
00515
00516
00517
00518
00519
00520
00521
00522
00523 class TaQLColumnsNodeRep: public TaQLNodeRep
00524 {
00525 public:
00526 TaQLColumnsNodeRep (Bool distinct, const TaQLMultiNode& nodes);
00527 virtual ~TaQLColumnsNodeRep();
00528 virtual TaQLNodeResult visit (TaQLNodeVisitor&) const;
00529 virtual void show (std::ostream& os) const;
00530 virtual void save (AipsIO& aio) const;
00531 static TaQLColumnsNodeRep* restore (AipsIO& aio);
00532
00533 Bool itsDistinct;
00534 TaQLMultiNode itsNodes;
00535 };
00536
00537
00538
00539
00540
00541
00542
00543
00544
00545
00546
00547
00548
00549
00550
00551
00552
00553 class TaQLGroupNodeRep: public TaQLNodeRep
00554 {
00555 public:
00556
00557 enum Type {Normal=0,
00558 Rollup=1};
00559 TaQLGroupNodeRep (Type type, const TaQLMultiNode& nodes);
00560 virtual ~TaQLGroupNodeRep();
00561 virtual TaQLNodeResult visit (TaQLNodeVisitor&) const;
00562 virtual void show (std::ostream& os) const;
00563 virtual void save (AipsIO& aio) const;
00564 static TaQLGroupNodeRep* restore (AipsIO& aio);
00565
00566 Type itsType;
00567 TaQLMultiNode itsNodes;
00568 };
00569
00570
00571
00572
00573
00574
00575
00576
00577
00578
00579
00580
00581
00582
00583
00584
00585
00586 class TaQLSortKeyNodeRep: public TaQLNodeRep
00587 {
00588 public:
00589
00590 enum Type {Ascending =0,
00591 Descending=1,
00592 None =2};
00593 TaQLSortKeyNodeRep (Type type, const TaQLNode& child);
00594 virtual ~TaQLSortKeyNodeRep();
00595 virtual TaQLNodeResult visit (TaQLNodeVisitor&) const;
00596 virtual void show (std::ostream& os) const;
00597 virtual void save (AipsIO& aio) const;
00598 static TaQLSortKeyNodeRep* restore (AipsIO& aio);
00599
00600 Type itsType;
00601 TaQLNode itsChild;
00602 };
00603
00604
00605
00606
00607
00608
00609
00610
00611
00612
00613
00614
00615
00616
00617
00618
00619
00620 class TaQLSortNodeRep: public TaQLNodeRep
00621 {
00622 public:
00623
00624 enum Type {Ascending =0,
00625 Descending=1};
00626 TaQLSortNodeRep (Bool unique, Type type, const TaQLMultiNode& keys);
00627 virtual ~TaQLSortNodeRep();
00628 virtual TaQLNodeResult visit (TaQLNodeVisitor&) const;
00629 virtual void show (std::ostream& os) const;
00630 virtual void save (AipsIO& aio) const;
00631 static TaQLSortNodeRep* restore (AipsIO& aio);
00632
00633 Bool itsUnique;
00634 Type itsType;
00635 TaQLMultiNode itsKeys;
00636 };
00637
00638
00639
00640
00641
00642
00643
00644
00645
00646
00647
00648
00649
00650
00651
00652
00653
00654 class TaQLLimitOffNodeRep: public TaQLNodeRep
00655 {
00656 public:
00657 TaQLLimitOffNodeRep (const TaQLNode& limit, const TaQLNode& offset);
00658 virtual ~TaQLLimitOffNodeRep();
00659 virtual TaQLNodeResult visit (TaQLNodeVisitor&) const;
00660 virtual void show (std::ostream& os) const;
00661 virtual void save (AipsIO& aio) const;
00662 static TaQLLimitOffNodeRep* restore (AipsIO& aio);
00663
00664 TaQLNode itsLimit;
00665 TaQLNode itsOffset;
00666 };
00667
00668
00669
00670
00671
00672
00673
00674
00675
00676
00677
00678
00679
00680
00681
00682
00683
00684 class TaQLGivingNodeRep: public TaQLNodeRep
00685 {
00686 public:
00687 explicit TaQLGivingNodeRep (const String& name, const TaQLMultiNode& type);
00688 explicit TaQLGivingNodeRep (const TaQLMultiNode& exprlist);
00689 virtual ~TaQLGivingNodeRep();
00690 virtual TaQLNodeResult visit (TaQLNodeVisitor&) const;
00691 virtual void show (std::ostream& os) const;
00692 virtual void save (AipsIO& aio) const;
00693 static TaQLGivingNodeRep* restore (AipsIO& aio);
00694
00695 String itsName;
00696 TaQLMultiNode itsType;
00697 TaQLMultiNode itsExprList;
00698 };
00699
00700
00701
00702
00703
00704
00705
00706
00707
00708
00709
00710
00711
00712
00713
00714
00715
00716
00717
00718 class TaQLUpdExprNodeRep: public TaQLNodeRep
00719 {
00720 public:
00721 TaQLUpdExprNodeRep (const String& name, const String& nameMask,
00722 const TaQLNode& expr);
00723 TaQLUpdExprNodeRep (const String& name, const String& nameMask,
00724 const TaQLMultiNode& indices,
00725 const TaQLNode& expr);
00726 TaQLUpdExprNodeRep (const String& name, const String& nameMask,
00727 const TaQLMultiNode& indices1,
00728 const TaQLMultiNode& indices2,
00729 const TaQLNode& expr);
00730 virtual ~TaQLUpdExprNodeRep();
00731 virtual TaQLNodeResult visit (TaQLNodeVisitor&) const;
00732 virtual void show (std::ostream& os) const;
00733 virtual void save (AipsIO& aio) const;
00734 static TaQLUpdExprNodeRep* restore (AipsIO& aio);
00735
00736 String itsName;
00737 String itsNameMask;
00738 TaQLMultiNode itsIndices1;
00739 TaQLMultiNode itsIndices2;
00740 TaQLNode itsExpr;
00741 };
00742
00743
00744
00745
00746
00747
00748
00749
00750
00751
00752
00753
00754
00755
00756
00757
00758
00759
00760
00761 class TaQLQueryNodeRep: public TaQLNodeRep
00762 {
00763 public:
00764 TaQLQueryNodeRep (int nodeType);
00765 virtual ~TaQLQueryNodeRep();
00766 void setBrackets()
00767 { itsBrackets = True; }
00768 void setNoExecute()
00769 { itsNoExecute = True; }
00770 void setFromExecute()
00771 { itsFromExecute = True; }
00772 Bool getBrackets() const
00773 { return itsBrackets; }
00774 Bool getNoExecute() const
00775 { return itsNoExecute; }
00776 Bool getFromExecute() const
00777 { return itsFromExecute; }
00778 virtual void show (std::ostream& os) const;
00779 protected:
00780 virtual void saveSuper (AipsIO& aio) const;
00781 virtual void restoreSuper (AipsIO& aio);
00782 private:
00783 virtual void showDerived (std::ostream& os) const = 0;
00784 Bool itsBrackets;
00785 Bool itsNoExecute;
00786 Bool itsFromExecute;
00787 };
00788
00789
00790
00791
00792
00793
00794
00795
00796
00797
00798
00799
00800
00801
00802
00803
00804
00805
00806
00807 class TaQLSelectNodeRep: public TaQLQueryNodeRep
00808 {
00809 public:
00810 TaQLSelectNodeRep (const TaQLNode& columns, const TaQLNode& where,
00811 const TaQLNode& groupby, const TaQLNode& having,
00812 const TaQLNode& sort, const TaQLNode& limitoff,
00813 const TaQLNode& giving, const TaQLMultiNode& dminfo);
00814 TaQLSelectNodeRep (const TaQLNode& columns, const TaQLMultiNode& tables,
00815 const TaQLNode& join, const TaQLNode& where,
00816 const TaQLNode& groupby, const TaQLNode& having,
00817 const TaQLNode& sort, const TaQLNode& limitoff,
00818 const TaQLNode& giving, const TaQLMultiNode& dminfo);
00819 virtual ~TaQLSelectNodeRep();
00820 virtual TaQLNodeResult visit (TaQLNodeVisitor&) const;
00821 virtual void showDerived (std::ostream& os) const;
00822 virtual void save (AipsIO& aio) const;
00823 static TaQLSelectNodeRep* restore (AipsIO& aio);
00824
00825 TaQLNode itsColumns;
00826 TaQLMultiNode itsTables;
00827 TaQLNode itsJoin;
00828 TaQLNode itsWhere;
00829 TaQLNode itsGroupby;
00830 TaQLNode itsHaving;
00831 TaQLNode itsSort;
00832 TaQLNode itsLimitOff;
00833 TaQLNode itsGiving;
00834 TaQLMultiNode itsDMInfo;
00835 };
00836
00837
00838
00839
00840
00841
00842
00843
00844
00845
00846
00847
00848
00849
00850
00851
00852 class TaQLCountNodeRep: public TaQLQueryNodeRep
00853 {
00854 public:
00855 TaQLCountNodeRep (const TaQLNode& columns, const TaQLMultiNode& tables,
00856 const TaQLNode& where);
00857 virtual ~TaQLCountNodeRep();
00858 virtual TaQLNodeResult visit (TaQLNodeVisitor&) const;
00859 virtual void showDerived (std::ostream& os) const;
00860 virtual void save (AipsIO& aio) const;
00861 static TaQLCountNodeRep* restore (AipsIO& aio);
00862
00863 TaQLNode itsColumns;
00864 TaQLMultiNode itsTables;
00865 TaQLNode itsWhere;
00866 };
00867
00868
00869
00870
00871
00872
00873
00874
00875
00876
00877
00878
00879
00880
00881
00882
00883
00884
00885 class TaQLUpdateNodeRep: public TaQLNodeRep
00886 {
00887 public:
00888 TaQLUpdateNodeRep (const TaQLMultiNode& tables, const TaQLMultiNode& update,
00889 const TaQLMultiNode& from, const TaQLNode& where,
00890 const TaQLNode& sort, const TaQLNode& limitoff);
00891 virtual ~TaQLUpdateNodeRep();
00892 virtual TaQLNodeResult visit (TaQLNodeVisitor&) const;
00893 virtual void show (std::ostream& os) const;
00894 virtual void save (AipsIO& aio) const;
00895 static TaQLUpdateNodeRep* restore (AipsIO& aio);
00896
00897 TaQLMultiNode itsTables;
00898 TaQLMultiNode itsUpdate;
00899 TaQLMultiNode itsFrom;
00900 TaQLNode itsWhere;
00901 TaQLNode itsSort;
00902 TaQLNode itsLimitOff;
00903 };
00904
00905
00906
00907
00908
00909
00910
00911
00912
00913
00914
00915
00916
00917
00918
00919
00920
00921 class TaQLInsertNodeRep: public TaQLNodeRep
00922 {
00923 public:
00924 TaQLInsertNodeRep (const TaQLMultiNode& tables, const TaQLMultiNode& columns,
00925 const TaQLNode& values, const TaQLNode& limit);
00926 TaQLInsertNodeRep (const TaQLMultiNode& tables, const TaQLMultiNode& insert);
00927 virtual ~TaQLInsertNodeRep();
00928 virtual TaQLNodeResult visit (TaQLNodeVisitor&) const;
00929 virtual void show (std::ostream& os) const;
00930 virtual void save (AipsIO& aio) const;
00931 static TaQLInsertNodeRep* restore (AipsIO& aio);
00932
00933 TaQLMultiNode itsTables;
00934 TaQLMultiNode itsColumns;
00935 TaQLNode itsValues;
00936 TaQLNode itsLimit;
00937 };
00938
00939
00940
00941
00942
00943
00944
00945
00946
00947
00948
00949
00950
00951
00952
00953
00954 class TaQLDeleteNodeRep: public TaQLNodeRep
00955 {
00956 public:
00957 TaQLDeleteNodeRep (const TaQLMultiNode& tables, const TaQLNode& where,
00958 const TaQLNode& sort, const TaQLNode& limitoff);
00959 virtual ~TaQLDeleteNodeRep();
00960 virtual TaQLNodeResult visit (TaQLNodeVisitor&) const;
00961 virtual void show (std::ostream& os) const;
00962 virtual void save (AipsIO& aio) const;
00963 static TaQLDeleteNodeRep* restore (AipsIO& aio);
00964
00965 TaQLMultiNode itsTables;
00966 TaQLNode itsWhere;
00967 TaQLNode itsSort;
00968 TaQLNode itsLimitOff;
00969 };
00970
00971
00972
00973
00974
00975
00976
00977
00978
00979
00980
00981
00982
00983
00984
00985
00986 class TaQLCalcNodeRep: public TaQLNodeRep
00987 {
00988 public:
00989 TaQLCalcNodeRep (const TaQLMultiNode& tables, const TaQLNode& expr,
00990 const TaQLNode& where,
00991 const TaQLNode& sort, const TaQLNode& limitoff);
00992 virtual ~TaQLCalcNodeRep();
00993 virtual TaQLNodeResult visit (TaQLNodeVisitor&) const;
00994 virtual void show (std::ostream& os) const;
00995 virtual void save (AipsIO& aio) const;
00996 static TaQLCalcNodeRep* restore (AipsIO& aio);
00997
00998 TaQLMultiNode itsTables;
00999 TaQLNode itsExpr;
01000 TaQLNode itsWhere;
01001 TaQLNode itsSort;
01002 TaQLNode itsLimitOff;
01003 };
01004
01005
01006
01007
01008
01009
01010
01011
01012
01013
01014
01015
01016
01017
01018
01019
01020 class TaQLCreTabNodeRep: public TaQLQueryNodeRep
01021 {
01022 public:
01023 TaQLCreTabNodeRep (const TaQLNode& giving, const TaQLMultiNode& cols,
01024 const TaQLNode& limit, const TaQLMultiNode& dminfo);
01025 virtual ~TaQLCreTabNodeRep();
01026 virtual TaQLNodeResult visit (TaQLNodeVisitor&) const;
01027 virtual void showDerived (std::ostream& os) const;
01028 virtual void save (AipsIO& aio) const;
01029 static TaQLCreTabNodeRep* restore (AipsIO& aio);
01030
01031 TaQLNode itsGiving;
01032 TaQLMultiNode itsColumns;
01033 TaQLNode itsLimit;
01034 TaQLMultiNode itsDMInfo;
01035 };
01036
01037
01038
01039
01040
01041
01042
01043
01044
01045
01046
01047
01048
01049
01050
01051
01052
01053 class TaQLColSpecNodeRep: public TaQLNodeRep
01054 {
01055 public:
01056 TaQLColSpecNodeRep (const String& name, const String& dtype,
01057 const TaQLMultiNode& spec);
01058 virtual ~TaQLColSpecNodeRep();
01059 virtual TaQLNodeResult visit (TaQLNodeVisitor&) const;
01060 virtual void show (std::ostream& os) const;
01061 virtual void save (AipsIO& aio) const;
01062 static TaQLColSpecNodeRep* restore (AipsIO& aio);
01063
01064 String itsName;
01065 String itsDtype;
01066 TaQLMultiNode itsSpec;
01067 };
01068
01069
01070
01071
01072
01073
01074
01075
01076
01077
01078
01079
01080
01081
01082
01083
01084 class TaQLRecFldNodeRep: public TaQLNodeRep
01085 {
01086 public:
01087 TaQLRecFldNodeRep (const String& name,
01088 const TaQLNode& values, const String& dtype);
01089 TaQLRecFldNodeRep (const String& name, const TaQLRecFldNodeRep&);
01090 TaQLRecFldNodeRep (const String& name, const String& fromName,
01091 const String& dtype);
01092 virtual ~TaQLRecFldNodeRep();
01093 virtual TaQLNodeResult visit (TaQLNodeVisitor&) const;
01094 virtual void show (std::ostream& os) const;
01095 virtual void save (AipsIO& aio) const;
01096 static TaQLRecFldNodeRep* restore (AipsIO& aio);
01097
01098 String itsName;
01099 String itsFromName;
01100 String itsDtype;
01101 TaQLNode itsValues;
01102 };
01103
01104
01105
01106
01107
01108
01109
01110
01111
01112
01113
01114
01115
01116
01117
01118
01119 class TaQLUnitNodeRep: public TaQLNodeRep
01120 {
01121 public:
01122 TaQLUnitNodeRep (const String& unit, const TaQLNode& child);
01123 virtual ~TaQLUnitNodeRep();
01124 virtual TaQLNodeResult visit (TaQLNodeVisitor&) const;
01125 virtual void show (std::ostream& os) const;
01126 virtual void save (AipsIO& aio) const;
01127 static TaQLUnitNodeRep* restore (AipsIO& aio);
01128
01129 String itsUnit;
01130 TaQLNode itsChild;
01131 };
01132
01133
01134
01135
01136
01137
01138
01139
01140
01141
01142
01143
01144
01145
01146
01147
01148 class TaQLAltTabNodeRep: public TaQLQueryNodeRep
01149 {
01150 public:
01151 TaQLAltTabNodeRep (const TaQLNode& table,
01152 const TaQLMultiNode& from,
01153 const TaQLMultiNode& commands);
01154 virtual ~TaQLAltTabNodeRep();
01155 virtual TaQLNodeResult visit (TaQLNodeVisitor&) const;
01156 virtual void showDerived (std::ostream& os) const;
01157 virtual void save (AipsIO& aio) const;
01158 static TaQLAltTabNodeRep* restore (AipsIO& aio);
01159
01160 TaQLNode itsTable;
01161 TaQLMultiNode itsFrom;
01162 TaQLMultiNode itsCommands;
01163 };
01164
01165
01166
01167
01168
01169
01170
01171
01172
01173
01174
01175
01176
01177
01178
01179
01180 class TaQLAddColNodeRep: public TaQLNodeRep
01181 {
01182 public:
01183 TaQLAddColNodeRep (const TaQLMultiNode& cols, const TaQLMultiNode& dminfo);
01184 virtual ~TaQLAddColNodeRep();
01185 virtual TaQLNodeResult visit (TaQLNodeVisitor&) const;
01186 virtual void show (std::ostream& os) const;
01187 virtual void save (AipsIO& aio) const;
01188 static TaQLAddColNodeRep* restore (AipsIO& aio);
01189
01190 TaQLMultiNode itsColumns;
01191 TaQLMultiNode itsDMInfo;
01192 };
01193
01194
01195
01196
01197
01198
01199
01200
01201
01202
01203
01204
01205
01206
01207
01208
01209 class TaQLRenDropNodeRep: public TaQLNodeRep
01210 {
01211 public:
01212 TaQLRenDropNodeRep (Int type, const TaQLMultiNode& cols);
01213 virtual ~TaQLRenDropNodeRep();
01214 virtual TaQLNodeResult visit (TaQLNodeVisitor&) const;
01215 virtual void show (std::ostream& os) const;
01216 virtual void save (AipsIO& aio) const;
01217 static TaQLRenDropNodeRep* restore (AipsIO& aio);
01218
01219 Int itsType;
01220 TaQLMultiNode itsNames;
01221 };
01222
01223
01224
01225
01226
01227
01228
01229
01230
01231
01232
01233
01234
01235
01236
01237
01238 class TaQLSetKeyNodeRep: public TaQLNodeRep
01239 {
01240 public:
01241 TaQLSetKeyNodeRep (const TaQLMultiNode& keyvals);
01242 virtual ~TaQLSetKeyNodeRep();
01243 virtual TaQLNodeResult visit (TaQLNodeVisitor&) const;
01244 virtual void show (std::ostream& os) const;
01245 virtual void save (AipsIO& aio) const;
01246 static TaQLSetKeyNodeRep* restore (AipsIO& aio);
01247
01248 TaQLMultiNode itsKeyVals;
01249 };
01250
01251
01252
01253
01254
01255
01256
01257
01258
01259
01260
01261
01262
01263
01264
01265
01266 class TaQLAddRowNodeRep: public TaQLNodeRep
01267 {
01268 public:
01269 TaQLAddRowNodeRep (const TaQLNode& nrow);
01270 virtual ~TaQLAddRowNodeRep();
01271 virtual TaQLNodeResult visit (TaQLNodeVisitor&) const;
01272 virtual void show (std::ostream& os) const;
01273 virtual void save (AipsIO& aio) const;
01274 static TaQLAddRowNodeRep* restore (AipsIO& aio);
01275
01276 TaQLNode itsNRow;
01277 };
01278
01279
01280
01281
01282
01283
01284
01285
01286
01287
01288
01289
01290
01291
01292
01293
01294 class TaQLConcTabNodeRep: public TaQLQueryNodeRep
01295 {
01296 public:
01297 TaQLConcTabNodeRep (const String& tableName,
01298 const TaQLMultiNode& tables,
01299 const TaQLMultiNode& subtableNames);
01300 virtual ~TaQLConcTabNodeRep();
01301 virtual TaQLNodeResult visit (TaQLNodeVisitor&) const;
01302 virtual void showDerived (std::ostream& os) const;
01303 virtual void save (AipsIO& aio) const;
01304 static TaQLConcTabNodeRep* restore (AipsIO& aio);
01305
01306 String itsTableName;
01307 TaQLMultiNode itsTables;
01308 TaQLMultiNode itsSubTables;
01309 };
01310
01311
01312
01313
01314
01315
01316
01317
01318
01319
01320
01321
01322
01323
01324
01325
01326 class TaQLShowNodeRep: public TaQLNodeRep
01327 {
01328 public:
01329 TaQLShowNodeRep (const TaQLMultiNode& names);
01330 virtual ~TaQLShowNodeRep();
01331 virtual TaQLNodeResult visit (TaQLNodeVisitor&) const;
01332 virtual void show (std::ostream& os) const;
01333 virtual void save (AipsIO& aio) const;
01334 static TaQLShowNodeRep* restore (AipsIO& aio);
01335
01336 TaQLMultiNode itsNames;
01337 };
01338
01339
01340 }
01341
01342 #endif