28#ifndef itkProcessObject_h 
   29#define itkProcessObject_h 
  165  using NameArray = std::vector<DataObjectIdentifierType>;
 
  296  itkSetMacro(AbortGenerateData, 
bool);
 
  299  itkGetConstReferenceMacro(AbortGenerateData, 
bool);
 
  302  itkBooleanMacro(AbortGenerateData);
 
  312#if !defined(ITK_LEGACY_REMOVE) 
  314  SetProgress(
float progress)
 
  492  itkSetMacro(ReleaseDataBeforeUpdateFlag, 
bool);
 
  493  itkGetConstReferenceMacro(ReleaseDataBeforeUpdateFlag, 
bool);
 
  494  itkBooleanMacro(ReleaseDataBeforeUpdateFlag);
 
  911  itkGetConstMacro(ThreaderUpdateProgress, 
bool);
 
  912  itkBooleanMacro(ThreaderUpdateProgress);
 
  920  static inline constexpr float 
  923    return static_cast<double>(fixed) / 
static_cast<double>(std::numeric_limits<uint32_t>::max());
 
 
  930  static inline uint32_t
 
  939      return std::numeric_limits<uint32_t>::max();
 
  941    const double temp = 
static_cast<double>(f) * std::numeric_limits<uint32_t>::max();
 
  942    return static_cast<uint32_t
>(temp);
 
 
  946  template <
typename TSourceObject>
 
  950    sourceObject.ProcessObject::SetNumberOfRequiredOutputs(numberOfRequiredOutputs);
 
  952    for (
unsigned int i{}; i < numberOfRequiredOutputs; ++i)
 
  954      sourceObject.ProcessObject::SetNthOutput(i, sourceObject.TSourceObject::MakeOutput(i));
 
 
  991  using NameSet = std::set<DataObjectIdentifierType>;
 
 
Base class for all data objects in ITK.
 
SmartPointer< Self > Pointer
 
std::string DataObjectIdentifierType
 
Control indentation during Print() invocation.
 
A class for performing multithreaded execution.
 
DataObjectPointerArraySizeType m_NumberOfRequiredOutputs
 
static constexpr float progressFixedToFloat(uint32_t fixed)
 
virtual void SetPrimaryInputName(const DataObjectIdentifierType &key)
 
virtual void ReleaseInputs()
 
bool HasOutput(const DataObjectIdentifierType &key) const
Return true if the output with this name is defined.
 
virtual void PopBackInput()
 
SmartPointer< const Self > ConstPointer
 
std::vector< DataObjectPointerMap::iterator > m_IndexedInputs
 
virtual void SetPrimaryInput(DataObject *object)
 
static uint32_t progressFloatToFixed(float f)
 
const DataObject * GetOutput(const DataObjectIdentifierType &key) const
 
const DataObject * GetPrimaryOutput() const
 
std::map< DataObjectIdentifierType, DataObjectPointer > DataObjectPointerMap
 
DataObjectIdentifierType MakeNameFromIndex(DataObjectPointerArraySizeType) const
 
void AddOptionalInputName(const DataObjectIdentifierType &)
Define a named input that is not required and optionally associate with a numbered index.
 
const DataObject * GetOutput(DataObjectPointerArraySizeType i) const
 
void SetRequiredInputNames(const NameArray &)
Set all required named inputs.
 
virtual const char * GetPrimaryInputName() const
 
virtual void PrepareOutputs()
 
virtual void GenerateOutputRequestedRegion(DataObject *output)
 
virtual bool GetReleaseDataFlag() const
 
virtual void SetInput(const DataObjectIdentifierType &key, DataObject *input)
Protected method for setting indexed and named inputs.
 
friend class TotalProgressReporter
 
bool m_ReleaseDataBeforeUpdateFlag
 
DataObjectPointerArray GetOutputs()
Return an array with the defined named outputs.
 
DataObject * GetInput(DataObjectPointerArraySizeType idx)
 
DataObject * GetOutput(const DataObjectIdentifierType &key)
 
DataObjectPointerArray::size_type DataObjectPointerArraySizeType
 
