Public Member Functions | Private Types | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
grpc_core::Table< Ts > Class Template Reference

#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
 
Tableoperator= (const Table &rhs)
 
Tableoperator= (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_
 

Detailed Description

template<typename... Ts>
class grpc_core::Table< Ts >

Definition at line 171 of file table.h.

Member Typedef Documentation

◆ Elements

template<typename... Ts>
using grpc_core::Table< Ts >::Elements = table_detail::Elements<Ts...>
private

Definition at line 335 of file table.h.

◆ GetElem

template<typename... Ts>
template<size_t I>
using grpc_core::Table< Ts >::GetElem = table_detail::GetElem<I, Ts...>
private

Definition at line 338 of file table.h.

◆ PresentBits

template<typename... Ts>
using grpc_core::Table< Ts >::PresentBits = BitSet<sizeof...(Ts)>
private

Definition at line 333 of file table.h.

◆ TypeIndex

template<typename... Ts>
template<size_t I>
using grpc_core::Table< Ts >::TypeIndex = table_detail::TypeIndex<I, Ts...>
private

Definition at line 174 of file table.h.

Constructor & Destructor Documentation

◆ Table() [1/3]

template<typename... Ts>
grpc_core::Table< Ts >::Table ( )
default

◆ ~Table()

template<typename... Ts>
grpc_core::Table< Ts >::~Table ( )
inline

Definition at line 181 of file table.h.

◆ Table() [2/3]

template<typename... Ts>
grpc_core::Table< Ts >::Table ( const Table< Ts > &  rhs)
inline

Definition at line 184 of file table.h.

◆ Table() [3/3]

template<typename... Ts>
grpc_core::Table< Ts >::Table ( Table< Ts > &&  rhs)
inlinenoexcept

Definition at line 198 of file table.h.

◆ ~T()

template<typename... Ts>
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>)-> grpc_core::Table< Ts >::~T ( )

Member Function Documentation

◆ CallIf()

template<typename... Ts>
template<size_t I, typename F >
void grpc_core::Table< Ts >::CallIf ( F *  f) const
inlineprivate

Definition at line 396 of file table.h.

◆ ClearAll()

template<typename... Ts>
void grpc_core::Table< Ts >::ClearAll ( )
inline

Definition at line 328 of file table.h.

◆ ClearAllImpl()

template<typename... Ts>
template<size_t... I>
void grpc_core::Table< Ts >::ClearAllImpl ( absl::index_sequence< I... >  )
inlineprivate

Definition at line 432 of file table.h.

◆ Copy()

template<typename... Ts>
template<bool or_clear, size_t... I>
void grpc_core::Table< Ts >::Copy ( absl::index_sequence< I... >  ,
const Table< Ts > &  rhs 
)
inlineprivate

Definition at line 413 of file table.h.

◆ CopyIf()

template<typename... Ts>
template<bool or_clear, size_t I>
void grpc_core::Table< Ts >::CopyIf ( const Table< Ts > &  rhs)
inlineprivate

Definition at line 374 of file table.h.

◆ count()

template<typename... Ts>
size_t grpc_core::Table< Ts >::count ( ) const
inline

Definition at line 322 of file table.h.

◆ Destruct()

template<typename... Ts>
template<size_t... I>
void grpc_core::Table< Ts >::Destruct ( absl::index_sequence< I... >  )
inlineprivate

Definition at line 405 of file table.h.

◆ element_ptr() [1/2]

template<typename... Ts>
template<size_t I>
TypeIndex<I>* grpc_core::Table< Ts >::element_ptr ( )
inlineprivate

Definition at line 349 of file table.h.

◆ element_ptr() [2/2]

template<typename... Ts>
template<size_t I>
const TypeIndex<I>* grpc_core::Table< Ts >::element_ptr ( ) const
inlineprivate

Definition at line 356 of file table.h.

◆ empty()

template<typename... Ts>
bool grpc_core::Table< Ts >::empty ( ) const
inline

Definition at line 325 of file table.h.

◆ ForEach()

template<typename... Ts>
template<typename F >
void grpc_core::Table< Ts >::ForEach ( f) const
inline

Definition at line 317 of file table.h.

◆ ForEachImpl()

template<typename... Ts>
template<typename F , size_t... I>
void grpc_core::Table< Ts >::ForEachImpl ( f,
absl::index_sequence< I... >   
) const
inlineprivate

Definition at line 427 of file table.h.

◆ has()

template<typename... Ts>
template<typename T >
bool grpc_core::Table< Ts >::has ( ) const
inline

Definition at line 216 of file table.h.

◆ index_of()

template<typename... Ts>
template<typename T >
static constexpr size_t grpc_core::Table< Ts >::index_of ( )
inlinestaticconstexprprivate

Definition at line 342 of file table.h.

◆ Move()

template<typename... Ts>
template<bool or_clear, size_t... I>
void grpc_core::Table< Ts >::Move ( absl::index_sequence< I... >  ,
Table< Ts > &&  rhs 
)
inlineprivate

Definition at line 420 of file table.h.

◆ MoveIf()

template<typename... Ts>
template<bool or_clear, size_t I>
void grpc_core::Table< Ts >::MoveIf ( Table< Ts > &&  rhs)
inlineprivate

Definition at line 386 of file table.h.

◆ operator=() [1/2]

template<typename... Ts>
Table& grpc_core::Table< Ts >::operator= ( const Table< Ts > &  rhs)
inline

Definition at line 190 of file table.h.

◆ operator=() [2/2]

template<typename... Ts>
Table& grpc_core::Table< Ts >::operator= ( Table< Ts > &&  rhs)
inlinenoexcept

Definition at line 205 of file table.h.

◆ set_present()

template<typename... Ts>
template<size_t I>
bool grpc_core::Table< Ts >::set_present ( bool  value)
inlineprivate

Definition at line 364 of file table.h.

Member Data Documentation

◆ elements_

template<typename... Ts>
GPR_NO_UNIQUE_ADDRESS Elements grpc_core::Table< Ts >::elements_
private

Definition at line 439 of file table.h.

◆ present_bits_

template<typename... Ts>
GPR_NO_UNIQUE_ADDRESS PresentBits grpc_core::Table< Ts >::present_bits_
private

Definition at line 437 of file table.h.


The documentation for this class was generated from the following file:


grpc
Author(s):
autogenerated on Fri May 16 2025 03:03:37