39#ifndef GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_INTERNAL_UTILS_H_
40#define GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_INTERNAL_UTILS_H_
66 const
std::vector<const
char*>& names, const Strings& values);
77template <typename Pointer>
78inline const typename Pointer::element_type*
GetRawPointer(const Pointer&
p) {
83template <
typename Element>
84inline const Element*
GetRawPointer(
const std::reference_wrapper<Element>& r) {
89template <
typename Element>
98#define GMOCK_INTERNAL_WARNING_PUSH()
99#define GMOCK_INTERNAL_WARNING_CLANG(Level, Name)
100#define GMOCK_INTERNAL_WARNING_POP()
102#if defined(__clang__)
103#undef GMOCK_INTERNAL_WARNING_PUSH
104#define GMOCK_INTERNAL_WARNING_PUSH() _Pragma("clang diagnostic push")
105#undef GMOCK_INTERNAL_WARNING_CLANG
106#define GMOCK_INTERNAL_WARNING_CLANG(Level, Warning) \
107 _Pragma(GMOCK_PP_INTERNAL_STRINGIZE(clang diagnostic Level Warning))
108#undef GMOCK_INTERNAL_WARNING_POP
109#define GMOCK_INTERNAL_WARNING_POP() _Pragma("clang diagnostic pop")
116#if defined(_MSC_VER) && !defined(_NATIVE_WCHAR_T_DEFINED)
119#define GMOCK_WCHAR_T_IS_NATIVE_ 1
136#define GMOCK_DECLARE_KIND_(type, kind) \
138 struct KindOf<type> { \
139 enum { value = kind }; \
157#if GMOCK_WCHAR_T_IS_NATIVE_
166#undef GMOCK_DECLARE_KIND_
169#define GMOCK_KIND_OF_(type) \
170 static_cast< ::testing::internal::TypeKind>( \
171 ::testing::internal::KindOf<type>::value)
182template <TypeKind kFromKind,
typename From, TypeKind kToKind,
typename To>
187 (kFromKind ==
kBool) ?
true
190 : (kFromKind != kToKind) ? false
194 (((sizeof(From) < sizeof(
To)) &&
198 ((sizeof(From) == sizeof(
To)) &&
215template <
typename From,
typename To>
231 const std::string& message) = 0;
242inline void Assert(
bool condition,
const char* file,
int line,
243 const std::string& msg) {
249inline void Assert(
bool condition,
const char* file,
int line) {
250 Assert(condition, file, line,
"Assertion failed.");
255inline void Expect(
bool condition,
const char* file,
int line,
256 const std::string& msg) {
262inline void Expect(
bool condition,
const char* file,
int line) {
263 Expect(condition, file, line,
"Expectation failed.");
290 int stack_frames_to_skip);
315 "Internal error: attempt to return invalid value");
316#if defined(__GNUC__) || defined(__clang__)
317 __builtin_unreachable();
318#elif defined(_MSC_VER)
341template <
class RawContainer>
348 static_assert(!std::is_const<RawContainer>::value,
349 "RawContainer type must not be const");
352 static type Copy(
const RawContainer& container) {
return container; }
356template <
typename Element,
size_t N>
359 typedef typename std::remove_const<Element>::type
RawElement;
369 static_assert(std::is_same<Element, RawElement>::value,
370 "Element type must not be const");
380template <
typename ElementPo
inter,
typename Size>
383 typedef typename std::remove_const<
384 typename std::pointer_traits<ElementPointer>::element_type>
::type
390 const ::std::tuple<ElementPointer, Size>& array) {
391 return type(std::get<0>(array), std::get<1>(array),
394 static type Copy(const ::std::tuple<ElementPointer, Size>& array) {
402class StlContainerView<
T&>;
413template <
typename K,
typename V>
422template <
typename F,
typename Tuple,
size_t... Idx>
424 ->
decltype(std::forward<F>(f)(
425 std::get<Idx>(std::forward<Tuple>(args))...)) {
426 return std::forward<F>(f)(std::get<Idx>(std::forward<Tuple>(args))...);
430template <
typename F,
typename Tuple>
432 std::forward<F>(f), std::forward<Tuple>(args),
434 typename std::remove_reference<Tuple>::type>
::value>())) {
435 return ApplyImpl(std::forward<F>(f), std::forward<Tuple>(args),
437 typename std::remove_reference<Tuple>::type>
::value>());
456template <
typename R,
typename... Args>
459 static constexpr size_t ArgumentCount =
sizeof...(Args);
468#ifdef GTEST_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
469template <
typename R,
typename... Args>
470constexpr size_t Function<R(Args...)>::ArgumentCount;
477template <
size_t I,
typename T>
480bool Base64Unescape(
const std::string& encoded, std::string* decoded);
Definition gmock-internal-utils.h:55
Definition gmock-internal-utils.h:222
virtual void ReportFailure(FailureType type, const char *file, int line, const std::string &message)=0
virtual ~FailureReporterInterface()=default
FailureType
Definition gmock-internal-utils.h:225
@ kFatal
Definition gmock-internal-utils.h:225
@ kNonfatal
Definition gmock-internal-utils.h:225
Definition gtest-internal.h:127
Definition gtest-internal.h:1086
internal::NativeArray< RawElement > type
Definition gmock-internal-utils.h:360
const type const_reference
Definition gmock-internal-utils.h:366
std::remove_const< Element >::type RawElement
Definition gmock-internal-utils.h:359
static const_reference ConstReference(const Element(&array)[N])
Definition gmock-internal-utils.h:368
static type Copy(const Element(&array)[N])
Definition gmock-internal-utils.h:373
const type const_reference
Definition gmock-internal-utils.h:387
std::remove_const< typenamestd::pointer_traits< ElementPointer >::element_type >::type RawElement
Definition gmock-internal-utils.h:385
internal::NativeArray< RawElement > type
Definition gmock-internal-utils.h:386
static type Copy(const ::std::tuple< ElementPointer, Size > &array)
Definition gmock-internal-utils.h:394
static const_reference ConstReference(const ::std::tuple< ElementPointer, Size > &array)
Definition gmock-internal-utils.h:389
Definition gmock-internal-utils.h:342
RawContainer type
Definition gmock-internal-utils.h:344
static const_reference ConstReference(const RawContainer &container)
Definition gmock-internal-utils.h:347
static type Copy(const RawContainer &container)
Definition gmock-internal-utils.h:352
const type & const_reference
Definition gmock-internal-utils.h:345
Definition googletest-port-test.cc:195
Definition gmock-internal-utils.h:298
friend GTEST_API_ WithoutMatchers GetWithoutMatchers()
Definition gmock-internal-utils.cc:190
int value
Definition gmock-actions_test.cc:1714
#define GMOCK_KIND_OF_(type)
Definition gmock-internal-utils.h:169
#define GMOCK_DECLARE_KIND_(type, kind)
Definition gmock-internal-utils.h:136
const char * p
Definition gmock-matchers-containers_test.cc:379
#define GTEST_DISABLE_MSC_WARNINGS_PUSH_(warnings)
Definition gtest-port.h:360
#define GTEST_API_
Definition gtest-port.h:842
#define GTEST_DISABLE_MSC_WARNINGS_POP_()
Definition gtest-port.h:361
GTEST_API_ std::string ConvertIdentifierNameToWords(const char *id_name)
Definition gmock-internal-utils.cc:80
LogSeverity
Definition gmock-internal-utils.h:267
@ kInfo
Definition gmock-internal-utils.h:267
@ kWarning
Definition gmock-internal-utils.h:267
T Invalid()
Definition gmock-internal-utils.h:313
typename MakeIndexSequenceImpl< N >::type MakeIndexSequence
Definition gtest-internal.h:1175
const char kErrorVerbosity[]
Definition gmock-internal-utils.h:276
auto Apply(F &&f, Tuple &&args) -> decltype(ApplyImpl(std::forward< F >(f), std::forward< Tuple >(args), MakeIndexSequence< std::tuple_size< typename std::remove_reference< Tuple >::type >::value >()))
Definition gmock-internal-utils.h:431
GTEST_API_ bool LogIsVisible(LogSeverity severity)
Definition gmock-internal-utils.cc:132
auto ApplyImpl(F &&f, Tuple &&args, IndexSequence< Idx... >) -> decltype(std::forward< F >(f)(std::get< Idx >(std::forward< Tuple >(args))...))
Definition gmock-internal-utils.h:423
bool Base64Unescape(const std::string &encoded, std::string *decoded)
Definition gmock-internal-utils.cc:228
GTEST_API_ void Log(LogSeverity severity, const std::string &message, int stack_frames_to_skip)
Definition gmock-internal-utils.cc:153
GTEST_API_ FailureReporterInterface * GetFailureReporter()
Definition gmock-internal-utils.cc:116
const char kInfoVerbosity[]
Definition gmock-internal-utils.h:272
std::integral_constant< bool,(kFromKind==kBool) ? true :(kFromKind !=kToKind) ? false :(kFromKind==kInteger &&(((sizeof(From)< sizeof(To)) && !(std::is_signed< From >::value &&!std::is_signed< To >::value))||((sizeof(From)==sizeof(To)) &&(std::is_signed< From >::value==std::is_signed< To >::value)))) ? true :(kFromKind==kFloatingPoint &&(sizeof(From)<=sizeof(To))) ? true :false > LosslessArithmeticConvertibleImpl
Definition gmock-internal-utils.h:183
void Assert(bool condition, const char *file, int line, const std::string &msg)
Definition gmock-internal-utils.h:242
GTEST_API_ void IllegalDoDefault(const char *file, int line)
Definition gmock-internal-utils.cc:192
TypeKind
Definition gmock-internal-utils.h:127
@ kBool
Definition gmock-internal-utils.h:127
@ kInteger
Definition gmock-internal-utils.h:127
@ kFloatingPoint
Definition gmock-internal-utils.h:127
@ kOther
Definition gmock-internal-utils.h:127
GTEST_API_ std::string JoinAsKeyValueTuple(const std::vector< const char * > &names, const Strings &values)
Definition gmock-internal-utils.cc:58
GTEST_API_ WithoutMatchers GetWithoutMatchers()
Definition gmock-internal-utils.cc:190
const Pointer::element_type * GetRawPointer(const Pointer &p)
Definition gmock-internal-utils.h:78
void Expect(bool condition, const char *file, int line, const std::string &msg)
Definition gmock-internal-utils.h:255
const char kWarningVerbosity[]
Definition gmock-internal-utils.h:274
LosslessArithmeticConvertibleImpl< GMOCK_KIND_OF_(From), From, GMOCK_KIND_OF_(To), To > LosslessArithmeticConvertible
Definition gmock-internal-utils.h:216
typename std::tuple_element< I, T >::type TupleElement
Definition gmock-internal-utils.h:478
Definition gmock-actions.h:151
Definition gtest-internal.h:1198
IgnoredValue(Args...) MakeResultIgnoredValue
Definition gmock-internal-utils.h:465
R Result
Definition gmock-internal-utils.h:458
void(Args...) MakeResultVoid
Definition gmock-internal-utils.h:464
std::tuple< Matcher< Args >... > ArgumentMatcherTuple
Definition gmock-internal-utils.h:463
std::tuple< Args... > ArgumentTuple
Definition gmock-internal-utils.h:462
Definition gmock-internal-utils.h:454
Definition gtest-internal.h:1148
Definition gmock-internal-utils.h:131
@ value
Definition gmock-internal-utils.h:132
Definition gtest-internal.h:1075
Definition gtest-internal.h:1074
std::pair< K, V > type
Definition gmock-internal-utils.h:415
Definition gmock-internal-utils.h:408
T type
Definition gmock-internal-utils.h:409