DataObjectPointerArraySizeType GetNumberOfIndexedInputs() const
Get the number of defined Indexed inputs.
 
void SetMultiThreader(MultiThreaderType *threader)
 
virtual void Update()
Bring this filter up-to-date.
 
virtual void RemoveInput(const DataObjectIdentifierType &key)
Remove an input.
 
friend class TestProcessObject
 
virtual void SetOutput(const DataObjectIdentifierType &name, DataObject *output)
 
NameArray GetOutputNames() const
Return an array with the defined names of the outputs.
 
virtual void VerifyPreconditions() const
Verifies that the process object has been configured correctly, that all required inputs are set,...
 
virtual void SetThreaderUpdateProgress(bool arg)
 
DataObject::Pointer DataObjectPointer
 
virtual void RemoveOutput(const DataObjectIdentifierType &key)
 
DataObjectPointerArraySizeType MakeIndexFromName(const DataObjectIdentifierType &) const
 
virtual void VerifyInputInformation() const
Verifies that the inputs meta-data is consistent and valid for continued execution of the pipeline,...
 
DataObjectPointerArraySizeType GetNumberOfInputs() const
Get the size of the input container.
 
void SetNumberOfIndexedInputs(DataObjectPointerArraySizeType num)
Define the number of indexed inputs defined.
 
const DataObject * GetInput(DataObjectPointerArraySizeType idx) const
 
virtual void AddOutput(DataObject *output)
 
virtual const char * GetPrimaryOutputName() const
 
std::vector< DataObjectIdentifierType > NameArray
 
friend class InputDataObjectIterator
 
virtual void PushFrontInput(const DataObject *input)
 
TimeStamp m_OutputInformationMTime
 
virtual void EnlargeOutputRequestedRegion(DataObject *output)
 
virtual void SetPrimaryOutput(DataObject *object)
 
virtual void GenerateData()
 
DataObjectIdentifierType MakeNameFromInputIndex(DataObjectPointerArraySizeType idx) const
 
virtual DataObjectPointer MakeOutput(const DataObjectIdentifierType &)
Make a DataObject of the correct type to used as the specified output.
 
bool AddRequiredInputName(const DataObjectIdentifierType &)
Define a required named input and optionally associate it with a numbered index.
 
virtual DataObjectPointerArraySizeType GetNumberOfValidRequiredInputs() const
Get the number of valid indexed inputs.
 
DataObject * GetPrimaryOutput()
 
virtual void RestoreInputReleaseDataFlags()
 
virtual void PopFrontInput()
 
DataObjectPointerArray GetInputs()
Return an array of DataObjects with the defined named inputs.
 
virtual void PushBackInput(const DataObject *input)
Push/Pop an indexed input of this process object.
 
~ProcessObject() override
 
SmartPointer< Self > Pointer
 
NameArray GetRequiredInputNames() const
 
virtual void SetNumberOfRequiredInputs(DataObjectPointerArraySizeType)
Set the number of required indexed inputs.
 
DataObjectPointerArraySizeType GetNumberOfIndexedOutputs() const
The number of defined Indexed outputs.
 
virtual void SetNthInput(DataObjectPointerArraySizeType idx, DataObject *input)
 
std::atomic< uint32_t > m_Progress
 
DataObject * GetOutput(DataObjectPointerArraySizeType i)
 
DataObjectPointerArraySizeType GetNumberOfOutputs() const
Get the size of the output container.
 
bool IsIndexedInputName(const DataObjectIdentifierType &) const
 
virtual void ResetPipeline()
Reset the pipeline.
 
void UpdateProgress(float progress)
Update the progress of the process object.
 
DataObject::DataObjectIdentifierType DataObjectIdentifierType
 
bool HasInput(const DataObjectIdentifierType &key) const
 
bool AddRequiredInputName(const DataObjectIdentifierType &, DataObjectPointerArraySizeType idx)
 
friend class DataObjectConstIterator
 
virtual void UpdateLargestPossibleRegion()
Sets the output requested region to the largest possible region and updates.
 
DataObjectPointerArraySizeType MakeIndexFromInputName(const DataObjectIdentifierType &name) const
 
