• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
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 
11 #ifndef WEBRTC_BASE_DEPRECATION_H_
12 #define WEBRTC_BASE_DEPRECATION_H_
13 
14 // 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
44 
45 #endif  // WEBRTC_BASE_DEPRECATION_H_
46