1e7b4ff9317fc4e551cf974684eaa88697de5a28srs/* mbr.h -- MBR data structure definitions, types, and functions */
2e7b4ff9317fc4e551cf974684eaa88697de5a28srs
3e3ee733ff8690af7568dac665bc20ecf869dea1dRoderick W. Smith/* This program is copyright (c) 2009-2013 by Roderick W. Smith. It is distributed
4221e08768de7fe42ba533ca22baf671420569c07srs  under the terms of the GNU GPL version 2, as detailed in the COPYING file. */
5221e08768de7fe42ba533ca22baf671420569c07srs
6e7b4ff9317fc4e551cf974684eaa88697de5a28srs#include <stdint.h>
7e7b4ff9317fc4e551cf974684eaa88697de5a28srs#include <sys/types.h>
8221e08768de7fe42ba533ca22baf671420569c07srs#include "gptpart.h"
964cbd171067eb34054741bfcd73f0b91d727a371srs//#include "partnotes.h"
10546a9c7c369df465021feecb20f6a8f81b6df6bcsrs#include "diskio.h"
1164cbd171067eb34054741bfcd73f0b91d727a371srs#include "basicmbr.h"
12e7b4ff9317fc4e551cf974684eaa88697de5a28srs
13e7b4ff9317fc4e551cf974684eaa88697de5a28srs#ifndef __MBRSTRUCTS
14e7b4ff9317fc4e551cf974684eaa88697de5a28srs#define __MBRSTRUCTS
15e7b4ff9317fc4e551cf974684eaa88697de5a28srs
16e7b4ff9317fc4e551cf974684eaa88697de5a28srsusing namespace std;
17e7b4ff9317fc4e551cf974684eaa88697de5a28srs
18e7b4ff9317fc4e551cf974684eaa88697de5a28srs/****************************************
19e7b4ff9317fc4e551cf974684eaa88697de5a28srs *                                      *
20e7b4ff9317fc4e551cf974684eaa88697de5a28srs * MBRData class and related structures *
21e7b4ff9317fc4e551cf974684eaa88697de5a28srs *                                      *
22e7b4ff9317fc4e551cf974684eaa88697de5a28srs ****************************************/
23e7b4ff9317fc4e551cf974684eaa88697de5a28srs
24e7b4ff9317fc4e551cf974684eaa88697de5a28srs// Full data in tweaked MBR format
2564cbd171067eb34054741bfcd73f0b91d727a371srsclass MBRData : public BasicMBRData {
26e7b4ff9317fc4e551cf974684eaa88697de5a28srsprotected:
27e7b4ff9317fc4e551cf974684eaa88697de5a28srspublic:
2864cbd171067eb34054741bfcd73f0b91d727a371srs   MBRData(void) {}
2964cbd171067eb34054741bfcd73f0b91d727a371srs   MBRData(string deviceFilename) : BasicMBRData(deviceFilename) {}
30bf8950cad0285ee6ab8a896e8d0a30c5fb62c7afsrs   MBRData & operator=(const BasicMBRData & orig);
31978041ca613dcb881763b36cf53639d924e52a56srs
32978041ca613dcb881763b36cf53639d924e52a56srs   // Functions to create, delete, or change partitions
33978041ca613dcb881763b36cf53639d924e52a56srs   // Pass EmptyMBR 1 to clear the boot loader code, 0 to leave it intact
34978041ca613dcb881763b36cf53639d924e52a56srs   void MakeProtectiveMBR(int clearBoot = 0);
35e4ac11ebee0ad586a538f49b9c0e32ad19cae665srs   void OptimizeEESize(void);
3664cbd171067eb34054741bfcd73f0b91d727a371srs   int DeleteByLocation(uint64_t start64, uint64_t length64);
37e7b4ff9317fc4e551cf974684eaa88697de5a28srs
38e7b4ff9317fc4e551cf974684eaa88697de5a28srs   // Functions to extract data on specific partitions....
39221e08768de7fe42ba533ca22baf671420569c07srs   GPTPart AsGPT(int i);
40e7b4ff9317fc4e551cf974684eaa88697de5a28srs}; // struct MBRData
41e7b4ff9317fc4e551cf974684eaa88697de5a28srs
42e7b4ff9317fc4e551cf974684eaa88697de5a28srs#endif
43