/*========================================================================= Program: ORFEO Toolbox Language: C++ Date: $Date$ Version: $Revision$ Copyright (c) Centre National d'Etudes Spatiales. All rights reserved. See OTBCopyright.txt for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notices for more information. =========================================================================*/ #ifndef DimensionalityReductionModelFactory_h #define DimensionalityReductionModelFactory_h //#include "DimensionalityReductionModel.h" #include "otbMachineLearningModelFactoryBase.h" #include "otbMachineLearningModel.h" namespace otb { /** \class MachineLearningModelFactory * \brief Creation of object instance using object factory. * * \ingroup OTBSupervised */ template <class TInputValue, class TOutputValue> class DimensionalityReductionModelFactory : public MachineLearningModelFactoryBase { public: /** Standard class typedefs. */ typedef DimensionalityReductionModelFactory Self; typedef itk::Object Superclass; typedef itk::SmartPointer<Self> Pointer; typedef itk::SmartPointer<const Self> ConstPointer; /** Class Methods used to interface with the registered factories */ /** Run-time type information (and related methods). */ itkTypeMacro(DimensionalityReductionModelFactory, itk::Object); /** Convenient typedefs. */ typedef otb::MachineLearningModel<itk::VariableLengthVector< TInputValue> , itk::VariableLengthVector< TOutputValue>> DimensionalityReductionModelType; typedef typename DimensionalityReductionModelType::Pointer DimensionalityReductionModelTypePointer; /** Mode in which the files is intended to be used */ typedef enum { ReadMode, WriteMode } FileModeType; /** Create the appropriate MachineLearningModel depending on the particulars of the file. */ static DimensionalityReductionModelTypePointer CreateDimensionalityReductionModel(const std::string& path, FileModeType mode); static void CleanFactories(); protected: DimensionalityReductionModelFactory(); ~DimensionalityReductionModelFactory() ITK_OVERRIDE; private: DimensionalityReductionModelFactory(const Self &); //purposely not implemented void operator =(const Self&); //purposely not implemented /** Register Built-in factories */ static void RegisterBuiltInFactories(); /** Register a single factory, ensuring it has not been registered * twice */ static void RegisterFactory(itk::ObjectFactoryBase * factory); }; } // end namespace otb #ifndef OTB_MANUAL_INSTANTIATION #include "DimensionalityReductionModelFactory.txx" #endif #endif