OpendTect  7.0
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | List of all members
MemSetter< T > Class Template Reference

Sets large amounts of values to a constant using multiple threads. More...

Inheritance diagram for MemSetter< T >:
[legend]

Public Types

typedef T(* ValueFunc) ()
 
- Public Types inherited from Task
enum  Control { Run , Pause , Stop }
 
- Public Types inherited from ObjectWithName
typedef OD::String name_type
 

Public Member Functions

 MemSetter ()
 
 MemSetter (T *, T val, std::int64_t sz)
 
 MemSetter (ValueSeries< T > &, T val, std::int64_t sz)
 
void setSize (std::int64_t sz)
 
void setTarget (T *ptr)
 
void setTarget (ValueSeries< T > &vs)
 
void setValue (const T &val)
 
void setValueFunc (ValueFunc valfunc)
 
uiString uiMessage () const override
 will be message() again in 7.x More...
 
uiString uiNrDoneText () const override
 will be nrDoneText() in 7.x More...
 
- Public Member Functions inherited from ParallelTask
virtual ~ParallelTask ()
 
void doParallel (bool yn)
 
bool execute () override
 
virtual bool executeParallel (bool parallel)
 
std::int64_t nrDone () const override
 May be -1, i.e. class does not report nrdone. More...
 
std::int64_t totalNr () const override
 
- Public Member Functions inherited from ReportingTask
virtual ~ReportingTask ()
 
void getProgress (const ReportingTask &)
 
- Public Member Functions inherited from Task
virtual ~Task ()
 
virtual void controlWork (Control)
 
virtual void enableWorkControl (bool=true)
 Must be called before execute() More...
 
virtual uiRetVal errorWithDetails () const
 
virtual Control getState () const
 
bool workControlEnabled () const
 
- Public Member Functions inherited from NamedCallBacker
 NamedCallBacker (const char *nm=0)
 
 NamedCallBacker (const NamedCallBacker &)
 
virtual Notifier< NamedCallBacker > & objectToBeDeleted () const
 
bool operator== (const NamedCallBacker &oth) const
 
bool operator== (const NamedObject &oth) const
 
- Public Member Functions inherited from CallBacker
 CallBacker ()
 
 CallBacker (const CallBacker &)
 
virtual ~CallBacker ()
 
bool attachCB (const NotifierAccess &, const CallBack &, bool onlyifnew=false) const
 
bool attachCB (const NotifierAccess *notif, const CallBack &cb, bool onlyifnew=false) const
 
void detachAllNotifiers () const
 Call from the destructor of your inherited object. More...
 
void detachCB (const NotifierAccess &, const CallBack &) const
 
void detachCB (const NotifierAccess *notif, const CallBack &cb) const
 
virtual bool isCapsule () const
 
bool isNotifierAttached (const NotifierAccess *) const
 Only for debugging purposes, don't use. More...
 
void stopReceivingNotifications () const
 
virtual CallBackertrueCaller ()
 
- Public Member Functions inherited from NamedObject
 NamedObject (const char *nm=nullptr)
 
 NamedObject (const NamedObject &oth)
 
virtual ~NamedObject ()
 
virtual BufferString getName () const
 
bool getNameFromPar (const IOPar &)
 
const name_typename () const override
 
NamedObjectoperator= (const NamedObject &)
 
bool operator== (const NamedObject &oth) const
 
virtual void setName (const char *nm)
 
- Public Member Functions inherited from ObjectWithName
virtual ~ObjectWithName ()
 
bool hasName (const char *nm) const
 
bool hasName (const name_type &nm) const
 
void putNameInPar (IOPar &) const
 

Protected Member Functions

int minThreadSize () const override
 
std::int64_t nrIterations () const override
 
bool setPtr (std::int64_t start, std::int64_t size)
 
bool setPtr (std::int64_t start, std::int64_t size)
 
bool setPtr (std::int64_t start, std::int64_t size)
 
bool setPtr (std::int64_t start, std::int64_t size)
 
bool setPtr (std::int64_t start, std::int64_t size)
 
bool setPtr (std::int64_t start, std::int64_t size)
 
bool setPtr (std::int64_t start, std::int64_t size)
 
