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 
43 {
44  m_name.reset(static_cast<PropertyName*>(p.clone()));
45 }
46 
47 te::da::In::In(const std::string& name) : Function(FunctionNames::sm_In)
48 
49 {
50  m_name.reset(new te::da::PropertyName(name));
51 }
52 
53 te::da::In::In(const In& rhs) : Function(rhs)
54 
55 {
56  m_name.reset(rhs.m_name.get() ? static_cast<PropertyName*>(rhs.m_name->clone()) : nullptr);
57 }
58 
59 te::da::In::~In() = default;
60 
62 {
63  if(this != &rhs)
64  {
66  m_name.reset(rhs.m_name.get() ? static_cast<PropertyName*>(rhs.m_name->clone()) : nullptr);
67  }
68 
69  return *this;
70 }
71 
73 {
74  return new In(*this);
75 }
76 
78 {
79  return m_name.get();
80 }
81 
83 {
84  m_name.reset(p);
85 }
A class that models the name of any property of an object.
void setPropertyName(PropertyName *p)
It sets the property name.
Definition: In.cpp:82
A class that models the name of any property of an object.
A class that represents the IN operator.
In & operator=(const In &rhs)
Definition: In.cpp:61
This is an abstract class that models a query expression.
Expression * clone() const
It creates a new copy of this expression.
PropertyName * getPropertyName() const
It returns the property name.
Definition: In.cpp:77
te::gm::Polygon * p
A class that models a Function expression.
~In()
Destructor.
std::unique_ptr< PropertyName > m_name
The property name.
Definition: In.h:109
A static class with global function name definitions.
Function & operator=(const Function &rhs)
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:72
A static class with global function name definitions.
Definition: FunctionNames.h:45