From b9338ac62b9a8a64568a62ad9ae4f2f7c3f732ca Mon Sep 17 00:00:00 2001 From: ossu Date: Mon, 29 Feb 2016 09:36:37 -0800 Subject: [PATCH] Added an operator[] to Buffer, to make reading data easier. Review URL: https://codereview.webrtc.org/1745033002 Cr-Commit-Position: refs/heads/master@{#11819} --- webrtc/base/buffer.h | 10 +++++++++ webrtc/base/buffer_unittest.cc | 39 ++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) diff --git a/webrtc/base/buffer.h b/webrtc/base/buffer.h index 0ef1e3b5c8..6fe9185446 100644 --- a/webrtc/base/buffer.h +++ b/webrtc/base/buffer.h @@ -124,6 +124,16 @@ class Buffer { bool operator!=(const Buffer& buf) const { return !(*this == buf); } + uint8_t& operator[](size_t index) { + RTC_DCHECK_LT(index, size_); + return data()[index]; + } + + uint8_t operator[](size_t index) const { + RTC_DCHECK_LT(index, size_); + return data()[index]; + } + // The SetData functions replace the contents of the buffer. They accept the // same input types as the constructors. template ::t = 0> diff --git a/webrtc/base/buffer_unittest.cc b/webrtc/base/buffer_unittest.cc index 6e9e7bf7ba..80d26927a2 100644 --- a/webrtc/base/buffer_unittest.cc +++ b/webrtc/base/buffer_unittest.cc @@ -279,4 +279,43 @@ TEST(BufferTest, TestMutableLambdaSetAppend) { } } +TEST(BufferTest, TestBracketRead) { + Buffer buf(kTestData, 7); + EXPECT_EQ(buf.size(), 7u); + EXPECT_EQ(buf.capacity(), 7u); + EXPECT_NE(buf.data(), nullptr); + + for (size_t i = 0; i != 7u; ++i) { + EXPECT_EQ(buf[i], kTestData[i]); + } +} + +TEST(BufferTest, TestBracketReadConst) { + Buffer buf(kTestData, 7); + EXPECT_EQ(buf.size(), 7u); + EXPECT_EQ(buf.capacity(), 7u); + EXPECT_NE(buf.data(), nullptr); + + const Buffer& cbuf = buf; + + for (size_t i = 0; i != 7u; ++i) { + EXPECT_EQ(cbuf[i], kTestData[i]); + } +} + +TEST(BufferTest, TestBracketWrite) { + Buffer buf(7); + EXPECT_EQ(buf.size(), 7u); + EXPECT_EQ(buf.capacity(), 7u); + EXPECT_NE(buf.data(), nullptr); + + for (size_t i = 0; i != 7u; ++i) { + buf[i] = kTestData[i]; + } + + for (size_t i = 0; i != 7u; ++i) { + EXPECT_EQ(buf[i], kTestData[i]); + } +} + } // namespace rtc