OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
Public Member Functions | Private Member Functions | Private Attributes | List of all members
ossimOgrInfo Class Reference

Ogr info class. More...

#include <ossimOgrInfo.h>

Inheritance diagram for ossimOgrInfo:
ossimInfoBase ossimReferenced

Public Member Functions

 ossimOgrInfo ()
 default constructor More...
 
virtual ~ossimOgrInfo ()
 virtual destructor More...
 
virtual bool open (const ossimFilename &file)
 open method. More...
 
virtual std::ostream & print (std::ostream &out) const
 Print method. More...
 
virtual bool getKeywordlist (ossimKeywordlist &kwl) const
 Method to dump info to a keyword list. More...
 
- Public Member Functions inherited from ossimInfoBase
 ossimInfoBase ()
 default constructor More...
 
virtual bool open (std::shared_ptr< ossim::istream > &str, const std::string &connectionString)
 open method. More...
 
void setProcessOverviewFlag (bool flag)
 Sets the overview flag. More...
 
bool getProcessOverviewFlag () const
 Method to get the overview flag. More...
 
virtual bool getKeywordlist (ossimKeywordlist &kwl, ossim_uint32 entryIndex) const
 Method to dump info to a keyword list. More...
 
- Public Member Functions inherited from ossimReferenced
 ossimReferenced ()
 
 ossimReferenced (const ossimReferenced &)
 
ossimReferencedoperator= (const ossimReferenced &)
 
void ref () const
 increment the reference count by one, indicating that this object has another pointer which is referencing it. More...
 
void unref () const
 decrement the reference count by one, indicating that a pointer to this object is referencing it. More...
 
void unref_nodelete () const
 decrement the reference count by one, indicating that a pointer to this object is referencing it. More...
 
int referenceCount () const
 

Private Member Functions

ossimString getDriverName (ossimString driverName) const
 
void parseMetadata (ossimString metaData, ossimKeywordlist &kwl, ossimString metaPrefix) const
 
Parse the VPF metadata More...
 

Private Attributes

ossimFilename m_file
 
OGRDataSource * m_ogrDatasource
 
OGRSFDriver * m_ogrDriver
 

Additional Inherited Members

- Protected Member Functions inherited from ossimInfoBase
virtual ~ossimInfoBase ()
 virtual destructor More...
 
- Protected Member Functions inherited from ossimReferenced
virtual ~ossimReferenced ()
 
- Protected Attributes inherited from ossimInfoBase
bool theOverviewFlag
 

Detailed Description

Ogr info class.

Encapsulates the Ogr functionality.

Definition at line 36 of file ossimOgrInfo.h.

Constructor & Destructor Documentation

◆ ossimOgrInfo()

ossimOgrInfo::ossimOgrInfo ( )

default constructor

Definition at line 86 of file ossimOgrInfo.cpp.

87  : ossimInfoBase(),
88  m_file(),
89  m_ogrDatasource(0),
90  m_ogrDriver(0)
91 {
92 }
OGRSFDriver * m_ogrDriver
Definition: ossimOgrInfo.h:82
OGRDataSource * m_ogrDatasource
Definition: ossimOgrInfo.h:81
ossimFilename m_file
Definition: ossimOgrInfo.h:80
ossimInfoBase()
default constructor

◆ ~ossimOgrInfo()

ossimOgrInfo::~ossimOgrInfo ( )
virtual

virtual destructor

Definition at line 94 of file ossimOgrInfo.cpp.

References m_ogrDatasource.

95 {
96  if (m_ogrDatasource != NULL)
97  {
98  OGRDataSource::DestroyDataSource(m_ogrDatasource);
99  m_ogrDatasource = 0;
100  }
101 }
OGRDataSource * m_ogrDatasource
Definition: ossimOgrInfo.h:81

Member Function Documentation

◆ getDriverName()

ossimString ossimOgrInfo::getDriverName ( ossimString  driverName) const
private

Definition at line 649 of file ossimOgrInfo.cpp.

Referenced by getKeywordlist().

650 {
651  if (driverName == "esri shapefile")
652  {
653  return "shp";
654  }
655  else if (driverName == "ogdi")
656  {
657  return "vpf";
658  }
659  else
660  {
661  return driverName;
662  }
663 }

◆ getKeywordlist()

