From 56f9c3ac0c2486c00d031ac1664fec6322a2762e Mon Sep 17 00:00:00 2001 From: Wildex999 Date: Tue, 3 Nov 2020 01:35:31 +0100 Subject: ksys/utils/byaml: First iteration of implementation. 4 Functions are still not fully matching with their inlined functions, and at least one function is still missing. --- src/KingSystem/Utils/Byaml/ByamlArrayIter.cpp | 29 +++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 src/KingSystem/Utils/Byaml/ByamlArrayIter.cpp (limited to 'src/KingSystem/Utils/Byaml/ByamlArrayIter.cpp') diff --git a/src/KingSystem/Utils/Byaml/ByamlArrayIter.cpp b/src/KingSystem/Utils/Byaml/ByamlArrayIter.cpp new file mode 100644 index 00000000..fe5db205 --- /dev/null +++ b/src/KingSystem/Utils/Byaml/ByamlArrayIter.cpp @@ -0,0 +1,29 @@ +#include "KingSystem/Utils/Byaml/ByamlArrayIter.h" +#include "KingSystem/Utils/Byaml/Byaml.h" +#include "KingSystem/Utils/Byaml/ByamlData.h" +#include "KingSystem/Utils/Byaml/ByamlLocal.h" + +namespace al { +ByamlArrayIter::ByamlArrayIter(const u8* data) { + mData = data; +} + +const u32* ByamlArrayIter::getDataTable() const { + return reinterpret_cast(&mData[TypeTableOffset + getDataOffset()]); +} + +bool ByamlArrayIter::getDataByIndex(ByamlData* data, s32 index) { + if (index < 0) { + return false; + } + + if (index >= ByamlLocalUtil::getContainerSize(mData)) { + return false; + } + + data->setType(ByamlType(mData[TypeTableOffset + index])); + data->setValue(getDataTable()[index]); + + return true; +} +} // namespace al \ No newline at end of file -- cgit v1.2.3