#include <table.h>
Public Member Functions | |
| void | ClearAll () |
| size_t | count () const |
| bool | empty () const |
| template<typename F > | |
| void | ForEach (F f) const |
| template<typename T > | |
| bool | has () const |
| Table & | operator= (const Table &rhs) |
| Table & | operator= (Table &&rhs) noexcept |
| Table ()=default | |
| Table (const Table &rhs) | |
| Table (Table &&rhs) noexcept | |
| template<size_t I> | |
| absl::enable_if_t< I< sizeof...(Ts), bool > has() const { return present_bits_.is_set(I);} template< typename T > T *get() { return get< index_of< T >)>);} template< typename T > const T *get() const { return get< index_of< T >)>);} template< size_t I > TypeIndex< I > *get() { if(has< I >)) return element_ptr< I >);return nullptr;} template< size_t I > const TypeIndex< I > *get() const { if(has< I >)) return element_ptr< I >);return nullptr;} template< typename T > T *get_or_create() { return get_or_create< index_of< T >)>);} template< size_t I > TypeIndex< I > *get_or_create() { auto *p=element_ptr< I >);if(!set_present< I >true)) { new(p) TypeIndex< I >);} return element_ptr< I >);} template< typename T, typename... Args > T *set(Args &&... args) { return set< index_of< T >)>std::forward< Args >args)...);} template< size_t I, typename... Args > TypeIndex< I > *set(Args &&... args) { auto *p=element_ptr< I >);if(set_present< I >true)) { TypeIndex< I > replacement(std::forward< Args >args)...);*p=std::move(replacement);} else { new(p) TypeIndex< I >std::forward< Args >args)...);} return p;} template< size_t I > TypeIndex< I > *set(TypeIndex< I > &&value) { auto *p=element_ptr< I >);if(set_present< I >true)) { *p=std::forward< TypeIndex< I > >value);} else { new(p) TypeIndex< I >std::forward< TypeIndex< I > >value));} return p;} template< typename T > void clear() { clear< index_of< T >)>);} template< size_t I > void clear() { if(set_present< I >false)) { using T=TypeIndex< I >;element_ptr< I >) -> | ~T () |
| ~Table () | |
Private Types | |
| using | Elements = table_detail::Elements< Ts... > |
| template<size_t I> | |
| using | GetElem = table_detail::GetElem< I, Ts... > |
| using | PresentBits = BitSet< sizeof...(Ts)> |
| template<size_t I> | |
| using | TypeIndex = table_detail::TypeIndex< I, Ts... > |
Private Member Functions | |
| template<size_t I, typename F > | |
| void | CallIf (F *f) const |
| template<size_t... I> | |
| void | ClearAllImpl (absl::index_sequence< I... >) |
| template<bool or_clear, size_t... I> | |
| void | Copy (absl::index_sequence< I... >, const Table &rhs) |
| template<bool or_clear, size_t I> | |
| void | CopyIf (const Table &rhs) |
| template<size_t... I> | |
| void | Destruct (absl::index_sequence< I... >) |
| template<size_t I> | |
| TypeIndex< I > * | element_ptr () |
| template<size_t I> | |
| const TypeIndex< I > * | element_ptr () const |
| template<typename F , size_t... I> | |
| void | ForEachImpl (F f, absl::index_sequence< I... >) const |
| template<bool or_clear, size_t... I> | |
| void | Move (absl::index_sequence< I... >, Table &&rhs) |
| template<bool or_clear, size_t I> | |
| void | MoveIf (Table &&rhs) |
| template<size_t I> | |
| bool | set_present (bool value) |
Static Private Member Functions | |
| template<typename T > | |
| static constexpr size_t | index_of () |
Private Attributes | |
| GPR_NO_UNIQUE_ADDRESS Elements | elements_ |
| GPR_NO_UNIQUE_ADDRESS PresentBits | present_bits_ |
|
private |
|
private |
|
private |
|
private |
|
default |
|
inline |
|
inline |
|
inlinenoexcept |
| absl::enable_if_t< I<sizeof...(Ts), bool> has() const { return present_bits_.is_set(I); } template <typename T> T* get() { return get<index_of<T>)>); } template <typename T> const T* get() const { return get<index_of<T>)>); } template <size_t I> TypeIndex<I>* get() { if (has<I>)) return element_ptr<I>); return nullptr; } template <size_t I> const TypeIndex<I>* get() const { if (has<I>)) return element_ptr<I>); return nullptr; } template <typename T> T* get_or_create() { return get_or_create<index_of<T>)>); } template <size_t I> TypeIndex<I>* get_or_create() { auto* p = element_ptr<I>); if (!set_present<I>true)) { new (p) TypeIndex<I>); } return element_ptr<I>); } template <typename T, typename... Args> T* set(Args&&... args) { return set<index_of<T>)>std::forward<Args>args)...); } template <size_t I, typename... Args> TypeIndex<I>* set(Args&&... args) { auto* p = element_ptr<I>); if (set_present<I>true)) { TypeIndex<I> replacement(std::forward<Args>args)...); *p = std::move(replacement); } else { new (p) TypeIndex<I>std::forward<Args>args)...); } return p; } template <size_t I> TypeIndex<I>* set(TypeIndex<I>&& value) { auto* p = element_ptr<I>); if (set_present<I>true)) { *p = std::forward<TypeIndex<I> >value); } else { new (p) TypeIndex<I>std::forward<TypeIndex<I> >value)); } return p; } template <typename T> void clear() { clear<index_of<T>)>); } template <size_t I> void clear() { if (set_present<I>false)) { using T = TypeIndex<I>; element_ptr<I>)-> grpc_core::Table< Ts >::~T | ( | ) |
|
inlineprivate |
|
inline |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
inline |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
inline |
|
inline |
|
inlineprivate |
|
inlinestaticconstexprprivate |
|
inlineprivate |
|
inlineprivate |
|
inline |
|
inlinenoexcept |
|
inlineprivate |
|
private |
|
private |