summaryrefslogtreecommitdiffstats
path: root/kdvi/bigEndianByteReader.h
diff options
context:
space:
mode:
authortoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
committertoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
commit47d455dd55be855e4cc691c32f687f723d9247ee (patch)
tree52e236aaa2576bdb3840ebede26619692fed6d7d /kdvi/bigEndianByteReader.h
downloadtdegraphics-47d455dd55be855e4cc691c32f687f723d9247ee.tar.gz
tdegraphics-47d455dd55be855e4cc691c32f687f723d9247ee.zip
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdegraphics@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kdvi/bigEndianByteReader.h')
-rw-r--r--kdvi/bigEndianByteReader.h62
1 files changed, 62 insertions, 0 deletions
diff --git a/kdvi/bigEndianByteReader.h b/kdvi/bigEndianByteReader.h
new file mode 100644
index 00000000..674ca1c1
--- /dev/null
+++ b/kdvi/bigEndianByteReader.h
@@ -0,0 +1,62 @@
+// -*- C++ -*-
+/* This file is part of KDVI (C) 2001 by Stefan Kebekus (kebekus@kde.org)
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License
+ as published by the Free Software Foundation; either version 2 of
+ the License, or (at your option) any later version.
+*/
+
+/**
+ * Byte reading routines which read big endian numbers from memory and
+ * convert them to native integers.
+ *
+ * @author Stefan Kebekus (kebekus@kde.org)
+ *
+ **/
+
+#ifndef _bigEndianByteReader_H
+#define _bigEndianByteReader_H
+
+#include <qglobal.h>
+
+class bigEndianByteReader {
+ public:
+ /** Set this pointer to the location where the number resides which
+ you want to read. */
+ Q_UINT8 * command_pointer;
+
+ /** This pointer marks the end of the memory area where bytes can be
+ read. It should point to the first byte which CANNOT be
+ read. The idea is to have a safety net which protects us against
+ SEGFAULTs. This is also used in virtual fonts, where the macro
+ does not have an EOP command at the end of the macro. */
+ Q_UINT8 * end_pointer;
+
+ /** If command_pointer >= end_pointer, this method return EOP (=140)
+ and exists. Otherwise, the method returns the unsigned byte
+ and increases the command_pointer by one. */
+ Q_UINT8 readUINT8();
+
+ /** Similar to the method above, only that the method reads a big
+ endian 2-byte word and increases the pointer by two. */
+ Q_UINT16 readUINT16();
+
+ /** Similar to the method above, only that the method reads a big
+ endian 4-byte word and increases the pointer by four. */
+ Q_UINT32 readUINT32();
+
+ void writeUINT32(Q_UINT32 a);
+
+ /** Similar to the method above, only that the method reads a big
+ endian number of length size, where 1 <= size <= 4. Note that
+ the value 3 is allowed (and is acually used in DVI files)!!! */
+ Q_UINT32 readUINT(Q_UINT8 size);
+
+ /** Similar to the method above, only that the method reads a SIGNED
+ number */
+ Q_INT32 readINT(Q_UINT8);
+
+};
+
+#endif //ifndef _bigEndianByteReader_H