|
Pokered Save Editor 2
Pokemon Red & Blue save file editor - Qt 6 C++/QML
|
A moving cursor over a SaveFile, layering auto-advancing reads/writes on top of SaveFileToolset. More...
#include <savefileiterator.h>
Public Member Functions | |
| SaveFileIterator (SaveFile *saveFile) | |
| SaveFileIterator * | offsetTo (var16 val) |
Move the cursor to an absolute offset. Returns this for chaining. | |
| SaveFileIterator * | offsetBy (var16 val) |
Move the cursor by a relative amount. Returns this for chaining. | |
| SaveFileIterator * | skipPadding (var16 val) |
| Alias for code cleanliness (advance past padding). | |
| SaveFileIterator * | inc () |
Increment the offset by one byte. Returns this. | |
| SaveFileIterator * | dec () |
Decrement the offset by one byte. Returns this. | |
| SaveFile * | file () |
| Get reference back to the save file. | |
| SaveFileToolset * | toolset () |
| Get the underlying address-based toolset. | |
| SaveFileIterator * | push () |
| Bookmark the current offset (push) ... | |
| SaveFileIterator * | pop () |
| ... and return to the most recent bookmark (pop). Works like a FIFO stack. | |
| QVector< var8 > | getRange (var16 size, var16 padding=0, bool reverse=false) |
Copies a range of bytes to a buffer of size and returns them. Reads at the cursor, then advances by size + padding. | |
| void | copyRange (var16 size, QVector< var8 > data, var16 padding=0, bool reverse=false) |
Writes at the cursor, then advances by size + padding. | |
| QString | getStr (var16 size, var8 maxLen, var16 padding=0) |
| Read a font-encoded string at the cursor; advances. | |
| void | setStr (var16 size, var8 maxLen, QString str, var16 padding=0) |
| Write a font-encoded string at the cursor; advances. | |
| QString | getHex (var16 size, var16 padding=0, bool reverse=false) |
| Read hex at the cursor; advances. | |
| void | setHex (var16 size, QString hex, var16 padding=0, bool reverse=false) |
| Write hex at the cursor; advances. | |
| var32 | getBCD (var8 size, var16 padding=0) |
| Read a BCD number at the cursor; advances. | |
| void | setBCD (var8 size, var32 val, var16 padding=0) |
| Write a BCD number at the cursor; advances. | |
| bool | getBit (var8 size, var8 bit, bool reverse=false) |
| Test a bit at the cursor. | |
| void | setBit (var8 size, var8 bit, bool value, bool reverse=false) |
| Set a bit at the cursor. | |
| var16 | getWord (var16 padding=0, bool reverse=false) |
| Read a 16-bit word at the cursor; advances. | |
| void | setWord (var16 val, var16 padding=0, bool reverse=false) |
| Write a 16-bit word at the cursor; advances. | |
| var8 | getByte (var16 padding=0) |
| Read a byte at the cursor; advances. | |
| void | setByte (var8 val, var16 padding=0) |
| Write a byte at the cursor; advances. | |
| QVector< bool > | getBitField (var16 size, var16 padding=0) |
| Read a bitfield at the cursor; advances. | |
| void | setBitField (var16 size, QVector< bool > src, var16 padding=0) |
| Write a bitfield at the cursor; advances. | |
Public Attributes | |
| var16 | offset = 0x0000 |
| Current offset in the save file. Can be freely changed directly. | |
Protected Attributes | |
| QVector< var16 > | state |
| Bookmark stack – saves places in the save file to go back to (push/pop). | |
| SaveFile * | saveFile = nullptr |
| The save file this cursor walks. | |
A moving cursor over a SaveFile, layering auto-advancing reads/writes on top of SaveFileToolset.
The expansion (parse) and flattening (write-back) walk the save sequentially. Doing that with raw addresses is error-prone, so the iterator keeps a current offset and offers the same primitives as SaveFileToolset but address-free: each call reads/writes at offset and advances it by the size consumed (plus optional padding). A small push()/pop() stack lets code bookmark a position, wander off to read elsewhere, then return.
Obtain one from SaveFile::iterator(). The caller owns it and must delete it (noted on SaveFile::iterator()).
Definition at line 41 of file savefileiterator.h.
| SaveFileIterator::SaveFileIterator | ( | SaveFile * | saveFile | ) |
| saveFile | The save this cursor walks. |
Definition at line 26 of file savefileiterator.cpp.
References saveFile.
Referenced by dec(), inc(), offsetBy(), offsetTo(), pop(), push(), and skipPadding().
| void SaveFileIterator::copyRange | ( | var16 | size, |
| QVector< var8 > | data, | ||
| var16 | padding = 0, | ||
| bool | reverse = false ) |
Writes at the cursor, then advances by size + padding.
Definition at line 96 of file savefileiterator.cpp.
References SaveFileToolset::copyRange(), offset, offsetBy(), and toolset().
| SaveFileIterator * SaveFileIterator::dec | ( | ) |
Decrement the offset by one byte. Returns this.
Definition at line 54 of file savefileiterator.cpp.
References offset, and SaveFileIterator().
| SaveFile * SaveFileIterator::file | ( | ) |
Get reference back to the save file.
Definition at line 60 of file savefileiterator.cpp.
References saveFile.
Read a BCD number at the cursor; advances.
Definition at line 128 of file savefileiterator.cpp.
References SaveFileToolset::getBCD(), offset, offsetBy(), and toolset().
Read a bitfield at the cursor; advances.
Definition at line 179 of file savefileiterator.cpp.
References SaveFileToolset::getBitField(), offset, offsetBy(), and toolset().
Read a byte at the cursor; advances.
Definition at line 166 of file savefileiterator.cpp.
References SaveFileToolset::getByte(), offset, offsetBy(), and toolset().
Referenced by Item::Item(), and AreaPokemonWild::load().
Read hex at the cursor; advances.
Definition at line 115 of file savefileiterator.cpp.
References SaveFileToolset::getHex(), offset, offsetBy(), and toolset().
Copies a range of bytes to a buffer of size and returns them. Reads at the cursor, then advances by size + padding.
| from | Start offset (inclusive). |
| size | Byte count. |
| reverse | Read the range in reversed byte order. Reads at the cursor, then advances by size + padding. |
Definition at line 89 of file savefileiterator.cpp.
References SaveFileToolset::getRange(), offset, offsetBy(), and toolset().
Read a font-encoded string at the cursor; advances.
Definition at line 102 of file savefileiterator.cpp.
References SaveFileToolset::getStr(), offset, offsetBy(), and toolset().
Read a 16-bit word at the cursor; advances.
Definition at line 153 of file savefileiterator.cpp.
References SaveFileToolset::getWord(), offset, offsetBy(), and toolset().
| SaveFileIterator * SaveFileIterator::inc | ( | ) |
Increment the offset by one byte. Returns this.
Definition at line 48 of file savefileiterator.cpp.
References offset, and SaveFileIterator().
| SaveFileIterator * SaveFileIterator::offsetBy | ( | var16 | val | ) |
Move the cursor by a relative amount. Returns this for chaining.
Definition at line 37 of file savefileiterator.cpp.
References offset, and SaveFileIterator().
Referenced by copyRange(), getBCD(), getBitField(), getByte(), getHex(), getRange(), getStr(), getWord(), setBCD(), setBitField(), setByte(), setHex(), setStr(), setWord(), and skipPadding().
| SaveFileIterator * SaveFileIterator::offsetTo | ( | var16 | val | ) |
Move the cursor to an absolute offset. Returns this for chaining.
Definition at line 31 of file savefileiterator.cpp.
References offset, and SaveFileIterator().
Referenced by ItemStorageBox::load(), MapConnData::load(), PokemonBox::load(), SignData::load(), WarpData::load(), WorldOther::load(), WorldScripts::load(), SpriteData::loadSpriteData1(), SpriteData::loadSpriteData2(), SpriteData::loadSpriteDataNPC(), ItemStorageBox::save(), MapConnData::save(), PokemonBox::save(), SignData::save(), WarpData::save(), WorldOther::save(), WorldScripts::save(), SpriteData::saveMissables(), SpriteData::saveSpriteData1(), SpriteData::saveSpriteData2(), SpriteData::saveSpriteDataNPC(), and PlayerBasics::setBadges().
| SaveFileIterator * SaveFileIterator::pop | ( | ) |
... and return to the most recent bookmark (pop). Works like a FIFO stack.
Definition at line 76 of file savefileiterator.cpp.
References offset, SaveFileIterator(), and state.
| SaveFileIterator * SaveFileIterator::push | ( | ) |
Bookmark the current offset (push) ...
Definition at line 70 of file savefileiterator.cpp.
References offset, SaveFileIterator(), and state.
Write a BCD number at the cursor; advances.
Definition at line 135 of file savefileiterator.cpp.
References offset, offsetBy(), SaveFileToolset::setBCD(), and toolset().
Set a bit at the cursor.
Definition at line 147 of file savefileiterator.cpp.
References offset, setBit(), and toolset().
Referenced by AreaPokemon::save(), PlayerBasics::setBadges(), and setBit().
Write a bitfield at the cursor; advances.
Definition at line 186 of file savefileiterator.cpp.
References offset, offsetBy(), SaveFileToolset::setBitField(), and toolset().
Write a byte at the cursor; advances.
Definition at line 173 of file savefileiterator.cpp.
References offset, offsetBy(), SaveFileToolset::setByte(), and toolset().
Referenced by AreaPokemonWild::save(), Item::save(), ItemStorageBox::save(), MapConnData::save(), SignData::save(), WarpData::save(), WorldOther::save(), SpriteData::saveMissables(), SpriteData::saveSpriteData1(), SpriteData::saveSpriteData2(), and SpriteData::saveSpriteDataNPC().
Write hex at the cursor; advances.
Definition at line 122 of file savefileiterator.cpp.
References offset, offsetBy(), SaveFileToolset::setHex(), and toolset().
Write a font-encoded string at the cursor; advances.
Definition at line 109 of file savefileiterator.cpp.
References offset, offsetBy(), SaveFileToolset::setStr(), and toolset().
Write a 16-bit word at the cursor; advances.
Definition at line 160 of file savefileiterator.cpp.
References offset, offsetBy(), SaveFileToolset::setWord(), and toolset().
| SaveFileIterator * SaveFileIterator::skipPadding | ( | var16 | val | ) |
Alias for code cleanliness (advance past padding).
Definition at line 43 of file savefileiterator.cpp.
References offsetBy(), and SaveFileIterator().
| SaveFileToolset * SaveFileIterator::toolset | ( | ) |
Get the underlying address-based toolset.
Definition at line 65 of file savefileiterator.cpp.
References saveFile.
Referenced by copyRange(), getBCD(), getBit(), getBitField(), getByte(), getHex(), getRange(), getStr(), getWord(), setBCD(), setBit(), setBitField(), setByte(), setHex(), setStr(), and setWord().
| var16 SaveFileIterator::offset = 0x0000 |
Current offset in the save file. Can be freely changed directly.
Definition at line 89 of file savefileiterator.h.
Referenced by copyRange(), dec(), getBCD(), getBit(), getBitField(), getByte(), getHex(), getRange(), getStr(), getWord(), inc(), offsetBy(), offsetTo(), pop(), push(), setBCD(), setBit(), setBitField(), setByte(), setHex(), setStr(), and setWord().
|
protected |
The save file this cursor walks.
Definition at line 95 of file savefileiterator.h.
Referenced by file(), SaveFileIterator(), and toolset().
|
protected |
Bookmark stack – saves places in the save file to go back to (push/pop).
Definition at line 93 of file savefileiterator.h.