| // Copyright 2024 The Chromium Authors | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #ifndef BASE_NOTIMPLEMENTED_H_ | 
 | #define BASE_NOTIMPLEMENTED_H_ | 
 |  | 
 | #include "base/check.h" | 
 | #include "base/dcheck_is_on.h" | 
 |  | 
 | // The NOTIMPLEMENTED() macro annotates codepaths which have not been | 
 | // implemented yet. If output spam is a serious concern, | 
 | // NOTIMPLEMENTED_LOG_ONCE() can be used. | 
 | #if DCHECK_IS_ON() | 
 | #define NOTIMPLEMENTED() \ | 
 |   ::logging::CheckError::NotImplemented(__PRETTY_FUNCTION__) | 
 |  | 
 | // The lambda returns false the first time it is run, and true every other time. | 
 | // Note that the `static const bool call_once` trickery is used for thread | 
 | // safety (C++11 guarantees that `call_once` is only initialized once, no UB | 
 | // even if two threads enter concurrently). | 
 | #define NOTIMPLEMENTED_LOG_ONCE()                                      \ | 
 |   switch (0)                                                           \ | 
 |   case 0:                                                              \ | 
 |   default:                                                             \ | 
 |     if ([] {                                                           \ | 
 |           bool old_value = true;                                       \ | 
 |           [[maybe_unused]] static const bool call_once = [](bool* b) { \ | 
 |             *b = false;                                                \ | 
 |             return true;                                               \ | 
 |           }(&old_value);                                               \ | 
 |           return old_value;                                            \ | 
 |         }())                                                           \ | 
 |       ;                                                                \ | 
 |     else                                                               \ | 
 |       NOTIMPLEMENTED() | 
 |  | 
 | // The TVOS_NOT_YET_IMPLEMENTED() macro marks code paths that have not yet been | 
 | // implemented for tvOS. | 
 | #define TVOS_NOT_YET_IMPLEMENTED() \ | 
 |   ::logging::CheckError::NotImplemented(__PRETTY_FUNCTION__) | 
 |  | 
 | #else | 
 | #define NOTIMPLEMENTED() EAT_CHECK_STREAM_PARAMS() | 
 | #define NOTIMPLEMENTED_LOG_ONCE() EAT_CHECK_STREAM_PARAMS() | 
 | #define TVOS_NOT_YET_IMPLEMENTED() EAT_CHECK_STREAM_PARAMS() | 
 | #endif | 
 |  | 
 | #endif  // BASE_NOTIMPLEMENTED_H_ |