Files
core/Common/cppcf/sector.h
2022-06-14 19:41:12 +03:00

60 lines
1.0 KiB
C++

#pragma once
#include "Stream.h"
#include <memory>
#include "../../DesktopEditor/common/Types.h"
#include <vector>
#include <mutex>
namespace CFCPP
{
enum SectorType
{
Normal,
Mini,
FAT,
DIFAT,
RangeLockSector,
Directory
};
class Sector
{
public:
Sector(int size, const Stream &stream);
Sector(int size, const std::vector<BYTE> &data);
Sector(int size);
bool IsStreamed();
void ZeroData();
void InitFATData();
void ReleaseData();
virtual void Dispose(bool disposing=false);
std::vector<BYTE> &GetData();
inline int Id()const {return id;}
public:
static int MINISECTOR_SIZE;
const static int FREESECT = 0xFFFFFFFF;
const static int ENDOFCHAIN = 0xFFFFFFFE;
const static int FATSECT = 0xFFFFFFFD;
const static int DIFSECT = 0xFFFFFFFC;
int getSize() const;
SectorType type;
bool dirtyFlag = false;
private:
int size = 0;
Stream stream;
int id = -1;
std::vector<BYTE> data;
std::mutex lockObject;
bool _disposed;//false
};
}