gwnavgeneration/common/generatorfilesystem.h Source File

generatorfilesystem.h
Go to the documentation of this file.
1 /*
2 * Copyright 2016 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 #pragma once
8 
12 
13 namespace Kaim
14 {
15 
16 /*
17 ---------- Vocabulary (Absolute) ----------
18 FileName: C:/MyDir1/MyDir2/MyFile.txt
19 FileDirectory: C:/MyDir1/MyDir2
20 FileSimpleName: MyFile.txt
21 
22 ---------- Vocabulary (Relative) ----------
23 FileName: MyDir1/MyDir2/MyFile.txt
24 FileDirectory: MyDir1/MyDir2
25 FileSimpleName: MyFile.txt
26 */
27 
28 class GeneratorFileSystem
29 {
30  KY_DEFINE_NEW_DELETE_OPERATORS(Stat_Default_Mem)
31 public:
32  enum FileOrDirType { NOT_FOUND, TYPE_FILE, TYPE_DIRECTORY };
33 
34 public:
35  void Setup(const char* absoluteOutputBaseDir, const char* relativeOutputDir);
36 
37  const String& GetAbsoluteOutputDirectory() const { return m_absoluteOutputDirectory; }
38 
39  String GetAbsoluteFileName(const char* relativeFileName) const { return ConcatToPath(m_absoluteOutputDirectory, relativeFileName); }
40 
41  String GetRelativeFileName(const char* relativeFileName) const { return ConcatToPath(m_relativeOutputDirectory, relativeFileName); }
42 
43  KyResult MakeDirectory(const char* relativeFileName) const { return MakeDirectory_Absolute(GetAbsoluteFileName(relativeFileName).ToCStr()); }
44 
45  KyResult MakeDirectoryForFile(const char* relativeFileName) const { return MakeDirectoryForFile_Absolute(GetAbsoluteFileName(relativeFileName).ToCStr()); }
46 
47  bool DoesFileOrDirExist(const char* relativeFileName) const { return DoesFileOrDirExist_Absolute(GetAbsoluteFileName(relativeFileName).ToCStr()); }
48 
49  FileOrDirType GetFileOrDirType(const char* relativeFileOrDirName) const { return GetFileOrDirType_Absolute(GetAbsoluteFileName(relativeFileOrDirName).ToCStr()); }
50 
51 public:
52  KyResult RemoveFile(const char* fileName) const;
53 
54  // Won't remove subdirectories ie *not* recursive
55  KyResult RemoveAllFilesInDirectory(const char* dirNameRelativeToOutputDir) const;
56 
57  // Will remove all the files contained in a particular dir and call rmdir afterward.
58  // Note that this function wont delete sub folders and rmdir will fail if the directory has subdirectories...
59  KyResult RemoveDirectoryAndFilesInIt(const char* dirNameRelativeToOutputDir) const;
60 
61 public: // works with relativeFileNames and absoluteFileNames
62  static KyUInt32 GetLastSeparatorIdx(const char* fileOrDirName);
63  static KyUInt32 GetLastSeparatorIdx(const String& fileOrDirName);
64  static String GetContainingDirectory(const char* fileOrDirName);
65  static String GetContainingDirectory(const String& fileOrDirName);
66  static String GetFileSimpleName(const char* fileName);
67  static String GetFileNameExtension(const char* fileName);
68  static String GetFileNameWithoutExtension(const char* fileName);
69  static String GetFileNameWithoutExtension(const String& fileName);
70  static void RemoveTrailingSlashs(String& fileName);
71  static String RemoveTrailingSlashs(const char* fileName);
72  static bool IsWinDrive(const char* dirName);
73  static bool IsAbsolute(const char* fileOrDirName);
74 
75 public:
76  static KyResult MakeDirectory_Absolute(const char* absoluteDirName);
77  static KyResult MakeDirectory_Absolute(const String& absoluteDirName);
78  static KyResult MakeDirectoryForFile_Absolute(const char* absoluteFileName);
79  static bool DoesFileOrDirExist_Absolute(const char* absoluteFileName);
80  static FileOrDirType GetFileOrDirType_Absolute(const char* absoluteFileName);
81  static FileOrDirType GetFileOrDirType_Absolute(const String& absoluteFileName);
82  static KyResult ListFilesInAbsoluteDirectory(const char* dirName, KyArray<String>& filesList);
83 
84 private:
85  String ConcatToPath(const String& basePath, const char* relativeFileName) const;
86 
87 public:
88  String m_absoluteOutputBaseDirectory; // absolute base directory m_relativeOutputDirectory is relative to
89  String m_relativeOutputDirectory; // relative directory to be embedded into the generated data
90  String m_absoluteOutputDirectory; // concatenation of absoluteOutputBaseDir passed to Setup and m_relativeOutputDirectory
91 };
92 
93 
94 }
95 
96 
97 
std::uint32_t KyUInt32
uint32_t
Definition: types.h:29
#define KY_DEFINE_NEW_DELETE_OPERATORS(MemStat)
This macro defines new and delete operators.
Definition: memory.h:132
Navigation return code class.
Definition: types.h:108
The Autodesk Navigation namespace.
Definition: gamekitcrowddispersion.cpp:17