Sacado Package Browser (Single Doxygen Collection)
Version of the Day
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
test
GTestSuite
googletest
googlemock
include
gmock
internal
gmock-port.h
Go to the documentation of this file.
1
// Copyright 2008, Google Inc.
2
// All rights reserved.
3
//
4
// Redistribution and use in source and binary forms, with or without
5
// modification, are permitted provided that the following conditions are
6
// met:
7
//
8
// * Redistributions of source code must retain the above copyright
9
// notice, this list of conditions and the following disclaimer.
10
// * Redistributions in binary form must reproduce the above
11
// copyright notice, this list of conditions and the following disclaimer
12
// in the documentation and/or other materials provided with the
13
// distribution.
14
// * Neither the name of Google Inc. nor the names of its
15
// contributors may be used to endorse or promote products derived from
16
// this software without specific prior written permission.
17
//
18
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
30
// Low-level types and utilities for porting Google Mock to various
31
// platforms. All macros ending with _ and symbols defined in an
32
// internal namespace are subject to change without notice. Code
33
// outside Google Mock MUST NOT USE THEM DIRECTLY. Macros that don't
34
// end with _ are part of Google Mock's public API and can be used by
35
// code outside Google Mock.
36
37
// IWYU pragma: private, include "gmock/gmock.h"
38
// IWYU pragma: friend gmock/.*
39
40
#ifndef GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_PORT_H_
41
#define GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_PORT_H_
42
43
#include <assert.h>
44
#include <stdlib.h>
45
46
#include <cstdint>
47
#include <iostream>
48
49
// Most of the utilities needed for porting Google Mock are also
50
// required for Google Test and are defined in gtest-port.h.
51
//
52
// Note to maintainers: to reduce code duplication, prefer adding
53
// portability utilities to Google Test's gtest-port.h instead of
54
// here, as Google Mock depends on Google Test. Only add a utility
55
// here if it's truly specific to Google Mock.
56
57
#include "
gmock/internal/custom/gmock-port.h
"
58
#include "
gtest/internal/gtest-port.h
"
59
60
#if defined(GTEST_HAS_ABSL) && !defined(GTEST_NO_ABSL_FLAGS)
61
#include "absl/flags/declare.h"
62
#include "absl/flags/flag.h"
63
#endif
64
65
// For MS Visual C++, check the compiler version. At least VS 2015 is
66
// required to compile Google Mock.
67
#if defined(_MSC_VER) && _MSC_VER < 1900
68
#error "At least Visual C++ 2015 (14.0) is required to compile Google Mock."
69
#endif
70
71
// Macro for referencing flags. This is public as we want the user to
72
// use this syntax to reference Google Mock flags.
73
#define GMOCK_FLAG_NAME_(name) gmock_##name
74
#define GMOCK_FLAG(name) FLAGS_gmock_##name
75
76
// Pick a command line flags implementation.
77
#if defined(GTEST_HAS_ABSL) && !defined(GTEST_NO_ABSL_FLAGS)
78
79
// Macros for defining flags.
80
#define GMOCK_DEFINE_bool_(name, default_val, doc) \
81
ABSL_FLAG(bool, GMOCK_FLAG_NAME_(name), default_val, doc)
82
#define GMOCK_DEFINE_int32_(name, default_val, doc) \
83
ABSL_FLAG(int32_t, GMOCK_FLAG_NAME_(name), default_val, doc)
84
#define GMOCK_DEFINE_string_(name, default_val, doc) \
85
ABSL_FLAG(std::string, GMOCK_FLAG_NAME_(name), default_val, doc)
86
87
// Macros for declaring flags.
88
#define GMOCK_DECLARE_bool_(name) \
89
ABSL_DECLARE_FLAG(bool, GMOCK_FLAG_NAME_(name))
90
#define GMOCK_DECLARE_int32_(name) \
91
ABSL_DECLARE_FLAG(int32_t, GMOCK_FLAG_NAME_(name))
92
#define GMOCK_DECLARE_string_(name) \
93
ABSL_DECLARE_FLAG(std::string, GMOCK_FLAG_NAME_(name))
94
95
#define GMOCK_FLAG_GET(name) ::absl::GetFlag(GMOCK_FLAG(name))
96
#define GMOCK_FLAG_SET(name, value) \
97
(void)(::absl::SetFlag(&GMOCK_FLAG(name), value))
98
99
#else // defined(GTEST_HAS_ABSL) && !defined(GTEST_NO_ABSL_FLAGS)
100
101
// Macros for defining flags.
102
#define GMOCK_DEFINE_bool_(name, default_val, doc) \
103
namespace testing { \
104
GTEST_API_ bool GMOCK_FLAG(name) = (default_val); \
105
} \
106
static_assert(true, "no-op to require trailing semicolon")
107
#define GMOCK_DEFINE_int32_(name, default_val, doc) \
108
namespace testing { \
109
GTEST_API_ int32_t GMOCK_FLAG(name) = (default_val); \
110
} \
111
static_assert(true, "no-op to require trailing semicolon")
112
#define GMOCK_DEFINE_string_(name, default_val, doc) \
113
namespace testing { \
114
GTEST_API_ ::std::string GMOCK_FLAG(name) = (default_val); \
115
} \
116
static_assert(true, "no-op to require trailing semicolon")
117
118
// Macros for declaring flags.
119
#define GMOCK_DECLARE_bool_(name) \
120
namespace testing { \
121
GTEST_API_ extern bool GMOCK_FLAG(name); \
122
} \
123
static_assert(true, "no-op to require trailing semicolon")
124
#define GMOCK_DECLARE_int32_(name) \
125
namespace testing { \
126
GTEST_API_ extern int32_t GMOCK_FLAG(name); \
127
} \
128
static_assert(true, "no-op to require trailing semicolon")
129
#define GMOCK_DECLARE_string_(name) \
130
namespace testing { \
131
GTEST_API_ extern ::std::string GMOCK_FLAG(name); \
132
} \
133
static_assert(true, "no-op to require trailing semicolon")
134
135
#define GMOCK_FLAG_GET(name) ::testing::GMOCK_FLAG(name)
136
#define GMOCK_FLAG_SET(name, value) (void)(::testing::GMOCK_FLAG(name) = value)
137
138
#endif // defined(GTEST_HAS_ABSL) && !defined(GTEST_NO_ABSL_FLAGS)
139
140
#endif // GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_PORT_H_
gmock-port.h
gtest-port.h
Generated on Wed Apr 2 2025 09:23:59 for Sacado Package Browser (Single Doxygen Collection) by
1.8.5