1
0
Files
irix-657m-src/eoe/cmd/mediad/VolumeAddress.H
2022-09-29 17:59:04 +03:00

48 lines
1.1 KiB
C++

#ifndef VolumeAddress_included
#define VolumeAddress_included
#include "bool.H"
#include "FormatIndex.H"
class PartitionAddress;
// VolumeAddress is an abstract base class and an envelope class.
class VolumeAddress {
enum { WholeDisk = -1, UnknownPartition = -2 };
public:
VolumeAddress() : _refcount(0), _rep(0) { }
VolumeAddress(const char *path,
FormatIndex fmt = FMT_UNKNOWN,
int partno = UnknownPartition);
VolumeAddress(const VolumeAddress&);
VolumeAddress& operator = (const VolumeAddress&);
virtual ~VolumeAddress();
bool valid() const { return _rep != 0; }
virtual const PartitionAddress *as_PartitionAddress() const;
virtual PartitionAddress *as_PartitionAddress();
virtual bool operator == (const VolumeAddress&) const;
virtual bool overlaps(const VolumeAddress&) const;
virtual const PartitionAddress *partition(unsigned index) const;
protected:
struct RepDummy { RepDummy() { } };
VolumeAddress(const RepDummy&) : _refcount(1), _rep(0) { }
virtual VolumeAddress *clone() const;
private:
int _refcount;
VolumeAddress *_rep;
};
#endif /* !VolumeAddress_included */