summaryrefslogtreecommitdiff
path: root/src/KingSystem/Utils/Byaml/ByamlArrayIter.h
blob: a29cefc15e08b1eca523b74b30719c09fd7c1f6f (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
#pragma once

#include <basis/seadTypes.h>
#include <math/seadMathCalcCommon.h>
#include "KingSystem/Utils/Byaml/Byaml.h"
#include "KingSystem/Utils/Byaml/ByamlLocal.h"

namespace al {

class ByamlArrayIter {
public:
    explicit ByamlArrayIter(const u8* data);

    const u32* getDataTable() const;
    bool getDataByIndex(ByamlData* data, s32 index);

private:
    s32 getDataOffset() const {
        const s32 size = ByamlLocalUtil::getContainerSize(mData);
        return sead::Mathu::roundUp(size, 4);
    }

    static constexpr s32 TypeTableOffset = 4;

    const u8* mData;
};

}  // namespace al