STIR 6.4.0
DataProcessor.h
Go to the documentation of this file.
1//
2//
3/*
4 Copyright (C) 2000- 2009, Hammersmith Imanet Ltd
5 This file is part of STIR.
6
7 SPDX-License-Identifier: Apache-2.0
8
9 See STIR/LICENSE.txt for details
10*/
20#ifndef __stir_DataProcessor_H__
21#define __stir_DataProcessor_H__
22
24#include "stir/TimedObject.h"
25#include "stir/Succeeded.h"
26
27START_NAMESPACE_STIR
28
45template <typename DataT>
46class DataProcessor : public RegisteredObject<DataProcessor<DataT>>, public TimedObject
47{
48public:
49 inline DataProcessor();
50
52
62 inline Succeeded set_up(const DataT& data);
63
65
72 inline virtual void reset();
73
75
78 inline Succeeded apply(DataT& data);
79
91 inline Succeeded apply(DataT& out_data, const DataT& in_data);
92
100 inline bool parse(std::istream& f);
101 bool parse(const char* const filename);
103
104 // Check if filtering images with this dimensions, sampling_distances etc actually makes sense
105 // virtual inline Succeeded consistency_check( const DataT& image ) const;
106
107protected:
109 virtual Succeeded virtual_set_up(const DataT&) = 0;
111 //*! \todo should return Succeeded */
112 virtual void virtual_apply(DataT& data, const DataT& in_data) const = 0;
114 //*! \todo should return Succeeded */
115 virtual void virtual_apply(DataT& data) const = 0;
116
117private:
118 bool is_set_up_already;
119};
120
121END_NAMESPACE_STIR
122
123#include "stir/DataProcessor.inl"
124
125#endif
Inline implementations for class stir::DataProcessor.
Declaration of class stiir::RegisteredObject.
Declaration of class stir::Succeeded.
declares the stir::TimedObject class
virtual void virtual_apply(DataT &data) const =0
Performs actual operation (in-place)
virtual Succeeded virtual_set_up(const DataT &)=0
Will be called to build any internal parameters.
virtual void virtual_apply(DataT &data, const DataT &in_data) const =0
Performs actual operation (virtual_set_up is called before this function)
Succeeded apply(DataT &out_data, const DataT &in_data)
Calls set_up() (if not already done before) and process in_data, putting the result in out_data.
Definition DataProcessor.inl:83
Succeeded apply(DataT &data)
Calls set_up() (if not already done before) and process data in-place.
Definition DataProcessor.inl:66
Succeeded set_up(const DataT &data)
Initialises any internal data (if necessary) using data as a template for sizes, sampling distances e...
Definition DataProcessor.inl:32
virtual void reset()
Makes sure we will ignore any previous call to set-up()
Definition DataProcessor.inl:43
a class containing an enumeration type that can be used by functions to signal successful operation o...
Definition Succeeded.h:44
base class for all objects which need timers. At the moment, there's only a CPU timer.
Definition TimedObject.h:36