RioEngine  0.1
My first attempt to create a 3D WYSIWYG Game Engine
directoryhelper.hpp
Go to the documentation of this file.
1 //--------------------------------------------------------------- @License begins
2 // RioEngine: The late night Coke -without whores- debugging sessions
3 // 2012-2015 Leopoldo Lomas Flores. Torreon, Coahuila. MEXICO
4 // leopoldolomas [at] gmail
5 // www.rioengine.com
6 // www.leopoldolomas.info
7 // "You have a problem, you face it like a man."
8 //
9 // This is free and unencumbered software released into the public domain.
10 //
11 // Anyone is free to copy, modify, publish, use, compile, sell, or distribute this
12 // software, either in source code form or as a compiled binary, for any purpose,
13 // commercial or non-commercial, and by any means.
14 //
15 // In jurisdictions that recognize copyright laws, the author or authors of this
16 // software dedicate any and all copyright interest in the software to the public
17 // domain. We make this dedication for the benefit of the public at large and to
18 // the detriment of our heirs and successors. We intend this dedication to be
19 // an overt act of relinquishment in perpetuity of all present and future
20 // rights to this software under copyright law.
21 //
22 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
23 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,FITNESS
24 // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE
25 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
26 // CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
27 // SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
28 //--------------------------------------------------------------- @License ends
29 
30 #ifndef RIOENGINE_MISC_DIRECTORYHELPER_H_
31 #define RIOENGINE_MISC_DIRECTORYHELPER_H_
32 
33 #include <regex>
34 #include "constants.h"
35 #include "misc/dirent.h"
36 #include "misc/stringhelper.hpp"
37 
39  public:
40  static std::string getProjectDirectory() {
41  return std::string(k_RioEngineProjectPath); // TODO load this value from an INI file instead of hardcode
42  }
43 
44  //-----------------------------------------------------------------------------
45 
46  static std::string getAssetsDirectory() {
47  return DirectoryHelper::getProjectDirectory().append("assets\\");
48  }
49 
50  //-----------------------------------------------------------------------------
51 
52  // TODO return a CArray instead of std::vector
53  static std::vector<std::string> getFileList(std::string dir) {
54  std::vector<std::string> files;
55 
56  DIR *dp;
57  struct dirent *ep;
58  dp = opendir(dir.c_str());
59 
60  if (dp != NULL) {
61  while (ep = readdir (dp)) {
62  files.push_back(ep->d_name);
63  }
64  (void)closedir(dp);
65  }
66 
67  return files;
68  }
69 
70  //-----------------------------------------------------------------------------
71 
72  // TODO return a CArray instead of std::vector
73  static std::vector<std::string> getFileList(std::string dir, std::string extension) {
74  std::vector<std::string> files = DirectoryHelper::getFileList(dir);
75  std::vector<std::string> matches;
76 
77  std::string regex_ext_str = "(.*).";
78  regex_ext_str.append(extension);
79 
80  for (unsigned int i = 0; i < files.size(); i ++) {
81  std::string file = files.at(i);
82  std::tr1::regex regex_ext(regex_ext_str);
83 
84  if (std::tr1::regex_search(file, regex_ext))
85  matches.push_back(file);
86  }
87  return matches;
88  }
89 };
90 
91 #endif // RIOENGINE_MISC_DIRECTORYHELPER_H_
Definition: dirent.h:162
Definition: dirent.h:154
char d_name[MAX_PATH+1]
Definition: dirent.h:156
static std::vector< std::string > getFileList(std::string dir)
static std::vector< std::string > getFileList(std::string dir, std::string extension)
static std::string getProjectDirectory()
static std::string getAssetsDirectory()