casacore
Loading...
Searching...
No Matches
TaQLNodeVisitor.h
Go to the documentation of this file.
1//# TaQLNodeVisitor.h: Class to visit the nodes in the raw TaQL parse tree
2//# Copyright (C) 2005
3//# Associated Universities, Inc. Washington DC, USA.
4//#
5//# This library is free software; you can redistribute it and/or modify it
6//# under the terms of the GNU Library General Public License as published by
7//# the Free Software Foundation; either version 2 of the License, or (at your
8//# option) any later version.
9//#
10//# This library is distributed in the hope that it will be useful, but WITHOUT
11//# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12//# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
13//# License for more details.
14//#
15//# You should have received a copy of the GNU Library General Public License
16//# along with this library; if not, write to the Free Software Foundation,
17//# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
18//#
19//# Correspondence concerning AIPS++ should be addressed as follows:
20//# Internet email: casa-feedback@nrao.edu.
21//# Postal address: AIPS++ Project Office
22//# National Radio Astronomy Observatory
23//# 520 Edgemont Road
24//# Charlottesville, VA 22903-2475 USA
25
26#ifndef TABLES_TAQLNODEVISITOR_H
27#define TABLES_TAQLNODEVISITOR_H
28
29//# Includes
30#include <casacore/casa/aips.h>
31#include <casacore/tables/TaQL/TaQLNode.h>
32#include <casacore/tables/TaQL/TaQLNodeDer.h>
33
34namespace casacore { //# NAMESPACE CASACORE - BEGIN
35
36// <summary>
37// Class to visit the nodes in the raw TaQL parse tree.
38// </summary>
39
40// <use visibility=local>
41
42// <reviewed reviewer="" date="" tests="tTableGram">
43// </reviewed>
44
45// <prerequisite>
46//# Classes you should understand before using this one.
47// <li> <linkto class=TaQLNode>TaQLNode</linkto>
48// <li> Note 199 describing
49// <a href="../notes/199.html">
50// TaQL</a>
51// </prerequisite>
52
53// <synopsis>
54// TaQLNodeVisitor is the abstract base class for classes that want to
55// visit a TaQLNode tree, i.e. traverse the tree.
56// Each visit results in a TaQLNodeResult object which acts as the basis
57// for the actual result object.
58// <br>
59// A specialization of TaQLNodeVisitor (e.g. class
60// <linkto class=TaQLNodeHandler>TaQLNodeHandler</linkto> needs to implement
61// the various visitXXNode functions. A visit function will process a node
62// which usually means visiting its children, etc..
63// </synopsis>
64
65// <motivation>
66// The visitor design pattern separates the tree from the way it is processed.
67// In this way any handler can be created. For instance, a query optimizer
68// could be a future other handler.
69// </motivation>
70
72{
73public:
75
76 // Define the functions to visit each node type.
77 // <group>
83 virtual TaQLNodeResult visitFuncNode (const TaQLFuncNodeRep& node) = 0;
88 virtual TaQLNodeResult visitColNode (const TaQLColNodeRep& node) = 0;
90 virtual TaQLNodeResult visitJoinNode (const TaQLJoinNodeRep& node) = 0;
93 virtual TaQLNodeResult visitSortNode (const TaQLSortNodeRep& node) = 0;
116 // </group>
117
118protected:
119 // A convenience function to visit the given node using this visitor.
121 { return node.visit (*this); }
122};
123
124} //# NAMESPACE CASACORE - END
125
126#endif
Raw TaQL parse tree node defining an alter table add column command.
Raw TaQL parse tree node defining an alter table add rows command.
Raw TaQL parse tree node defining an alter table command.
Raw TaQL parse tree node defining a binary operator.
Raw TaQL parse tree node defining a calc command.
Raw TaQL parse tree node defining a select column expression.
Raw TaQL parse tree node defining a create column specification.
Raw TaQL parse tree node defining a select column list.
Raw TaQL parse tree node defining an alter table command.
Raw TaQL parse tree node defining an alter table copy column command.
Raw TaQL parse tree node defining a count command.
Raw TaQL parse tree node defining a create table command.
Raw TaQL parse tree node defining a delete command.
Raw TaQL parse tree node defining a DROP TABLE command.
Raw TaQL parse tree node defining a function.
Raw TaQL parse tree node defining a giving expression list.
Raw TaQL parse tree node defining a groupby list.
Raw TaQL parse tree node defining an index in a array.
Raw TaQL parse tree node defining an insert command.
Raw TaQL parse tree node defining a join operation.
Raw TaQL parse tree node defining a keyword or column name.
Raw TaQL parse tree node defining a limit/offset expression.
Raw TaQL parse tree node defining a list of nodes.
Envelope class to hold the result of a visit to the node tree.
virtual TaQLNodeResult visitSortNode(const TaQLSortNodeRep &node)=0
virtual TaQLNodeResult visitCountNode(const TaQLCountNodeRep &node)=0
virtual TaQLNodeResult visitUnaryNode(const TaQLUnaryNodeRep &node)=0
virtual TaQLNodeResult visitDropTabNode(const TaQLDropTabNodeRep &node)=0
virtual TaQLNodeResult visitIndexNode(const TaQLIndexNodeRep &node)=0
virtual TaQLNodeResult visitAltTabNode(const TaQLAltTabNodeRep &node)=0
virtual TaQLNodeResult visitCopyColNode(const TaQLCopyColNodeRep &node)=0
TaQLNodeResult visitNode(const TaQLNode &node)
A convenience function to visit the given node using this visitor.
virtual TaQLNodeResult visitKeyColNode(const TaQLKeyColNodeRep &node)=0
virtual TaQLNodeResult visitUpdExprNode(const TaQLUpdExprNodeRep &node)=0
virtual TaQLNodeResult visitConstNode(const TaQLConstNodeRep &node)=0
Define the functions to visit each node type.
virtual TaQLNodeResult visitColNode(const TaQLColNodeRep &node)=0
virtual TaQLNodeResult visitConcTabNode(const TaQLConcTabNodeRep &node)=0
virtual TaQLNodeResult visitColSpecNode(const TaQLColSpecNodeRep &node)=0
virtual TaQLNodeResult visitRangeNode(const TaQLRangeNodeRep &node)=0
virtual TaQLNodeResult visitInsertNode(const TaQLInsertNodeRep &node)=0
virtual TaQLNodeResult visitSetKeyNode(const TaQLSetKeyNodeRep &node)=0
virtual TaQLNodeResult visitAddRowNode(const TaQLAddRowNodeRep &node)=0
virtual TaQLNodeResult visitCreTabNode(const TaQLCreTabNodeRep &node)=0
virtual TaQLNodeResult visitCalcNode(const TaQLCalcNodeRep &node)=0
virtual TaQLNodeResult visitDeleteNode(const TaQLDeleteNodeRep &node)=0
virtual TaQLNodeResult visitMultiNode(const TaQLMultiNodeRep &node)=0
virtual TaQLNodeResult visitBinaryNode(const TaQLBinaryNodeRep &node)=0
virtual TaQLNodeResult visitSortKeyNode(const TaQLSortKeyNodeRep &node)=0
virtual TaQLNodeResult visitShowNode(const TaQLShowNodeRep &node)=0
virtual TaQLNodeResult visitGroupNode(const TaQLGroupNodeRep &node)=0
virtual TaQLNodeResult visitLimitOffNode(const TaQLLimitOffNodeRep &node)=0
virtual TaQLNodeResult visitRenDropNode(const TaQLRenDropNodeRep &node)=0
virtual TaQLNodeResult visitTableNode(const TaQLTableNodeRep &node)=0
virtual TaQLNodeResult visitColumnsNode(const TaQLColumnsNodeRep &node)=0
virtual TaQLNodeResult visitUnitNode(const TaQLUnitNodeRep &node)=0
virtual TaQLNodeResult visitRegexNode(const TaQLRegexNodeRep &node)=0
virtual TaQLNodeResult visitUpdateNode(const TaQLUpdateNodeRep &node)=0
virtual TaQLNodeResult visitRecFldNode(const TaQLRecFldNodeRep &node)=0
virtual TaQLNodeResult visitFuncNode(const TaQLFuncNodeRep &node)=0
virtual TaQLNodeResult visitAddColNode(const TaQLAddColNodeRep &node)=0
virtual TaQLNodeResult visitGivingNode(const TaQLGivingNodeRep &node)=0
virtual TaQLNodeResult visitSelectNode(const TaQLSelectNodeRep &node)=0
virtual TaQLNodeResult visitJoinNode(const TaQLJoinNodeRep &node)=0
TaQLNodeResult visit(TaQLNodeVisitor &visitor) const
Let the visitor visit the node.
Definition TaQLNode.h:129
Raw TaQL parse tree node defining a range.
Raw TaQL parse tree node defining a record field.
Raw TaQL parse tree node defining a constant regex value.
Raw TaQL parse tree node defining an alter table rename or drop command.
Raw TaQL parse tree node defining a select command.
Raw TaQL parse tree node defining an alter table set keyword command.
Raw TaQL parse tree node defining a show command.
Raw TaQL parse tree node defining a sort key.
Raw TaQL parse tree node defining a sort list.
Raw TaQL parse tree node defining a table.
Raw TaQL parse tree node defining a unary operator.
Raw TaQL parse tree node defining a unit.
Raw TaQL parse tree node defining a column update expression.
Raw TaQL parse tree node defining an update command.
this file contains all the compiler specific defines
Definition mainpage.dox:28