mirror of
https://github.com/zeldaret/mm.git
synced 2026-07-30 07:45:06 -04:00
b2747aa8b4
* git subrepo pull tools/asm-differ --force subrepo: subdir: "tools/asm-differ" merged: "d218cdf0" upstream: origin: "https://github.com/simonlindholm/asm-differ.git" branch: "main" commit: "d218cdf0" git-subrepo: version: "0.4.3" origin: "https://github.com/ingydotnet/git-subrepo.git" commit: "2f68596" * git subrepo pull tools/graphovl --force subrepo: subdir: "tools/graphovl" merged: "f5fe93d7" upstream: origin: "https://github.com/AngheloAlf/graphovl.git" branch: "master" commit: "f5fe93d7" git-subrepo: version: "0.4.3" origin: "https://github.com/ingydotnet/git-subrepo.git" commit: "2f68596" * git subrepo pull tools/ZAPD --force subrepo: subdir: "tools/ZAPD" merged: "e7a8a48c" upstream: origin: "https://github.com/zeldaret/ZAPD.git" branch: "master" commit: "e7a8a48c" git-subrepo: version: "0.4.3" origin: "https://github.com/ingydotnet/git-subrepo.git" commit: "2f68596" * git subrepo pull tools/graphovl --force subrepo: subdir: "tools/graphovl" merged: "d14ea084" upstream: origin: "https://github.com/AngheloAlf/graphovl.git" branch: "master" commit: "d14ea084" git-subrepo: version: "0.4.3" origin: "https://github.com/ingydotnet/git-subrepo.git" commit: "2f68596" * git subrepo pull tools/ZAPD --force subrepo: subdir: "tools/ZAPD" merged: "e243634e" upstream: origin: "https://github.com/zeldaret/ZAPD.git" branch: "master" commit: "e243634e" git-subrepo: version: "0.4.3" origin: "https://github.com/ingydotnet/git-subrepo.git" commit: "2f68596" * git subrepo pull tools/decomp-permuter --force subrepo: subdir: "tools/decomp-permuter" merged: "d1294dfa0" upstream: origin: "https://github.com/simonlindholm/decomp-permuter.git" branch: "main" commit: "d1294dfa0" git-subrepo: version: "0.4.3" origin: "https://github.com/ingydotnet/git-subrepo.git" commit: "2f68596" * git subrepo pull tools/graphovl --force subrepo: subdir: "tools/graphovl" merged: "f5fe93d75" upstream: origin: "https://github.com/AngheloAlf/graphovl.git" branch: "master" commit: "f5fe93d75" git-subrepo: version: "0.4.3" origin: "https://github.com/ingydotnet/git-subrepo.git" commit: "2f68596" * git subrepo pull tools/ZAPD --force subrepo: subdir: "tools/ZAPD" merged: "d0cd6b397" upstream: origin: "https://github.com/zeldaret/ZAPD.git" branch: "master" commit: "d0cd6b397" git-subrepo: version: "0.4.3" origin: "https://github.com/ingydotnet/git-subrepo.git" commit: "2f68596" * add ExternalXMLFolder config * git subrepo pull --force tools/decomp-permuter subrepo: subdir: "tools/decomp-permuter" merged: "a20bac942" upstream: origin: "https://github.com/simonlindholm/decomp-permuter.git" branch: "main" commit: "a20bac942" git-subrepo: version: "0.4.3" origin: "https://github.com/ingydotnet/git-subrepo.git" commit: "2f68596" * git subrepo pull --force tools/ZAPD subrepo: subdir: "tools/ZAPD" merged: "4f7b8393e" upstream: origin: "https://github.com/zeldaret/ZAPD.git" branch: "master" commit: "4f7b8393e" git-subrepo: version: "0.4.3" origin: "https://github.com/ingydotnet/git-subrepo.git" commit: "2f68596" * git subrepo pull --force tools/asm-differ subrepo: subdir: "tools/asm-differ" merged: "f30d43ace" upstream: origin: "https://github.com/simonlindholm/asm-differ.git" branch: "main" commit: "f30d43ace" git-subrepo: version: "0.4.3" origin: "https://github.com/ingydotnet/git-subrepo.git" commit: "2f68596" * Remove Segment="128"
102 lines
2.2 KiB
C++
102 lines
2.2 KiB
C++
#include "ZSymbol.h"
|
|
|
|
#include "Utils/StringHelper.h"
|
|
#include "ZFile.h"
|
|
|
|
REGISTER_ZFILENODE(Symbol, ZSymbol);
|
|
|
|
ZSymbol::ZSymbol(ZFile* nParent) : ZResource(nParent)
|
|
{
|
|
RegisterOptionalAttribute("Type");
|
|
RegisterOptionalAttribute("TypeSize");
|
|
RegisterOptionalAttribute("Count");
|
|
}
|
|
|
|
void ZSymbol::ParseXML(tinyxml2::XMLElement* reader)
|
|
{
|
|
ZResource::ParseXML(reader);
|
|
|
|
std::string typeXml = registeredAttributes.at("Type").value;
|
|
|
|
if (typeXml == "")
|
|
{
|
|
fprintf(stderr,
|
|
"ZSymbol::ParseXML: Warning in '%s'.\n"
|
|
"\t Missing 'Type' attribute in xml.\n"
|
|
"\t Defaulting to 'void*'.\n",
|
|
name.c_str());
|
|
type = "void*";
|
|
}
|
|
else
|
|
{
|
|
type = typeXml;
|
|
}
|
|
|
|
std::string typeSizeXml = registeredAttributes.at("TypeSize").value;
|
|
if (typeSizeXml == "")
|
|
{
|
|
fprintf(stderr,
|
|
"ZSymbol::ParseXML: Warning in '%s'.\n"
|
|
"\t Missing 'TypeSize' attribute in xml.\n"
|
|
"\t Defaulting to '4'.\n",
|
|
name.c_str());
|
|
typeSize = 4; // Size of a word.
|
|
}
|
|
else
|
|
{
|
|
typeSize = StringHelper::StrToL(typeSizeXml, 0);
|
|
}
|
|
|
|
if (registeredAttributes.at("Count").wasSet)
|
|
{
|
|
isArray = true;
|
|
|
|
std::string countXml = registeredAttributes.at("Count").value;
|
|
if (countXml != "")
|
|
count = StringHelper::StrToL(countXml, 0);
|
|
}
|
|
|
|
if (registeredAttributes.at("Static").value == "On")
|
|
{
|
|
fprintf(stderr, "A <Symbol> can't be marked as static.\n\t Disabling static\n");
|
|
}
|
|
staticConf = StaticConfig::Off;
|
|
}
|
|
|
|
Declaration* ZSymbol::DeclareVar([[maybe_unused]] const std::string& prefix,
|
|
[[maybe_unused]] const std::string& bodyStr)
|
|
{
|
|
return nullptr;
|
|
}
|
|
|
|
size_t ZSymbol::GetRawDataSize() const
|
|
{
|
|
if (isArray)
|
|
return count * typeSize;
|
|
|
|
return typeSize;
|
|
}
|
|
|
|
std::string ZSymbol::GetSourceOutputHeader([[maybe_unused]] const std::string& prefix)
|
|
{
|
|
if (isArray)
|
|
{
|
|
if (count == 0)
|
|
return StringHelper::Sprintf("extern %s %s[];\n", type.c_str(), name.c_str());
|
|
else
|
|
return StringHelper::Sprintf("extern %s %s[%i];\n", type.c_str(), name.c_str(), count);
|
|
}
|
|
|
|
return StringHelper::Sprintf("extern %s %s;\n", type.c_str(), name.c_str());
|
|
}
|
|
|
|
std::string ZSymbol::GetSourceTypeName() const
|
|
{
|
|
return type;
|
|
}
|
|
|
|
ZResourceType ZSymbol::GetResourceType() const
|
|
{
|
|
return ZResourceType::Symbol;
|
|
}
|