BinaryFunction.h
Go to the documentation of this file.
1 /* Copyright (C) 2008 National Institute For Space Research (INPE) - Brazil.
2 
3  This file is part of the TerraLib - a Framework for building GIS enabled applications.
4 
5  TerraLib is free software: you can redistribute it and/or modify
6  it under the terms of the GNU Lesser General Public License as published by
7  the Free Software Foundation, either version 3 of the License,
8  or (at your option) any later version.
9 
10  TerraLib is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  GNU Lesser General Public License for more details.
14 
15  You should have received a copy of the GNU Lesser General Public License
16  along with TerraLib. See COPYING. If not, write to
17  TerraLib Team at <terralib-team@terralib.org>.
18  */
19 
20 /*!
21  \file terralib/dataaccess/query/BinaryFunction.h
22 
23  \brief A base class for binary functions.
24 */
25 
26 #ifndef __TERRALIB_DATAACCESS_INTERNAL_BINARYFUNCTION_H
27 #define __TERRALIB_DATAACCESS_INTERNAL_BINARYFUNCTION_H
28 
29 // TerraLib
30 #include "Function.h"
31 
32 namespace te
33 {
34  namespace da
35  {
36  /*!
37  \class BinaryFunction
38 
39  \brief A base class for binary functions.
40 
41  \sa Function, BinaryOp
42  */
44  {
45  public:
46 
48 
49  /*!
50  \brief Constructor.
51 
52  \param name The function name.
53  \param arg1 The first argument.
54  \param arg2 The second argument.
55 
56  \note The BinaryFunction will take the ownership of the given arguments.
57  */
58  BinaryFunction(const std::string& name, Expression* arg1, Expression* arg2);
59 
60  /*!
61  \brief Constructor.
62 
63  \param name The function name.
64  \param arg1 The first argument.
65  \param arg2 The second argument.
66  */
67  BinaryFunction(const std::string& name, const Expression& arg1, const Expression& arg2);
68 
69  /*! \brief Copy constructor. */
70  BinaryFunction(const BinaryFunction& rhs);
71 
72  /*! \brief Virtual Destructor. */
73  virtual ~BinaryFunction();
74 
75  /*! Assignment operator. */
76  BinaryFunction& operator=(const BinaryFunction& rhs);
77 
78  /*! \brief It creates a new copy of this expression. */
79  Expression* clone() const;
80 
81  /*!
82  \brief It returns the first function argument.
83 
84  \return The first function argument.
85  */
86  Expression* getFirst() const;
87 
88  /*!
89  \brief It sets the first function argument.
90 
91  \param arg The first function argument.
92 
93  \note The BinaryFunction will take the ownership of the given argument.
94  */
95  void setFirst(Expression* arg);
96 
97  /*!
98  \brief It returns the second function argument.
99 
100  \return The second function argument.
101  */
102  Expression* getSecond() const;
103 
104  /*!
105  \brief It sets the second function argument.
106 
107  \param arg The second function argument.
108 
109  \note The BinaryFunction will take the ownership of the given argument.
110  */
111  void setSecond(Expression* arg);
112  };
113 
114  } // end namespace da
115 } // end namespace te
116 
117 #endif // __TERRALIB_DATAACCESS_INTERNAL_BINARYFUNCTION_H
118 
A class that models a Function expression.
This is an abstract class that models a query expression.
Definition: Expression.h:47
URI C++ Library.
A class that models a Function expression.
Definition: Function.h:47
#define TE_DEFINE_VISITABLE
Definition: BaseVisitable.h:75
#define TEDATAACCESSEXPORT
You can use this macro in order to export/import classes and functions from this module.
Definition: Config.h:97
A base class for binary functions.