summaryrefslogtreecommitdiff
path: root/Source/modules/asura-base/FileSystem/FileData.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/modules/asura-base/FileSystem/FileData.cpp')
-rw-r--r--Source/modules/asura-base/FileSystem/FileData.cpp59
1 files changed, 59 insertions, 0 deletions
diff --git a/Source/modules/asura-base/FileSystem/FileData.cpp b/Source/modules/asura-base/FileSystem/FileData.cpp
new file mode 100644
index 0000000..b29a95b
--- /dev/null
+++ b/Source/modules/asura-base/FileSystem/FileData.cpp
@@ -0,0 +1,59 @@
+#include "FileData.h"
+
+namespace AsuraEngine
+{
+ namespace FileSystem
+ {
+
+ FileData::FileData(const std::string& filename)
+ : m_Data(nullptr)
+ , m_FileName(filename)
+ {
+ size_t dot = filename.rfind('.');
+ if (dot != std::string::npos)
+ {
+ m_Extension = filename.substr(dot + 1);
+ m_Name = filename.substr(0, dot);
+ }
+ else
+ m_Name = filename;
+ }
+
+ FileData::~FileData()
+ {
+ if (m_Data)
+ m_Data->Release();
+ }
+
+ const std::string& FileData::GetFileName()
+ {
+ return m_FileName;
+ }
+
+ const std::string& FileData::GetExtension()
+ {
+ return m_Extension;
+ }
+
+ const std::string& FileData::GetName()
+ {
+ return m_Name;
+ }
+
+ void FileData::BindData(ASURA_MOVE DataBuffer* buffer)
+ {
+ if (!buffer)
+ return;
+ if (m_Data)
+ m_Data->Release();
+ m_Data = buffer;
+ m_Data->Retain();
+ }
+
+ DataBuffer* FileData::GetDataBuffer()
+ {
+ return m_Data;
+ }
+
+ }
+} \ No newline at end of file