/usr/include/google/protobuf
NameSizeModeActions
io/-0755rm
stubs/-0755rm
util/-0755rm
any.h61810644editdlrm
any.pb.h177260644editdlrm
any.proto58780644editdlrm
api.pb.h641960644editdlrm
api.proto77340644editdlrm
arena.h313290644editdlrm
arenastring.h146740644editdlrm
arena_impl.h143160644editdlrm
descriptor.h963570644editdlrm
descriptor.pb.h5878940644editdlrm
descriptor.proto379860644editdlrm
descriptor_database.h193790644editdlrm
duration.pb.h98650644editdlrm
duration.proto48880644editdlrm
dynamic_message.h99860644editdlrm
empty.pb.h76830644editdlrm
empty.proto24220644editdlrm
extension_set.h784610644editdlrm
extension_set_inl.h127560644editdlrm
field_mask.pb.h118250644editdlrm
field_mask.proto81920644editdlrm
generated_enum_reflection.h39540644editdlrm
generated_enum_util.h32660644editdlrm
generated_message_reflection.h128800644editdlrm
generated_message_table_driven.h126100644editdlrm
generated_message_util.h95600644editdlrm
has_bits.h35280644editdlrm
implicit_weak_message.h70140644editdlrm
inlined_string_field.h93320644editdlrm
map.h462870644editdlrm
map_entry.h72760644editdlrm
map_entry_lite.h260160644editdlrm
map_field.h312080644editdlrm
map_field_inl.h145120644editdlrm
map_field_lite.h75590644editdlrm
map_type_handler.h390820644editdlrm
message.h616130644editdlrm
message_lite.h259640644editdlrm
metadata.h18570644editdlrm
metadata_lite.h82600644editdlrm
parse_context.h298120644editdlrm
port.h20500644editdlrm
port_def.inc170390644editdlrm
port_undef.inc34980644editdlrm
reflection.h227170644editdlrm
reflection_ops.h36860644editdlrm
repeated_field.h1010320644editdlrm
service.h131590644editdlrm
source_context.pb.h127400644editdlrm
source_context.proto23520644editdlrm
struct.pb.h436290644editdlrm
struct.proto37800644editdlrm
text_format.h289480644editdlrm
timestamp.pb.h99280644editdlrm
timestamp.proto62000644editdlrm
type.pb.h1057220644editdlrm
type.proto61290644editdlrm
unknown_field_set.h144010644editdlrm
wire_format.h176600644editdlrm
wire_format_lite.h840330644editdlrm
wrappers.pb.h614210644editdlrm
wrappers.proto40350644editdlrm
Edit: /usr/include/google/protobuf/port_def.inc (17039B)
// Protocol Buffers - Google's data interchange format // Copyright 2008 Google Inc. All rights reserved. // https://developers.google.com/protocol-buffers/ // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are // met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following disclaimer // in the documentation and/or other materials provided with the // distribution. // * Neither the name of Google Inc. nor the names of its // contributors may be used to endorse or promote products derived from // this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // This file defines common macros that are used in protobuf. // // To hide these definitions from the outside world (and to prevent collisions // if more than one version of protobuf is #included in the same project) you // must follow this pattern when #including port_def.inc in a header file: // // #include "other_header.h" // #include "message.h" // // etc. // // #include "port_def.inc" // MUST be last header included // // // Definitions for this header. // // #include "port_undef.inc" // // This is a textual header with no include guard, because we want to // detect/prohibit anytime it is #included twice without a corresponding // #undef. // These macros are private and should always be // ::util::RetrieveErrorSpace(*this) headers. If any of these errors fire, you // should either properly #include port_undef.h at the end of your header that // #includes port.h, or don't #include port.h twice in a .cc file. #ifdef PROTOBUF_NAMESPACE #error PROTOBUF_NAMESPACE was previously defined #endif #ifdef PROTOBUF_NAMESPACE_ID #error PROTOBUF_NAMESPACE_ID was previously defined #endif #ifdef PROTOBUF_ALWAYS_INLINE #error PROTOBUF_ALWAYS_INLINE was previously defined #endif #ifdef PROTOBUF_COLD #error PROTOBUF_COLD was previously defined #endif #ifdef PROTOBUF_NOINLINE #error PROTOBUF_NOINLINE was previously defined #endif #ifdef PROTOBUF_SECTION_VARIABLE #error PROTOBUF_SECTION_VARIABLE was previously defined #endif #ifdef PROTOBUF_DEPRECATED #error PROTOBUF_DEPRECATED was previously defined #endif #ifdef PROTOBUF_DEPRECATED_MSG #error PROTOBUF_DEPRECATED_MSG was previously defined #endif #ifdef PROTOBUF_FUNC_ALIGN #error PROTOBUF_FUNC_ALIGN was previously defined #endif #ifdef PROTOBUF_RETURNS_NONNULL #error PROTOBUF_RETURNS_NONNULL was previously defined #endif #ifdef PROTOBUF_ATTRIBUTE_REINITIALIZES #error PROTOBUF_ATTRIBUTE_REINITIALIZES was previously defined #endif #ifdef PROTOBUF_RTTI #error PROTOBUF_RTTI was previously defined #endif #ifdef PROTOBUF_VERSION #error PROTOBUF_VERSION was previously defined #endif #ifdef PROTOBUF_VERSION_SUFFIX #error PROTOBUF_VERSION_SUFFIX was previously defined #endif #ifdef PROTOBUF_MIN_HEADER_VERSION_FOR_PROTOC #error PROTOBUF_MIN_HEADER_VERSION_FOR_PROTOC was previously defined #endif #ifdef PROTOBUF_MIN_PROTOC_VERSION #error PROTOBUF_MIN_PROTOC_VERSION was previously defined #endif #ifdef PROTOBUF_PREDICT_TRUE #error PROTOBUF_PREDICT_TRUE was previously defined #endif #ifdef PROTOBUF_PREDICT_FALSE #error PROTOBUF_PREDICT_FALSE was previously defined #endif #ifdef PROTOBUF_FIELD_OFFSET #error PROTOBUF_FIELD_OFFSET was previously defined #endif #ifdef PROTOBUF_LL_FORMAT #error PROTOBUF_LL_FORMAT was previously defined #endif #ifdef PROTOBUF_GUARDED_BY #error PROTOBUF_GUARDED_BY was previously defined #endif #ifdef PROTOBUF_LONGLONG #error PROTOBUF_LONGLONG was previously defined #endif #ifdef PROTOBUF_ULONGLONG #error PROTOBUF_ULONGLONG was previously defined #endif #ifdef PROTOBUF_FALLTHROUGH_INTENDED #error PROTOBUF_FALLTHROUGH_INTENDED was previously defined #endif #ifdef PROTOBUF_EXPORT #error PROTOBUF_EXPORT was previously defined #endif #ifdef PROTOC_EXPORT #error PROTOC_EXPORT was previously defined #endif #ifdef PROTOBUF_MUST_USE_RESULT #error PROTOBUF_MUST_USE_RESULT was previously defined #endif #ifdef PROTOBUF_UNUSED #error PROTOBUF_UNUSED was previously defined #endif #ifdef PROTOBUF_FINAL #error PROTOBUF_FINAL was previously defined #endif #define PROTOBUF_NAMESPACE "google::protobuf" #define PROTOBUF_NAMESPACE_ID google::protobuf #define PROTOBUF_NAMESPACE_OPEN \ namespace google { \ namespace protobuf { #define PROTOBUF_NAMESPACE_CLOSE \ } /* namespace protobuf */ \ } /* namespace google */ #if defined(__GNUC__) || defined(__clang__) #define PROTOBUF_DEPRECATED __attribute__((deprecated)) #define PROTOBUF_DEPRECATED_ENUM __attribute__((deprecated)) #define PROTOBUF_DEPRECATED_MSG(msg) __attribute__((deprecated(msg))) #elif defined(_MSC_VER) #define PROTOBUF_DEPRECATED __declspec(deprecated) #define PROTOBUF_DEPRECATED_ENUM #define PROTOBUF_DEPRECATED_MSG(msg) __declspec(deprecated(msg)) #endif #define PROTOBUF_SECTION_VARIABLE(x) #define PROTOBUF_MUST_USE_RESULT // ---------------------------------------------------------------------------- // Annotations: Some parts of the code have been annotated in ways that might // be useful to some compilers or tools, but are not supported universally. // You can #define these annotations yourself if the default implementation // is not right for you. #ifdef GOOGLE_ATTRIBUTE_ALWAYS_INLINE #define PROTOBUF_ALWAYS_INLINE GOOGLE_ATTRIBUTE_ALWAYS_INLINE #else #if defined(__GNUC__) && \ (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1)) // For functions we want to force inline. // Introduced in gcc 3.1. #define PROTOBUF_ALWAYS_INLINE __attribute__((always_inline)) #else // Other compilers will have to figure it out for themselves. #define PROTOBUF_ALWAYS_INLINE #endif #endif #ifdef GOOGLE_ATTRIBUTE_NOINLINE #define PROTOBUF_NOINLINE GOOGLE_ATTRIBUTE_NOINLINE #else #if defined(__GNUC__) && \ (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1)) // For functions we want to force not inline. // Introduced in gcc 3.1. #define PROTOBUF_NOINLINE __attribute__((noinline)) #elif defined(_MSC_VER) && (_MSC_VER >= 1400) // Seems to have been around since at least Visual Studio 2005 #define PROTOBUF_NOINLINE __declspec(noinline) #else // Other compilers will have to figure it out for themselves. #define PROTOBUF_NOINLINE #endif #endif #ifdef GOOGLE_ATTRIBUTE_FUNC_ALIGN #define PROTOBUF_FUNC_ALIGN GOOGLE_ATTRIBUTE_FUNC_ALIGN #else #if defined(__clang__) || \ defined(__GNUC__) && \ (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) // Function alignment attribute introduced in gcc 4.3 #define PROTOBUF_FUNC_ALIGN(bytes) __attribute__((aligned(bytes))) #else #define PROTOBUF_FUNC_ALIGN(bytes) #endif #endif #ifdef GOOGLE_PREDICT_TRUE #define PROTOBUF_PREDICT_TRUE GOOGLE_PREDICT_TRUE #else #ifdef __GNUC__ // Provided at least since GCC 3.0. #define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(!!(x), 1)) #else #define PROTOBUF_PREDICT_TRUE(x) (x) #endif #endif #ifdef GOOGLE_PREDICT_FALSE #define PROTOBUF_PREDICT_FALSE GOOGLE_PREDICT_FALSE #else #ifdef __GNUC__ // Provided at least since GCC 3.0. #define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(x, 0)) #else #define PROTOBUF_PREDICT_FALSE(x) (x) #endif #endif #ifdef GOOGLE_PROTOBUF_ATTRIBUTE_RETURNS_NONNULL #define PROTOBUF_RETURNS_NONNULL GOOGLE_PROTOBUF_ATTRIBUTE_RETURNS_NONNULL #else #ifdef __GNUC__ #define PROTOBUF_RETURNS_NONNULL __attribute__((returns_nonnull)) #else #define PROTOBUF_RETURNS_NONNULL #endif #endif #if defined(__has_cpp_attribute) #if __has_cpp_attribute(clang::reinitializes) #define PROTOBUF_ATTRIBUTE_REINITIALIZES [[clang::reinitializes]] #endif #endif #ifndef PROTOBUF_ATTRIBUTE_REINITIALIZES #define PROTOBUF_ATTRIBUTE_REINITIALIZES #endif #define PROTOBUF_GUARDED_BY(x) #define PROTOBUF_COLD // Copied from ABSL. #if defined(__clang__) && defined(__has_warning) #if __has_feature(cxx_attributes) && __has_warning("-Wimplicit-fallthrough") #define PROTOBUF_FALLTHROUGH_INTENDED [[clang::fallthrough]] #endif #elif defined(__GNUC__) && __GNUC__ >= 7 #define PROTOBUF_FALLTHROUGH_INTENDED [[gnu::fallthrough]] #endif #ifndef PROTOBUF_FALLTHROUGH_INTENDED #define PROTOBUF_FALLTHROUGH_INTENDED #endif #if defined(__has_cpp_attribute) #define HAS_ATTRIBUTE(attr) __has_cpp_attribute(attr) #else #define HAS_ATTRIBUTE(attr) 0 #endif #if HAS_ATTRIBUTE(unused) || (defined(__GNUC__) && !defined(__clang__)) #define PROTOBUF_UNUSED __attribute__((__unused__)) #else #define PROTOBUF_UNUSED #endif #undef HAS_ATTRIBUTE #ifdef _MSC_VER #define PROTOBUF_LONGLONG(x) x##I64 #define PROTOBUF_ULONGLONG(x) x##UI64 #define PROTOBUF_LL_FORMAT "I64" // As in printf("%I64d", ...) #else // By long long, we actually mean int64. #define PROTOBUF_LONGLONG(x) x##LL #define PROTOBUF_ULONGLONG(x) x##ULL // Used to format real long long integers. #define PROTOBUF_LL_FORMAT \ "ll" // As in "%lld". Note that "q" is poor form also. #endif // Shared google3/opensource definitions. ////////////////////////////////////// #define PROTOBUF_VERSION 3012004 #define PROTOBUF_MIN_HEADER_VERSION_FOR_PROTOC 3012000 #define PROTOBUF_MIN_PROTOC_VERSION 3012000 #define PROTOBUF_VERSION_SUFFIX "" // The minimum library version which works with the current version of the // headers. #define GOOGLE_PROTOBUF_MIN_LIBRARY_VERSION 3012000 #if defined(GOOGLE_PROTOBUF_NO_RTTI) && GOOGLE_PROTOBUF_NO_RTTI #define PROTOBUF_RTTI 0 #elif defined(__has_feature) // https://clang.llvm.org/docs/LanguageExtensions.html#has-feature-and-has-extension #define PROTOBUF_RTTI __has_feature(cxx_rtti) #elif !defined(__cxx_rtti) // https://en.cppreference.com/w/User:D41D8CD98F/feature_testing_macros#C.2B.2B98 #define PROTOBUF_RTTI 0 #elif defined(__GNUC__) && !defined(__GXX_RTTI) #https: // gcc.gnu.org/onlinedocs/cpp/Common-Predefined-Macros.html #define PROTOBUF_RTTI 0 #else #define PROTOBUF_RTTI 1 #endif // Returns the offset of the given field within the given aggregate type. // This is equivalent to the ANSI C offsetof() macro. However, according // to the C++ standard, offsetof() only works on POD types, and GCC // enforces this requirement with a warning. In practice, this rule is // unnecessarily strict; there is probably no compiler or platform on // which the offsets of the direct fields of a class are non-constant. // Fields inherited from superclasses *can* have non-constant offsets, // but that's not what this macro will be used for. #if defined(__clang__) // For Clang we use __builtin_offsetof() and suppress the warning, // to avoid Control Flow Integrity and UBSan vptr sanitizers from // crashing while trying to validate the invalid reinterpet_casts. #define PROTOBUF_FIELD_OFFSET(TYPE, FIELD) \ _Pragma("clang diagnostic push") \ _Pragma("clang diagnostic ignored \"-Winvalid-offsetof\"") \ __builtin_offsetof(TYPE, FIELD) \ _Pragma("clang diagnostic pop") #elif defined(__GNUC__) && \ (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)) #define PROTOBUF_FIELD_OFFSET(TYPE, FIELD) __builtin_offsetof(TYPE, FIELD) #else // defined(__clang__) // Note that we calculate relative to the pointer value 16 here since if we // just use zero, GCC complains about dereferencing a NULL pointer. We // choose 16 rather than some other number just in case the compiler would // be confused by an unaligned pointer. #define PROTOBUF_FIELD_OFFSET(TYPE, FIELD) \ static_cast< ::google::protobuf::uint32>(reinterpret_cast( \ &reinterpret_cast(16)->FIELD) - \ reinterpret_cast(16)) #endif #if defined(PROTOBUF_USE_DLLS) #if defined(_MSC_VER) #ifdef LIBPROTOBUF_EXPORTS #define PROTOBUF_EXPORT __declspec(dllexport) #define PROTOBUF_EXPORT_TEMPLATE_DECLARE #define PROTOBUF_EXPORT_TEMPLATE_DEFINE __declspec(dllexport) #else #define PROTOBUF_EXPORT __declspec(dllimport) #define PROTOBUF_EXPORT_TEMPLATE_DECLARE #define PROTOBUF_EXPORT_TEMPLATE_DEFINE __declspec(dllimport) #endif #ifdef LIBPROTOC_EXPORTS #define PROTOC_EXPORT __declspec(dllexport) #else #define PROTOC_EXPORT __declspec(dllimport) #endif #else // defined(_MSC_VER) #ifdef LIBPROTOBUF_EXPORTS #define PROTOBUF_EXPORT __attribute__((visibility("default"))) #define PROTOBUF_EXPORT_TEMPLATE_DECLARE __attribute__((visibility("default"))) #define PROTOBUF_EXPORT_TEMPLATE_DEFINE #else #define PROTOBUF_EXPORT #define PROTOBUF_EXPORT_TEMPLATE_DECLARE #define PROTOBUF_EXPORT_TEMPLATE_DEFINE #endif #ifdef LIBPROTOC_EXPORTS #define PROTOC_EXPORT __attribute__((visibility("default"))) #else #define PROTOC_EXPORT #endif #endif #else // defined(PROTOBUF_USE_DLLS) #define PROTOBUF_EXPORT #define PROTOC_EXPORT #define PROTOBUF_EXPORT_TEMPLATE_DECLARE #define PROTOBUF_EXPORT_TEMPLATE_DEFINE #endif // Windows declares several inconvenient macro names. We #undef them and then // restore them in port_undef.inc. #ifdef _MSC_VER #pragma push_macro("ERROR") #undef ERROR #pragma push_macro("GetMessage") #undef GetMessage #pragma push_macro("IGNORE") #undef IGNORE #pragma push_macro("IN") #undef IN #pragma push_macro("OUT") #undef OUT #pragma push_macro("OPTIONAL") #undef OPTIONAL #pragma push_macro("min") #undef min #pragma push_macro("max") #undef max #endif // _MSC_VER #if defined(__clang__) || defined(__GNUC__) || defined(_MSC_VER) // Don't let the YES/NO Objective-C Macros interfere with proto identifiers with // the same name. #pragma push_macro("YES") #undef YES #pragma push_macro("NO") #undef NO #endif // defined(__clang__) || defined(__GNUC__) || defined(_MSC_VER) #if defined(__clang__) #pragma clang diagnostic push // TODO(gerbens) ideally we cleanup the code. But a cursory try shows many // violations. So let's ignore for now. #pragma clang diagnostic ignored "-Wshorten-64-to-32" #elif defined(__GNUC__) // GCC does not allow disabling diagnostics within an expression: // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60875, so we disable this one // globally even though it's only used for PROTOBUF_FIELD_OFFSET. #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Winvalid-offsetof" #endif // PROTOBUF_ASSUME(pred) tells the compiler that it can assume pred is true. To // be safe, we also validate the assumption with a GOOGLE_DCHECK in unoptimized // builds. The macro does not do anything useful if the compiler does not // support __builtin_assume. #ifdef __has_builtin #if __has_builtin(__builtin_assume) #define PROTOBUF_ASSUME(pred) \ GOOGLE_DCHECK(pred); \ __builtin_assume(pred) #else #define PROTOBUF_ASSUME(pred) GOOGLE_DCHECK(pred) #endif #else #define PROTOBUF_ASSUME(pred) GOOGLE_DCHECK(pred) #endif // Specify memory alignment for structs, classes, etc. // Use like: // class PROTOBUF_ALIGNAS(16) MyClass { ... } // PROTOBUF_ALIGNAS(16) int array[4]; // // In most places you can use the C++11 keyword "alignas", which is preferred. // // But compilers have trouble mixing __attribute__((...)) syntax with // alignas(...) syntax. // // Doesn't work in clang or gcc: // struct alignas(16) __attribute__((packed)) S { char c; }; // Works in clang but not gcc: // struct __attribute__((packed)) alignas(16) S2 { char c; }; // Works in clang and gcc: // struct alignas(16) S3 { char c; } __attribute__((packed)); // // There are also some attributes that must be specified *before* a class // definition: visibility (used for exporting functions/classes) is one of // these attributes. This means that it is not possible to use alignas() with a // class that is marked as exported. #if defined(_MSC_VER) #define PROTOBUF_ALIGNAS(byte_alignment) __declspec(align(byte_alignment)) #elif defined(__GNUC__) #define PROTOBUF_ALIGNAS(byte_alignment) \ __attribute__((aligned(byte_alignment))) #else #define PROTOBUF_ALIGNAS(byte_alignment) alignas(byte_alignment) #endif #define PROTOBUF_FINAL final