RasterHandler.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/rp/RasterHandler.cpp
22  \brief Raster tuple.
23 */
24 
25 #include "RasterHandler.h"
26 
27 namespace te
28 {
29  namespace rp
30  {
31  RasterHandler::RasterHandler() = default;
32 
34  te::da::DataSource* dataSourcePtr,
35  te::da::DataSourceTransactor* transactorPtr,
36  te::da::DataSet* dataSetPtr,
37  te::rst::Raster* rasterPtr )
38  {
39  m_dataSourcePtr.reset( dataSourcePtr );
40  m_transactorPtr.reset( transactorPtr );
41  m_dataSetPtr.reset( dataSetPtr );
42  m_rasterPtr.reset( rasterPtr );
43  }
44 
46  te::da::DataSourceTransactor* transactorPtr,
47  te::da::DataSet* dataSetPtr,
48  te::rst::Raster* rasterPtr )
49  {
50  m_transactorPtr.reset( transactorPtr );
51  m_dataSetPtr.reset( dataSetPtr );
52  m_rasterPtr.reset( rasterPtr );
53  }
54 
55 
57  {
58  m_rasterPtr.reset( rasterPtr );
59  }
60 
62  {
63  reset();
64  }
65 
67  {
68  // Inverse order is requred
69  m_rasterPtr.reset();
70  m_dataSetPtr.reset();
71  m_transactorPtr.reset();
72  m_dataSourcePtr.reset();
73  }
74 
76  te::da::DataSource* dataSourcePtr,
77  te::da::DataSourceTransactor* transactorPtr,
78  te::da::DataSet* dataSetPtr,
79  te::rst::Raster* rasterPtr )
80  {
81  reset();
82 
83  m_dataSourcePtr.reset( dataSourcePtr );
84  m_transactorPtr.reset( transactorPtr );
85  m_dataSetPtr.reset( dataSetPtr );
86  m_rasterPtr.reset( rasterPtr );
87  }
88 
90  te::da::DataSourceTransactor* transactorPtr,
91  te::da::DataSet* dataSetPtr,
92  te::rst::Raster* rasterPtr )
93  {
94  reset();
95 
96  m_transactorPtr.reset( transactorPtr );
97  m_dataSetPtr.reset( dataSetPtr );
98  m_rasterPtr.reset( rasterPtr );
99  }
100 
102  {
103  reset();
104  m_rasterPtr.reset( rasterPtr );
105  }
106 
108  {
109  return m_rasterPtr.get();
110  }
111 
113  std::unique_ptr< te::da::DataSource >& dataSourcePtr,
114  std::unique_ptr< te::da::DataSourceTransactor >& transactorPtr,
115  std::unique_ptr< te::da::DataSet >& dataSetPtr,
116  std::unique_ptr< te::rst::Raster >& rasterPtr )
117  {
118  rasterPtr.reset( m_rasterPtr.release() );
119  dataSetPtr.reset( m_dataSetPtr.release() );
120  transactorPtr.reset( m_transactorPtr.release() );
121  dataSourcePtr.reset( m_dataSourcePtr.release() );
122  }
123 
125  {
126  other.m_rasterPtr.reset( m_rasterPtr.release() );
127  other.m_dataSetPtr.reset( m_dataSetPtr.release() );
128  other.m_transactorPtr.reset( m_transactorPtr.release() );
129  other.m_dataSourcePtr.reset( m_dataSourcePtr.release() );
130  }
131 
132  } // end namespace rp
133 } // end namespace te
134 
std::unique_ptr< te::da::DataSource > m_dataSourcePtr
A pointer to a datasource instance.
void release(std::unique_ptr< te::da::DataSource > &dataSourcePtr, std::unique_ptr< te::da::DataSourceTransactor > &transactorPtr, std::unique_ptr< te::da::DataSet > &dataSetPtr, std::unique_ptr< te::rst::Raster > &rasterPtr)
Relase the internal state and give the ownership to the given pointers.
void reset()
Reset the internal state (all internal pointed objects are deleted).
An abstract class for data providers like a DBMS, Web Services or a regular file. ...
std::unique_ptr< te::da::DataSourceTransactor > m_transactorPtr
A pointer to a transactor instance that may or may not be related to data source instance pointed by ...
An abstract class for raster data strucutures.
URI C++ Library.
Definition: Attributes.h:37
Raster tuple.
RasterHandler.
Definition: RasterHandler.h:47
A DataSourceTransactor can be viewed as a connection to the data source for reading/writing things in...
A dataset is the unit of information manipulated by the data access module of TerraLib.
std::unique_ptr< te::da::DataSet > m_dataSetPtr
A pointer to a data set instance related to the transactor instance pointed by m_transactorPtr.
te::rst::Raster * getRasterPtr()
Returns a pointer the the handled raster instance or NULL if no instance is handled.
std::unique_ptr< te::rst::Raster > m_rasterPtr
A pointer to a raster instance related to the data set instance pointed by m_dataSetPtr.