bool ossimOgrInfo::getKeywordlist ( ossimKeywordlist kwl) const
virtual

Method to dump info to a keyword list.

Parameters
kwlThe keyword list to initialize.
Returns
true on success, false on error.

Reimplemented from ossimInfoBase.

Definition at line 461 of file ossimOgrInfo.cpp.

References ossimKeywordlist::add(), ossimString::c_str(), ossimString::empty(), getDriverName(), m_ogrDatasource, m_ogrDriver, parseMetadata(), and ossimString::toString().

462 {
463  if (m_ogrDatasource != NULL)
464  {
465  ossimString driverName = getDriverName(ossimString(GDALGetDriverShortName(m_ogrDriver)).downcase());
466 
467  ossimString metaPrefix = ossimString(driverName + ".");
468 
469  //get meta data
470  ossimString strValue;
471  char** metaData = 0; // tmp drb m_ogrDatasource->GetMetadata("metadata");
472  ossimString keyName = "tableinfo";
473  size_t nLen = strlen(keyName.c_str());
474  if (metaData != NULL && driverName == "vpf")
475  {
476  while(*metaData != NULL)
477  {
478  if (EQUALN(*metaData, keyName.c_str(), nLen)
479  && ( (*metaData)[nLen] == '=' ||
480  (*metaData)[nLen] == ':' ) )
481  {
482  strValue = (*metaData)+nLen+1;
483  }
484  metaData++;
485  }
486 
487  if (!strValue.empty())
488  {
489  parseMetadata(strValue, kwl, metaPrefix);
490  }
491  }
492 
493  //get geometry data
494  ossimString geomType;
495  int layerCount = m_ogrDatasource->GetLayerCount();
496  ossimString prefixInt = ossimString(metaPrefix + "layer");
497  for(int i = 0; i < layerCount; ++i)
498  {
499  ossimString prefix = prefixInt + ossimString::toString(i) + ".";
500  ossimString specialPrefix = "layer" + ossimString::toString(i) + ".";
501 
502  OGRLayer* layer = m_ogrDatasource->GetLayer(i);
503  if(layer)
504  {
505  //get feature count and geometry type
506  int featureCount = layer->GetFeatureCount();
507  const char* layerName = layer->GetLayerDefn()->GetName();
508 
509  OGRFeature* feature = layer->GetFeature(0);
510  if(feature)
511  {
512  OGRGeometry* geom = feature->GetGeometryRef();
513  if(geom)
514  {
515  switch(geom->getGeometryType())
516  {
517  case wkbMultiPoint:
518  case wkbMultiPoint25D:
519  {
520  geomType = "Multi Points";
521  break;
522  }
523  case wkbPolygon25D:
524  case wkbPolygon:
525  {
526  geomType = "Polygon";
527  break;
528  }
529  case wkbLineString25D:
530  case wkbLineString:
531  {
532  geomType = "LineString";
533  break;
534  }
535  case wkbPoint:
536  case wkbPoint25D:
537  {
538  geomType = "Points";
539  break;
540  }
541  case wkbMultiPolygon25D:
542  case wkbMultiPolygon:
543  {
544  geomType = "Multi Polygon";
545  break;
546 
547  }
548  default:
549  {
550  geomType = "Unknown Type";
551  break;
552  }
553  }
554  }
555  }//end if feature
556  OGRFeature::DestroyFeature(feature);
557 
558  kwl.add(specialPrefix,
559  "features",
560  featureCount,
561  true);
562 
563  //get all attribute fields
564  OGRFeatureDefn* featureDefn = layer->GetLayerDefn();
565  if (featureDefn)
566  {
567  for(int iField = 0; iField < featureDefn->GetFieldCount(); iField++ )
568  {
569  OGRFieldDefn* fieldDefn = featureDefn->GetFieldDefn(iField);
570  ossimString fieldType;
571  if (fieldDefn)
572  {
573  ossimString fieldName = ossimString(fieldDefn->GetNameRef());
574  if( fieldDefn->GetType() == OFTInteger )
575  {
576  fieldType = "Integer";
577  }
578  else if( fieldDefn->GetType() == OFTReal )
579  {
580  fieldType = "Real";
581  }
582  else if( fieldDefn->GetType() == OFTString )
583  {
584  fieldType = "String";
585  }
586  else if ( fieldDefn->GetType() == OFTWideString)
587  {
588  fieldType = "WideString";
589  }
590  else if ( fieldDefn->GetType() == OFTBinary )
591  {
592  fieldType = "Binary";
593  }
594  else if ( fieldDefn->GetType() == OFTDate )
595  {
596  fieldType = "Date";
597  }
598  else if ( fieldDefn->GetType() == OFTTime )
599  {
600  fieldType = "Time";
601  }
602  else if ( fieldDefn->GetType() == OFTDateTime )
603  {
604  fieldType = "DateTime";
605  }
606  else
607  {
608  fieldType = "String";
609  }
610 
611  ossimString fieldInfo = ossimString(fieldName + " (" + fieldType + ")");
612 
613  ossimString colPrefix = prefix + "column" + ossimString::toString(iField);
614  kwl.add(colPrefix,
615  "",
616  fieldInfo,
617  true);
618  }
619  }
620  }
621 
622  kwl.add(specialPrefix,
623  "name",
624  layerName,
625  true);
626 
627  kwl.add(specialPrefix,
628  "geometry",
629  geomType,
630  true);
631  } //end if layer
632  }// end i
633  return true;
634  }// end if datasource
635  return false;
636 }
void parseMetadata(ossimString metaData, ossimKeywordlist &kwl, ossimString metaPrefix) const
Parse the VPF metadata
static ossimString toString(bool aValue)
Numeric to string methods.
OGRSFDriver * m_ogrDriver
Definition: ossimOgrInfo.h:82
void add(const char *prefix, const ossimKeywordlist &kwl, bool overwrite=true)
ossimString getDriverName(ossimString driverName) const
const char * c_str() const
Returns a pointer to a null-terminated array of characters representing the string&#39;s contents...
Definition: ossimString.h:396
bool empty() const
Definition: ossimString.h:411
OGRDataSource * m_ogrDatasource
Definition: ossimOgrInfo.h:81

