Decided that BPartition::ImmutableDelegate would basically be a big

collection of no-op methods, which could as well be implemented in
BPartition itself. This makes the Delegate hierarchy unnecessary:
MutableDelegate becomes Delegate, and we save a few casts as a side
effect.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22547 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Ingo Weinhold
2007-10-14 00:07:03 +00:00
parent 7a5b0bb588
commit 08baf63a9f
5 changed files with 96 additions and 238 deletions
+4 -4
View File
@@ -72,7 +72,7 @@ public:
private: private:
BMutablePartition( BMutablePartition(
BPartition::MutableDelegate* delegate); BPartition::Delegate* delegate);
~BMutablePartition(); ~BMutablePartition();
status_t Init(const user_partition_data* partitionData, status_t Init(const user_partition_data* partitionData,
@@ -81,11 +81,11 @@ private:
const user_partition_data* PartitionData() const; const user_partition_data* PartitionData() const;
private: private:
friend class BPartition::MutableDelegate; friend class BPartition::Delegate;
BPartition::MutableDelegate* GetDelegate() const; BPartition::Delegate* GetDelegate() const;
BPartition::MutableDelegate* fDelegate; BPartition::Delegate* fDelegate;
user_partition_data* fData; user_partition_data* fData;
BMutablePartition* fParent; BMutablePartition* fParent;
BList fChildren; BList fChildren;
-2
View File
@@ -142,8 +142,6 @@ public:
private: private:
class Delegate; class Delegate;
class ImmutableDelegate;
class MutableDelegate;
BPartition(); BPartition();
BPartition(const BPartition &); BPartition(const BPartition &);
+5 -5
View File
@@ -260,9 +260,9 @@ BMutablePartition::CreateChild(int32 index, BMutablePartition** _child)
if (!partition) if (!partition)
return B_NO_MEMORY; return B_NO_MEMORY;
// create the MutableDelegate // create the delegate
BPartition::MutableDelegate* delegate BPartition::Delegate* delegate
= new(nothrow) BPartition::MutableDelegate(partition); = new(nothrow) BPartition::Delegate(partition);
if (!delegate) { if (!delegate) {
delete partition; delete partition;
return B_NO_MEMORY; return B_NO_MEMORY;
@@ -386,7 +386,7 @@ BMutablePartition::SetChildCookie(void* cookie)
// constructor // constructor
BMutablePartition::BMutablePartition(BPartition::MutableDelegate* delegate) BMutablePartition::BMutablePartition(BPartition::Delegate* delegate)
: fDelegate(delegate), : fDelegate(delegate),
fData(NULL), fData(NULL),
fParent(NULL), fParent(NULL),
@@ -467,7 +467,7 @@ BMutablePartition::PartitionData() const
// GetDelegate // GetDelegate
BPartition::MutableDelegate* BPartition::Delegate*
BMutablePartition::GetDelegate() const BMutablePartition::GetDelegate() const
{ {
return fDelegate; return fDelegate;
+47 -95
View File
@@ -10,12 +10,12 @@
#include "DiskSystemAddOnManager.h" #include "DiskSystemAddOnManager.h"
// #pragma mark - Delegate
// constructor // constructor
BPartition::Delegate::Delegate(BPartition* partition) BPartition::Delegate::Delegate(BPartition* partition)
: fPartition(partition) : fPartition(partition),
fMutablePartition(this),
fDiskSystem(NULL),
fPartitionHandle(NULL)
{ {
} }
@@ -26,28 +26,9 @@ BPartition::Delegate::~Delegate()
} }
// #pragma mark - MutableDelegate
// constructor
BPartition::MutableDelegate::MutableDelegate(BPartition* partition)
: Delegate(partition),
fMutablePartition(this),
fDiskSystem(NULL),
fPartitionHandle(NULL)
{
}
// destructor
BPartition::MutableDelegate::~MutableDelegate()
{
}
// MutablePartition // MutablePartition
BMutablePartition* BMutablePartition*
BPartition::MutableDelegate::MutablePartition() BPartition::Delegate::MutablePartition()
{ {
return &fMutablePartition; return &fMutablePartition;
} }
@@ -55,7 +36,7 @@ BPartition::MutableDelegate::MutablePartition()
// MutablePartition // MutablePartition
const BMutablePartition* const BMutablePartition*
BPartition::MutableDelegate::MutablePartition() const BPartition::Delegate::MutablePartition() const
{ {
return &fMutablePartition; return &fMutablePartition;
} }
@@ -63,10 +44,9 @@ BPartition::MutableDelegate::MutablePartition() const
// InitHierarchy // InitHierarchy
status_t status_t
BPartition::MutableDelegate::InitHierarchy( BPartition::Delegate::InitHierarchy(
const user_partition_data* partitionData, Delegate* _parent) const user_partition_data* partitionData, Delegate* parent)
{ {
MutableDelegate* parent = dynamic_cast<MutableDelegate*>(_parent);
return fMutablePartition.Init(partitionData, return fMutablePartition.Init(partitionData,
parent ? &parent->fMutablePartition : NULL); parent ? &parent->fMutablePartition : NULL);
} }
@@ -74,7 +54,7 @@ BPartition::MutableDelegate::InitHierarchy(
// InitAfterHierarchy // InitAfterHierarchy
status_t status_t
BPartition::MutableDelegate::InitAfterHierarchy() BPartition::Delegate::InitAfterHierarchy()
{ {
if (!fMutablePartition.ContentType()) if (!fMutablePartition.ContentType())
return B_OK; return B_OK;
@@ -104,7 +84,7 @@ BPartition::MutableDelegate::InitAfterHierarchy()
// PartitionData // PartitionData
const user_partition_data* const user_partition_data*
BPartition::MutableDelegate::PartitionData() const BPartition::Delegate::PartitionData() const
{ {
return fMutablePartition.PartitionData(); return fMutablePartition.PartitionData();
} }
@@ -112,7 +92,7 @@ BPartition::MutableDelegate::PartitionData() const
// ChildAt // ChildAt
BPartition::Delegate* BPartition::Delegate*
BPartition::MutableDelegate::ChildAt(int32 index) const BPartition::Delegate::ChildAt(int32 index) const
{ {
BMutablePartition* child = fMutablePartition.ChildAt(index); BMutablePartition* child = fMutablePartition.ChildAt(index);
return child ? child->GetDelegate() : NULL; return child ? child->GetDelegate() : NULL;
@@ -121,7 +101,7 @@ BPartition::MutableDelegate::ChildAt(int32 index) const
// CountChildren // CountChildren
int32 int32
BPartition::MutableDelegate::CountChildren() const BPartition::Delegate::CountChildren() const
{ {
return fMutablePartition.CountChildren(); return fMutablePartition.CountChildren();
} }
@@ -129,7 +109,7 @@ BPartition::MutableDelegate::CountChildren() const
// SupportedOperations // SupportedOperations
uint32 uint32
BPartition::MutableDelegate::SupportedOperations(uint32 mask) BPartition::Delegate::SupportedOperations(uint32 mask)
{ {
if (!fPartitionHandle) if (!fPartitionHandle)
return 0; return 0;
@@ -140,20 +120,20 @@ BPartition::MutableDelegate::SupportedOperations(uint32 mask)
// SupportedChildOperations // SupportedChildOperations
uint32 uint32
BPartition::MutableDelegate::SupportedChildOperations(Delegate* child, BPartition::Delegate::SupportedChildOperations(Delegate* child,
uint32 mask) uint32 mask)
{ {
if (!fPartitionHandle) if (!fPartitionHandle)
return 0; return 0;
return fPartitionHandle->SupportedChildOperations( return fPartitionHandle->SupportedChildOperations(child->MutablePartition(),
((MutableDelegate*)child)->MutablePartition(), mask); mask);
} }
// Defragment // Defragment
status_t status_t
BPartition::MutableDelegate::Defragment() BPartition::Delegate::Defragment()
{ {
// TODO: Implement! // TODO: Implement!
return B_BAD_VALUE; return B_BAD_VALUE;
@@ -162,7 +142,7 @@ BPartition::MutableDelegate::Defragment()
// Repair // Repair
status_t status_t
BPartition::MutableDelegate::Repair(bool checkOnly) BPartition::Delegate::Repair(bool checkOnly)
{ {
// TODO: Implement! // TODO: Implement!
return B_BAD_VALUE; return B_BAD_VALUE;
@@ -171,7 +151,7 @@ BPartition::MutableDelegate::Repair(bool checkOnly)
// ValidateResize // ValidateResize
status_t status_t
BPartition::MutableDelegate::ValidateResize(off_t* size) const BPartition::Delegate::ValidateResize(off_t* size) const
{ {
if (!fPartitionHandle) if (!fPartitionHandle)
return B_NO_INIT; return B_NO_INIT;
@@ -182,11 +162,8 @@ BPartition::MutableDelegate::ValidateResize(off_t* size) const
// ValidateResizeChild // ValidateResizeChild
status_t status_t
BPartition::MutableDelegate::ValidateResizeChild(Delegate* _child, BPartition::Delegate::ValidateResizeChild(Delegate* child, off_t* size) const
off_t* size) const
{ {
MutableDelegate* child = dynamic_cast<MutableDelegate*>(_child);
if (!fPartitionHandle || !child) if (!fPartitionHandle || !child)
return B_NO_INIT; return B_NO_INIT;
@@ -197,7 +174,7 @@ BPartition::MutableDelegate::ValidateResizeChild(Delegate* _child,
// Resize // Resize
status_t status_t
BPartition::MutableDelegate::Resize(off_t size) BPartition::Delegate::Resize(off_t size)
{ {
if (!fPartitionHandle) if (!fPartitionHandle)
return B_NO_INIT; return B_NO_INIT;
@@ -208,10 +185,8 @@ BPartition::MutableDelegate::Resize(off_t size)
// ResizeChild // ResizeChild
status_t status_t
BPartition::MutableDelegate::ResizeChild(Delegate* _child, off_t size) BPartition::Delegate::ResizeChild(Delegate* child, off_t size)
{ {
MutableDelegate* child = dynamic_cast<MutableDelegate*>(_child);
if (!fPartitionHandle || !child) if (!fPartitionHandle || !child)
return B_NO_INIT; return B_NO_INIT;
@@ -221,7 +196,7 @@ BPartition::MutableDelegate::ResizeChild(Delegate* _child, off_t size)
// ValidateMove // ValidateMove
status_t status_t
BPartition::MutableDelegate::ValidateMove(off_t* offset) const BPartition::Delegate::ValidateMove(off_t* offset) const
{ {
if (!fPartitionHandle) if (!fPartitionHandle)
return B_NO_INIT; return B_NO_INIT;
@@ -232,11 +207,8 @@ BPartition::MutableDelegate::ValidateMove(off_t* offset) const
// ValidateMoveChild // ValidateMoveChild
status_t status_t
BPartition::MutableDelegate::ValidateMoveChild(Delegate* _child, BPartition::Delegate::ValidateMoveChild(Delegate* child, off_t* offset) const
off_t* offset) const
{ {
MutableDelegate* child = dynamic_cast<MutableDelegate*>(_child);
if (!fPartitionHandle || !child) if (!fPartitionHandle || !child)
return B_NO_INIT; return B_NO_INIT;
@@ -247,7 +219,7 @@ BPartition::MutableDelegate::ValidateMoveChild(Delegate* _child,
// Move // Move
status_t status_t
BPartition::MutableDelegate::Move(off_t offset) BPartition::Delegate::Move(off_t offset)
{ {
if (!fPartitionHandle) if (!fPartitionHandle)
return B_NO_INIT; return B_NO_INIT;
@@ -258,10 +230,8 @@ BPartition::MutableDelegate::Move(off_t offset)
// MoveChild // MoveChild
status_t status_t
BPartition::MutableDelegate::MoveChild(Delegate* _child, off_t offset) BPartition::Delegate::MoveChild(Delegate* child, off_t offset)
{ {
MutableDelegate* child = dynamic_cast<MutableDelegate*>(_child);
if (!fPartitionHandle || !child) if (!fPartitionHandle || !child)
return B_NO_INIT; return B_NO_INIT;
@@ -271,7 +241,7 @@ BPartition::MutableDelegate::MoveChild(Delegate* _child, off_t offset)
// ValidateSetContentName // ValidateSetContentName
status_t status_t
BPartition::MutableDelegate::ValidateSetContentName(BString* name) const BPartition::Delegate::ValidateSetContentName(BString* name) const
{ {
if (!fPartitionHandle) if (!fPartitionHandle)
return B_NO_INIT; return B_NO_INIT;
@@ -282,11 +252,8 @@ BPartition::MutableDelegate::ValidateSetContentName(BString* name) const
// ValidateSetName // ValidateSetName
status_t status_t
BPartition::MutableDelegate::ValidateSetName(Delegate* _child, BPartition::Delegate::ValidateSetName(Delegate* child, BString* name) const
BString* name) const
{ {
MutableDelegate* child = dynamic_cast<MutableDelegate*>(_child);
if (!fPartitionHandle || !child) if (!fPartitionHandle || !child)
return B_NO_INIT; return B_NO_INIT;
@@ -296,7 +263,7 @@ BPartition::MutableDelegate::ValidateSetName(Delegate* _child,
// SetContentName // SetContentName
status_t status_t
BPartition::MutableDelegate::SetContentName(const char* name) BPartition::Delegate::SetContentName(const char* name)
{ {
if (!fPartitionHandle) if (!fPartitionHandle)
return B_NO_INIT; return B_NO_INIT;
@@ -307,10 +274,8 @@ BPartition::MutableDelegate::SetContentName(const char* name)
// SetName // SetName
status_t status_t
BPartition::MutableDelegate::SetName(Delegate* _child, const char* name) BPartition::Delegate::SetName(Delegate* child, const char* name)
{ {
MutableDelegate* child = dynamic_cast<MutableDelegate*>(_child);
if (!fPartitionHandle || !child) if (!fPartitionHandle || !child)
return B_NO_INIT; return B_NO_INIT;
@@ -320,11 +285,8 @@ BPartition::MutableDelegate::SetName(Delegate* _child, const char* name)
// ValidateSetType // ValidateSetType
status_t status_t
BPartition::MutableDelegate::ValidateSetType(Delegate* _child, BPartition::Delegate::ValidateSetType(Delegate* child, const char* type) const
const char* type) const
{ {
MutableDelegate* child = dynamic_cast<MutableDelegate*>(_child);
if (!fPartitionHandle || !child) if (!fPartitionHandle || !child)
return B_NO_INIT; return B_NO_INIT;
@@ -334,10 +296,8 @@ BPartition::MutableDelegate::ValidateSetType(Delegate* _child,
// SetType // SetType
status_t status_t
BPartition::MutableDelegate::SetType(Delegate* _child, const char* type) BPartition::Delegate::SetType(Delegate* child, const char* type)
{ {
MutableDelegate* child = dynamic_cast<MutableDelegate*>(_child);
if (!fPartitionHandle || !child) if (!fPartitionHandle || !child)
return B_NO_INIT; return B_NO_INIT;
@@ -347,7 +307,7 @@ BPartition::MutableDelegate::SetType(Delegate* _child, const char* type)
// GetContentParameterEditor // GetContentParameterEditor
status_t status_t
BPartition::MutableDelegate::GetContentParameterEditor( BPartition::Delegate::GetContentParameterEditor(
BDiskDeviceParameterEditor** editor) const BDiskDeviceParameterEditor** editor) const
{ {
if (!fPartitionHandle) if (!fPartitionHandle)
@@ -359,11 +319,9 @@ BPartition::MutableDelegate::GetContentParameterEditor(
// GetParameterEditor // GetParameterEditor
status_t status_t
BPartition::MutableDelegate::GetParameterEditor(Delegate* _child, BPartition::Delegate::GetParameterEditor(Delegate* child,
BDiskDeviceParameterEditor** editor) const BDiskDeviceParameterEditor** editor) const
{ {
MutableDelegate* child = dynamic_cast<MutableDelegate*>(_child);
if (!fPartitionHandle || !child) if (!fPartitionHandle || !child)
return B_NO_INIT; return B_NO_INIT;
@@ -374,7 +332,7 @@ BPartition::MutableDelegate::GetParameterEditor(Delegate* _child,
// SetContentParameters // SetContentParameters
status_t status_t
BPartition::MutableDelegate::SetContentParameters(const char* parameters) BPartition::Delegate::SetContentParameters(const char* parameters)
{ {
if (!fPartitionHandle) if (!fPartitionHandle)
return B_NO_INIT; return B_NO_INIT;
@@ -385,11 +343,8 @@ BPartition::MutableDelegate::SetContentParameters(const char* parameters)
// SetParameters // SetParameters
status_t status_t
BPartition::MutableDelegate::SetParameters(Delegate* _child, BPartition::Delegate::SetParameters(Delegate* child, const char* parameters)
const char* parameters)
{ {
MutableDelegate* child = dynamic_cast<MutableDelegate*>(_child);
if (!fPartitionHandle || !child) if (!fPartitionHandle || !child)
return B_NO_INIT; return B_NO_INIT;
@@ -400,7 +355,7 @@ BPartition::MutableDelegate::SetParameters(Delegate* _child,
// CanInitialize // CanInitialize
bool bool
BPartition::MutableDelegate::CanInitialize(const char* diskSystem) const BPartition::Delegate::CanInitialize(const char* diskSystem) const
{ {
// get the disk system add-on // get the disk system add-on
DiskSystemAddOnManager* manager = DiskSystemAddOnManager::Default(); DiskSystemAddOnManager* manager = DiskSystemAddOnManager::Default();
@@ -419,7 +374,7 @@ BPartition::MutableDelegate::CanInitialize(const char* diskSystem) const
// GetInitializationParameterEditor // GetInitializationParameterEditor
status_t status_t
BPartition::MutableDelegate::GetInitializationParameterEditor( BPartition::Delegate::GetInitializationParameterEditor(
const char* diskSystem, BDiskDeviceParameterEditor** editor) const const char* diskSystem, BDiskDeviceParameterEditor** editor) const
{ {
// get the disk system add-on // get the disk system add-on
@@ -440,7 +395,7 @@ BPartition::MutableDelegate::GetInitializationParameterEditor(
// ValidateInitialize // ValidateInitialize
status_t status_t
BPartition::MutableDelegate::ValidateInitialize(const char* diskSystem, BPartition::Delegate::ValidateInitialize(const char* diskSystem,
BString* name, const char* parameters) BString* name, const char* parameters)
{ {
// get the disk system add-on // get the disk system add-on
@@ -461,7 +416,7 @@ BPartition::MutableDelegate::ValidateInitialize(const char* diskSystem,
// Initialize // Initialize
status_t status_t
BPartition::MutableDelegate::Initialize(const char* diskSystem, BPartition::Delegate::Initialize(const char* diskSystem,
const char* name, const char* parameters) const char* name, const char* parameters)
{ {
// get the disk system add-on // get the disk system add-on
@@ -491,7 +446,7 @@ BPartition::MutableDelegate::Initialize(const char* diskSystem,
// Uninitialize // Uninitialize
status_t status_t
BPartition::MutableDelegate::Uninitialize() BPartition::Delegate::Uninitialize()
{ {
if (fPartitionHandle) { if (fPartitionHandle) {
_FreeHandle(); _FreeHandle();
@@ -505,7 +460,7 @@ BPartition::MutableDelegate::Uninitialize()
// GetChildCreationParameterEditor // GetChildCreationParameterEditor
status_t status_t
BPartition::MutableDelegate::GetChildCreationParameterEditor(const char* type, BPartition::Delegate::GetChildCreationParameterEditor(const char* type,
BDiskDeviceParameterEditor** editor) const BDiskDeviceParameterEditor** editor) const
{ {
if (!fPartitionHandle) if (!fPartitionHandle)
@@ -517,7 +472,7 @@ BPartition::MutableDelegate::GetChildCreationParameterEditor(const char* type,
// ValidateCreateChild // ValidateCreateChild
status_t status_t
BPartition::MutableDelegate::ValidateCreateChild(off_t* start, off_t* size, BPartition::Delegate::ValidateCreateChild(off_t* start, off_t* size,
const char* type, BString* name, const char* parameters) const const char* type, BString* name, const char* parameters) const
{ {
if (!fPartitionHandle) if (!fPartitionHandle)
@@ -530,9 +485,8 @@ BPartition::MutableDelegate::ValidateCreateChild(off_t* start, off_t* size,
// CreateChild // CreateChild
status_t status_t
BPartition::MutableDelegate::CreateChild(off_t start, off_t size, BPartition::Delegate::CreateChild(off_t start, off_t size, const char* type,
const char* type, const char* name, const char* parameters, const char* name, const char* parameters, BPartition** child)
BPartition** child)
{ {
if (!fPartitionHandle) if (!fPartitionHandle)
return B_NO_INIT; return B_NO_INIT;
@@ -552,10 +506,8 @@ BPartition::MutableDelegate::CreateChild(off_t start, off_t size,
// DeleteChild // DeleteChild
status_t status_t
BPartition::MutableDelegate::DeleteChild(Delegate* _child) BPartition::Delegate::DeleteChild(Delegate* child)
{ {
MutableDelegate* child = dynamic_cast<MutableDelegate*>(_child);
if (!fPartitionHandle || !child) if (!fPartitionHandle || !child)
return B_NO_INIT; return B_NO_INIT;
@@ -565,7 +517,7 @@ BPartition::MutableDelegate::DeleteChild(Delegate* _child)
// _FreeHandle // _FreeHandle
void void
BPartition::MutableDelegate::_FreeHandle() BPartition::Delegate::_FreeHandle()
{ {
if (fPartitionHandle) { if (fPartitionHandle) {
delete fPartitionHandle; delete fPartitionHandle;
+40 -132
View File
@@ -16,184 +16,92 @@ class BPartitionHandle;
class BPartition::Delegate { class BPartition::Delegate {
public: public:
Delegate(BPartition* partition); Delegate(BPartition* partition);
virtual ~Delegate(); ~Delegate();
virtual status_t InitHierarchy(
const user_partition_data* partitionData,
Delegate* parent) = 0;
virtual status_t InitAfterHierarchy() = 0;
BPartition* Partition() const { return fPartition; } BPartition* Partition() const { return fPartition; }
virtual const user_partition_data* PartitionData() const = 0;
virtual Delegate* ChildAt(int32 index) const = 0;
virtual int32 CountChildren() const = 0;
virtual uint32 SupportedOperations(uint32 mask) = 0;
virtual uint32 SupportedChildOperations(Delegate* child,
uint32 mask) = 0;
// Self Modification
virtual status_t Defragment() = 0;
virtual status_t Repair(bool checkOnly) = 0;
virtual status_t ValidateResize(off_t* size) const = 0;
virtual status_t ValidateResizeChild(Delegate* child,
off_t* size) const = 0;
virtual status_t Resize(off_t size) = 0;
virtual status_t ResizeChild(Delegate* child, off_t size) = 0;
virtual status_t ValidateMove(off_t* offset) const = 0;
virtual status_t ValidateMoveChild(Delegate* child,
off_t* offset) const = 0;
virtual status_t Move(off_t offset) = 0;
virtual status_t MoveChild(Delegate* child, off_t offset) = 0;
virtual status_t ValidateSetContentName(BString* name) const = 0;
virtual status_t ValidateSetName(Delegate* child,
BString* name) const = 0;
virtual status_t SetContentName(const char* name) = 0;
virtual status_t SetName(Delegate* child, const char* name) = 0;
virtual status_t ValidateSetType(Delegate* child,
const char* type) const = 0;
virtual status_t SetType(Delegate* child, const char* type) = 0;
virtual status_t GetContentParameterEditor(
BDiskDeviceParameterEditor** editor)
const = 0;
virtual status_t GetParameterEditor(Delegate* child,
BDiskDeviceParameterEditor** editor)
const = 0;
virtual status_t SetContentParameters(
const char* parameters) = 0;
virtual status_t SetParameters(Delegate* child,
const char* parameters) = 0;
virtual bool CanInitialize(const char* diskSystem) const = 0;
virtual status_t GetInitializationParameterEditor(
const char* system,
BDiskDeviceParameterEditor** editor)
const = 0;
virtual status_t ValidateInitialize(const char* diskSystem,
BString* name, const char* parameters) = 0;
virtual status_t Initialize(const char* diskSystem,
const char* name,
const char* parameters) = 0;
virtual status_t Uninitialize() = 0;
// Modification of child partitions
virtual status_t GetChildCreationParameterEditor(
const char* system,
BDiskDeviceParameterEditor** editor)
const = 0;
virtual status_t ValidateCreateChild(off_t* start, off_t* size,
const char* type, BString* name,
const char* parameters) const = 0;
virtual status_t CreateChild(off_t start, off_t size,
const char* type, const char* name,
const char* parameters,
BPartition** child) = 0;
virtual status_t DeleteChild(Delegate* child) = 0;
protected:
BPartition* fPartition;
};
class BPartition::MutableDelegate : public BPartition::Delegate {
public:
MutableDelegate(BPartition* partition);
virtual ~MutableDelegate();
BMutablePartition* MutablePartition(); BMutablePartition* MutablePartition();
const BMutablePartition* MutablePartition() const; const BMutablePartition* MutablePartition() const;
virtual status_t InitHierarchy( status_t InitHierarchy(
const user_partition_data* partitionData, const user_partition_data* partitionData,
Delegate* parent); Delegate* parent);
virtual status_t InitAfterHierarchy(); status_t InitAfterHierarchy();
virtual const user_partition_data* PartitionData() const; const user_partition_data* PartitionData() const;
virtual Delegate* ChildAt(int32 index) const; Delegate* ChildAt(int32 index) const;
virtual int32 CountChildren() const; int32 CountChildren() const;
virtual uint32 SupportedOperations(uint32 mask); uint32 SupportedOperations(uint32 mask);
virtual uint32 SupportedChildOperations(Delegate* child, uint32 SupportedChildOperations(Delegate* child,
uint32 mask); uint32 mask);
// Self Modification // Self Modification
virtual status_t Defragment(); status_t Defragment();
virtual status_t Repair(bool checkOnly); status_t Repair(bool checkOnly);
virtual status_t ValidateResize(off_t* size) const; status_t ValidateResize(off_t* size) const;
virtual status_t ValidateResizeChild(Delegate* child, status_t ValidateResizeChild(Delegate* child,
off_t* size) const; off_t* size) const;
virtual status_t Resize(off_t size); status_t Resize(off_t size);
virtual status_t ResizeChild(Delegate* child, off_t size); status_t ResizeChild(Delegate* child, off_t size);
virtual status_t ValidateMove(off_t* offset) const; status_t ValidateMove(off_t* offset) const;
virtual status_t ValidateMoveChild(Delegate* child, status_t ValidateMoveChild(Delegate* child,
off_t* offset) const; off_t* offset) const;
virtual status_t Move(off_t offset); status_t Move(off_t offset);
virtual status_t MoveChild(Delegate* child, off_t offset); status_t MoveChild(Delegate* child, off_t offset);
virtual status_t ValidateSetContentName(BString* name) const; status_t ValidateSetContentName(BString* name) const;
virtual status_t ValidateSetName(Delegate* child, status_t ValidateSetName(Delegate* child,
BString* name) const; BString* name) const;
virtual status_t SetContentName(const char* name); status_t SetContentName(const char* name);
virtual status_t SetName(Delegate* child, const char* name); status_t SetName(Delegate* child, const char* name);
virtual status_t ValidateSetType(Delegate* child, status_t ValidateSetType(Delegate* child,
const char* type) const; const char* type) const;
virtual status_t SetType(Delegate* child, const char* type); status_t SetType(Delegate* child, const char* type);
virtual status_t GetContentParameterEditor( status_t GetContentParameterEditor(
BDiskDeviceParameterEditor** editor) const; BDiskDeviceParameterEditor** editor) const;
virtual status_t GetParameterEditor(Delegate* child, status_t GetParameterEditor(Delegate* child,
BDiskDeviceParameterEditor** editor) const; BDiskDeviceParameterEditor** editor) const;
virtual status_t SetContentParameters(const char* parameters); status_t SetContentParameters(const char* parameters);
virtual status_t SetParameters(Delegate* child, status_t SetParameters(Delegate* child,
const char* parameters); const char* parameters);
virtual bool CanInitialize(const char* diskSystem) const; bool CanInitialize(const char* diskSystem) const;
virtual status_t GetInitializationParameterEditor( status_t GetInitializationParameterEditor(
const char* system, const char* system,
BDiskDeviceParameterEditor** editor) const; BDiskDeviceParameterEditor** editor) const;
virtual status_t ValidateInitialize(const char* diskSystem, status_t ValidateInitialize(const char* diskSystem,
BString* name, const char* parameters); BString* name, const char* parameters);
virtual status_t Initialize(const char* diskSystem, status_t Initialize(const char* diskSystem,
const char* name, const char* name,
const char* parameters); const char* parameters);
virtual status_t Uninitialize(); status_t Uninitialize();
// Modification of child partitions // Modification of child partitions
virtual status_t GetChildCreationParameterEditor( status_t GetChildCreationParameterEditor(
const char* system, const char* system,
BDiskDeviceParameterEditor** editor) const; BDiskDeviceParameterEditor** editor) const;
virtual status_t ValidateCreateChild(off_t* start, off_t* size, status_t ValidateCreateChild(off_t* start, off_t* size,
const char* type, BString* name, const char* type, BString* name,
const char* parameters) const; const char* parameters) const;
virtual status_t CreateChild(off_t start, off_t size, status_t CreateChild(off_t start, off_t size,
const char* type, const char* name, const char* type, const char* name,
const char* parameters, BPartition** child); const char* parameters, BPartition** child);
virtual status_t DeleteChild(Delegate* child); status_t DeleteChild(Delegate* child);
private: private:
void _FreeHandle(); void _FreeHandle();
private: private:
// friend class BMutablePartition; BPartition* fPartition;
BMutablePartition fMutablePartition; BMutablePartition fMutablePartition;
BDiskSystemAddOn* fDiskSystem; BDiskSystemAddOn* fDiskSystem;
BPartitionHandle* fPartitionHandle; BPartitionHandle* fPartitionHandle;