Electroneum
el::base::utils::AbstractRegistry< T_Ptr, Container > Class Template Referenceabstract

Abstract registry (aka repository) that provides basic interface for pointer repository specified by T_Ptr type. More...

#include <easylogging++.h>

Inheritance diagram for el::base::utils::AbstractRegistry< T_Ptr, Container >:
Collaboration diagram for el::base::utils::AbstractRegistry< T_Ptr, Container >:

Public Types

typedef Container::iterator iterator
 
typedef Container::const_iterator const_iterator
 

Public Member Functions

 AbstractRegistry (void)
 Default constructor. More...
 
 AbstractRegistry (AbstractRegistry &&sr)
 Move constructor that is useful for base classes. More...
 
bool operator== (const AbstractRegistry< T_Ptr, Container > &other)
 
bool operator!= (const AbstractRegistry< T_Ptr, Container > &other)
 
AbstractRegistryoperator= (AbstractRegistry &&sr)
 Assignment move operator. More...
 
virtual ~AbstractRegistry (void)
 
virtual iterator begin (void) ELPP_FINAL
 
virtual iterator end (void) ELPP_FINAL
 
virtual const_iterator cbegin (void) const ELPP_FINAL
 
virtual const_iterator cend (void) const ELPP_FINAL
 
virtual bool empty (void) const ELPP_FINAL
 
virtual std::size_t size (void) const ELPP_FINAL
 
virtual Container & list (void) ELPP_FINAL
 Returns underlying container by reference. More...
 
virtual const Container & list (void) const ELPP_FINAL
 Returns underlying container by constant reference. More...
 
virtual void unregisterAll (void)=0
 Unregisters all the pointers from current repository. More...
 
- Public Member Functions inherited from el::base::threading::ThreadSafe
virtual void acquireLock (void) ELPP_FINAL
 
virtual void releaseLock (void) ELPP_FINAL
 
virtual base::threading::Mutexlock (void) ELPP_FINAL
 

Protected Member Functions

virtual void deepCopy (const AbstractRegistry< T_Ptr, Container > &)=0
 
void reinitDeepCopy (const AbstractRegistry< T_Ptr, Container > &sr)
 
- Protected Member Functions inherited from el::base::threading::ThreadSafe
 ThreadSafe (void)
 
virtual ~ThreadSafe (void)
 

Detailed Description

template<typename T_Ptr, typename Container>
class el::base::utils::AbstractRegistry< T_Ptr, Container >

Abstract registry (aka repository) that provides basic interface for pointer repository specified by T_Ptr type.

Most of the functions are virtual final methods but anything implementing this abstract class should implement unregisterAll() and deepCopy(const AbstractRegistry<T_Ptr, Container>&) and write registerNew() method according to container and few more methods; get() to find element, unregister() to unregister single entry. Please note that this is thread-unsafe and should also implement thread-safety mechanisms in implementation.

Definition at line 1278 of file easylogging++.h.

Member Typedef Documentation

◆ const_iterator

template<typename T_Ptr, typename Container>
typedef Container::const_iterator el::base::utils::AbstractRegistry< T_Ptr, Container >::const_iterator

Definition at line 1281 of file easylogging++.h.

◆ iterator

template<typename T_Ptr, typename Container>
typedef Container::iterator el::base::utils::AbstractRegistry< T_Ptr, Container >::iterator

Definition at line 1280 of file easylogging++.h.

Constructor & Destructor Documentation

◆ AbstractRegistry() [1/2]

template<typename T_Ptr, typename Container>
el::base::utils::AbstractRegistry< T_Ptr, Container >::AbstractRegistry ( void  )
inline

Default constructor.

Definition at line 1284 of file easylogging++.h.

1284 {}

◆ AbstractRegistry() [2/2]

template<typename T_Ptr, typename Container>
el::base::utils::AbstractRegistry< T_Ptr, Container >::AbstractRegistry ( AbstractRegistry< T_Ptr, Container > &&  sr)
inline

Move constructor that is useful for base classes.

Definition at line 1287 of file easylogging++.h.

1287  {
1288  if (this == &sr) {
1289  return;
1290  }
1291  unregisterAll();
1292  m_list = std::move(sr.m_list);
1293  }
virtual void unregisterAll(void)=0
Unregisters all the pointers from current repository.
const T & move(const T &t)
Definition: gtest-port.h:1317

◆ ~AbstractRegistry()

template<typename T_Ptr, typename Container>
virtual el::base::utils::AbstractRegistry< T_Ptr, Container >::~AbstractRegistry ( void  )
inlinevirtual

Definition at line 1329 of file easylogging++.h.

1329  {
1330  }

Member Function Documentation

◆ begin()

template<typename T_Ptr, typename Container>
virtual iterator el::base::utils::AbstractRegistry< T_Ptr, Container >::begin ( void  )
inlinevirtual
Returns
Iterator pointer from start of repository

Definition at line 1333 of file easylogging++.h.

1333  {
1334  return m_list.begin();
1335  }

◆ cbegin()

template<typename T_Ptr, typename Container>
virtual const_iterator el::base::utils::AbstractRegistry< T_Ptr, Container >::cbegin ( void  ) const
inlinevirtual
Returns
Constant iterator pointer from start of repository

