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

#include <ossimDirectoryTree.h>

Classes

class  ossimDirData
 

Public Member Functions

 ossimDirectoryTree ()
 
 ~ossimDirectoryTree ()
 
bool open (const ossimFilename &dir)
 
bool isOpened () const
 
bool getFirst (ossimFilename &filename, int flags=ossimDirectory::OSSIM_DIR_DEFAULT)
 
bool getNext (ossimFilename &filename)
 
void findAllFilesThatMatch (std::vector< ossimFilename > &result, const ossimString &regularExpressionPattern, int flags=ossimDirectory::OSSIM_DIR_DEFAULT)
 

Private Member Functions

void deleteAll ()
 
void checkToPushDirectory (const ossimFilename &filename)
 
 ossimDirectoryTree (const ossimDirectoryTree &rhs)
 
const ossimDirectoryTreeoperator= (const ossimDirectoryTree &rhs)
 

Private Attributes

queue< ossimFilenametheDirectoryQueue
 
ossimDirDatatheCurrentDirectoryData
 
int theFlags
 

Detailed Description

Definition at line 18 of file ossimDirectoryTree.h.

Constructor & Destructor Documentation

◆ ossimDirectoryTree() [1/2]

ossimDirectoryTree::ossimDirectoryTree ( )

Definition at line 14 of file ossimDirectoryTree.cpp.

15  :
17  theFlags(0)
18 {
19 }
ossimDirData * theCurrentDirectoryData

◆ ~ossimDirectoryTree()

ossimDirectoryTree::~ossimDirectoryTree ( )

Definition at line 21 of file ossimDirectoryTree.cpp.

References deleteAll().

22 {
23  deleteAll();
24 }

◆ ossimDirectoryTree() [2/2]

ossimDirectoryTree::ossimDirectoryTree ( const ossimDirectoryTree rhs)
private

Member Function Documentation

◆ checkToPushDirectory()

void ossimDirectoryTree::checkToPushDirectory ( const ossimFilename filename)
private

Definition at line 144 of file ossimDirectoryTree.cpp.

References ossimFilename::file(), ossimFilename::isDir(), theDirectoryQueue, and ossimString::trim().

Referenced by getFirst(), and getNext().

