1 /*========================================================================= 2 * 3 * Copyright Insight Software Consortium 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0.txt 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 * 17 *=========================================================================*/ 18 19 #ifndef itkStoppingCriterionBase_h 20 #define itkStoppingCriterionBase_h 21 22 #include "itkObject.h" 23 #include "itkObjectFactoryBase.h" 24 #include "itkMacro.h" 25 26 namespace itk 27 { 28 /** 29 * \class StoppingCriterionBase 30 * \brief An abstract base class to represent a stopping criterion for an iterative 31 * algorithm. 32 * 33 * The main method is StoppingCriterionBase::IsSatisfied that must be 34 * reimplemented in inheriting classes. 35 * 36 * \ingroup ITKCommon 37 */ 38 class ITKCommon_EXPORT StoppingCriterionBase : public Object 39 { 40 public: 41 ITK_DISALLOW_COPY_AND_ASSIGN(StoppingCriterionBase); 42 43 using Self = StoppingCriterionBase; 44 using Superclass = Object; 45 using Pointer = SmartPointer< Self >; 46 using ConstPointer = SmartPointer< const Self >; 47 48 itkTypeMacro(StoppingCriterionBase, Object); 49 50 /** \return \c true if the stopping criterion is reached (and the algorithm 51 must stop). 52 \return \c fasle else. */ 53 virtual bool IsSatisfied() const = 0; 54 virtual std::string GetDescription() const = 0; 55 56 protected: 57 /** \brief Constructor */ 58 StoppingCriterionBase(); 59 /** \brief Destructor */ 60 ~StoppingCriterionBase() override; 61 }; 62 63 } 64 #endif 65