grpc
third_party
protobuf
src
google
protobuf
stubs
protobuf/src/google/protobuf/stubs/common.h
Go to the documentation of this file.
1
// Protocol Buffers - Google's data interchange format
2
// Copyright 2008 Google Inc. All rights reserved.
3
// https://developers.google.com/protocol-buffers/
4
//
5
// Redistribution and use in source and binary forms, with or without
6
// modification, are permitted provided that the following conditions are
7
// met:
8
//
9
// * Redistributions of source code must retain the above copyright
10
// notice, this list of conditions and the following disclaimer.
11
// * Redistributions in binary form must reproduce the above
12
// copyright notice, this list of conditions and the following disclaimer
13
// in the documentation and/or other materials provided with the
14
// distribution.
15
// * Neither the name of Google Inc. nor the names of its
16
// contributors may be used to endorse or promote products derived from
17
// this software without specific prior written permission.
18
//
19
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
31
// Author: kenton@google.com (Kenton Varda) and others
32
//
33
// Contains basic types and utilities used by the rest of the library.
34
35
#ifndef GOOGLE_PROTOBUF_COMMON_H__
36
#define GOOGLE_PROTOBUF_COMMON_H__
37
38
#include <algorithm>
39
#include <iostream>
40
#include <map>
41
#include <memory>
42
#include <set>
43
#include <string>
44
#include <vector>
45
46
#include <google/protobuf/stubs/macros.h>
47
#include <google/protobuf/stubs/platform_macros.h>
48
#include <google/protobuf/stubs/port.h>
49
#include <google/protobuf/stubs/stringpiece.h>
50
51
#ifndef PROTOBUF_USE_EXCEPTIONS
52
#if defined(_MSC_VER) && defined(_CPPUNWIND)
53
#define PROTOBUF_USE_EXCEPTIONS 1
54
#elif defined(__EXCEPTIONS)
55
#define PROTOBUF_USE_EXCEPTIONS 1
56
#else
57
#define PROTOBUF_USE_EXCEPTIONS 0
58
#endif
59
#endif
60
61
#if PROTOBUF_USE_EXCEPTIONS
62
#include <exception>
63
#endif
64
#if defined(__APPLE__)
65
#include <TargetConditionals.h>
// for TARGET_OS_IPHONE
66
#endif
67
68
#if defined(__ANDROID__) || defined(GOOGLE_PROTOBUF_OS_ANDROID) || (defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE) || defined(GOOGLE_PROTOBUF_OS_IPHONE)
69
#include <pthread.h>
70
#endif
71
72
#include <google/protobuf/port_def.inc>
73
74
namespace
std
{}
75
76
namespace
google
{
77
namespace
protobuf
{
78
namespace
internal
{
79
80
// Some of these constants are macros rather than const ints so that they can
81
// be used in #if directives.
82
83
// The current version, represented as a single integer to make comparison
84
// easier: major * 10^6 + minor * 10^3 + micro
85
#define GOOGLE_PROTOBUF_VERSION 3019005
86
87
// A suffix string for alpha, beta or rc releases. Empty for stable releases.
88
#define GOOGLE_PROTOBUF_VERSION_SUFFIX ""
89
90
// The minimum header version which works with the current version of
91
// the library. This constant should only be used by protoc's C++ code
92
// generator.
93
static
const
int
kMinHeaderVersionForLibrary
= 3019000;
94
95
// The minimum protoc version which works with the current version of the
96
// headers.
97
#define GOOGLE_PROTOBUF_MIN_PROTOC_VERSION 3019000
98
99
// The minimum header version which works with the current version of
100
// protoc. This constant should only be used in VerifyVersion().
101
static
const
int
kMinHeaderVersionForProtoc
= 3019000;
102
103
// Verifies that the headers and libraries are compatible. Use the macro
104
// below to call this.
105
void
PROTOBUF_EXPORT
VerifyVersion
(
int
headerVersion,
int
minLibraryVersion,
106
const
char
*
filename
);
107
108
// Converts a numeric version number to a string.
109
std::string
PROTOBUF_EXPORT
VersionString
(
int
version
);
110
111
}
// namespace internal
112
113
// Place this macro in your main() function (or somewhere before you attempt
114
// to use the protobuf library) to verify that the version you link against
115
// matches the headers you compiled against. If a version mismatch is
116
// detected, the process will abort.
117
#define GOOGLE_PROTOBUF_VERIFY_VERSION \
118
::google::protobuf::internal::VerifyVersion( \
119
GOOGLE_PROTOBUF_VERSION, GOOGLE_PROTOBUF_MIN_LIBRARY_VERSION, \
120
__FILE__)
121
122
123
// ===================================================================
124
// from google3/util/utf8/public/unilib.h
125
126
namespace
internal
{
127
128
// Checks if the buffer contains structurally-valid UTF-8. Implemented in
129
// structurally_valid.cc.
130
PROTOBUF_EXPORT
bool
IsStructurallyValidUTF8
(
const
char
*
buf
,
int
len
);
131
132
inline
bool
IsStructurallyValidUTF8
(
StringPiece
str
) {
133
return
IsStructurallyValidUTF8
(
str
.data(),
static_cast<
int
>
(
str
.length()));
134
}
135
136
// Returns initial number of bytes of structurally valid UTF-8.
137
PROTOBUF_EXPORT
int
UTF8SpnStructurallyValid
(
StringPiece
str
);
138
139
// Coerce UTF-8 byte string in src_str to be
140
// a structurally-valid equal-length string by selectively
141
// overwriting illegal bytes with replace_char (typically ' ' or '?').
142
// replace_char must be legal printable 7-bit Ascii 0x20..0x7e.
143
// src_str is read-only.
144
//
145
// Returns pointer to output buffer, src_str.data() if no changes were made,
146
// or idst if some bytes were changed. idst is allocated by the caller
147
// and must be at least as big as src_str
148
//
149
// Optimized for: all structurally valid and no byte copying is done.
150
//
151
PROTOBUF_EXPORT
char
*
UTF8CoerceToStructurallyValid
(
StringPiece
str
,
char
*
dst
,
152
char
replace_char);
153
154
}
// namespace internal
155
156
// This lives in message_lite.h now, but we leave this here for any users that
157
// #include common.h and not message_lite.h.
158
PROTOBUF_EXPORT
void
ShutdownProtobufLibrary
();
159
160
namespace
internal
{
161
162
// Strongly references the given variable such that the linker will be forced
163
// to pull in this variable's translation unit.
164
template
<
typename
T>
165
void
StrongReference
(
const
T
& var) {
166
auto
volatile
unused = &var;
167
(void)&unused;
// Use address to avoid an extra load of "unused".
168
}
169
170
}
// namespace internal
171
172
#if PROTOBUF_USE_EXCEPTIONS
173
class
FatalException :
public
std::exception {
174
public
:
175
FatalException(
const
char
*
filename
,
int
line
,
const
std::string
&
message
)
176
: filename_(
filename
),
line_
(
line
), message_(
message
) {}
177
virtual
~FatalException() throw();
178
179
const
char
* what()
const
throw() override;
180
181
const
char
*
filename
()
const
{
return
filename_; }
182
int
line
()
const
{
return
line_
; }
183
const
std::string
&
message
()
const
{
return
message_; }
184
185
private
:
186
const
char
* filename_;
187
const
int
line_
;
188
const
std::string
message_;
189
};
190
#endif
191
192
// This is at the end of the file instead of the beginning to work around a bug
193
// in some versions of MSVC.
194
using
std::string
;
195
196
}
// namespace protobuf
197
}
// namespace google
198
199
#include <google/protobuf/port_undef.inc>
200
201
#endif // GOOGLE_PROTOBUF_COMMON_H__
xds_interop_client.str
str
Definition:
xds_interop_client.py:487
filename
const char * filename
Definition:
bloaty/third_party/zlib/contrib/minizip/ioapi.h:135
dst
static const char dst[]
Definition:
test-fs-copyfile.c:37
const
#define const
Definition:
bloaty/third_party/zlib/zconf.h:230
google::protobuf.internal::kMinHeaderVersionForProtoc
static const int kMinHeaderVersionForProtoc
Definition:
bloaty/third_party/protobuf/src/google/protobuf/stubs/common.h:100
google::protobuf.internal::UTF8SpnStructurallyValid
PROTOBUF_EXPORT int UTF8SpnStructurallyValid(const StringPiece &str)
Definition:
bloaty/third_party/protobuf/src/google/protobuf/stubs/structurally_valid.cc:565
line_
int line_
Definition:
bloaty/third_party/protobuf/src/google/protobuf/compiler/objectivec/objectivec_helpers.cc:1468
buf
voidpf void * buf
Definition:
bloaty/third_party/zlib/contrib/minizip/ioapi.h:136
google::protobuf.internal::VerifyVersion
void VerifyVersion(int headerVersion, int minLibraryVersion, const char *filename)
Definition:
bloaty/third_party/protobuf/src/google/protobuf/stubs/common.cc:70
testing::internal::string
::std::string string
Definition:
bloaty/third_party/protobuf/third_party/googletest/googletest/include/gtest/internal/gtest-port.h:881
google::protobuf
Definition:
bloaty/third_party/protobuf/benchmarks/util/data_proto2_to_proto3_util.h:12
version
Definition:
version.py:1
message
char * message
Definition:
libuv/docs/code/tty-gravity/main.c:12
T
#define T(upbtypeconst, upbtype, ctype, default_value)
google::protobuf.internal::kMinHeaderVersionForLibrary
static const int kMinHeaderVersionForLibrary
Definition:
bloaty/third_party/protobuf/src/google/protobuf/stubs/common.h:92
google::protobuf::StringPiece
Definition:
bloaty/third_party/protobuf/src/google/protobuf/stubs/stringpiece.h:180
google::protobuf.internal::UTF8CoerceToStructurallyValid
PROTOBUF_EXPORT char * UTF8CoerceToStructurallyValid(const StringPiece &str, char *dst, char replace_char)
Definition:
bloaty/third_party/protobuf/src/google/protobuf/stubs/structurally_valid.cc:586
google::protobuf.internal::VersionString
string VersionString(int version)
Definition:
bloaty/third_party/protobuf/src/google/protobuf/stubs/common.cc:98
google::protobuf.internal::IsStructurallyValidUTF8
PROTOBUF_EXPORT bool IsStructurallyValidUTF8(const char *buf, int len)
Definition:
bloaty/third_party/protobuf/src/google/protobuf/stubs/structurally_valid.cc:556
std
Definition:
grpcpp/impl/codegen/async_unary_call.h:407
regen-readme.line
line
Definition:
regen-readme.py:30
google::protobuf.internal::StrongReference
void StrongReference(const T &var)
Definition:
bloaty/third_party/protobuf/src/google/protobuf/stubs/common.h:193
internal
Definition:
benchmark/test/output_test_helper.cc:20
len
int len
Definition:
abseil-cpp/absl/base/internal/low_level_alloc_test.cc:46
google::protobuf::ShutdownProtobufLibrary
void ShutdownProtobufLibrary()
Definition:
bloaty/third_party/protobuf/src/google/protobuf/stubs/common.cc:356
google
Definition:
bloaty/third_party/protobuf/benchmarks/util/data_proto2_to_proto3_util.h:11
grpc
Author(s):
autogenerated on Fri May 16 2025 02:57:59