Home | History | Annotate | Download | only in base
      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