d_demo mostly matched (#2242)

This commit is contained in:
TakaRikka
2024-11-10 02:18:28 -08:00
committed by GitHub
parent d9201174e3
commit aec7c1df12
6 changed files with 539 additions and 786 deletions
+33 -1
View File
@@ -90,8 +90,26 @@ struct TValueIterator {
mBegin = begin;
}
const void* get() const { return mBegin; }
typename Parser::ParseType operator*() {
return *(typename Parser::ParseType*)mBegin;
return *(typename Parser::ParseType*)get();
}
TValueIterator& operator++() {
const_cast<u32*>(mBegin)++;
return *this;
}
const TValueIterator operator++(int) {
TValueIterator old(*this);
++(*this);
return old;
}
TValueIterator& operator+=(s32 v) {
const_cast<u32*>(mBegin) += v;
return *this;
}
const void* mBegin;
@@ -102,6 +120,20 @@ struct TValueIterator_raw : public TValueIterator<TParseValue_raw_<u8>, 1> {
TValueIterator_raw(const void* begin) : TValueIterator<TParseValue_raw_<u8>, 1>(begin) {}
};
template <typename T>
struct TParseValue_misaligned : TParseValue_raw_<T> {
static T parse(const void* data) { return TParseValue_raw_::parse(data); }
};
template<typename T>
struct TValueIterator_misaligned : public TValueIterator<TParseValue_misaligned<T>, sizeof(T)> {
TValueIterator_misaligned(const TValueIterator_misaligned<T>& other) : TValueIterator<TParseValue_misaligned<T>, sizeof(T)>(other) {}
TValueIterator_misaligned(const void* begin) : TValueIterator<TParseValue_misaligned<T>, sizeof(T)>(begin) {}
};
inline bool operator==(TValueIterator<TParseValue_misaligned<u32>, 4> a, TValueIterator<TParseValue_misaligned<u32>, 4> b) { return a.mBegin == b.mBegin; }
} // namespace binary
} // namespace JGadget
+21 -4
View File
@@ -172,16 +172,20 @@ struct TParseData : public data::TParse_TParagraph_data::TData {
}
bool isEnd() const {
return _0 == 0;
return status == 0;
}
bool empty() const {
return _c == NULL;
return fileCount == NULL;
}
bool isValid() const {
return !empty() && _0 == 50;
return !empty() && status == 50;
}
const void* getContent() const { return fileCount; }
u32 size() const { return dataSize; }
};
template <int T, class Iterator=JGadget::binary::TValueIterator_raw<u8> >
@@ -190,7 +194,7 @@ struct TParseData_fixed : public TParseData<T> {
TParseData_fixed() : TParseData<T>() {}
const void* getNext() const {
return fileCount;
return _10;
}
bool isValid() const {
@@ -200,6 +204,19 @@ struct TParseData_fixed : public TParseData<T> {
Iterator begin() {
return Iterator(fileCount);
}
Iterator end() {
Iterator i(fileCount);
i += size();
return i;
}
};
struct TParseData_string : public TParseData<0x60> {
TParseData_string(const void* pContent) : TParseData<0x60>(pContent) {}
TParseData_string() : TParseData<0x60>() {}
const char* getData() const { return (const char*)getContent(); }
};
} // namespace stb