Make sure ByteReader<T>::Read* is properly constified.
Also, start using it in real code...
BUG=
R=holmer@google.com, pbos@webrtc.org, stefan@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/37809004
Cr-Commit-Position: refs/heads/master@{#8181}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8181 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/webrtc/modules/rtp_rtcp/source/byte_io.h b/webrtc/modules/rtp_rtcp/source/byte_io.h
index 646f1eb..2617806 100644
--- a/webrtc/modules/rtp_rtcp/source/byte_io.h
+++ b/webrtc/modules/rtp_rtcp/source/byte_io.h
@@ -49,14 +49,14 @@
bool is_signed = std::numeric_limits<T>::is_signed>
class ByteReader {
public:
- static T ReadBigEndian(uint8_t* data) {
+ static T ReadBigEndian(const uint8_t* data) {
if (is_signed && B < sizeof(T)) {
return SignExtend(InternalReadBigEndian(data));
}
return InternalReadBigEndian(data);
}
- static T ReadLittleEndian(uint8_t* data) {
+ static T ReadLittleEndian(const uint8_t* data) {
if (is_signed && B < sizeof(T)) {
return SignExtend(InternalReadLittleEndian(data));
}
@@ -64,7 +64,7 @@
}
private:
- static T InternalReadBigEndian(uint8_t* data) {
+ static T InternalReadBigEndian(const uint8_t* data) {
T val(0);
for (unsigned int i = 0; i < B; ++i) {
val |= static_cast<T>(data[i]) << ((B - 1 - i) * 8);
@@ -72,7 +72,7 @@
return val;
}
- static T InternalReadLittleEndian(uint8_t* data) {
+ static T InternalReadLittleEndian(const uint8_t* data) {
T val(0);
for (unsigned int i = 0; i < B; ++i) {
val |= static_cast<T>(data[i]) << (i * 8);
@@ -85,7 +85,7 @@
// extend the remaining byte(s) with ones so that the correct negative
// number is retained.
// Ex: 0x810A0B -> 0xFF810A0B, but 0x710A0B -> 0x00710A0B
- static T SignExtend(T val) {
+ static T SignExtend(const T val) {
uint8_t msb = static_cast<uint8_t>(val >> ((B - 1) * 8));
if (msb & 0x80) {
// Sign extension is -1 (all ones) shifted left B bytes.
@@ -126,11 +126,11 @@
template<typename T, bool is_signed>
class ByteReader<T, 2, is_signed> {
public:
- static T ReadBigEndian(uint8_t* data) {
+ static T ReadBigEndian(const uint8_t* data) {
return (data[0] << 8) | data[1];
}
- static T ReadLittleEndian(uint8_t* data) {
+ static T ReadLittleEndian(const uint8_t* data) {
return data[0] | (data[1] << 8);
}
};
@@ -153,11 +153,11 @@
template<typename T, bool is_signed>
class ByteReader<T, 4, is_signed> {
public:
- static T ReadBigEndian(uint8_t* data) {
+ static T ReadBigEndian(const uint8_t* data) {
return (data[0] << 24) | (data[1] << 16) | (data[2] << 8) | data[3];
}
- static T ReadLittleEndian(uint8_t* data) {
+ static T ReadLittleEndian(const uint8_t* data) {
return data[0] | (data[1] << 8) | (data[2] << 16) | (data[3] << 24);
}
};
@@ -185,7 +185,7 @@
template<typename T, bool is_signed>
class ByteReader<T, 8, is_signed> {
public:
- static T ReadBigEndian(uint8_t* data) {
+ static T ReadBigEndian(const uint8_t* data) {
return
(Get(data, 0) << 56) | (Get(data, 1) << 48) |
(Get(data, 2) << 40) | (Get(data, 3) << 32) |
@@ -193,7 +193,7 @@
(Get(data, 6) << 8) | Get(data, 7);
}
- static T ReadLittleEndian(uint8_t* data) {
+ static T ReadLittleEndian(const uint8_t* data) {
return
Get(data, 0) | (Get(data, 1) << 8) |
(Get(data, 2) << 16) | (Get(data, 3) << 24) |
@@ -202,7 +202,7 @@
}
private:
- inline static T Get(uint8_t* data, unsigned int index) {
+ inline static T Get(const uint8_t* data, unsigned int index) {
return static_cast<T>(data[index]);
}
};