diff --git a/webrtc/base/refcountedobject.h b/webrtc/base/refcountedobject.h index ee2ec10867..285ed36b1d 100644 --- a/webrtc/base/refcountedobject.h +++ b/webrtc/base/refcountedobject.h @@ -1,7 +1,3 @@ -// This file was GENERATED by command: -// pump.py refcountedobject.h.pump -// DO NOT EDIT BY HAND!!! - /* * Copyright 2016 The WebRTC Project Authors. All rights reserved. * @@ -11,10 +7,6 @@ * in the file PATENTS. All contributing project authors may * be found in the AUTHORS file in the root of the source tree. */ - -// To generate refcount.h from refcount.h.pump, execute: -// ./testing/gtest/scripts/pump.py ./webrtc/base/refcountedobject.h.pump - #ifndef WEBRTC_BASE_REFCOUNTEDOBJECT_H_ #define WEBRTC_BASE_REFCOUNTEDOBJECT_H_ @@ -31,168 +23,12 @@ class RefCountedObject : public T { template explicit RefCountedObject(P0&& p0) : T(std::forward(p0)) {} - template - RefCountedObject(P0&& p0, P1&& p1) - : T(std::forward(p0), std::forward(p1)) {} - template - RefCountedObject(P0&& p0, P1&& p1, P2&& p2) - : T(std::forward(p0), std::forward(p1), std::forward(p2)) {} - template - RefCountedObject(P0&& p0, P1&& p1, P2&& p2, P3&& p3) + + template + RefCountedObject(P0&& p0, P1&& p1, Args&&... args) : T(std::forward(p0), std::forward(p1), - std::forward(p2), - std::forward(p3)) {} - template - RefCountedObject(P0&& p0, P1&& p1, P2&& p2, P3&& p3, P4&& p4) - : T(std::forward(p0), - std::forward(p1), - std::forward(p2), - std::forward(p3), - std::forward(p4)) {} - template - RefCountedObject(P0&& p0, P1&& p1, P2&& p2, P3&& p3, P4&& p4, P5&& p5) - : T(std::forward(p0), - std::forward(p1), - std::forward(p2), - std::forward(p3), - std::forward(p4), - std::forward(p5)) {} - template - RefCountedObject(P0&& p0, - P1&& p1, - P2&& p2, - P3&& p3, - P4&& p4, - P5&& p5, - P6&& p6) - : T(std::forward(p0), - std::forward(p1), - std::forward(p2), - std::forward(p3), - std::forward(p4), - std::forward(p5), - std::forward(p6)) {} - template - RefCountedObject(P0&& p0, - P1&& p1, - P2&& p2, - P3&& p3, - P4&& p4, - P5&& p5, - P6&& p6, - P7&& p7) - : T(std::forward(p0), - std::forward(p1), - std::forward(p2), - std::forward(p3), - std::forward(p4), - std::forward(p5), - std::forward(p6), - std::forward(p7)) {} - template - RefCountedObject(P0&& p0, - P1&& p1, - P2&& p2, - P3&& p3, - P4&& p4, - P5&& p5, - P6&& p6, - P7&& p7, - P8&& p8) - : T(std::forward(p0), - std::forward(p1), - std::forward(p2), - std::forward(p3), - std::forward(p4), - std::forward(p5), - std::forward(p6), - std::forward(p7), - std::forward(p8)) {} - template - RefCountedObject(P0&& p0, - P1&& p1, - P2&& p2, - P3&& p3, - P4&& p4, - P5&& p5, - P6&& p6, - P7&& p7, - P8&& p8, - P9&& p9) - : T(std::forward(p0), - std::forward(p1), - std::forward(p2), - std::forward(p3), - std::forward(p4), - std::forward(p5), - std::forward(p6), - std::forward(p7), - std::forward(p8), - std::forward(p9)) {} - template - RefCountedObject(P0&& p0, - P1&& p1, - P2&& p2, - P3&& p3, - P4&& p4, - P5&& p5, - P6&& p6, - P7&& p7, - P8&& p8, - P9&& p9, - P10&& p10) - : T(std::forward(p0), - std::forward(p1), - std::forward(p2), - std::forward(p3), - std::forward(p4), - std::forward(p5), - std::forward(p6), - std::forward(p7), - std::forward(p8), - std::forward(p9), - std::forward(p10)) {} + std::forward(args)...) {} virtual int AddRef() const { return AtomicOps::Increment(&ref_count_); } diff --git a/webrtc/base/refcountedobject.h.pump b/webrtc/base/refcountedobject.h.pump deleted file mode 100644 index cbf54e5b58..0000000000 --- a/webrtc/base/refcountedobject.h.pump +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright 2016 The WebRTC Project Authors. All rights reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. An additional intellectual property rights grant can be found - * in the file PATENTS. All contributing project authors may - * be found in the AUTHORS file in the root of the source tree. - */ - -// To generate refcount.h from refcount.h.pump, execute: -// ./testing/gtest/scripts/pump.py ./webrtc/base/refcountedobject.h.pump - -#ifndef WEBRTC_BASE_REFCOUNTEDOBJECT_H_ -#define WEBRTC_BASE_REFCOUNTEDOBJECT_H_ - -#include - -#include "webrtc/base/atomicops.h" - -namespace rtc { - -template -class RefCountedObject : public T { - public: - RefCountedObject() {} - - $range i 0..10 - $for i [[ - $range j 0..i - template <$for j , [[class P$j]]> - $if i == 0 [[explicit ]] - RefCountedObject($for j , [[P$j&& p$j]]) : T($for j , [[std::forward(p$j)]]) {} - ]] - - virtual int AddRef() const { return AtomicOps::Increment(&ref_count_); } - - virtual int Release() const { - int count = AtomicOps::Decrement(&ref_count_); - if (!count) { - delete this; - } - return count; - } - - // Return whether the reference count is one. If the reference count is used - // in the conventional way, a reference count of 1 implies that the current - // thread owns the reference and no other thread shares it. This call - // performs the test for a reference count of one, and performs the memory - // barrier needed for the owning thread to act on the object, knowing that it - // has exclusive access to the object. - virtual bool HasOneRef() const { - return AtomicOps::AcquireLoad(&ref_count_) == 1; - } - - protected: - virtual ~RefCountedObject() {} - - mutable volatile int ref_count_ = 0; -}; - -} // namespace rtc - -#endif // WEBRTC_BASE_REFCOUNTEDOBJECT_H_