145 {
146  if((filename.file().trim() == ".") ||
147  (filename.file().trim() == ".."))
148  {
149  return;
150  }
151  else if(filename.isDir())
152  {
153  theDirectoryQueue.push(filename);
154  }
155 }
bool isDir() const
ossimString trim(const ossimString &valueToTrim=ossimString(" \\)) const
this will strip lead and trailing character passed in.
ossimFilename file() const
queue< ossimFilename > theDirectoryQueue

◆ deleteAll()

void ossimDirectoryTree::deleteAll ( )
private

Definition at line 135 of file ossimDirectoryTree.cpp.

References theCurrentDirectoryData.

Referenced by open(), and ~ossimDirectoryTree().

136 {
138  {
141  }
142 }
ossimDirData * theCurrentDirectoryData

◆ findAllFilesThatMatch()

void ossimDirectoryTree::findAllFilesThatMatch ( std::vector< ossimFilename > &  result,
const ossimString regularExpressionPattern,
int  flags = ossimDirectory::OSSIM_DIR_DEFAULT 
)

Definition at line 26 of file ossimDirectoryTree.cpp.

References ossimString::c_str(), ossimRegExp::compile(), ossimRegExp::find(), getFirst(), and getNext().

29 {
30  ossimFilename filename;
31  ossimRegExp regExpr;
32  regExpr.compile(regularExpressionPattern.c_str());
33  if(getFirst(filename, flags))
34  {
35  do
36  {
37  if(regExpr.find(filename.c_str()))
38  {
39  result.push_back(filename);
40  }
41  }while(getNext(filename));
42  }
43 }
bool getNext(ossimFilename &filename)
void compile(const char *)
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 find(const char *)
bool getFirst(ossimFilename &filename, int flags=ossimDirectory::OSSIM_DIR_DEFAULT)

◆ getFirst()

bool ossimDirectoryTree::getFirst ( ossimFilename filename,
int  flags = ossimDirectory::OSSIM_DIR_DEFAULT 
)

Definition at line 77 of file ossimDirectoryTree.cpp.

References checkToPushDirectory(), ossimDirectory::getFirst(), ossimDirectory::getNext(), ossimFilename::isDir(), isOpened(), ossimDirectory::open(), ossimDirectory::OSSIM_DIR_DIRS, theCurrentDirectoryData, ossimDirectoryTree::ossimDirData::theDirectory, theDirectoryQueue, and theFlags.

Referenced by findAllFilesThatMatch(), and getNext().

78 {
79  bool result = false;
82  {
83  result = theCurrentDirectoryData->theDirectory->getFirst(filename,
84  flags);
85  while(result&&filename.isDir())
86  {
87  checkToPushDirectory(filename);
88  result = theCurrentDirectoryData->theDirectory->getNext(filename);
89  }
90 
91  if(!result)
92  {
93  if(!theDirectoryQueue.empty())
94  {
95  ossimFilename newDir = theDirectoryQueue.front();
96  theDirectoryQueue.pop();
98 
99  return getFirst(filename, flags);
100  }
101  }
102  }
103 
104  return result;
105 }
void checkToPushDirectory(const ossimFilename &filename)
bool getFirst(ossimFilename &filename, int flags=OSSIM_DIR_DEFAULT)
bool isDir() const
bool getNext(ossimFilename &filename) const
bool open(const ossimFilename &dir)
ossimDirData * theCurrentDirectoryData
bool getFirst(ossimFilename &filename, int flags=ossimDirectory::OSSIM_DIR_DEFAULT)
queue< ossimFilename > theDirectoryQueue

◆ getNext()

bool ossimDirectoryTree::getNext ( ossimFilename filename)

Definition at line 109 of file ossimDirectoryTree.cpp.

References checkToPushDirectory(), getFirst(), ossimDirectory::getNext(), ossimDirectory::open(), theCurrentDirectoryData, ossimDirectoryTree::ossimDirData::theDirectory, and theDirectoryQueue.

Referenced by findAllFilesThatMatch().

110 {
111  bool result = false;
112 
114  {
115  result = theCurrentDirectoryData->theDirectory->getNext(filename);
116  if(result)
117  {
118  checkToPushDirectory(filename);
119  }
120  else
121  {
122  if(!theDirectoryQueue.empty())
123  {
124  ossimFilename newDir = theDirectoryQueue.front();
125  theDirectoryQueue.pop();
127  return getFirst(filename);
128  }
129  }
130  }
131 
132  return result;
133 }
void checkToPushDirectory(const ossimFilename &filename)
bool getNext(ossimFilename &filename) const
bool open(const ossimFilename &dir)
ossimDirData * theCurrentDirectoryData
bool getFirst(ossimFilename &filename, int flags=ossimDirectory::OSSIM_DIR_DEFAULT)
queue< ossimFilename > theDirectoryQueue

◆ isOpened()

bool ossimDirectoryTree::isOpened ( ) const

Definition at line 67 of file ossimDirectoryTree.cpp.

References ossimDirectory::isOpened(), theCurrentDirectoryData, and ossimDirectoryTree::ossimDirData::theDirectory.

Referenced by getFirst(), and open().

68 {
70  {
72  }
73 
74  return false;
75 }
bool isOpened() const
ossimDirData * theCurrentDirectoryData

◆ open()

bool ossimDirectoryTree::open ( const ossimFilename dir)

Definition at line 45 of file ossimDirectoryTree.cpp.

References deleteAll(), isOpened(), ossimDirectory::isOpened(), ossimDirectory::open(), theCurrentDirectoryData, and ossimDirectoryTree::ossimDirData::theDirectory.

46 {
48  {
49  deleteAll();
50  }
51 
52  theCurrentDirectoryData = new ossimDirData(new ossimDirectory, dir);
55  {
56  return true;
57  }
58  else
59  {
62  }
63 
64  return isOpened();
65 }
bool open(const ossimFilename &dir)
bool isOpened() const
ossimDirData * theCurrentDirectoryData

◆ operator=()

const ossimDirectoryTree& ossimDirectoryTree::operator= ( const ossimDirectoryTree rhs)
private

Member Data Documentation

◆ theCurrentDirectoryData

ossimDirData* ossimDirectoryTree::theCurrentDirectoryData
private

Definition at line 62 of file ossimDirectoryTree.h.

Referenced by deleteAll(), getFirst(), getNext(), isOpened(), and open().

◆ theDirectoryQueue

queue<ossimFilename> ossimDirectoryTree::theDirectoryQueue
private

Definition at line 61 of file ossimDirectoryTree.h.

Referenced by checkToPushDirectory(), getFirst(), and getNext().

◆ theFlags

int ossimDirectoryTree::theFlags
private

Definition at line 63 of file ossimDirectoryTree.h.

Referenced by getFirst().


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