#pragma once
#include "ff.h"

class FastFileRef
{
    FATFS* _fatFs;
    u32 _dirSector;
    u32 _dirSectorOffset;
    u32 _startCluster;
    FSIZE_t _fileSize;

public:
    FastFileRef() { }

    explicit FastFileRef(const DIR* directory, const FILINFO* fileInfo)
        : _fatFs(directory->obj.fs), _dirSector(fileInfo->fdirsect)
        , _dirSectorOffset(fileInfo->fdiroffs), _startCluster(fileInfo->fclust)
        , _fileSize(fileInfo->fsize) { }

    FATFS* GetFatFs() const { return _fatFs; }
    u32 GetDirSector() const { return _dirSector; }
    u32 GetDirSectorOffset() const { return _dirSectorOffset; }
    u32 GetStartCluster() const { return _startCluster; }
    FSIZE_t GetFileSize() const { return _fileSize; }
};