53 lines
1.3 KiB
C++
53 lines
1.3 KiB
C++
#ifndef DeviceAddress_included
|
|
#define DeviceAddress_included
|
|
|
|
#include "bool.H"
|
|
|
|
class inventory_s;
|
|
class ParallelAddress;
|
|
class SCSIAddress;
|
|
|
|
// Abstract base class and envelope class for device addresses.
|
|
// Every device has a unique address. Most devices have a SCSI
|
|
// address, but there are some non-SCSI devices (e.g. Moosehead
|
|
// floppy).
|
|
|
|
class DeviceAddress {
|
|
|
|
public:
|
|
|
|
class Parallel { };
|
|
|
|
DeviceAddress(const inventory_s&);
|
|
DeviceAddress(int ctlr, int id, int lun = 0);
|
|
DeviceAddress(const Parallel&);
|
|
|
|
DeviceAddress() : _refcount(0), _rep(0) { }
|
|
DeviceAddress(const DeviceAddress&);
|
|
DeviceAddress& operator = (const DeviceAddress&);
|
|
virtual ~DeviceAddress();
|
|
|
|
virtual bool operator == (const DeviceAddress&) const;
|
|
virtual const SCSIAddress *as_SCSIAddress() const;
|
|
virtual SCSIAddress *as_SCSIAddress();
|
|
virtual const ParallelAddress *as_ParallelAddress() const;
|
|
virtual ParallelAddress *as_ParallelAddress();
|
|
virtual void name(char *, unsigned int) const;
|
|
|
|
bool valid() const { return _rep != 0; }
|
|
|
|
protected:
|
|
|
|
struct RepDummy { RepDummy() { } };
|
|
|
|
DeviceAddress(const RepDummy&) : _refcount(1), _rep(0) { }
|
|
virtual DeviceAddress *clone() const;
|
|
|
|
private:
|
|
|
|
int _refcount;
|
|
DeviceAddress *_rep;
|
|
};
|
|
|
|
#endif /* !DeviceAddress */
|