* Copyright 2007, Ingo Weinhold, bonefish@users.sf.net.
* Distributed under the terms of the MIT License.
*/
#ifndef _PARTITION_MAP_ADD_ON_H
#define _PARTITION_MAP_ADD_ON_H
#include <DiskSystemAddOn.h>
#include "PartitionMap.h"
class PartitionMapAddOn : public BDiskSystemAddOn {
public:
PartitionMapAddOn();
virtual ~PartitionMapAddOn();
virtual status_t CreatePartitionHandle(
BMutablePartition* partition,
BPartitionHandle** handle);
virtual bool CanInitialize(
const BMutablePartition* partition);
virtual status_t ValidateInitialize(
const BMutablePartition* partition,
BString* name, const char* parameters);
virtual status_t Initialize(BMutablePartition* partition,
const char* name, const char* parameters,
BPartitionHandle** handle);
};
class PartitionMapHandle : public BPartitionHandle {
public:
PartitionMapHandle(
BMutablePartition* partition);
virtual ~PartitionMapHandle();
status_t Init();
virtual uint32 SupportedOperations(uint32 mask);
virtual uint32 SupportedChildOperations(
const BMutablePartition* child,
uint32 mask);
virtual status_t GetNextSupportedType(
const BMutablePartition* child,
int32* cookie, BString* type);
virtual status_t GetPartitioningInfo(BPartitioningInfo* info);
virtual status_t ValidateSetParameters(
const BMutablePartition* child,
const char* parameters);
virtual status_t SetParameters(
BMutablePartition* child,
const char* parameters);
virtual status_t GetParameterEditor(
B_PARAMETER_EDITOR_TYPE type,
BPartitionParameterEditor** editor);
virtual status_t ValidateCreateChild(off_t* offset,
off_t* size, const char* type,
BString* name, const char* parameters);
virtual status_t CreateChild(off_t offset, off_t size,
const char* type, const char* name,
const char* parameters,
BMutablePartition** child);
virtual status_t DeleteChild(BMutablePartition* child);
private:
PartitionMap fPartitionMap;
};
#endif