#ifndef PARTITION_MAP_WRITER_H
#define PARTITION_MAP_WRITER_H
#include <SupportDefs.h>
class PartitionMap;
class LogicalPartition;
class PrimaryPartition;
struct partition_table;
bool check_logical_location(const LogicalPartition* logical,
const PrimaryPartition* primary);
class PartitionMapWriter {
public:
PartitionMapWriter(int deviceFD,
uint32 blockSize);
~PartitionMapWriter();
status_t WriteMBR(const PartitionMap* map,
bool writeBootCode);
status_t WriteLogical(const LogicalPartition* logical,
const PrimaryPartition* primary,
bool clearCode);
status_t WriteExtendedHead(
const LogicalPartition* logical,
const PrimaryPartition* primary,
bool clearCode);
status_t ClearExtendedHead(
const PrimaryPartition* primary);
private:
status_t _ReadBlock(off_t offset,
partition_table& partitionTable);
status_t _WriteBlock(off_t offset,
const partition_table& partitionTable);
private:
int fDeviceFD;
int32 fBlockSize;
};
#endif