Definition at line 1344 of file easylogging++.h.

1344  {
1345  return m_list.cbegin();
1346  }

◆ cend()

template<typename T_Ptr, typename Container>
virtual const_iterator el::base::utils::AbstractRegistry< T_Ptr, Container >::cend ( void  ) const
inlinevirtual
Returns
End of repository

Definition at line 1349 of file easylogging++.h.

1349  {
1350  return m_list.cend();
1351  }

◆ deepCopy()

template<typename T_Ptr, typename Container>
virtual void el::base::utils::AbstractRegistry< T_Ptr, Container >::deepCopy ( const AbstractRegistry< T_Ptr, Container > &  )
protectedpure virtual
Here is the caller graph for this function:

◆ empty()

template<typename T_Ptr, typename Container>
virtual bool el::base::utils::AbstractRegistry< T_Ptr, Container >::empty ( void  ) const
inlinevirtual
Returns
Whether or not repository is empty

Definition at line 1354 of file easylogging++.h.

1354  {
1355  return m_list.empty();
1356  }

◆ end()

template<typename T_Ptr, typename Container>
virtual iterator el::base::utils::AbstractRegistry< T_Ptr, Container >::end ( void  )
inlinevirtual
Returns
Iterator pointer from end of repository

Definition at line 1338 of file easylogging++.h.

1338  {
1339  return m_list.end();
1340  }

◆ list() [1/2]

template<typename T_Ptr, typename Container>
virtual Container& el::base::utils::AbstractRegistry< T_Ptr, Container >::list ( void  )
inlinevirtual

Returns underlying container by reference.

Definition at line 1364 of file easylogging++.h.

1364  {
1365  return m_list;
1366  }

◆ list() [2/2]

template<typename T_Ptr, typename Container>
virtual const Container& el::base::utils::AbstractRegistry< T_Ptr, Container >::list ( void  ) const
inlinevirtual

Returns underlying container by constant reference.

Definition at line 1369 of file easylogging++.h.

1369  {
1370  return m_list;
1371  }

◆ operator!=()

template<typename T_Ptr, typename Container>
bool el::base::utils::AbstractRegistry< T_Ptr, Container >::operator!= ( const AbstractRegistry< T_Ptr, Container > &  other)
inline

Definition at line 1307 of file easylogging++.h.

1307  {
1308  if (size() != other.size()) {
1309  return true;
1310  }
1311  for (std::size_t i = 0; i < m_list.size(); ++i) {
1312  if (m_list.at(i) != other.m_list.at(i)) {
1313  return true;
1314  }
1315  }
1316  return false;
1317  }
virtual std::size_t size(void) const ELPP_FINAL

◆ operator=()

template<typename T_Ptr, typename Container>
AbstractRegistry& el::base::utils::AbstractRegistry< T_Ptr, Container >::operator= ( AbstractRegistry< T_Ptr, Container > &&  sr)
inline

Assignment move operator.

Definition at line 1320 of file easylogging++.h.

1320  {
1321  if (this == &sr) {
1322  return *this;
1323  }
1324  unregisterAll();
1325  m_list = std::move(sr.m_list);
1326  return *this;
1327  }
virtual void unregisterAll(void)=0
Unregisters all the pointers from current repository.
const T & move(const T &t)
Definition: gtest-port.h:1317

◆ operator==()

template<typename T_Ptr, typename Container>
bool el::base::utils::AbstractRegistry< T_Ptr, Container >::operator== ( const AbstractRegistry< T_Ptr, Container > &  other)
inline

Definition at line 1295 of file easylogging++.h.

1295  {
1296  if (size() != other.size()) {
1297  return false;
1298  }
1299  for (std::size_t i = 0; i < m_list.size(); ++i) {
1300  if (m_list.at(i) != other.m_list.at(i)) {
1301  return false;
1302  }
1303  }
1304  return true;
1305  }
virtual std::size_t size(void) const ELPP_FINAL

◆ reinitDeepCopy()

template<typename T_Ptr, typename Container>
void el::base::utils::AbstractRegistry< T_Ptr, Container >::reinitDeepCopy ( const AbstractRegistry< T_Ptr, Container > &  sr)
inlineprotected

Definition at line 1378 of file easylogging++.h.

1378  {
1379  unregisterAll();
1380  deepCopy(sr);
1381  }
virtual void deepCopy(const AbstractRegistry< T_Ptr, Container > &)=0
virtual void unregisterAll(void)=0
Unregisters all the pointers from current repository.

◆ size()

template<typename T_Ptr, typename Container>
virtual std::size_t el::base::utils::AbstractRegistry< T_Ptr, Container >::size ( void  ) const
inlinevirtual
Returns
Size of repository

Definition at line 1359 of file easylogging++.h.

1359  {
1360  return m_list.size();
1361  }
Here is the caller graph for this function:

◆ unregisterAll()

template<typename T_Ptr, typename Container>
virtual void el::base::utils::AbstractRegistry< T_Ptr, Container >::unregisterAll ( void  )
pure virtual

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