aboutsummaryrefslogtreecommitdiff
path: root/src/libjin/filesystem/asset_database.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/libjin/filesystem/asset_database.h')
-rw-r--r--src/libjin/filesystem/asset_database.h114
1 files changed, 114 insertions, 0 deletions
diff --git a/src/libjin/filesystem/asset_database.h b/src/libjin/filesystem/asset_database.h
new file mode 100644
index 0000000..2d7d5a3
--- /dev/null
+++ b/src/libjin/filesystem/asset_database.h
@@ -0,0 +1,114 @@
+#ifndef __JE_ASSET_DATABASE_H__
+#define __JE_ASSET_DATABASE_H__
+
+#include "../core/configuration.h"
+#if defined(jin_filesystem)
+
+#include <vector>
+
+#include "smount/smount.h"
+
+#include "buffer.h"
+
+namespace JinEngine
+{
+ namespace Filesystem
+ {
+
+ ///
+ /// Assets managment.
+ ///
+ class AssetDatabase : public Object
+ {
+ public:
+ ///
+ /// Get asset database singleton.
+ ///
+ /// @param Singleton of asset database.
+ ///
+ static AssetDatabase* get();
+
+ ///
+ /// Asset database constructor.
+ ///
+ AssetDatabase();
+
+ ///
+ /// Set asset root folder.
+ ///
+ /// @param root Root folder of assets.
+ ///
+ void mount(const char* root);
+
+ ///
+ /// Check if the path is directory.
+ ///
+ /// @param path Path under asset folder.
+ /// @return True if the given path is directory, otherwise return false.
+ ///
+ bool isDir(const char* path);
+
+ ///
+ /// Check if the path is file.
+ ///
+ /// @param path Path under asset folder.
+ /// @return True if the given path is file, otherwise return false.
+ ///
+ bool isFile(const char* path);
+
+ ///
+ /// Check if the path exists.
+ /// @param path Given path.
+ /// @return True if path exists, otherwise return false.
+ ///
+ bool exists(const char* path);
+
+ ///
+ /// Read file into a buffer.
+ ///
+ /// @param path Path of file.
+ /// @param buffer Buffer to fill.
+ /// @return True if read sucessful, otherwise return false.
+ ///
+ void read(const char* path, Buffer& buffer);
+
+ ///
+ /// Read file and return data content.
+ ///
+ /// @param path Path of file.
+ /// @param length Length of data.
+ /// @return Data if read sucessful, otherwise return null.
+ ///
+ void* read(const char* path, unsigned int* length);
+
+ ///
+ /// Get files under given directory.
+ ///
+ /// @param path Path of directory.
+ /// @param recursive Recursivily search folder.
+ /// @return File list under given directory.
+ ///
+ std::vector<std::string> getFiles(const char* directory, bool recursive = false);
+
+ ///
+ /// Get full path of asset.
+ ///
+ /// @param path Path of asset.
+ /// @return Full path of asset.
+ ///
+ const char* getFull(const char* path);
+
+ private:
+ static AssetDatabase* mAssetDatabase;
+#if jin_filesystem == jin_filesystem_smount
+ smtShared* mSmt;
+#endif
+
+ };
+
+ } // namespace Filesystem
+} // namespace JinEngine
+
+#endif // jin_filesystem
+
+#endif \ No newline at end of file