From 45fd9fe92c1cda7dbd9811fb807d9ae358017603 Mon Sep 17 00:00:00 2001 From: kwiberg Date: Wed, 16 Dec 2015 01:09:16 -0800 Subject: [PATCH] New macro: RTC_DEPRECATED (for annotating deprecated functions) Review URL: https://codereview.webrtc.org/1494133003 Cr-Commit-Position: refs/heads/master@{#11042} --- webrtc/base/BUILD.gn | 1 + webrtc/base/base.gyp | 1 + webrtc/base/deprecation.h | 45 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 47 insertions(+) create mode 100644 webrtc/base/deprecation.h diff --git a/webrtc/base/BUILD.gn b/webrtc/base/BUILD.gn index b867d8734f..0a62567d96 100644 --- a/webrtc/base/BUILD.gn +++ b/webrtc/base/BUILD.gn @@ -119,6 +119,7 @@ static_library("rtc_base_approved") { "constructormagic.h", "criticalsection.cc", "criticalsection.h", + "deprecation.h", "event.cc", "event.h", "event_tracer.cc", diff --git a/webrtc/base/base.gyp b/webrtc/base/base.gyp index 9ba6afc39e..cc7d0c3213 100644 --- a/webrtc/base/base.gyp +++ b/webrtc/base/base.gyp @@ -85,6 +85,7 @@ 'constructormagic.h', 'criticalsection.cc', 'criticalsection.h', + 'deprecation.h', 'event.cc', 'event.h', 'event_tracer.cc', diff --git a/webrtc/base/deprecation.h b/webrtc/base/deprecation.h new file mode 100644 index 0000000000..459b898480 --- /dev/null +++ b/webrtc/base/deprecation.h @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2015 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. + */ + +#ifndef WEBRTC_BASE_DEPRECATION_H_ +#define WEBRTC_BASE_DEPRECATION_H_ + +// Annotate the declarations of deprecated functions with this to cause a +// compiler warning when they're used. Like so: +// +// RTC_DEPRECATED std::pony PonyPlz(const std::pony_spec& ps); +// +// NOTE 1: The annotation goes on the declaration in the .h file, not the +// definition in the .cc file! +// +// NOTE 2: In order to keep unit testing the deprecated function without +// getting warnings, do something like this: +// +// std::pony DEPRECATED_PonyPlz(const std::pony_spec& ps); +// RTC_DEPRECATED inline std::pony PonyPlz(const std::pony_spec& ps) { +// return DEPRECATED_PonyPlz(ps); +// } +// +// In other words, rename the existing function, and provide an inline wrapper +// using the original name that calls it. That way, callers who are willing to +// call it using the DEPRECATED_-prefixed name don't get the warning. +// +// TODO(kwiberg): Remove this when we can use [[deprecated]] from C++14. +#if defined(_MSC_VER) +// Note: Deprecation warnings seem to fail to trigger on Windows +// (https://bugs.chromium.org/p/webrtc/issues/detail?id=5368). +#define RTC_DEPRECATED __declspec(deprecated) +#elif defined(__GNUC__) +#define RTC_DEPRECATED __attribute__((deprecated)) +#else +#define RTC_DEPRECATED +#endif + +#endif // WEBRTC_BASE_DEPRECATION_H_