diff options
Diffstat (limited to 'afdpageaddress.h')
-rw-r--r-- | afdpageaddress.h | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/afdpageaddress.h b/afdpageaddress.h new file mode 100644 index 0000000..911dd53 --- /dev/null +++ b/afdpageaddress.h @@ -0,0 +1,66 @@ +#ifndef AFDPAGEADDRESS_H +#define AFDPAGEADDRESS_H + +#include <QtCore/QString> + +class AfdPageAddress +{ +public: + AfdPageAddress(); + AfdPageAddress(uint section, uint segment, uint shelf, uint book, uint page); + AfdPageAddress(uint segment, uint shelf, uint book, uint page); + explicit AfdPageAddress(const QString &addr); + explicit AfdPageAddress(quint64 addr); + + uint section() const; + uint segment() const; + uint shelf() const; + uint book() const; + uint page() const; + + QString toString() const; + quint64 toUInt64() const; + +private: + quint64 v; +}; + +inline AfdPageAddress::AfdPageAddress() : v(0) +{ +} + +inline AfdPageAddress::AfdPageAddress(quint64 addr) : v(addr) +{ +} + +inline uint AfdPageAddress::section() const +{ + return (v >> 52) & 0xFFFU; +} + +inline uint AfdPageAddress::segment() const +{ + return (v >> 40) & 0xFFFU; +} + +inline uint AfdPageAddress::shelf() const +{ + return (v >> 24) & 0xFFFFU; +} + +inline uint AfdPageAddress::book() const +{ + return (v >> 12) & 0xFFFU; +} + +inline uint AfdPageAddress::page() const +{ + return (v >> 0) & 0xFFFU; +} + +inline quint64 AfdPageAddress::toUInt64() const +{ + return v; +} + +#endif // AFDPAGEADDRESS_H |