1*6777b538SAndroid Build Coastguard Worker // Copyright 2024 The Chromium Authors 2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file. 4*6777b538SAndroid Build Coastguard Worker 5*6777b538SAndroid Build Coastguard Worker #ifndef BASE_NOTIMPLEMENTED_H_ 6*6777b538SAndroid Build Coastguard Worker #define BASE_NOTIMPLEMENTED_H_ 7*6777b538SAndroid Build Coastguard Worker 8*6777b538SAndroid Build Coastguard Worker #include "base/check.h" 9*6777b538SAndroid Build Coastguard Worker #include "base/dcheck_is_on.h" 10*6777b538SAndroid Build Coastguard Worker 11*6777b538SAndroid Build Coastguard Worker // The NOTIMPLEMENTED() macro annotates codepaths which have not been 12*6777b538SAndroid Build Coastguard Worker // implemented yet. If output spam is a serious concern, 13*6777b538SAndroid Build Coastguard Worker // NOTIMPLEMENTED_LOG_ONCE() can be used. 14*6777b538SAndroid Build Coastguard Worker #if DCHECK_IS_ON() 15*6777b538SAndroid Build Coastguard Worker #define NOTIMPLEMENTED() \ 16*6777b538SAndroid Build Coastguard Worker ::logging::CheckError::NotImplemented(__PRETTY_FUNCTION__) 17*6777b538SAndroid Build Coastguard Worker 18*6777b538SAndroid Build Coastguard Worker // The lambda returns false the first time it is run, and true every other time. 19*6777b538SAndroid Build Coastguard Worker #define NOTIMPLEMENTED_LOG_ONCE() \ 20*6777b538SAndroid Build Coastguard Worker LOGGING_CHECK_FUNCTION_IMPL(NOTIMPLEMENTED(), []() { \ 21*6777b538SAndroid Build Coastguard Worker bool old_value = true; \ 22*6777b538SAndroid Build Coastguard Worker [[maybe_unused]] static const bool call_once = [](bool* b) { \ 23*6777b538SAndroid Build Coastguard Worker *b = false; \ 24*6777b538SAndroid Build Coastguard Worker return true; \ 25*6777b538SAndroid Build Coastguard Worker }(&old_value); \ 26*6777b538SAndroid Build Coastguard Worker return old_value; \ 27*6777b538SAndroid Build Coastguard Worker }()) 28*6777b538SAndroid Build Coastguard Worker 29*6777b538SAndroid Build Coastguard Worker #else 30*6777b538SAndroid Build Coastguard Worker #define NOTIMPLEMENTED() EAT_CHECK_STREAM_PARAMS() 31*6777b538SAndroid Build Coastguard Worker #define NOTIMPLEMENTED_LOG_ONCE() EAT_CHECK_STREAM_PARAMS() 32*6777b538SAndroid Build Coastguard Worker #endif 33*6777b538SAndroid Build Coastguard Worker 34*6777b538SAndroid Build Coastguard Worker #endif // BASE_NOTIMPLEMENTED_H_ 35