Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mumble-voip/mumble.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThorvald Natvig <slicer@users.sourceforge.net>2007-07-21 14:32:08 +0400
committerThorvald Natvig <slicer@users.sourceforge.net>2007-07-21 14:32:08 +0400
commitb4817ee463741571b92d3b065147b2b9ff6dd13c (patch)
tree7d49459d1244f23c3c3c7dfd116dd162e44430ae /src/PacketDataStream.h
parent47fdafe7d500a3e45f757657c799db290c2fada0 (diff)
obsessive PacketDataStream optimization
git-svn-id: https://mumble.svn.sourceforge.net/svnroot/mumble/trunk@652 05730e5d-ab1b-0410-a4ac-84af385074fa
Diffstat (limited to 'src/PacketDataStream.h')
-rw-r--r--src/PacketDataStream.h27
1 files changed, 13 insertions, 14 deletions
diff --git a/src/PacketDataStream.h b/src/PacketDataStream.h
index 981494aad..8fb6c1c4e 100644
--- a/src/PacketDataStream.h
+++ b/src/PacketDataStream.h
@@ -36,12 +36,11 @@
*/
class PacketDataStream {
- protected:
+ private:
unsigned char *data;
quint32 maxsize;
quint32 offset;
bool ok;
-
public:
quint32 size() const {
return offset;
@@ -190,36 +189,36 @@ class PacketDataStream {
PacketDataStream &operator >>(quint64 &i) {
quint32 v = next();
- if ((v & 0xF0) == 0xF0) {
+
+ if ((v & 0x80) == 0x00) {
+ i=(v & 0x7F);
+ } else if ((v & 0xC0) == 0x80) {
+ i=(v & 0x3F) << 8 | next();
+ } else if ((v & 0xF0) == 0xF0) {
switch (v & 0xFC) {
case 0xF0:
i=next() << 24 | next() << 16 | next() << 8 | next();
- return *this;
+ break;
case 0xF4:
i=next() << 56 | next() << 48 | next() << 40 | next() << 32 | next() << 24 | next() << 16 | next() << 8 | next();
- return *this;
+ break;
case 0xF8:
*this >> i;
i = ~i;
- return *this;
+ break;
case 0xFC:
i=v & 0x03;
i = ~i;
- return *this;
+ break;
default:
ok = false;
i = 0;
- return *this;
+ break;
}
- }
- if ((v & 0xF0) == 0xE0) {
+ } else if ((v & 0xF0) == 0xE0) {
i=(v & 0x0F) << 24 | next() << 16 | next() << 8 | next();
} else if ((v & 0xE0) == 0xC0) {
i=(v & 0x1F) << 16 | next() << 8 | next();
- } else if ((v & 0xC0) == 0x80) {
- i=(v & 0x3F) << 8 | next();
- } else {
- i=(v & 0x7F);
}
return *this;
}