gwnavgeneration/common/generatorfilesystem.h Source File

generatorfilesystem.h
Go to the documentation of this file.
1 /*
2 * Copyright 2015 Autodesk, Inc. All rights reserved.
3 * Use of this software is subject to the terms of the Autodesk license agreement and any attachments or Appendices thereto provided at the time of installation or download,
4 * or which otherwise accompanies this software in either electronic or hard copy form, or which is signed by you and accepted by Autodesk.
5 */
6 
7 
8 // primary contact: GUAL - secondary contact: MAMU
9 #ifndef GwNavGen_GeneratorFileSystem_H
10 #define GwNavGen_GeneratorFileSystem_H
11 
12 
16 
17 
18 namespace Kaim
19 {
20 
21 /*
22 ---------- Vocabulary (Absolute) ----------
23 FileName: C:/MyDir1/MyDir2/MyFile.txt
24 FileDirectory: C:/MyDir1/MyDir2
25 FileSimpleName: MyFile.txt
26 
27 ---------- Vocabulary (Relative) ----------
28 FileName: MyDir1/MyDir2/MyFile.txt
29 FileDirectory: MyDir1/MyDir2
30 FileSimpleName: MyFile.txt
31 */
32 class GeneratorFileSystem
33 {
34  KY_DEFINE_NEW_DELETE_OPERATORS(Stat_Default_Mem)
35 public:
36  enum FileOrDirType { NOT_FOUND, TYPE_FILE, TYPE_DIRECTORY };
37 
38 public:
39  void Setup(const char* absoluteOutputBaseDir, const char* relativeOutputDir);
40 
41  const String& GetAbsoluteOutputDirectory() const { return m_absoluteOutputDirectory; }
42 
43  String GetAbsoluteFileName(const char* relativeFileName) const
44  {
45  return ConcatToPath(m_absoluteOutputDirectory, relativeFileName);
46  }
47 
48  String GetRelativeFileName(const char* relativeFileName) const
49  {
50  return ConcatToPath(m_relativeOutputDirectory, relativeFileName);
51  }
52 
53  KyResult MakeDirectory(const char* relativeFileName) const
54  {
55  return MakeDirectory_Absolute(GetAbsoluteFileName(relativeFileName).ToCStr());
56  }
57 
58  KyResult MakeDirectoryForFile(const char* relativeFileName) const
59  {
60  return MakeDirectoryForFile_Absolute(GetAbsoluteFileName(relativeFileName).ToCStr());
61  }
62 
63  bool DoesFileOrDirExist(const char* relativeFileName) const
64  {
65  return DoesFileOrDirExist_Absolute(GetAbsoluteFileName(relativeFileName).ToCStr());
66  }
67 
68  FileOrDirType GetFileOrDirType(const char* relativeFileOrDirName) const
69  {
70  return GetFileOrDirType_Absolute(GetAbsoluteFileName(relativeFileOrDirName).ToCStr());
71  }
72 
73 public:
74  KyResult RemoveFile(const char* fileName);
75 
76  // wont remove sub directories
77  KyResult RemoveAllFilesInDirectory(const char* dirNameRelativeToOutputDir);
78 
79  // Will remove all the files contained in a particular dir and call rmdir afterward
80  // Note that this function wont delete sub folders and rmdir will fail if the directory
81  // has subdirectories...
82  KyResult RemoveDirectoryAndFilesInIt(const char* dirNameRelativeToOutputDir);
83 
84 public: // works with relativeFileNames and absoluteFileNames
85  static KyUInt32 GetLastSeparatorIdx(const char* fileOrDirName);
86  static KyUInt32 GetLastSeparatorIdx(const String& fileOrDirName);
87  static String GetContainingDirectory(const char* fileOrDirName);
88  static String GetContainingDirectory(const String& fileOrDirName);
89  static String GetFileSimpleName(const char* fileName);
90  static String GetFileNameExtension(const char* fileName);
91  static String GetFileNameWithoutExtension(const char* fileName);
92  static String GetFileNameWithoutExtension(const String& fileName);
93  static void RemoveTrailingSlashs(String& fileName);
94  static String RemoveTrailingSlashs(const char* fileName);
95  static bool IsWinDrive(const char* dirName);
96  static bool IsAbsolute(const char* fileOrDirName);
97 
98 public:
99  static KyResult MakeDirectory_Absolute(const char* absoluteDirName);
100  static KyResult MakeDirectory_Absolute(const String& absoluteDirName);
101  static KyResult MakeDirectoryForFile_Absolute(const char* absoluteFileName);
102  static bool DoesFileOrDirExist_Absolute(const char* absoluteFileName);
103  static FileOrDirType GetFileOrDirType_Absolute(const char* absoluteFileName);
104  static FileOrDirType GetFileOrDirType_Absolute(const String& absoluteFileName);
105  static KyResult ListFilesInAbsoluteDirectory(const char* dirName, KyArray<String>& filesList);
106 
107 private:
108  String ConcatToPath(const String& basePath, const char* relativeFileName) const;
109 
110 public:
111  String m_absoluteOutputBaseDirectory; // absolute base directory m_relativeOutputDirectory is relative to
112  String m_relativeOutputDirectory; // relative directory to be embedded into the generated data
113  String m_absoluteOutputDirectory; // concatenation of absoluteOutputBaseDir passed to Setup and m_relativeOutputDirectory
114 };
115 
116 
117 }
118 
119 
120 #endif
121 
KyInt32 KyResult
Defines a type that can be returned by methods or functions in the Gameware Navigation SDK to indicat...
Definition: types.h:254
Definition: gamekitcrowddispersion.h:20
#define KY_DEFINE_NEW_DELETE_OPERATORS(MemStat)
This macro defines new and delete operators.
Definition: memory.h:137
unsigned int KyUInt32
Type used internally to represent an unsigned 32-bit integer.
Definition: types.h:36