OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
ossimInfoFactory.cpp
Go to the documentation of this file.
1 //----------------------------------------------------------------------------
2 //
3 // License: LGPL
4 //
5 // See LICENSE.txt file in the top level directory for more details.
6 //
7 // Author: David Burken
8 //
9 // Description: Factory for info objects.
10 //
11 //----------------------------------------------------------------------------
12 // $Id: ossimInfoFactory.cpp 22118 2013-01-18 21:05:14Z dburken $
13 
15 #include <ossim/ossimConfig.h>
32 
33 #if OSSIM_HAS_HDF5
35 #endif
36 
37 
39 
41 {}
42 
44 {
45  if ( !theInstance )
46  {
48  }
49  return theInstance;
50 }
51 
52 std::shared_ptr<ossimInfoBase> ossimInfoFactory::create(std::shared_ptr<ossim::istream>& str,
53  const std::string& connectionString) const
54 {
55  std::shared_ptr<ossimInfoBase> result(0);
56 
57  if ( str )
58  {
59  str->clear();
60  str->seekg(0);
61  result = std::make_shared<ossimNitfInfo>();
62  if ( result->open(str, connectionString) )
63  {
64  return result;
65  }
66  else
67  {
68  result.reset();
69  }
70 
71  str->clear();
72  str->seekg(0);
73  result = std::make_shared<ossimTiffInfo>();
74  if ( result->open(str, connectionString) )
75  {
76  return result;
77  }
78  else
79  {
80  result.reset();
81  }
82 
83  str->clear();
84  str->seekg(0);
85  result = std::make_shared<ossimCcfInfo>();
86  if ( result->open(str, connectionString) )
87  {
88  return result;
89  }
90  else
91  {
92  result.reset();
93  }
94 
95  str->clear();
96  str->seekg(0);
97  result = std::make_shared<ossimDtedInfo>();
98  if ( result->open(str, connectionString) )
99  {
100  return result;
101  }
102  else
103  {
104  result.reset();
105  }
106 
107  str->clear();
108  str->seekg(0);
109  result = std::make_shared<ossimDoqq>();
110  if ( result->open(str, connectionString) )
111  {
112  return result;
113  }
114  else
115  {
116  result.reset();
117  }
118 
119  str->clear();
120  str->seekg(0);
121  result = std::make_shared<ossimDemInfo>();
122  if ( result->open(str, connectionString) )
123  {
124  return result;
125  }
126  else
127  {
128  result.reset();
129  }
130 
131  str->clear();
132  str->seekg(0);
133  }
134 
135  return result;
136 }
137 
138 std::shared_ptr<ossimInfoBase> ossimInfoFactory::create(const ossimFilename& file) const
139 {
140  std::shared_ptr<ossimInfoBase> result(0);
141 
142  result = std::make_shared<ossimNitfInfo>();
143  if ( result->open( file ) )
144  {
145  return result;
146  }
147  else
148  {
149  result.reset();
150  }
151 
152  result = std::make_shared<ossimTiffInfo>();
153  if ( result->open( file ) )
154  {
155  return result;
156  }
157  else
158  {
159  result.reset();
160  }
161 
162  result = std::make_shared<ossimCcfInfo>();
163  if ( result->open( file ) )
164  {
165  return result;
166  }
167  else
168  {
169  result.reset();
170  }
171 
172  result = std::make_shared<ossimDtedInfo>();
173  if ( result->open( file ) )
174  {
175  return result;
176  }
177  else
178  {
179  result.reset();
180  }
181 
182  result = std::make_shared<ossimDoqq>();
183  if ( result->open( file ) )
184  {
185  return result;
186  }
187  else
188  {
189  result.reset();
190  }
191 
192  result = std::make_shared<ossimDemInfo>();
193  if ( result->open( file ) )
194  {
195  return result;
196  }
197  else
198  {
199  result.reset();
200  }
201 
202  result = std::make_shared<ossimJp2Info>();
203  if ( result->open( file ) )
204  {
205  return result;
206  }
207  else
208  {
209  result.reset();
210  }
211 
212  result = std::make_shared<ossimEnviInfo>();
213  if ( result->open( file ) )
214  {
215  return result;
216  }
217  else
218  {
219  result.reset();
220  }
221 
222  result = std::make_shared<ossimRpfInfo>();
223  if ( result->open( file ) )
224  {
225  return result;
226  }
227  else
228  {
229  result.reset();
230  }
231 
232  result = std::make_shared<ossimXmpInfo>();
233  if ( result->open( file ) )
234  {
235  return result;
236  }
237  else
238  {
239  result.reset();
240  }
241 
242  result = std::make_shared<ossimLasInfo>();
243  if ( result->open( file ) )
244  {
245  return result;
246  }
247  else
248  {
249  result.reset();
250  }
251 
252  result = std::make_shared<ossimJ2kInfo>();
253  if ( result->open( file ) )
254  {
255  return result;
256  }
257  else
258  {
259  result.reset();
260  }
261 
262 #if OSSIM_HAS_HDF5
263  result = std::make_shared<ossimHdf5Info>();
264  if ( result->open( file ) )
265  {
266  return result;
267  }
268  else
269  {
270  result.reset();
271  }
272 #endif
273 
274  return result;
275 }
276 
277 #if 0
279 {
280  ossimRefPtr<ossimInfoBase> result = 0;
281 
282  result = new ossimTiffInfo();
283  if ( result->open(file) )
284  {
285  return result.release();
286  }
287 
288  result = new ossimJp2Info();
289  if ( result->open(file) )
290  {
291  return result.release();
292  }
293 
294  result = new ossimNitfInfo();
295  if ( result->open(file) )
296  {
297  return result.release();
298  }
299 
300  result = new ossimDemInfo();
301  if ( result->open(file) )
302  {
303  return result.release();
304  }
305 
306  result = new ossimDtedInfo();
307  if ( result->open(file) )
308  {
309  return result.release();
310  }
311 
312  result = new ossimEnviInfo();
313  if ( result->open(file) )
314  {
315  return result.release();
316  }
317 
318  result = new ossimRpfInfo();
319  if ( result->open(file) )
320  {
321  return result.release();
322  }
323 
324  result = new ossimXmpInfo();
325  if ( result->open(file) )
326  {
327  return result.release();
328  }
329 
330  result = new ossimLasInfo();
331  if ( result->open(file) )
332  {
333  return result.release();
334  }
335 
336  result = new ossimDoqq();
337  if ( result->open(file) )
338  {
339  return result.release();
340  }
341 
342  result = new ossimJ2kInfo();
343  if ( result->open(file) )
344  {
345  return result.release();
346  }
347 
348  result = new ossimCcfInfo();
349  if ( result->open(file) )
350  {
351  return result.release();
352  }
353 
354 #if OSSIM_HAS_HDF5
355  result = new ossimHdf5Info();
356  if ( result->open(file) )
357  {
358  return result.release();
359  }
360 #endif
361  return 0;
362 }
363 #endif
365 {}
366 
368 {}
369 
371  const ossimInfoFactory& /* rhs */)
372 {
373  return *this;
374 }
virtual bool open(const ossimFilename &file)
open method.
TIFF info class.
Definition: ossimJ2kInfo.h:27
DTED Info class.
Definition: ossimDtedInfo.h:36
HDF info class.
Definition: ossimRpfInfo.h:27
NITF info class.
Definition: ossimNitfInfo.h:25
TIFF info class.
Definition: ossimTiffInfo.h:36
const ossimInfoFactory & operator=(const ossimInfoFactory &rhs)
hidden from use operator =
USGS DEM info class.
Definition: ossimDemInfo.h:26
JP2 info class.
Definition: ossimJp2Info.h:21
ENVI info class.
Definition: ossimEnviInfo.h:21
Info factory.
Info Base.
Definition: ossimInfoBase.h:32
T * release()
Definition: ossimRefPtr.h:93
LAS LIDAR info object.
Definition: ossimLasInfo.h:25
static ossimInfoFactory * instance()
TIFF info class.
Definition: ossimHdf5Info.h:33
NITF info class.
Definition: ossimCcfInfo.h:28
virtual ~ossimInfoFactory()
virtual destructor
virtual std::shared_ptr< ossimInfoBase > create(const ossimFilename &file) const
create method.
static ossimInfoFactory * theInstance
The single instance of this class.
ossimInfoFactory()
hidden from use default constructor