//---------------------------------------------------------------------- // This software is part of the Haiku distribution and is covered // by the MIT License. //--------------------------------------------------------------------- #ifndef _PARTITIONING_INFO_H #define _PARTITIONING_INFO_H #include struct partitionable_space_data; class BPartitioningInfo { public: BPartitioningInfo(); virtual ~BPartitioningInfo(); status_t SetTo(off_t offset, off_t size); void Unset(); status_t ExcludeOccupiedSpace(off_t offset, off_t size); // TODO: We don't need the partition ID. partition_id PartitionID() const; status_t GetPartitionableSpaceAt(int32 index, off_t* offset, off_t*size) const; int32 CountPartitionableSpaces() const; void PrintToStream() const; private: status_t _InsertSpaces(int32 index, int32 count); void _RemoveSpaces(int32 index, int32 count); friend class BPartition; partition_id fPartitionID; partitionable_space_data* fSpaces; int32 fCount; int32 fCapacity; }; #endif // _PARTITIONING_INFO_H