◆ open()

bool ossimOgrInfo::open ( const ossimFilename file)
virtual

open method.

Parameters
fileFile name to open. The example of SDE file name: SDE:server,instance,database,username,password,layername e.g ossim-info -p -d SDE:SPATCDT001,5151,SDE,SADATABASE,SAPASSWORD,SATABLENAME

The example of VPF file name: C:/vpfdata/mpp1/vmaplv0/eurnasia/cat e.g ossim-info -p -d D:/OSSIM_Data/vpf_data/WVSPLUS/WVS120M/CAT

Returns
true on success false on error.

Reimplemented from ossimInfoBase.

Definition at line 103 of file ossimOgrInfo.cpp.

References ossimString::c_str(), m_file, m_ogrDatasource, and m_ogrDriver.

104 {
105  if ( m_ogrDatasource )
106  {
107  OGRDataSource::DestroyDataSource(m_ogrDatasource);
108  m_ogrDatasource = 0;
109  }
110 
111  // Below interface removed in gdal.
112  // m_file = file;
113  // m_ogrDatasource = OGRSFDriverRegistrar::Open(file.c_str(), false, &m_ogrDriver);
114 
115  m_ogrDatasource = (OGRDataSource*) OGROpen( file.c_str(), false, NULL );
116  if ( m_ogrDatasource )
117  {
118  m_ogrDriver = (OGRSFDriver*) m_ogrDatasource->GetDriver();
119  if ( m_ogrDriver )
120  {
121  m_file = file;
122  }
123 
124  if ( !m_ogrDriver )
125  {
126  OGRDataSource::DestroyDataSource( m_ogrDatasource );
127  m_ogrDatasource = 0;
128  }
129  }
130 
131  return ( m_ogrDatasource ? true : false );
132 }
OGRSFDriver * m_ogrDriver
Definition: ossimOgrInfo.h:82
const char * c_str() const
Returns a pointer to a null-terminated array of characters representing the string&#39;s contents...
Definition: ossimString.h:396
OGRDataSource * m_ogrDatasource
Definition: ossimOgrInfo.h:81
ossimFilename m_file
Definition: ossimOgrInfo.h:80

◆ parseMetadata()

void ossimOgrInfo::parseMetadata ( ossimString  metaData,
ossimKeywordlist kwl,
ossimString  metaPrefix 
) const
private


