Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(269)

Unified Diff: webrtc/base/copyonwritebuffer.h

Issue 2338843002: Move CopyOnWriteBuffer functions definitions from .h to .cc (Closed)
Patch Set: Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | webrtc/base/copyonwritebuffer.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/base/copyonwritebuffer.h
diff --git a/webrtc/base/copyonwritebuffer.h b/webrtc/base/copyonwritebuffer.h
index 70833d6c62b7a50d778e64ca6f62eb43a2389905..fe3f5619d131fb428d3f71c78122a284baa1d8e6 100644
--- a/webrtc/base/copyonwritebuffer.h
+++ b/webrtc/base/copyonwritebuffer.h
@@ -123,14 +123,7 @@ class CopyOnWriteBuffer {
return *this;
}
- bool operator==(const CopyOnWriteBuffer& buf) const {
- // Must either use the same buffer internally or have the same contents.
- RTC_DCHECK(IsConsistent());
- RTC_DCHECK(buf.IsConsistent());
- return buffer_.get() == buf.buffer_.get() ||
- (buffer_.get() && buf.buffer_.get() &&
- *buffer_.get() == *buf.buffer_.get());
- }
+ bool operator==(const CopyOnWriteBuffer& buf) const;
bool operator!=(const CopyOnWriteBuffer& buf) const {
return !(*this == buf);
@@ -213,60 +206,16 @@ class CopyOnWriteBuffer {
// buffer contents will be kept but truncated; if the new size is greater,
// the existing contents will be kept and the new space will be
// uninitialized.
- void SetSize(size_t size) {
- RTC_DCHECK(IsConsistent());
- if (!buffer_) {
- if (size > 0) {
- buffer_ = new RefCountedObject<Buffer>(size);
- }
- RTC_DCHECK(IsConsistent());
- return;
- }
-
- // Clone data if referenced.
- if (!buffer_->HasOneRef()) {
- buffer_ = new RefCountedObject<Buffer>(
- buffer_->data(),
- std::min(buffer_->size(), size),
- std::max(buffer_->capacity(), size));
- }
- buffer_->SetSize(size);
- RTC_DCHECK(IsConsistent());
- }
+ void SetSize(size_t size);
// Ensure that the buffer size can be increased to at least capacity without
// further reallocation. (Of course, this operation might need to reallocate
// the buffer.)
- void EnsureCapacity(size_t capacity) {
- RTC_DCHECK(IsConsistent());
- if (!buffer_) {
- if (capacity > 0) {
- buffer_ = new RefCountedObject<Buffer>(0, capacity);
- }
- RTC_DCHECK(IsConsistent());
- return;
- } else if (capacity <= buffer_->capacity()) {
- return;
- }
-
- CloneDataIfReferenced(std::max(buffer_->capacity(), capacity));
- buffer_->EnsureCapacity(capacity);
- RTC_DCHECK(IsConsistent());
- }
+ void EnsureCapacity(size_t capacity);
// Resets the buffer to zero size without altering capacity. Works even if the
// buffer has been moved from.
- void Clear() {
- if (!buffer_)
- return;
-
- if (buffer_->HasOneRef()) {
- buffer_->Clear();
- } else {
- buffer_ = new RefCountedObject<Buffer>(0, buffer_->capacity());
- }
- RTC_DCHECK(IsConsistent());
- }
+ void Clear();
// Swaps two buffers.
friend void swap(CopyOnWriteBuffer& a, CopyOnWriteBuffer& b) {
@@ -276,15 +225,7 @@ class CopyOnWriteBuffer {
private:
// Create a copy of the underlying data if it is referenced from other Buffer
// objects.
- void CloneDataIfReferenced(size_t new_capacity) {
- if (buffer_->HasOneRef()) {
- return;
- }
-
- buffer_ = new RefCountedObject<Buffer>(buffer_->data(), buffer_->size(),
- new_capacity);
- RTC_DCHECK(IsConsistent());
- }
+ void CloneDataIfReferenced(size_t new_capacity);
// Pre- and postcondition of all methods.
bool IsConsistent() const {
« no previous file with comments | « no previous file | webrtc/base/copyonwritebuffer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698