MultiThreaderType * GetMultiThreader() const
 
DataObject * GetInput(const DataObjectIdentifierType &key)
Return an input.
 
static void MakeRequiredOutputs(TSourceObject &sourceObject, const DataObjectPointerArraySizeType numberOfRequiredOutputs)
 
DataObjectPointerArray GetIndexedInputs()
Return an array with all the indexed inputs.
 
friend class DataObjectIterator
 
virtual void SetNthOutput(DataObjectPointerArraySizeType idx, DataObject *output)
 
virtual void SetReleaseDataFlag(bool val)
 
virtual void PropagateRequestedRegion(DataObject *output)
 
void IncrementProgress(float increment)
Increment the progress of the process object.
 
virtual void SetPrimaryOutputName(const DataObjectIdentifierType &key)
 
DataObject * GetPrimaryInput()
 
NameArray GetInputNames() const
Return an array with the names of the inputs defined.
 
virtual void GenerateOutputInformation()
 
NameSet m_RequiredInputNames
 
DataObjectPointerMap m_Outputs
 
DataObjectPointerArraySizeType MakeIndexFromOutputName(const DataObjectIdentifierType &name) const
 
ThreadIdType m_NumberOfWorkUnits
 
std::map< DataObjectIdentifierType, bool > m_CachedInputReleaseDataFlags
 
MultiThreaderBase MultiThreaderType
 
void ReleaseDataFlagOff()
 
std::vector< DataObjectPointerMap::iterator > m_IndexedOutputs
 
virtual DataObjectPointer MakeOutput(DataObjectPointerArraySizeType idx)
Make a DataObject of the correct type to used as the specified output.
 
const DataObject * GetInput(const DataObjectIdentifierType &key) const
 
DataObjectPointerArraySizeType m_NumberOfRequiredInputs
 
std::set< DataObjectIdentifierType > NameSet
 
DataObjectPointerMap m_Inputs
 
friend class InputDataObjectConstIterator
 
std::thread::id m_UpdateThreadID
 
bool IsRequiredInputName(const DataObjectIdentifierType &) const
Query if the named input is required by name.
 
virtual void RemoveOutput(DataObjectPointerArraySizeType idx)
 
void SetNumberOfIndexedOutputs(DataObjectPointerArraySizeType num)
 
bool IsIndexedOutputName(const DataObjectIdentifierType &) const
 
virtual void GenerateInputRequestedRegion()
 
void AddOptionalInputName(const DataObjectIdentifierType &, DataObjectPointerArraySizeType idx)
 
virtual void AddInput(DataObject *input)
 
DataObjectIdentifierType MakeNameFromOutputIndex(DataObjectPointerArraySizeType idx) const
 
virtual void RemoveInput(DataObjectPointerArraySizeType)
 
virtual float GetProgress() const
Get the execution progress of a process object.
 
virtual void UpdateOutputInformation()
Update the information describing the output data.
 
virtual void PropagateResetPipeline()
 
friend class OutputDataObjectConstIterator
 
virtual void UpdateOutputData(DataObject *output)
 
const DataObject * GetPrimaryInput() const
 
void PrintSelf(std::ostream &os, Indent indent) const override
 
virtual void CacheInputReleaseDataFlags()
 
bool m_ThreaderUpdateProgress
 
friend class OutputDataObjectIterator
 
DataObjectPointerArray GetIndexedOutputs()
Return an array with the indexed outputs.
 
friend class ProgressReporter
 
bool RemoveRequiredInputName(const DataObjectIdentifierType &)
Remove the named input from the required inputs.
 
itk::SmartPointer< MultiThreaderType > m_MultiThreader
 
std::vector< DataObjectPointer > DataObjectPointerArray
 
Implements transparent reference counting.
 
ProcessObject::DataObjectPointerArraySizeType DataObjectPointerArraySizeType
 
ProcessObject::DataObjectPointerArraySizeType DataObjectPointerArraySizeType
 
Generate a unique, increasing time value.
 
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
 
unsigned int ThreadIdType
 
constexpr vcl_size_t ITK_MAX_THREADS