bool setPtr (std::int64_t start, std::int64_t size)
 
bool setPtr (std::int64_t start, std::int64_t size)
 
bool setPtr (std::int64_t start, std::int64_t size)
 
bool setPtr (std::int64_t start, std::int64_t size)
 
bool setPtr (std::int64_t start, std::int64_t size)
 
- Protected Member Functions inherited from ParallelTask
 ParallelTask (const char *nm=0)
 
 ParallelTask (const ParallelTask &)
 
void addToNrDone (std::int64_t increment)
 
std::int64_t calculateThreadSize (std::int64_t totalnr, int nrthreads, int thread) const
 
virtual int maxNrThreads () const
 
void quickAddToNrDone (std::int64_t loopidx)
 
void resetNrDone ()
 
virtual bool stopAllOnFailure () const
 
- Protected Member Functions inherited from ReportingTask
 ReportingTask (const char *nm=nullptr)
 
void incrementProgress ()
 
ProgressMeterprogressMeter () const
 
void reportProgressFinished ()
 
void reportProgressStarted ()
 
void resetProgress ()
 
void setProgressMeter (ProgressMeter *) override
 Must be called before execute() More...
 
void updateProgressMeter (bool forced=false, std::int64_t *totalnr=0)
 
void updateReportedName ()
 
- Protected Member Functions inherited from Task
 Task (const char *nm=nullptr)
 
virtual bool shouldContinue ()
 
- Protected Member Functions inherited from NamedCallBacker
void sendDelNotif () const
 

Protected Attributes

T * ptr_ = nullptr
 
std::int64_t sz_ = -1
 
val_ = T()
 
ValueFunc valfunc_ = nullptr
 
ValueSeries< T > * vs_ = nullptr
 
- Protected Attributes inherited from Task
Control control_
 
Threads::ConditionVarworkcontrolcondvar_
 
- Protected Attributes inherited from NamedCallBacker
Threads::Atomic< bool > delalreadytriggered_
 
Notifier< NamedCallBackerdelnotif_
 
- Protected Attributes inherited from NamedObject
BufferString name_
 

Private Member Functions

bool doPrepare (int) override
 
bool doWork (std::int64_t, std::int64_t, int) override
 

Additional Inherited Members

- Static Public Member Functions inherited from ParallelTask
static uiString sPosFinished ()
 
static uiString sTrcFinished ()
 
- Static Public Member Functions inherited from Task
static uiString stdNrDoneText ()
 
static uiString uiStdNrDoneText ()
 
- Static Public Member Functions inherited from CallBacker
static void createReceiverForCurrentThread ()
 
static void removeReceiverForCurrentThread ()
 
- Public Attributes inherited from ReportingTask
Notifier< ReportingTaskprogressUpdated
 

Detailed Description

template<class T>
class MemSetter< T >

Sets large amounts of values to a constant using multiple threads.

For simple initializations, use OD::memValueSet.

<>

Member Typedef Documentation

◆ ValueFunc

template<class T >
typedef T(* MemSetter< T >::ValueFunc) ()

Constructor & Destructor Documentation

◆ MemSetter() [1/3]

template<class T >
MemSetter< T >::MemSetter
inline

◆ MemSetter() [2/3]

template<class T >
MemSetter< T >::MemSetter ( T *  ptr,
val,
std::int64_t  sz 
)
inline

◆ MemSetter() [3/3]

template<class T >
MemSetter< T >::MemSetter ( ValueSeries< T > &  vs,
val,
std::int64_t  sz 
)
inline

Member Function Documentation

◆ doPrepare()

template<class T >
bool MemSetter< T >::doPrepare ( int  nrthreads)
inlineoverrideprivatevirtual

Called once, before any doWork is called.

Reimplemented from ParallelTask.

◆ doWork()

template<class T >
bool MemSetter< T >::doWork ( std::int64_t  start,
std::int64_t  stop,
int  threadidx 
)
inlineoverrideprivatevirtual

The functions that does the job. The function will be called with all intervals from 0 to ParallelTask::nrIterations()-1. The function must be designed to be able to run in parallel.

