summaryrefslogtreecommitdiff
path: root/src/KingSystem/Utils/Byaml/ByamlLocal.h
blob: faf51cac83567e599ce1cd9d78f21c17346e48be (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#pragma once

#include "KingSystem/Utils/Byaml/Byaml.h"
#include "KingSystem/Utils/Byaml/ByamlStringTableIter.h"

#include <basis/seadTypes.h>

namespace al::ByamlLocalUtil {

inline ByamlStringTableIter getHashKeyTableIter(const u8* data) {
    auto* header = reinterpret_cast<const al::ByamlHeader*>(data);
    const u8* ptr = &data[header->getHashKeyTableOffset()];
    return ByamlStringTableIter(ptr);
}

inline ByamlStringTableIter getStringTableIter(const u8* data) {
    auto* header = reinterpret_cast<const al::ByamlHeader*>(data);
    const u8* ptr = &data[header->getStringTableOffset()];
    return ByamlStringTableIter(ptr);
}

inline s32 getContainerSize(const u8* data) {
    auto* node = reinterpret_cast<const al::ByamlContainerHeader*>(data);
    return node->getCount();
}

inline al::ByamlType getType(const u8* data) {
    auto* node = reinterpret_cast<const al::ByamlContainerHeader*>(data);
    return node->getType();
}

const char* getDataTypeString(s32 type);

bool verifiByaml(const u8* data);
bool verifiByamlHeader(const u8* data);
bool verifiByamlStringTable(const u8* data);

}  // namespace al::ByamlLocalUtil