Go to the documentation of this file.
31 #ifndef GOOGLE_PROTOBUF_ARENASTRING_H__
32 #define GOOGLE_PROTOBUF_ARENASTRING_H__
35 #include <type_traits>
38 #include <google/protobuf/stubs/logging.h>
39 #include <google/protobuf/stubs/common.h>
40 #include <google/protobuf/arena.h>
41 #include <google/protobuf/port.h>
43 #include <google/protobuf/port_def.inc>
46 #error "You cannot SWIG proto headers"
55 class ExplicitlyConstructed;
57 class SwapFieldHelper;
77 mutable std::atomic<const std::string*>
inited_;
81 auto* res = inited_.load(std::memory_order_acquire);
82 if (PROTOBUF_PREDICT_FALSE(res ==
nullptr))
return Init();
119 "TaggedPtr must be trivial");
181 : tagged_ptr_(default_value) {}
198 template <
typename FirstParam>
202 template <
typename FirstParam>
208 template <
typename FirstParam,
typename RefWrappedType>
210 std::reference_wrapper<RefWrappedType> const_string_ref,
212 Set(p1, const_string_ref.get(),
arena);
215 template <
typename FirstParam,
typename SecondParam>
217 Set(p1,
static_cast<SecondParam&&
>(p2),
arena);
219 template <
typename FirstParam>
230 return *tagged_ptr_.Get();
234 return tagged_ptr_.Get();
260 inline PROTOBUF_NDEBUG_INLINE
static void InternalSwap(
277 void ClearNonDefaultToEmpty();
289 inline void UnsafeSetDefault(
const std::string* default_value);
302 void DestroyNoArena(
const std::string* default_value);
312 std::string* UnsafeMutablePointer() PROTOBUF_RETURNS_NONNULL;
314 inline
bool IsDefault(
const std::
string* default_value)
const {
319 return tagged_ptr_.UnsafeGet() == default_value;
334 friend class ::google::protobuf::internal::SwapFieldHelper;
340 template <
typename... Lazy>
347 void DestroyNoArenaSlowPath();
365 #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
367 if (p->IsDefault(default_value))
return;
374 p->tagged_ptr_.Set(new_value);
378 force_realloc(lhs, rhs_arena);
379 force_realloc(rhs, lhs_arena);
380 #endif // PROTOBUF_FORCE_COPY_IN_SWAP
418 #include <google/protobuf/port_undef.inc>
420 #endif // GOOGLE_PROTOBUF_ARENASTRING_H__
const Descriptor::ReservedRange value
void UnsafeSetDefault(const ::std::string *default_value)
constexpr TaggedPtr(const ExplicitlyConstructed< std::string > *ptr)
bool IsDonatedString() const
constexpr ArenaStringPtr(const ExplicitlyConstructed< std::string > *default_value)
void Set(FirstParam p1, const char *str, ::google::protobuf::Arena *arena)
std::string * MutableNoArenaNoDefault(const std::string *default_value)
void SetBytes(FirstParam p1, SecondParam &&p2, ::google::protobuf::Arena *arena)
void SetBytes(FirstParam p1, const void *str, size_t size, ::google::protobuf::Arena *arena)
static int Init(CMessage *self, PyObject *args, PyObject *kwargs)
::std::string * UnsafeMutablePointer()
void UnsafeSetTaggedPointer(TaggedPtr< std::string > value)
TaggedPtr< std::string > tagged_ptr_
#define T(upbtypeconst, upbtype, ctype, default_value)
grpc_core::ScopedArenaPtr arena
static PROTOBUF_NDEBUG_INLINE void InternalSwap(const std::string *default_value, ArenaStringPtr *rhs, Arena *rhs_arena, ArenaStringPtr *lhs, Arena *lhs_arena)
const std::string & ConstStringParam
constexpr absl::remove_reference_t< T > && move(T &&t) noexcept
static PROTOBUF_NDEBUG_INLINE void UnsafeShallowSwap(ArenaStringPtr *rhs, ArenaStringPtr *lhs)
void Set(FirstParam p1, std::reference_wrapper< RefWrappedType > const_string_ref, ::google::protobuf::Arena *arena)
void swap(Json::Value &a, Json::Value &b)
Specialize std::swap() for Json::Value.
const PROTOBUF_NDEBUG_INLINE std::string * GetPointer() const
_W64 unsigned int uintptr_t
void Set(FirstParam p1, const char *str, size_t size, ::google::protobuf::Arena *arena)
bool IsDefault(const ::std::string *default_value) const
void DestroyNoArenaSlowPath()
void Destroy(grpc_transport *)
std::atomic< const std::string * > inited_
const std::string & get() const
std::string * SetAndReturnNewString()
void DestroyNoArena(const ::std::string *default_value)
void ClearNonDefaultToEmpty()
const PROTOBUF_NDEBUG_INLINE std::string & Get() const
grpc
Author(s):
autogenerated on Fri May 16 2025 02:57:42