Parameters
startfirst index
stoplast index
threadidxgives an identifier (between 0 and nr of threads -1) that is unique to each call to doWork.

Implements ParallelTask.

◆ minThreadSize()

template<class T >
int MemSetter< T >::minThreadSize ( ) const
inlineoverrideprotectedvirtual
Returns
the minimum number of computations that effectively can be run in a separate thread. A small number will give a large overhead for when each step is quick and nrIterations is not big.

Reimplemented from ParallelTask.

◆ nrIterations()

template<class T >
std::int64_t MemSetter< T >::nrIterations ( ) const
inlineoverrideprotectedvirtual
Returns
the number of times the process should be run.

Implements ParallelTask.

◆ setPtr() [1/12]

template<class T >
bool MemSetter< T >::setPtr ( std::int64_t  start,
std::int64_t  size 
)
inlineprotected

◆ setPtr() [2/12]

bool MemSetter< char >::setPtr ( std::int64_t  start,
std::int64_t  size 
)
inlineprotected

◆ setPtr() [3/12]

bool MemSetter< unsigned char >::setPtr ( std::int64_t  start,
std::int64_t  size 
)
inlineprotected

◆ setPtr() [4/12]

bool MemSetter< bool >::setPtr ( std::int64_t  start,
std::int64_t  size 
)
inlineprotected

◆ setPtr() [5/12]

bool MemSetter< float >::setPtr ( std::int64_t  start,
std::int64_t  size 
)
inlineprotected

◆ setPtr() [6/12]

bool MemSetter< double >::setPtr ( std::int64_t  start,
std::int64_t  size 
)
inlineprotected

◆ setPtr() [7/12]

bool MemSetter< int >::setPtr ( std::int64_t  start,
std::int64_t  size 
)
inlineprotected

◆ setPtr() [8/12]

bool MemSetter< unsigned int >::setPtr ( std::int64_t  start,
std::int64_t  size 
)
inlineprotected

◆ setPtr() [9/12]

bool MemSetter< short >::setPtr ( std::int64_t  start,
std::int64_t  size 
)
inlineprotected

◆ setPtr() [10/12]

bool MemSetter< unsigned short >::setPtr ( std::int64_t  start,
std::int64_t  size 
)
inlineprotected

◆ setPtr() [11/12]

bool MemSetter< std::int64_t >::setPtr ( std::int64_t  start,
std::int64_t  size 
)
inlineprotected

◆ setPtr() [12/12]

bool MemSetter< std::uint64_t >::setPtr ( std::int64_t  start,
std::int64_t  size 
)
inlineprotected

◆ setSize()

template<class T >
void MemSetter< T >::setSize ( std::int64_t  sz)
inline

◆ setTarget() [1/2]

template<class T >
void MemSetter< T >::setTarget ( T *  ptr)
inline

◆ setTarget() [2/2]

template<class T >
void MemSetter< T >::setTarget ( ValueSeries< T > &  vs)
inline

◆ setValue()

template<class T >
void MemSetter< T >::setValue ( const T &  val)
inline

◆ setValueFunc()

template<class T >
void MemSetter< T >::setValueFunc ( ValueFunc  valfunc)
inline

◆ uiMessage()

template<class T >
uiString MemSetter< T >::uiMessage ( ) const
inlineoverridevirtual

will be message() again in 7.x

Reimplemented from Task.

◆ uiNrDoneText()

template<class T >
uiString MemSetter< T >::uiNrDoneText ( ) const
inlineoverridevirtual

will be nrDoneText() in 7.x

Reimplemented from Task.

Member Data Documentation

◆ ptr_

template<class T >
T* MemSetter< T >::ptr_ = nullptr
protected

◆ sz_

template<class T >
std::int64_t MemSetter< T >::sz_ = -1
protected

◆ val_

template<class T >
T MemSetter< T >::val_ = T()
protected

◆ valfunc_

template<class T >
ValueFunc MemSetter< T >::valfunc_ = nullptr
protected

◆ vs_

template<class T >
ValueSeries<T>* MemSetter< T >::vs_ = nullptr
protected

Generated at for the OpendTect seismic interpretation project. Copyright (C): dGB Beheer B.V. 1995-2024