blob: af776d53ff1e504c7c8ecb2f23c8c183352d51b7 [file] [log] [blame]
kwiberg45fd9fe2015-12-16 01:09:16 -08001/*
2 * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020011#ifndef RTC_BASE_DEPRECATION_H_
12#define RTC_BASE_DEPRECATION_H_
kwiberg45fd9fe2015-12-16 01:09:16 -080013
Henrik Kjellanderec78f1c2017-06-29 07:52:50 +020014// Annotate the declarations of deprecated functions with this to cause a
15// compiler warning when they're used. Like so:
16//
17// RTC_DEPRECATED std::pony PonyPlz(const std::pony_spec& ps);
18//
19// NOTE 1: The annotation goes on the declaration in the .h file, not the
20// definition in the .cc file!
21//
22// NOTE 2: In order to keep unit testing the deprecated function without
23// getting warnings, do something like this:
24//
25// std::pony DEPRECATED_PonyPlz(const std::pony_spec& ps);
26// RTC_DEPRECATED inline std::pony PonyPlz(const std::pony_spec& ps) {
27// return DEPRECATED_PonyPlz(ps);
28// }
29//
30// In other words, rename the existing function, and provide an inline wrapper
31// using the original name that calls it. That way, callers who are willing to
32// call it using the DEPRECATED_-prefixed name don't get the warning.
33//
34// TODO(kwiberg): Remove this when we can use [[deprecated]] from C++14.
35#if defined(_MSC_VER)
36// Note: Deprecation warnings seem to fail to trigger on Windows
37// (https://bugs.chromium.org/p/webrtc/issues/detail?id=5368).
38#define RTC_DEPRECATED __declspec(deprecated)
39#elif defined(__GNUC__)
40#define RTC_DEPRECATED __attribute__ ((__deprecated__))
41#else
42#define RTC_DEPRECATED
43#endif
kwiberg45fd9fe2015-12-16 01:09:16 -080044
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020045#endif // RTC_BASE_DEPRECATION_H_