Krita Source Code Documentation
Loading...
Searching...
No Matches
KisLazySharedCacheStorageDetail::DataStorage< StorageType, T, Args > Struct Template Reference

#include <KisLazySharedCacheStorage.h>

Public Types

using ConstType = std::add_const_t<T>
 
using FactoryType = T*(Args...)
 

Public Member Functions

 DataStorage ()
 
 DataStorage (const DataStorage &rhs)=default
 
 DataStorage (T *value)
 
bool hasValue () const
 
ConstTypelazyInitialize (const std::function< FactoryType > &factory, Args... args)
 
DataStorageoperator= (const DataStorage &rhs)=default
 
void reset ()
 

Private Attributes

StorageType m_value
 

Detailed Description

template<typename StorageType, typename T, typename... Args>
struct KisLazySharedCacheStorageDetail::DataStorage< StorageType, T, Args >

A policy-like class for sharing the data between two objects

Definition at line 28 of file KisLazySharedCacheStorage.h.

Member Typedef Documentation

◆ ConstType

template<typename StorageType , typename T , typename... Args>
using KisLazySharedCacheStorageDetail::DataStorage< StorageType, T, Args >::ConstType = std::add_const_t<T>

Definition at line 30 of file KisLazySharedCacheStorage.h.

◆ FactoryType

template<typename StorageType , typename T , typename... Args>
using KisLazySharedCacheStorageDetail::DataStorage< StorageType, T, Args >::FactoryType = T*(Args...)

Definition at line 31 of file KisLazySharedCacheStorage.h.

Constructor & Destructor Documentation

◆ DataStorage() [1/3]

template<typename StorageType , typename T , typename... Args>
KisLazySharedCacheStorageDetail::DataStorage< StorageType, T, Args >::DataStorage ( )
inline

Definition at line 33 of file KisLazySharedCacheStorage.h.

33{}

◆ DataStorage() [2/3]

template<typename StorageType , typename T , typename... Args>
KisLazySharedCacheStorageDetail::DataStorage< StorageType, T, Args >::DataStorage ( T * value)
inline

Definition at line 34 of file KisLazySharedCacheStorage.h.

34: m_value(value) {}
float value(const T *src, size_t ch)

◆ DataStorage() [3/3]

template<typename StorageType , typename T , typename... Args>
KisLazySharedCacheStorageDetail::DataStorage< StorageType, T, Args >::DataStorage ( const DataStorage< StorageType, T, Args > & rhs)
default

Member Function Documentation

◆ hasValue()

template<typename StorageType , typename T , typename... Args>
bool KisLazySharedCacheStorageDetail::DataStorage< StorageType, T, Args >::hasValue ( ) const
inline

Definition at line 45 of file KisLazySharedCacheStorage.h.

45 {
46 return !m_value.isNull();
47 }

References KisLazySharedCacheStorageDetail::DataStorage< StorageType, T, Args >::m_value.

◆ lazyInitialize()

template<typename StorageType , typename T , typename... Args>
ConstType * KisLazySharedCacheStorageDetail::DataStorage< StorageType, T, Args >::lazyInitialize ( const std::function< FactoryType > & factory,
Args... args )
inline

Definition at line 38 of file KisLazySharedCacheStorage.h.

38 {
39 if (!m_value) {
40 m_value.reset(factory(std::forward<Args...>(args...)));
41 }
42 return m_value.data();
43 }

References KisLazySharedCacheStorageDetail::DataStorage< StorageType, T, Args >::m_value.

◆ operator=()

template<typename StorageType , typename T , typename... Args>
DataStorage & KisLazySharedCacheStorageDetail::DataStorage< StorageType, T, Args >::operator= ( const DataStorage< StorageType, T, Args > & rhs)
default

◆ reset()

template<typename StorageType , typename T , typename... Args>
void KisLazySharedCacheStorageDetail::DataStorage< StorageType, T, Args >::reset ( )
inline

Member Data Documentation

◆ m_value

template<typename StorageType , typename T , typename... Args>
StorageType KisLazySharedCacheStorageDetail::DataStorage< StorageType, T, Args >::m_value
private

Definition at line 54 of file KisLazySharedCacheStorage.h.


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