Parse the VPF metadata

Definition at line 134 of file ossimOgrInfo.cpp.

References ossimKeywordlist::add(), ossimString::after(), ossimString::contains(), ossimString::downcase(), ossimString::empty(), getKeyValue(), ossimString::split(), and ossimString::trim().

Referenced by getKeywordlist().

137 {
138  std::vector<ossimString> metaList = metaData.split("\n");
139  bool isCat = false;
140  bool isLat = false;
141  bool isDht = false;
142  bool isLht = false;
143  bool isGrt = false;
144  bool isDqt = false;
145  bool isFcs = false;
146  bool isFca = false;
147 
148  ossimString catKeyPrefix = "cat.";
149  ossimString latKeyPrefix = "lat.";
150  ossimString dhtKeyPrefix = "dht.";
151  ossimString lhtKeyPrefix = "lht.";
152  ossimString grtKeyPrefix = "grt.";
153  ossimString dqtKeyPrefix = "dqt.";
154  ossimString fcsKeyPrefix = "fcs.";
155  ossimString fcaKeyPrefix = "fca.";
156 
157  for (ossim_uint32 i = 0; i < metaList.size(); i++)
158  {
159  ossimString metaNameValue = metaList[i].trim();
160  ossimString metaStr = metaList[i].downcase().trim();
161  if (metaStr.contains("(cat)"))
162  {
163  isCat = true;
164  isLat = false; //set others to false
165  isDht = false;
166  isLht = false;
167  isGrt = false;
168  isDqt = false;
169  isFcs = false;
170  isFca = false;
171  continue;
172  }
173  if (isCat)
174  {
175  if (metaStr.contains(":") &&
176  !metaStr.contains("(lat)") &&
177  !metaStr.contains("(dht)") &&
178  !metaStr.contains("(lht)") &&
179  !metaStr.contains("(grt)") &&
180  !metaStr.contains("(dqt)") &&
181  !metaStr.contains("(fcs)") &&
182  !metaStr.contains("} } } { family"))
183  {
184  ossimString keyValue = getKeyValue(metaPrefix, catKeyPrefix,
185  metaNameValue, kwl);
186  ossimString metaValue = metaNameValue.split(":")[1].trim();
187  ossimString prefix = ossimString(catKeyPrefix + keyValue);
188  kwl.add(metaPrefix,
189  prefix,
190  metaValue,
191  false);
192  }
193  }
194 
195  if (metaStr.contains("(lat)"))
196  {
197  isLat = true;
198  isCat = false; //set others to false
199  isDht = false;
200  isLht = false;
201  isGrt = false;
202  isDqt = false;
203  isFcs = false;
204  isFca = false;
205  continue;
206  }
207  if (isLat)
208  {
209  if (metaStr.contains(":") &&
210  !metaStr.contains("(cat)") &&
211  !metaStr.contains("(dht)") &&
212  !metaStr.contains("(lht)") &&
213  !metaStr.contains("(grt)") &&
214  !metaStr.contains("(dqt)") &&
215  !metaStr.contains("(fcs)") &&
216  !metaStr.contains("} } } { family"))
217  {
218  //do nothing. no need for lat info for now.
219  }
220  }
221 
222  if (metaStr.contains("(dht)"))
223  {
224  isDht = true;
225  isCat = false;
226  isLat = false;
227  isLht = false;
228  isGrt = false;
229  isDqt = false;
230  isFcs = false;
231  isFca = false;
232  continue;
233  }
234  if (isDht)
235  {
236  if (metaStr.contains(":") &&
237  !metaStr.contains("(lat)") &&
238  !metaStr.contains("(cat)") &&
239  !metaStr.contains("(lht)") &&
240  !metaStr.contains("(grt)") &&
241  !metaStr.contains("(dqt)") &&
242  !metaStr.contains("(fcs)") &&
243  !metaStr.contains("} } } { family"))
244  {
245  ossimString keyValue = getKeyValue(metaPrefix, dhtKeyPrefix,
246  metaNameValue, kwl);
247  ossimString metaValue = metaNameValue.split(":")[1].trim();
248  ossimString prefix = ossimString(dhtKeyPrefix + keyValue);
249  kwl.add(metaPrefix,
250  prefix,
251  metaValue,
252  false);
253  }
254  }
255 
256  if (metaStr.contains("(lht)"))
257  {
258  isLht = true;
259  isDht = false;
260  isCat = false;
261  isLat = false;
262  isGrt = false;
263  isDqt = false;
264  isFcs = false;
265  isFca = false;
266  continue;
267  }
268  if (isLht)
269  {
270  if (metaStr.contains(":") &&
271  !metaStr.contains("(lat)") &&
272  !metaStr.contains("(dht)") &&
273  !metaStr.contains("(cat)") &&
274  !metaStr.contains("(grt)") &&
275  !metaStr.contains("(dqt)") &&
276  !metaStr.contains("(fcs)") &&
277  !metaStr.contains("} } } { family"))
278  {
279  ossimString keyValue = getKeyValue(metaPrefix, lhtKeyPrefix,
280  metaNameValue, kwl);
281  ossimString metaValue = metaNameValue.split(":")[1].trim();
282  ossimString prefix = ossimString(lhtKeyPrefix + keyValue);
283  kwl.add(metaPrefix,
284  prefix,
285  metaValue,
286  false);
287  }
288  }
289 
290  if (metaStr.contains("(grt)"))
291  {
292  isGrt = true;
293  isLht = false;
294  isDht = false;
295  isCat = false;
296  isLat = false;
297  isDqt = false;
298  isFcs = false;
299  isFca = false;
300  continue;
301  }
302  if (isGrt)
303  {
304  if (metaStr.contains(":") &&
305  !metaStr.contains("(lat)") &&
306  !metaStr.contains("(dht)") &&
307  !metaStr.contains("(lht)") &&
308  !metaStr.contains("(cat)") &&
309  !metaStr.contains("(dqt)") &&
310  !metaStr.contains("(fcs)") &&
311  !metaStr.contains("} } } { family"))
312  {
313  ossimString keyValue = getKeyValue(metaPrefix, grtKeyPrefix,
314  metaNameValue, kwl);
315  ossimString metaValue = metaNameValue.split(":")[1].trim();
316  ossimString prefix = ossimString(grtKeyPrefix + keyValue);
317  kwl.add(metaPrefix,
318  prefix,
319  metaValue,
320  false);
321  }
322  }
323 
324  if (metaStr.contains("(dqt)"))
325  {
326  isDqt = true;
327  isGrt = false;
328  isLht = false;
329  isDht = false;
330  isCat = false;
331  isLat = false;
332  isFcs = false;
333  isFca = false;
334  continue;
335  }
336  if (isDqt)
337  {
338  if (metaStr.contains(":") &&
339  !metaStr.contains("(lat)") &&
340  !metaStr.contains("(dht)") &&
341  !metaStr.contains("(lht)") &&
342  !metaStr.contains("(grt)") &&
343  !metaStr.contains("(cat)") &&
344  !metaStr.contains("(fcs)") &&
345  !metaStr.contains("} } } { family"))
346  {
347  ossimString keyValue = getKeyValue(metaPrefix, dqtKeyPrefix,
348  metaNameValue, kwl);
349  ossimString metaValue = metaNameValue.split(":")[1].trim();
350  ossimString prefix = ossimString(dqtKeyPrefix + keyValue);
351  kwl.add(metaPrefix,
352  prefix,
353  metaValue,
354  false);
355  }
356  }
357 
358  if (metaStr.contains("(fcs)"))
359  {
360  isFcs = true;
361  isDqt = false;
362  isGrt = false;
363  isLht = false;
364  isDht = false;
365  isCat = false;
366  isLat = false;
367  isFca = false;
368  continue;
369  }
370  if (isFcs)
371  {
372  if (metaStr.contains(":") &&
373  !metaStr.contains("(lat)") &&
374  !metaStr.contains("(dht)") &&
375  !metaStr.contains("(lht)") &&
376  !metaStr.contains("(grt)") &&
377  !metaStr.contains("(dqt)") &&
378  !metaStr.contains("(cat)") &&
379  !metaStr.contains("} } } { family"))
380  {
381  ossimString keyValue = getKeyValue(metaPrefix, fcsKeyPrefix,
382  metaNameValue, kwl);
383  ossimString metaValue = metaNameValue.split(":")[1].trim();
384  ossimString prefix = ossimString(fcsKeyPrefix + keyValue);
385  kwl.add(metaPrefix,
386  prefix,
387  metaValue,
388  false);
389  }
390  }
391 
392  if (metaStr.contains("} } } { family"))
393  {
394  isFca = true;
395  isDqt = false;
396  isGrt = false;
397  isLht = false;
398  isDht = false;
399  isCat = false;
400  isLat = false;
401  isFcs = false;
402  }
403  if (isFca)
404  {
405  if (!metaStr.contains("(lat)") &&
406  !metaStr.contains("(dht)") &&
407  !metaStr.contains("(lht)") &&
408  !metaStr.contains("(grt)") &&
409  !metaStr.contains("(dqt)") &&
410  !metaStr.contains("(fcs)"))
411  {
412  std::vector<ossimString> fcaTmpVector = metaNameValue.split("}}");
413  ossimString fcaClassName;
414  for (ossim_uint32 i = 0; i < fcaTmpVector.size(); i++)
415  {
416  ossimString fcaTemp = fcaTmpVector[i].trim();
417  if (!fcaTemp.empty())
418  {
419  if (fcaTemp.contains("family"))
420  {
421  if (fcaTemp.split(" ").size() > 1)
422  {
423  fcaClassName = fcaTemp.split(" ")[2].trim();
424  }
425  }
426  else
427  {
428  std::vector<ossimString> fcaValues;
429  if (fcaTemp.contains("<Grassland>displaymetadata {"))
430  {
431  ossimString displaymetadataVector = fcaTemp.after("<Grassland>displaymetadata {").trim();
432  if (!displaymetadataVector.empty())
433  {
434  fcaValues = displaymetadataVector.split("{");
435  }
436  }
437  else
438  {
439  fcaValues = fcaTemp.split("{");
440  }
441 
442  if (fcaValues.size() > 2)
443  {
444  ossimString fcaKey = fcaValues[1].trim();
445  ossimString fcaValue = fcaValues[2].trim();
446 
447  ossimString prefix = ossimString(fcaKeyPrefix + fcaClassName + "." + fcaKey);
448  kwl.add(metaPrefix,
449  prefix,
450  fcaValue,
451  false);
452  }
453  }
454  }
455  }
456  }
457  }
458  }
459 }
bool contains(char aChar) const
Definition: ossimString.h:58
void split(std::vector< ossimString > &result, const ossimString &separatorList, bool skipBlankFields=false) const
Splits this string into a vector of strings (fields) using the delimiter list specified.
void add(const char *prefix, const ossimKeywordlist &kwl, bool overwrite=true)
unsigned int ossim_uint32
ossimString trim(const ossimString &valueToTrim=ossimString(" \\)) const
this will strip lead and trailing character passed in.
ossimString getKeyValue(ossimString metaPrefix, ossimString prefix, ossimString metaNameValue, ossimKeywordlist &kwl)
static ossimString downcase(const ossimString &aString)
Definition: ossimString.cpp:48
bool empty() const
Definition: ossimString.h:411
ossimString after(const ossimString &str, std::string::size_type pos=0) const
METHOD: after(str, pos) Returns string immediately after the token str.

◆ print()

std::ostream & ossimOgrInfo::print ( std::ostream &  out) const
virtual

Print method.

Parameters
outStream to print to.
Returns
std::ostream&

Implements ossimInfoBase.

Definition at line 638 of file ossimOgrInfo.cpp.

639 {
640  static const char MODULE[] = "ossimOgrInfo::print";
641  if (traceDebug())
642  {
644  << MODULE << " DEBUG Entered...\n";
645  }
646  return out;
647 }
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)

Member Data Documentation

◆ m_file

ossimFilename ossimOgrInfo::m_file
private

Definition at line 80 of file ossimOgrInfo.h.

Referenced by open().

◆ m_ogrDatasource

OGRDataSource* ossimOgrInfo::m_ogrDatasource
private

Definition at line 81 of file ossimOgrInfo.h.

Referenced by getKeywordlist(), open(), and ~ossimOgrInfo().

◆ m_ogrDriver

OGRSFDriver* ossimOgrInfo::m_ogrDriver
private

Definition at line 82 of file ossimOgrInfo.h.

Referenced by getKeywordlist(), and open().


The documentation for this class was generated from the following files: