17#include "CoreObject.h"
22class FSBlock : CoreObject {
25 class FileSystem &device;
48 FSBlock(FileSystem& _device, u32 _nr);
49 virtual ~FSBlock() =
default;
50 const char *objectName()
const override {
return "FSBlock"; }
60 FSBlockType type()
const;
63 TSLink tsLink() {
return TSLink { data[0], data[1] }; }
71 void writeBAM(
const string &name =
"");
72 void writeBAM(PETName<16> &name);
92 FSUsage itemType(u32
byte)
const;
95 ErrorCode check(u32
byte, u8 *expected,
bool strict)
const;
98 isize check(
bool strict)
const;
108 void importBlock(
const u8 *src);
111 void exportBlock(u8 *dst);
115typedef FSBlock* BlockPtr;
122typedef FSBlock* BlockPtr;
124#define EXPECT_BYTE(exp) { \
125if (value != (exp)) { *expected = (u8)(exp); return ERROR_FS_EXPECTED_VAL; } }
127#define EXPECT_MIN(min) { \
128if (value < (min)) { *expected = (u8)(min); return ERROR_FS_EXPECTED_MIN; } }
130#define EXPECT_MAX(max) { \
131if (value > (max)) { *expected = (u8)(max); return ERROR_FS_EXPECTED_MAX; } }
133#define EXPECT_RANGE(min,max) { \
134EXPECT_MIN(min); EXPECT_MAX(max) }
136#define EXPECT_TRACK_REF(s) \
137EXPECT_RANGE(0, device.layout.numTracks() + 1)
139#define EXPECT_SECTOR_REF(t) { \
140if (isize num = device.layout.numSectors(t)) \
141EXPECT_RANGE(0,num) else if (strict) EXPECT_MAX(254) }
VirtualC64 project namespace.
Definition CmdQueue.cpp:16