mirror of
https://github.com/KingDuckZ/dindexer.git
synced 2025-08-11 14:19:49 +00:00
Split Base into LeanBase and Base.
Build not tested - intermediate commit.
This commit is contained in:
parent
d579b311f2
commit
c64e572fc8
2 changed files with 85 additions and 16 deletions
|
@ -18,49 +18,51 @@
|
|||
#ifndef idCB253C1A5AFA46A18B8878ED4072CD96
|
||||
#define idCB253C1A5AFA46A18B8878ED4072CD96
|
||||
|
||||
#include "dindexer-machinery/scantask/leanbase.hpp"
|
||||
#include <ciso646>
|
||||
#include <cassert>
|
||||
|
||||
namespace mchlib {
|
||||
namespace scantask {
|
||||
template <typename T>
|
||||
class Base {
|
||||
class Base : public LeanBase<T> {
|
||||
protected:
|
||||
Base ( void );
|
||||
virtual ~Base ( void ) noexcept = default;
|
||||
|
||||
public:
|
||||
T& get_or_create ( void );
|
||||
void clear_data ( void );
|
||||
|
||||
private:
|
||||
virtual void on_data_destroy ( T& parData ) = 0;
|
||||
virtual void on_data_create ( T& parData ) = 0;
|
||||
|
||||
virtual T& on_data_get ( void ) final;
|
||||
virtual void on_data_fill ( void ) final;
|
||||
|
||||
using LeanBase<T>::unset_data_created;
|
||||
|
||||
T m_data;
|
||||
bool m_data_created;
|
||||
};
|
||||
|
||||
template <typename T>
|
||||
Base<T>::Base() :
|
||||
m_data_created(false)
|
||||
{
|
||||
Base<T>::Base() {
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
T& Base<T>::get_or_create() {
|
||||
if (not m_data_created) {
|
||||
m_data_created = true;
|
||||
this->on_data_create(m_data);
|
||||
}
|
||||
return m_data;
|
||||
void Base<T>::on_data_fill() {
|
||||
this->on_data_create(m_data);
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
void Base<T>::clear_data() {
|
||||
if (m_data_created) {
|
||||
m_data_created = false;
|
||||
this->on_data_destroy(m_data);
|
||||
}
|
||||
this->unset_data_created();
|
||||
this->on_data_destroy(m_data);
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
T& Base<T>::on_data_get() {
|
||||
return m_data;
|
||||
}
|
||||
} //namespace scantask
|
||||
} //namespace mchlib
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue