File indexing completed on 2026-11-04 10:05:12
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040 #ifndef GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_PORT_H_
0041 #define GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_PORT_H_
0042
0043 #include <assert.h>
0044 #include <stdlib.h>
0045
0046 #include <cstdint>
0047 #include <iostream>
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057 #include "gmock/internal/custom/gmock-port.h"
0058 #include "gtest/internal/gtest-port.h"
0059
0060 #if defined(GTEST_HAS_ABSL) && !defined(GTEST_NO_ABSL_FLAGS)
0061 #include "absl/flags/declare.h"
0062 #include "absl/flags/flag.h"
0063 #endif
0064
0065
0066
0067 #if defined(_MSC_VER) && _MSC_VER < 1900
0068 #error "At least Visual C++ 2015 (14.0) is required to compile Google Mock."
0069 #endif
0070
0071
0072
0073 #define GMOCK_FLAG_NAME_(name) gmock_##name
0074 #define GMOCK_FLAG(name) FLAGS_gmock_##name
0075
0076
0077 #if defined(GTEST_HAS_ABSL) && !defined(GTEST_NO_ABSL_FLAGS)
0078
0079
0080 #define GMOCK_DEFINE_bool_(name, default_val, doc) \
0081 ABSL_FLAG(bool, GMOCK_FLAG_NAME_(name), default_val, doc)
0082 #define GMOCK_DEFINE_int32_(name, default_val, doc) \
0083 ABSL_FLAG(int32_t, GMOCK_FLAG_NAME_(name), default_val, doc)
0084 #define GMOCK_DEFINE_string_(name, default_val, doc) \
0085 ABSL_FLAG(std::string, GMOCK_FLAG_NAME_(name), default_val, doc)
0086
0087
0088 #define GMOCK_DECLARE_bool_(name) \
0089 GTEST_API_ ABSL_DECLARE_FLAG(bool, GMOCK_FLAG_NAME_(name))
0090 #define GMOCK_DECLARE_int32_(name) \
0091 GTEST_API_ ABSL_DECLARE_FLAG(int32_t, GMOCK_FLAG_NAME_(name))
0092 #define GMOCK_DECLARE_string_(name) \
0093 GTEST_API_ ABSL_DECLARE_FLAG(std::string, GMOCK_FLAG_NAME_(name))
0094
0095 #define GMOCK_FLAG_GET(name) ::absl::GetFlag(GMOCK_FLAG(name))
0096 #define GMOCK_FLAG_SET(name, value) \
0097 (void)(::absl::SetFlag(&GMOCK_FLAG(name), value))
0098
0099 #else
0100
0101
0102 #define GMOCK_DEFINE_bool_(name, default_val, doc) \
0103 namespace testing { \
0104 GTEST_API_ bool GMOCK_FLAG(name) = (default_val); \
0105 } \
0106 static_assert(true, "no-op to require trailing semicolon")
0107 #define GMOCK_DEFINE_int32_(name, default_val, doc) \
0108 namespace testing { \
0109 GTEST_API_ int32_t GMOCK_FLAG(name) = (default_val); \
0110 } \
0111 static_assert(true, "no-op to require trailing semicolon")
0112 #define GMOCK_DEFINE_string_(name, default_val, doc) \
0113 namespace testing { \
0114 GTEST_API_ ::std::string GMOCK_FLAG(name) = (default_val); \
0115 } \
0116 static_assert(true, "no-op to require trailing semicolon")
0117
0118
0119 #define GMOCK_DECLARE_bool_(name) \
0120 namespace testing { \
0121 GTEST_API_ extern bool GMOCK_FLAG(name); \
0122 } \
0123 static_assert(true, "no-op to require trailing semicolon")
0124 #define GMOCK_DECLARE_int32_(name) \
0125 namespace testing { \
0126 GTEST_API_ extern int32_t GMOCK_FLAG(name); \
0127 } \
0128 static_assert(true, "no-op to require trailing semicolon")
0129 #define GMOCK_DECLARE_string_(name) \
0130 namespace testing { \
0131 GTEST_API_ extern ::std::string GMOCK_FLAG(name); \
0132 } \
0133 static_assert(true, "no-op to require trailing semicolon")
0134
0135 #define GMOCK_FLAG_GET(name) ::testing::GMOCK_FLAG(name)
0136 #define GMOCK_FLAG_SET(name, value) (void)(::testing::GMOCK_FLAG(name) = value)
0137
0138 #endif
0139
0140 #endif