1*6777b538SAndroid Build Coastguard Worker // Copyright 2021 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_NUMERICS_OSTREAM_OPERATORS_H_ 6*6777b538SAndroid Build Coastguard Worker #define BASE_NUMERICS_OSTREAM_OPERATORS_H_ 7*6777b538SAndroid Build Coastguard Worker 8*6777b538SAndroid Build Coastguard Worker #include <ostream> 9*6777b538SAndroid Build Coastguard Worker 10*6777b538SAndroid Build Coastguard Worker namespace base { 11*6777b538SAndroid Build Coastguard Worker namespace internal { 12*6777b538SAndroid Build Coastguard Worker 13*6777b538SAndroid Build Coastguard Worker template <typename T> 14*6777b538SAndroid Build Coastguard Worker class ClampedNumeric; 15*6777b538SAndroid Build Coastguard Worker template <typename T> 16*6777b538SAndroid Build Coastguard Worker class StrictNumeric; 17*6777b538SAndroid Build Coastguard Worker 18*6777b538SAndroid Build Coastguard Worker // Overload the ostream output operator to make logging work nicely. 19*6777b538SAndroid Build Coastguard Worker template <typename T> 20*6777b538SAndroid Build Coastguard Worker std::ostream& operator<<(std::ostream& os, const StrictNumeric<T>& value) { 21*6777b538SAndroid Build Coastguard Worker os << static_cast<T>(value); 22*6777b538SAndroid Build Coastguard Worker return os; 23*6777b538SAndroid Build Coastguard Worker } 24*6777b538SAndroid Build Coastguard Worker 25*6777b538SAndroid Build Coastguard Worker // Overload the ostream output operator to make logging work nicely. 26*6777b538SAndroid Build Coastguard Worker template <typename T> 27*6777b538SAndroid Build Coastguard Worker std::ostream& operator<<(std::ostream& os, const ClampedNumeric<T>& value) { 28*6777b538SAndroid Build Coastguard Worker os << static_cast<T>(value); 29*6777b538SAndroid Build Coastguard Worker return os; 30*6777b538SAndroid Build Coastguard Worker } 31*6777b538SAndroid Build Coastguard Worker 32*6777b538SAndroid Build Coastguard Worker } // namespace internal 33*6777b538SAndroid Build Coastguard Worker } // namespace base 34*6777b538SAndroid Build Coastguard Worker 35*6777b538SAndroid Build Coastguard Worker #endif // BASE_NUMERICS_OSTREAM_OPERATORS_H_ 36