aboutsummaryrefslogtreecommitdiff
path: root/afdpageaddress.h
diff options
context:
space:
mode:
Diffstat (limited to 'afdpageaddress.h')
-rw-r--r--afdpageaddress.h66
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