summaryrefslogtreecommitdiff
path: root/ZAPD/ZString.cpp
diff options
context:
space:
mode:
authorAnghelo Carvajal <angheloalf95@gmail.com>2021-05-05 18:45:58 -0400
committerGitHub <noreply@github.com>2021-05-05 18:45:58 -0400
commitae468e0c343a37bb055fd495df49e6ca4885bd8f (patch)
tree3353494d25f99e15bb5f930d17277b98a7bbd36c /ZAPD/ZString.cpp
parentcc52fe66109f0ae9dfec8280e439a567796db787 (diff)
Add `ZString` resource (#130)
* add zstring Signed-off-by: Angie <angheloalf95@gmail.com> * Reorder enum * Update ZString to current way to do stuff * Jack suggestion
Diffstat (limited to 'ZAPD/ZString.cpp')
-rw-r--r--ZAPD/ZString.cpp60
1 files changed, 60 insertions, 0 deletions
diff --git a/ZAPD/ZString.cpp b/ZAPD/ZString.cpp
new file mode 100644
index 0000000..a81354c
--- /dev/null
+++ b/ZAPD/ZString.cpp
@@ -0,0 +1,60 @@
+#include "ZString.h"
+
+#include "File.h"
+#include "ZFile.h"
+#include "StringHelper.h"
+
+REGISTER_ZFILENODE(String, ZString);
+
+ZString::ZString(ZFile* nParent) : ZResource(nParent)
+{
+}
+
+void ZString::ParseRawData()
+{
+ size_t size = 0;
+ uint8_t* rawDataArr = rawData.data();
+ size_t rawDataSize = rawData.size();
+ for (size_t i = rawDataIndex; i < rawDataSize; ++i) {
+ ++size;
+ if (rawDataArr[i] == '\0') {
+ break;
+ }
+ }
+
+ auto dataStart = rawData.begin() + rawDataIndex;
+ strData.assign(dataStart, dataStart + size);
+}
+
+std::string ZString::GetBodySourceCode() const
+{
+ return StringHelper::Sprintf("\t\"%s\"", strData.data());
+}
+
+std::string ZString::GetSourceOutputCode(const std::string& prefix)
+{
+ parent->AddDeclarationArray(rawDataIndex, DeclarationAlignment::None, GetRawDataSize(),
+ GetSourceTypeName(), name, 0, GetBodySourceCode());
+
+ return "";
+}
+
+std::string ZString::GetSourceOutputHeader(const std::string& prefix)
+{
+ return StringHelper::Sprintf("#define %s_macro \"%s\"", name.c_str(), rawData.data());
+}
+
+std::string ZString::GetSourceTypeName()
+{
+ return "char";
+}
+
+ZResourceType ZString::GetResourceType()
+{
+ return ZResourceType::String;
+}
+
+size_t ZString::GetRawDataSize()
+{
+ return strData.size();
+}