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

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 */