HOPS
HOPS class reference
MHO_DirectoryInterface.hh
Go to the documentation of this file.
1 #ifndef MHO_DirectoryInterface_HH__
2 #define MHO_DirectoryInterface_HH__
3 
4 #include <string>
5 #include <vector>
6 
7 #include "MHO_Tokenizer.hh"
8 
9 namespace hops
10 {
11 
24 {
25  public:
27  virtual ~MHO_DirectoryInterface();
28 
36  static std::string GetDirectoryFullPath(const std::string& dirname);
37 
45  static std::string GetDirectoryFullPathPreserveSymlinks(const std::string& dirname);
46 
59  static std::string GetHopsInstallPrefix();
60 
68  static bool DoesDirectoryExist(const std::string& dirname);
69 
77  static bool IsDirectory(const std::string& name);
78 
86  static bool IsFile(const std::string& name);
87 
95  static std::string GetFileModifcationTime(const std::string& name);
96 
103  static std::string GetFileExtension(const std::string& aFilename);
104 
111  static bool CreateDirectory(const std::string& dirname);
112 
118  void SetCurrentDirectory(const std::string& dirname);
119 
125  std::string GetCurrentDirectory() const;
126 
132  std::string GetCurrentParentDirectory() const;
133 
139  bool ReadCurrentDirectory();
140 
146  void GetFileList(std::vector< std::string >& aFileList) const;
147 
153  void GetSubDirectoryList(std::vector< std::string >& aSubDirList) const;
154 
161  void GetFilesMatchingExtention(std::vector< std::string >& aFileList, const std::string& anExt) const;
162 
169  void GetFilesMatchingExtention(std::vector< std::string >& aFileList, const char* anExt) const;
170 
177  void GetFilesMatchingPrefix(std::vector< std::string >& aFileList, const std::string& aPrefix) const;
178 
185  void GetFilesMatchingPrefix(std::vector< std::string >& aFileList, const char* aPrefix) const;
186 
193  void GetSubDirectoriesMatchingExtention(std::vector< std::string >& aDirList, const std::string& anExt) const;
194  void GetSubDirectoriesMatchingExtention(std::vector< std::string >& aDirList, const char* anExt) const;
195 
196  //utility functions for old mk4 format files
197 
201  void GetRootFile(const std::vector< std::string >& files, std::string& root_file) const;
202 
206  void GetCorelFiles(const std::vector< std::string >& files, std::vector< std::string >& corel_files) const;
207 
211  void GetStationFiles(const std::vector< std::string >& files, std::vector< std::string >& station_files) const;
212 
216  void GetFringeFiles(const std::vector< std::string >& files, std::vector< std::string >& fringe_files,
217  int& max_sequence_num) const;
218 
222  void SplitCorelFileBasename(const std::string& corel_basename, std::string& st_pair, std::string& root_code) const;
223 
227  void SplitStationFileBasename(const std::string& station_basename, std::string& st, std::string& root_code) const;
228 
232  static std::string GetBasename(const std::string& filename);
233 
237  static std::string GetPrefix(const std::string& filename);
238 
242  static std::string GetTrailingDirectory(const std::string& filename);
243 
247  static std::string StripExtensionFromBasename(const std::string& file_basename);
248 
249  private:
250  //number of chars in a string
251  std::size_t count_number_of_matches(const std::string& aString, char elem) const;
252 
253  std::string fCurrentDirectoryFullPath;
254  std::string fCurrentParentFullPath;
255 
256  bool fDirectoryIsSet;
257  bool fHaveReadDirectory;
258 
259  std::vector< std::string > fCurrentFileList;
260  std::vector< std::string > fCurrentSubDirectoryList;
261 
262  mutable MHO_Tokenizer fTokenizer;
263 };
264 
265 } // namespace hops
266 
267 #endif
Class MHO_DirectoryInterface.
Definition: MHO_DirectoryInterface.hh:24
static bool DoesDirectoryExist(const std::string &dirname)
Checks if a directory exists by attempting to open it.
Definition: MHO_DirectoryInterface.cc:110
MHO_DirectoryInterface()
Definition: MHO_DirectoryInterface.cc:26
static std::string GetFileExtension(const std::string &aFilename)
Extracts the file extension from a file name.
Definition: MHO_DirectoryInterface.cc:371
void SetCurrentDirectory(const std::string &dirname)
Setter for current directory.
Definition: MHO_DirectoryInterface.cc:192
void SplitCorelFileBasename(const std::string &corel_basename, std::string &st_pair, std::string &root_code) const
splits out baseline and root code from basename of a legacy mk4 corel file
Definition: MHO_DirectoryInterface.cc:612
static std::string GetDirectoryFullPathPreserveSymlinks(const std::string &dirname)
Getter for directory full path preserve symlinks.
Definition: MHO_DirectoryInterface.cc:50
static std::string GetDirectoryFullPath(const std::string &dirname)
Getter for directory full path.
Definition: MHO_DirectoryInterface.cc:33
void SplitStationFileBasename(const std::string &station_basename, std::string &st, std::string &root_code) const
splits out station char and root code from basename of a legacy mk4 station file
Definition: MHO_DirectoryInterface.cc:628
static std::string GetTrailingDirectory(const std::string &filename)
gets the name of the directory immediately containing the specified file
Definition: MHO_DirectoryInterface.cc:329
static std::string GetPrefix(const std::string &filename)
gets the directory prefix from a full path to a file
Definition: MHO_DirectoryInterface.cc:314
void GetFilesMatchingExtention(std::vector< std::string > &aFileList, const std::string &anExt) const
Getter for files matching extention.
Definition: MHO_DirectoryInterface.cc:386
std::string GetCurrentDirectory() const
Getter for current directory.
Definition: MHO_DirectoryInterface.cc:461
void GetCorelFiles(const std::vector< std::string > &files, std::vector< std::string > &corel_files) const
extracts legacy mk4 corel files from list of files
Definition: MHO_DirectoryInterface.cc:515
static std::string StripExtensionFromBasename(const std::string &file_basename)
removes the extention (anything after last '.') from a file (base) name
Definition: MHO_DirectoryInterface.cc:355
void GetFileList(std::vector< std::string > &aFileList) const
Getter for file list.
Definition: MHO_DirectoryInterface.cc:201
static bool IsDirectory(const std::string &name)
Checks if a given path is a directory.
Definition: MHO_DirectoryInterface.cc:125
static std::string GetHopsInstallPrefix()
Returns the absolute path of the HOPS install prefix, determined at runtime from the on-disk location...
Definition: MHO_DirectoryInterface.cc:73
static bool IsFile(const std::string &name)
Checks if a given path is a regular file.
Definition: MHO_DirectoryInterface.cc:138
bool ReadCurrentDirectory()
Checks if current directory exists and reads its files and directories.
Definition: MHO_DirectoryInterface.cc:219
void GetFringeFiles(const std::vector< std::string > &files, std::vector< std::string > &fringe_files, int &max_sequence_num) const
extracts legacy mk4 fringe files from list of files
Definition: MHO_DirectoryInterface.cc:568
void GetSubDirectoriesMatchingExtention(std::vector< std::string > &aDirList, const std::string &anExt) const
Getter for sub directories matching extention.
Definition: MHO_DirectoryInterface.cc:434
std::string GetCurrentParentDirectory() const
Getter for current parent directory.
Definition: MHO_DirectoryInterface.cc:466
static std::string GetFileModifcationTime(const std::string &name)
Getter for file modifcation time.
Definition: MHO_DirectoryInterface.cc:151
static bool CreateDirectory(const std::string &dirname)
Creates a directory with given name and owner permissions.
Definition: MHO_DirectoryInterface.cc:170
void GetStationFiles(const std::vector< std::string > &files, std::vector< std::string > &station_files) const
extracts legacy mk4 station files from list of files
Definition: MHO_DirectoryInterface.cc:540
void GetSubDirectoryList(std::vector< std::string > &aSubDirList) const
Getter for sub directory list.
Definition: MHO_DirectoryInterface.cc:210
virtual ~MHO_DirectoryInterface()
Definition: MHO_DirectoryInterface.cc:31
void GetRootFile(const std::vector< std::string > &files, std::string &root_file) const
extracts legacy mk4 root file from list of files
Definition: MHO_DirectoryInterface.cc:471
static std::string GetBasename(const std::string &filename)
gets the file name from a path to a file
Definition: MHO_DirectoryInterface.cc:303
void GetFilesMatchingPrefix(std::vector< std::string > &aFileList, const std::string &aPrefix) const
Getter for files matching prefix.
Definition: MHO_DirectoryInterface.cc:413
Class MHO_Tokenizer.
Definition: MHO_Tokenizer.hh:24
constexpr const char * file_basename(const char *str)
Returns the base name (file name without path) from a given string.
Definition: MHO_SelfName.hh:54
Definition: MHO_AdhocFlagging.hh:18