All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
In.cpp
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/In.cpp
22 
23  \brief A class that represents the IN operator.
24 */
25 
26 // TerraLib
27 #include "../../common/STLUtils.h"
28 #include "In.h"
29 #include "FunctionNames.h"
30 #include "PropertyName.h"
31 
32 // STL
33 #include <cassert>
34 
36  : Function(FunctionNames::sm_In),
37  m_name(p)
38 {
39 }
40 
42  : Function(FunctionNames::sm_In),
43  m_name(0)
44 {
45  m_name.reset(static_cast<PropertyName*>(p.clone()));
46 }
47 
48 te::da::In::In(const std::string& name)
49  : Function(FunctionNames::sm_In),
50  m_name(0)
51 {
52  m_name.reset(new te::da::PropertyName(name));
53 }
54 
55 te::da::In::In(const In& rhs)
56  : Function(rhs),
57  m_name(0)
58 {
59  m_name.reset(rhs.m_name.get() ? static_cast<PropertyName*>(rhs.m_name->clone()) : 0);
60 }
61 
63 {
64 }
65 
67 {
68  if(this != &rhs)
69  {
71  m_name.reset(rhs.m_name.get() ? static_cast<PropertyName*>(rhs.m_name->clone()) : 0);
72  }
73 
74  return *this;
75 }
76 
78 {
79  return new In(*this);
80 }
81 
83 {
84  return m_name.get();
85 }
86 
88 {
89  m_name.reset(p);
90 }
A class that models the name of any property of an object.
void setPropertyName(PropertyName *p)
It sets the property name.
Definition: In.cpp:87
A class that models the name of any property of an object.
Definition: PropertyName.h:50
A class that represents the IN operator.
std::auto_ptr< PropertyName > m_name
The property name.
Definition: In.h:109
In & operator=(const In &rhs)
Definition: In.cpp:66
This is an abstract class that models a query expression.
Definition: Expression.h:47
Expression * clone() const
It creates a new copy of this expression.
PropertyName * getPropertyName() const
It returns the property name.
Definition: In.cpp:82
A class that models a Function expression.
Definition: Function.h:47
~In()
Destructor.
Definition: In.cpp:62
A static class with global function name definitions.
Function & operator=(const Function &rhs)
Definition: Function.cpp:44
A class that represents the IN operator.
Definition: In.h:52
TE_DEFINE_VISITABLE In(PropertyName *p)
Constructor.
Definition: In.cpp:35
Expression * clone() const
It creates a new copy of this expression.
Definition: In.cpp:77
A static class with global function name definitions.
Definition: FunctionNames.h:45