Go to the documentation of this file.
16 #include "absl/flags/internal/flag.h"
30 #include "absl/base/call_once.h"
31 #include "absl/base/casts.h"
32 #include "absl/base/config.h"
33 #include "absl/base/dynamic_annotations.h"
34 #include "absl/base/optimization.h"
35 #include "absl/flags/config.h"
36 #include "absl/flags/internal/commandlineflag.h"
37 #include "absl/flags/usage_config.h"
38 #include "absl/memory/memory.h"
39 #include "absl/strings/str_cat.h"
40 #include "absl/strings/string_view.h"
41 #include "absl/synchronization/mutex.h"
45 namespace flags_internal {
57 #define DONT_VALIDATE(T, _) \
58 if (flag_type_id == base_internal::FastTypeId<T>()) return false;
74 MutexRelock(
const MutexRelock&) =
delete;
75 MutexRelock& operator=(
const MutexRelock&) =
delete;
138 if (
op ==
nullptr)
return;
167 std::memory_order_release);
196 const std::type_info* (*gen_rtti)())
const {
205 const std::type_info* lhs_runtime_type_id =
207 const std::type_info* rhs_runtime_type_id = (*gen_rtti)();
209 if (lhs_runtime_type_id == rhs_runtime_type_id)
return;
211 #ifdef ABSL_INTERNAL_HAS_RTTI
212 if (*lhs_runtime_type_id == *rhs_runtime_type_id)
return;
217 "' is defined as one type and declared as another"));
244 OneWordValue().store(one_word_val, std::memory_order_release);
297 const auto one_word_val =
320 if (callback_ ==
nullptr) {
323 callback_->
func = mutation_callback;
329 if (!callback_)
return;
359 return absl::make_unique<FlagState>(
369 static_cast<void>(success);
370 return absl::make_unique<FlagState>(*
this, cloned, modified,
374 return absl::make_unique<FlagState>(
405 template <
typename StorageT>
407 char* p =
reinterpret_cast<char*
>(
const_cast<FlagImpl*
>(
this));
411 return reinterpret_cast<StorageT*
>(p +
offset);
416 return OffsetValue<void>();
421 return OffsetValue<std::atomic<uint64_t>>();
427 return OffsetValue<FlagOneWordValue>()->value;
436 std::unique_ptr<void, DynValueDeleter> tentative_value =
MakeInitValue();
442 Name(),
"'", err_sep, parse_err);
446 return tentative_value;
483 return absl::bit_cast<FlagValueAndInitBit<bool>>(
499 static_cast<void>(success);
512 "' to invalid value ", src_as_str));
535 if (!tentative_value)
return false;
556 if (!tentative_value)
return false;
563 if (!tentative_value)
return false;
597 "): string form of default value '",
v,
598 "' could not be parsed; error=",
error));
void CheckDefaultValueParsingRoundtrip() const override ABSL_LOCKS_EXCLUDED(*DataGuard())
flags_internal::SequenceLock seq_lock_
OPENSSL_EXPORT const ASN1_OBJECT * obj
size_t Sizeof(FlagOpFn op)
int64_t ModificationCount() const ABSL_EXCLUSIVE_LOCKS_REQUIRED(*DataGuard())
void IncrementModificationCount()
bool ReadOneBool() const ABSL_LOCKS_EXCLUDED(*DataGuard())
FlagDefaultSrc default_value_
std::string DefaultValue() const override ABSL_LOCKS_EXCLUDED(*DataGuard())
FlagHelpKind HelpSourceKind() const
std::string StrCat(const AlphaNum &a, const AlphaNum &b)
#define ABSL_ANNOTATE_MEMORY_IS_INITIALIZED(address, size)
void SetCallback(const FlagCallbackFunc mutation_callback) ABSL_LOCKS_EXCLUDED(*DataGuard())
std::string Help() const override
std::string CurrentValue() const override ABSL_LOCKS_EXCLUDED(*DataGuard())
absl::string_view Name() const override
bool RestoreState(const FlagState &flag_state) ABSL_LOCKS_EXCLUDED(*DataGuard())
absl::base_internal::FastTypeIdType FlagFastTypeId
std::string Unparse(FlagOpFn op, const void *val)
PHP_PROTO_OBJECT_FREE_END PHP_PROTO_OBJECT_DTOR_END intern array
void Unlock() ABSL_UNLOCK_FUNCTION()
Dest bit_cast(const Source &source)
const char kStrippedFlagHelp[]
void(*)() FlagCallbackFunc
std::function< std::string(absl::string_view)> normalize_filename
#define ABSL_NAMESPACE_END
FlagValueStorageKind ValueStorageKind() const
void Write(std::atomic< uint64_t > *dst, const void *src, size_t size)
std::unique_ptr< FlagStateInterface > SaveState() override ABSL_LOCKS_EXCLUDED(*DataGuard())
int64_t ReadOneWord() const ABSL_LOCKS_EXCLUDED(*DataGuard())
FlagDefaultKind DefaultKind() const ABSL_EXCLUSIVE_LOCKS_REQUIRED(*DataGuard())
void call_once(absl::once_flag &flag, Callable &&fn, Args &&... args)
bool ParseFrom(absl::string_view value, FlagSettingMode set_mode, ValueSource source, std::string &error) override ABSL_LOCKS_EXCLUDED(*DataGuard())
memcpy(mem, inblock.get(), min(CONTAINING_RECORD(inblock.get(), MEMBLOCK, data) ->size, size))
#define ABSL_NAMESPACE_BEGIN
FlagFastTypeId FastTypeId(FlagOpFn op)
std::string Filename() const override
void Write(const void *src) ABSL_LOCKS_EXCLUDED(*DataGuard())
void * Clone(FlagOpFn op, const void *obj)
void Lock() ABSL_EXCLUSIVE_LOCK_FUNCTION()
void AssertValidType(FlagFastTypeId type_id, const std::type_info *(*gen_rtti)()) const
bool TryRead(void *dst, const std::atomic< uint64_t > *src, size_t size) const
std::atomic< int64_t > & OneWordValue() const
std::unique_ptr< void, DynValueDeleter > TryParse(absl::string_view value, std::string &err) const ABSL_EXCLUSIVE_LOCKS_REQUIRED(*DataGuard())
bool Parse(FlagOpFn op, absl::string_view text, void *dst, std::string *error)
void * Alloc(FlagOpFn op)
FlagCallback *callback_ ABSL_GUARDED_BY * DataGuard()
#define ABSL_FLAGS_INTERNAL_SUPPORTED_TYPES(A)
static const LogLevel ERROR
#define ABSL_PREDICT_TRUE(x)
bool IsSpecifiedOnCommandLine() const override ABSL_LOCKS_EXCLUDED(*DataGuard())
std::atomic< uint64_t > * AtomicBufferValue() const
char data_guard_[sizeof(absl::Mutex)]
void Delete(FlagOpFn op, void *obj)
void CopyConstruct(FlagOpFn op, const void *src, void *dst)
FlagFastTypeId TypeId() const override
void Read(void *dst) const override ABSL_LOCKS_EXCLUDED(*DataGuard())
void ReadSequenceLockedData(void *dst) const ABSL_LOCKS_EXCLUDED(*DataGuard())
bool ValidateInputValue(absl::string_view value) const override ABSL_LOCKS_EXCLUDED(*DataGuard())
const char *const filename_
absl::once_flag init_control_
ptrdiff_t ValueOffset(FlagOpFn op)
FlagsUsageConfig GetUsageConfig()
FlagState(FlagImpl &flag_impl, const V &v, bool modified, bool on_command_line, int64_t counter)
absl::Mutex *DataGuard() const ABSL_LOCK_RETURNED(reinterpret_cast< absl std::unique_ptr< void, DynValueDeleter > MakeInitValue() const ABSL_EXCLUSIVE_LOCKS_REQUIRED(*DataGuard())
DynValueDeleter(FlagOpFn op_arg=nullptr)
void *(*)(FlagOp, const void *, void *, void *) FlagOpFn
union absl::flags_internal::FlagState::SavedValue value_
constexpr bool empty() const noexcept
StorageT * OffsetValue() const
const std::type_info * RuntimeTypeId(FlagOpFn op)
void operator()(void *ptr) const
void Restore() const override
void * AlignedBufferValue() const
#define ABSL_INTERNAL_LOG(severity, message)
void StoreValue(const void *src) ABSL_EXCLUSIVE_LOCKS_REQUIRED(*DataGuard())
int64_t ModificationCount() const
#define DONT_VALIDATE(T, _)
OPENSSL_EXPORT pem_password_cb * cb
void Copy(FlagOpFn op, const void *src, void *dst)
void InvokeCallback() const ABSL_EXCLUSIVE_LOCKS_REQUIRED(*DataGuard())
grpc
Author(s):
autogenerated on Fri May 16 2025 02:58:24