1#pragma once
2
3#include <gfx/seadColor.h>
4#include <math/seadBoundBox.h>
5#include <math/seadVector.h>
6
7#include "Library/Yaml/ByamlData.h"
8#include "Library/Yaml/ByamlIter.h"
9
10namespace sead {
11class WriteStream;
12}
13
14namespace al {
15bool tryGetByamlU8(u8*, const ByamlIter&, const char*);
16bool tryGetByamlU16(u16*, const ByamlIter&, const char*);
17bool tryGetByamlS16(s16*, const ByamlIter&, const char*);
18bool tryGetByamlS32(s32*, const ByamlIter&, const char*);
19bool tryGetByamlU32(u32*, const ByamlIter&, const char*);
20bool tryGetByamlS64(s64*, const ByamlIter&, const char*);
21bool tryGetByamlU64(u64*, const ByamlIter&, const char*);
22bool tryGetByamlF32(f32*, const ByamlIter&, const char*);
23bool tryGetByamlV2f(sead::Vector2f*, const ByamlIter&);
24bool tryGetByamlV3f(sead::Vector3f*, const ByamlIter&);
25bool tryGetByamlV4f(sead::Vector4f*, const ByamlIter&);
26bool tryGetByamlScale(sead::Vector3f*, const ByamlIter&);
27bool tryGetByamlV2s32(sead::Vector2i*, const ByamlIter&);
28bool tryGetByamlV3s32(sead::Vector3i*, const ByamlIter&);
29bool tryGetByamlBox3f(sead::BoundBox3f*, const ByamlIter&);
30bool tryGetByamlV3f(sead::Vector3f*, const ByamlIter&, const char*);
31bool tryGetByamlV2f(sead::Vector2f*, const ByamlIter&, const char*);
32bool tryGetByamlV4f(sead::Vector4f*, const ByamlIter&, const char*);
33bool tryGetByamlScale(sead::Vector3f*, const ByamlIter&, const char*);
34bool tryGetByamlV2s32(sead::Vector2i*, const ByamlIter&, const char*);
35bool tryGetByamlV3s32(sead::Vector3i*, const ByamlIter&, const char*);
36bool tryGetByamlBox3f(sead::BoundBox3f*, const ByamlIter&, const char*);
37bool tryGetByamlString(const char**, const ByamlIter&, const char*);
38bool tryGetByamlColor(sead::Color4f*, const ByamlIter&);
39bool tryGetByamlColor(sead::Color4f*, const ByamlIter&, const char*);
40bool tryGetByamlBool(bool*, const ByamlIter&, const char*);
41const char* tryGetByamlKeyStringOrNULL(const ByamlIter&, const char*);
42s32 tryGetByamlKeyIntOrZero(const ByamlIter&, const char*);
43u32 tryGetByamlKeyU32OrZero(const ByamlIter&, const char*);
44f32 tryGetByamlKeyFloatOrZero(const ByamlIter&, const char*);
45bool tryGetByamlKeyBoolOrFalse(const ByamlIter&, const char*);
46bool tryGetByamlIterByKey(ByamlIter*, const ByamlIter&, const char*);
47bool tryGetByamlKeyAndIntByIndex(const char**, s32*, const ByamlIter&, s32);
48
49const char* getByamlKeyString(const ByamlIter&, const char*);
50s32 getByamlKeyInt(const ByamlIter&, const char*);
51f32 getByamlKeyFloat(const ByamlIter&, const char*);
52bool getByamlKeyBool(const ByamlIter&, const char*);
53void getByamlIterByKey(ByamlIter*, const ByamlIter&, const char*);
54void getByamlIterByIndex(ByamlIter*, const ByamlIter&, s32);
55
56template <ByamlDataType T>
57bool isTypeByIndex(const ByamlIter& rIter, s32 index) {
58 ByamlData data;
59 if (rIter.getByamlDataByIndex(data: &data, index))
60 return data.getType() == T;
61 return false;
62}
63
64template <ByamlDataType T>
65bool isTypeByKey(const ByamlIter& rIter, const char* key) {
66 ByamlData data;
67 if (rIter.getByamlDataByKey(data: &data, key))
68 return data.getType() == T;
69 return false;
70}
71
72bool isTypeBoolByIndex(const ByamlIter&, s32);
73bool isTypeBoolByKey(const ByamlIter&, const char*);
74bool isTypeIntByIndex(const ByamlIter&, s32);
75bool isTypeIntByKey(const ByamlIter&, const char*);
76bool isTypeFloatByIndex(const ByamlIter&, s32);
77bool isTypeFloatByKey(const ByamlIter&, const char*);
78bool isTypeStringByIndex(const ByamlIter&, s32);
79bool isTypeStringByKey(const ByamlIter&, const char*);
80bool isTypeArrayByIndex(const ByamlIter&, s32);
81bool isTypeArrayByKey(const ByamlIter&, const char*);
82bool isTypeHashByIndex(const ByamlIter&, s32);
83bool isTypeHashByKey(const ByamlIter&, const char*);
84
85s32 getByamlIterDataNum(const ByamlIter&);
86
87struct PrintParams {
88 s32 depth;
89 u32 offset;
90 PrintParams* parent;
91};
92
93void printByamlIter(const u8*);
94void printByamlIter(const ByamlIter&);
95void printByamlIter_(const ByamlIter&, PrintParams*);
96} // namespace al
97