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