diff options
| author | Anghelo Carvajal <angheloalf95@gmail.com> | 2021-05-05 18:45:58 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-05-05 18:45:58 -0400 |
| commit | ae468e0c343a37bb055fd495df49e6ca4885bd8f (patch) | |
| tree | 3353494d25f99e15bb5f930d17277b98a7bbd36c /ZAPD/ZString.cpp | |
| parent | cc52fe66109f0ae9dfec8280e439a567796db787 (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.cpp | 60 |
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(); +} |
