| Index: webrtc/base/copyonwritebuffer.h
|
| diff --git a/webrtc/base/copyonwritebuffer.h b/webrtc/base/copyonwritebuffer.h
|
| index 87f24bf51d6db78aecc44442c810d0d0887d8dec..a7e52beea53c3ce442ac3b97a1db013590e08861 100644
|
| --- a/webrtc/base/copyonwritebuffer.h
|
| +++ b/webrtc/base/copyonwritebuffer.h
|
| @@ -36,10 +36,14 @@ class CopyOnWriteBuffer {
|
|
|
| // Construct a buffer and copy the specified number of bytes into it. The
|
| // source array may be (const) uint8_t*, int8_t*, or char*.
|
| - template <typename T, typename internal::ByteType<T>::t = 0>
|
| + template <typename T,
|
| + typename std::enable_if<
|
| + internal::BufferCompat<uint8_t, T>::value>::type* = nullptr>
|
| CopyOnWriteBuffer(const T* data, size_t size)
|
| : CopyOnWriteBuffer(data, size, size) {}
|
| - template <typename T, typename internal::ByteType<T>::t = 0>
|
| + template <typename T,
|
| + typename std::enable_if<
|
| + internal::BufferCompat<uint8_t, T>::value>::type* = nullptr>
|
| CopyOnWriteBuffer(const T* data, size_t size, size_t capacity)
|
| : CopyOnWriteBuffer(size, capacity) {
|
| if (buffer_) {
|
| @@ -48,22 +52,29 @@ class CopyOnWriteBuffer {
|
| }
|
|
|
| // Construct a buffer from the contents of an array.
|
| - template <typename T, size_t N, typename internal::ByteType<T>::t = 0>
|
| - CopyOnWriteBuffer(const T(&array)[N]) // NOLINT: runtime/explicit
|
| + template <typename T,
|
| + size_t N,
|
| + typename std::enable_if<
|
| + internal::BufferCompat<uint8_t, T>::value>::type* = nullptr>
|
| + CopyOnWriteBuffer(const T (&array)[N]) // NOLINT: runtime/explicit
|
| : CopyOnWriteBuffer(array, N) {}
|
|
|
| ~CopyOnWriteBuffer();
|
|
|
| // Get a pointer to the data. Just .data() will give you a (const) uint8_t*,
|
| // but you may also use .data<int8_t>() and .data<char>().
|
| - template <typename T = uint8_t, typename internal::ByteType<T>::t = 0>
|
| + template <typename T = uint8_t,
|
| + typename std::enable_if<
|
| + internal::BufferCompat<uint8_t, T>::value>::type* = nullptr>
|
| const T* data() const {
|
| return cdata<T>();
|
| }
|
|
|
| // Get writable pointer to the data. This will create a copy of the underlying
|
| // data if it is shared with other buffers.
|
| - template <typename T = uint8_t, typename internal::ByteType<T>::t = 0>
|
| + template <typename T = uint8_t,
|
| + typename std::enable_if<
|
| + internal::BufferCompat<uint8_t, T>::value>::type* = nullptr>
|
| T* data() {
|
| RTC_DCHECK(IsConsistent());
|
| if (!buffer_) {
|
| @@ -75,7 +86,9 @@ class CopyOnWriteBuffer {
|
|
|
| // Get const pointer to the data. This will not create a copy of the
|
| // underlying data if it is shared with other buffers.
|
| - template <typename T = uint8_t, typename internal::ByteType<T>::t = 0>
|
| + template <typename T = uint8_t,
|
| + typename std::enable_if<
|
| + internal::BufferCompat<uint8_t, T>::value>::type* = nullptr>
|
| T* cdata() const {
|
| RTC_DCHECK(IsConsistent());
|
| if (!buffer_) {
|
| @@ -137,7 +150,9 @@ class CopyOnWriteBuffer {
|
|
|
| // Replace the contents of the buffer. Accepts the same types as the
|
| // constructors.
|
| - template <typename T, typename internal::ByteType<T>::t = 0>
|
| + template <typename T,
|
| + typename std::enable_if<
|
| + internal::BufferCompat<uint8_t, T>::value>::type* = nullptr>
|
| void SetData(const T* data, size_t size) {
|
| RTC_DCHECK(IsConsistent());
|
| if (!buffer_ || !buffer_->HasOneRef()) {
|
| @@ -149,8 +164,11 @@ class CopyOnWriteBuffer {
|
| RTC_DCHECK(IsConsistent());
|
| }
|
|
|
| - template <typename T, size_t N, typename internal::ByteType<T>::t = 0>
|
| - void SetData(const T(&array)[N]) {
|
| + template <typename T,
|
| + size_t N,
|
| + typename std::enable_if<
|
| + internal::BufferCompat<uint8_t, T>::value>::type* = nullptr>
|
| + void SetData(const T (&array)[N]) {
|
| SetData(array, N);
|
| }
|
|
|
| @@ -163,7 +181,9 @@ class CopyOnWriteBuffer {
|
| }
|
|
|
| // Append data to the buffer. Accepts the same types as the constructors.
|
| - template <typename T, typename internal::ByteType<T>::t = 0>
|
| + template <typename T,
|
| + typename std::enable_if<
|
| + internal::BufferCompat<uint8_t, T>::value>::type* = nullptr>
|
| void AppendData(const T* data, size_t size) {
|
| RTC_DCHECK(IsConsistent());
|
| if (!buffer_) {
|
| @@ -178,8 +198,11 @@ class CopyOnWriteBuffer {
|
| RTC_DCHECK(IsConsistent());
|
| }
|
|
|
| - template <typename T, size_t N, typename internal::ByteType<T>::t = 0>
|
| - void AppendData(const T(&array)[N]) {
|
| + template <typename T,
|
| + size_t N,
|
| + typename std::enable_if<
|
| + internal::BufferCompat<uint8_t, T>::value>::type* = nullptr>
|
| + void AppendData(const T (&array)[N]) {
|
| AppendData(array, N);
|
| }
|
|
|
|
|