38#ifndef GMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_INTERNAL_UTILS_H_
39#define GMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_INTERNAL_UTILS_H_
45#include "gmock/internal/gmock-generated-internal-utils.h"
46#include "gmock/internal/gmock-port.h"
47#include "gtest/gtest.h"
62template <
typename Po
inter>
66 typedef typename Pointer::element_type
type;
75template <
typename Po
inter>
76inline const typename Pointer::element_type*
GetRawPointer(
const Pointer& p) {
80template <
typename Element>
85struct LinkedPtrLessThan {
86 bool operator()(const ::testing::internal::linked_ptr<T>& lhs,
87 const ::testing::internal::linked_ptr<T>& rhs)
const {
88 return lhs.get() < rhs.get();
100#if (GTEST_OS_SYMBIAN && defined(_STLP_NO_WCHAR_T)) || \
101 (defined(_MSC_VER) && !defined(_NATIVE_WCHAR_T_DEFINED))
104# define GMOCK_WCHAR_T_IS_NATIVE_ 1
118# define GMOCK_HAS_SIGNED_WCHAR_T_ 1
131template <
typename T>
struct KindOf {
136#define GMOCK_DECLARE_KIND_(type, kind) \
137 template <> struct KindOf<type> { enum { value = kind }; }
152#if GMOCK_WCHAR_T_IS_NATIVE_
165#undef GMOCK_DECLARE_KIND_
168#define GMOCK_KIND_OF_(type) \
169 static_cast< ::testing::internal::TypeKind>( \
170 ::testing::internal::KindOf<type>::value)
173#define GMOCK_IS_SIGNED_(T) (static_cast<T>(-1) < 0)
184template <TypeKind kFromKind,
typename From, TypeKind kToKind,
typename To>
185struct LosslessArithmeticConvertibleImpl :
public false_type {};
193template <
typename To>
198template <
typename To>
203template <
typename From>
209template <
typename From,
typename To>
214 ((sizeof(From) < sizeof(To)) &&
215 (!GMOCK_IS_SIGNED_(From) || GMOCK_IS_SIGNED_(To))) ||
217 ((sizeof(From) == sizeof(To)) &&
218 (GMOCK_IS_SIGNED_(From) == GMOCK_IS_SIGNED_(To)))> {};
220#undef GMOCK_IS_SIGNED_
224template <typename From, typename To>
225struct LosslessArithmeticConvertibleImpl<kInteger, From, kFloatingPoint, To>
226 : public false_type {};
229template <typename From>
230struct LosslessArithmeticConvertibleImpl<kFloatingPoint, From, kBool, bool>
231 : public false_type {};
234template <typename From, typename To>
235struct LosslessArithmeticConvertibleImpl<kFloatingPoint, From, kInteger, To>
236 : public false_type {};
240template <typename From, typename To>
241struct LosslessArithmeticConvertibleImpl<
242 kFloatingPoint, From, kFloatingPoint, To>
243 : public bool_constant<sizeof(From) <= sizeof(To)> {};
252template <typename From, typename To>
253struct LosslessArithmeticConvertible
254 : public LosslessArithmeticConvertibleImpl<
255 GMOCK_KIND_OF_(From), From, GMOCK_KIND_OF_(To), To> {};
259class FailureReporterInterface {
266 virtual ~FailureReporterInterface() {}
269 virtual void ReportFailure(FailureType type, const char* file, int line,
270 const string& message) = 0;
274GTEST_API_ FailureReporterInterface* GetFailureReporter();
281inline void Assert(bool condition, const char* file, int line,
284 GetFailureReporter()->ReportFailure(FailureReporterInterface::kFatal,
288inline void Assert(bool condition, const char* file, int line) {
289 Assert(condition, file, line, "Assertion failed.");
294inline void Expect(bool condition, const char* file, int line,
297 GetFailureReporter()->ReportFailure(FailureReporterInterface::kNonfatal,
301inline void
Expect(bool condition, const char* file, int line) {
302 Expect(condition, file, line,
"Expectation failed.");
332 const string& message,
333 int stack_frames_to_skip);
340template <
typename T>
struct is_reference :
public false_type {};
341template <
typename T>
struct is_reference<T&> :
public true_type {};
354template <
typename T,
size_t N>
struct DecayArray<T[N]> {
392template <
class RawContainer>
393class StlContainerView {
404 static type Copy(
const RawContainer& container) {
return container; }
408template <
typename Element,
size_t N>
409class StlContainerView<Element[N]> {
444 return type(
const_cast<Element*
>(&array[0]), N,
kCopy);
453template <
typename ElementPo
inter,
typename Size>
462 const ::std::tr1::tuple<ElementPointer, Size>& array) {
463 using ::std::tr1::get;
466 static type Copy(const ::std::tr1::tuple<ElementPointer, Size>& array) {
467 using ::std::tr1::get;
468 return type(get<0>(array), get<1>(array),
kCopy);
474template <
typename T>
class StlContainerView<T&>;
480struct RemoveConstFromKey {
485template <
typename K,
typename V>
492template <
bool kValue>
Definition mbelib/test/gtest/include/gtest/internal/gtest-tuple.h:604
Definition dsd/test/gtest/include/gtest/internal/gtest-internal.h:964
internal::NativeArray< RawElement > type
Definition dsd/test/gmock/include/gmock/internal/gmock-internal-utils.h:412
const type const_reference
Definition dsd/test/gmock/include/gmock/internal/gmock-internal-utils.h:418
static const_reference ConstReference(const Element(&array)[N])
Definition mbelib/test/gmock/include/gmock/internal/gmock-internal-utils.h:420
static type Copy(const Element(&array)[N])
Definition mbelib/test/gmock/include/gmock/internal/gmock-internal-utils.h:442
typedef GTEST_REMOVE_CONST_(Element) RawElement
static type Copy(const ::std::tr1::tuple< ElementPointer, Size > &array)
Definition mbelib/test/gmock/include/gmock/internal/gmock-internal-utils.h:466
static const_reference ConstReference(const ::std::tr1::tuple< ElementPointer, Size > &array)
Definition mbelib/test/gmock/include/gmock/internal/gmock-internal-utils.h:461
const type const_reference
Definition dsd/test/gmock/include/gmock/internal/gmock-internal-utils.h:459
typedef GTEST_REMOVE_CONST_(typename internal::PointeeOf< ElementPointer >::type) RawElement
internal::NativeArray< RawElement > type
Definition dsd/test/gmock/include/gmock/internal/gmock-internal-utils.h:458
GTEST_REMOVE_REFERENCE_AND_CONST_(Container) type
Definition dsd/test/gmock/include/gmock/internal/gmock-internal-utils.h:395
static const_reference ConstReference(const RawContainer &container)
Definition mbelib/test/gmock/include/gmock/internal/gmock-internal-utils.h:398
static type Copy(const RawContainer &container)
Definition mbelib/test/gmock/include/gmock/internal/gmock-internal-utils.h:404
const type & const_reference
Definition dsd/test/gmock/include/gmock/internal/gmock-internal-utils.h:396
#define GMOCK_DECLARE_KIND_(type, kind)
Definition dsd/test/gmock/include/gmock/internal/gmock-internal-utils.h:136
#define GTEST_REMOVE_CONST_(T)
Definition dsd/test/gtest/include/gtest/internal/gtest-internal.h:743
#define GTEST_API_
Definition dsd/test/gtest/include/gtest/internal/gtest-port.h:768
Definition dsd/test/gmock/include/gmock/gmock-actions.h:60
bool_constant< true > true_type
Definition dsd/test/gtest/include/gtest/internal/gtest-port.h:1618
LogSeverity
Definition dsd/test/gmock/include/gmock/internal/gmock-internal-utils.h:306
@ kWarning
Definition dsd/test/gmock/include/gmock/internal/gmock-internal-utils.h:308
@ kInfo
Definition dsd/test/gmock/include/gmock/internal/gmock-internal-utils.h:307
T Invalid()
Definition dsd/test/gmock/include/gmock/internal/gmock-internal-utils.h:369
const char kInfoVerbosity[]
Definition dsd/test/gmock/include/gmock/internal/gmock-internal-utils.h:314
GTEST_API_ string ConvertIdentifierNameToWords(const char *id_name)
void Invalid< void >()
Definition dsd/test/gmock/include/gmock/internal/gmock-internal-utils.h:374
GTEST_API_ bool LogIsVisible(LogSeverity severity)
bool_constant< false > false_type
Definition dsd/test/gtest/include/gtest/internal/gtest-port.h:1617
const char kWarningVerbosity[]
Definition dsd/test/gmock/include/gmock/internal/gmock-internal-utils.h:316
TypeKind
Definition dsd/test/gmock/include/gmock/internal/gmock-internal-utils.h:126
@ kInteger
Definition dsd/test/gmock/include/gmock/internal/gmock-internal-utils.h:127
@ kOther
Definition dsd/test/gmock/include/gmock/internal/gmock-internal-utils.h:127
@ kFloatingPoint
Definition dsd/test/gmock/include/gmock/internal/gmock-internal-utils.h:127
@ kBool
Definition dsd/test/gmock/include/gmock/internal/gmock-internal-utils.h:127
void Expect(bool condition, const char *file, int line, const string &msg)
Definition dsd/test/gmock/include/gmock/internal/gmock-internal-utils.h:294
TypeWithSize< 8 >::Int Int64
Definition dsd/test/gtest/include/gtest/internal/gtest-port.h:1902
GTEST_API_ void Log(LogSeverity severity, const string &message, int stack_frames_to_skip)
TypeWithSize< 8 >::UInt UInt64
Definition dsd/test/gtest/include/gtest/internal/gtest-port.h:1903
const Pointer::element_type * GetRawPointer(const Pointer &p)
Definition dsd/test/gmock/include/gmock/internal/gmock-internal-utils.h:76
@ kReference
Definition dsd/test/gtest/include/gtest/internal/gtest-internal.h:950
@ kCopy
Definition dsd/test/gtest/include/gtest/internal/gtest-internal.h:951
const char kErrorVerbosity[]
Definition dsd/test/gmock/include/gmock/internal/gmock-internal-utils.h:318
Definition dsd/test/gmock/include/gmock/gmock-actions.h:49
bool StaticAssertTypeEq()
Definition dsd/test/gtest/include/gtest/gtest.h:2205
Definition dsd/test/gmock/include/gmock/internal/gmock-internal-utils.h:493
const T * type
Definition dsd/test/gmock/include/gmock/internal/gmock-internal-utils.h:355
const T * type
Definition dsd/test/gmock/include/gmock/internal/gmock-internal-utils.h:361
Definition dsd/test/gmock/include/gmock/internal/gmock-internal-utils.h:353
T type
Definition dsd/test/gmock/include/gmock/internal/gmock-internal-utils.h:353
@ value
Definition dsd/test/gmock/include/gmock/internal/gmock-internal-utils.h:132
bool operator()(const ::testing::internal::linked_ptr< T > &lhs, const ::testing::internal::linked_ptr< T > &rhs) const
Definition mbelib/test/gmock/include/gmock/internal/gmock-internal-utils.h:86
Definition dsd/test/gmock/include/gmock/internal/gmock-internal-utils.h:185
T type
Definition dsd/test/gmock/include/gmock/internal/gmock-internal-utils.h:70
Definition dsd/test/gmock/include/gmock/internal/gmock-internal-utils.h:63
Pointer::element_type type
Definition dsd/test/gmock/include/gmock/internal/gmock-internal-utils.h:66
std::pair< K, V > type
Definition dsd/test/gmock/include/gmock/internal/gmock-internal-utils.h:487
Definition dsd/test/gmock/include/gmock/internal/gmock-internal-utils.h:480
typenameLhsStlContainer::value_type type
Definition dsd/test/gmock/include/gmock/internal/gmock-internal-utils.h:481
Definition dsd/test/gtest/include/gtest/internal/gtest-port.h:1611
T type
Definition dsd/test/gmock/include/gmock/internal/gmock-internal-utils.h:349
Definition dsd/test/gmock/include/gmock/internal/gmock-internal-utils.h:348
T type
Definition dsd/test/gmock/include/gmock/internal/gmock-internal-utils.h:348
Definition dsd/test/gmock/include/gmock/internal/gmock-internal-utils.h:344