diff --git a/Modules/Wrappers/ApplicationEngine/include/otbWrapperMetaDataHelper.h b/Modules/Wrappers/ApplicationEngine/include/otbWrapperMetaDataHelper.h index e2d292679919691c2defbd73a141b6ee84e46d9d..36274a5a08de34996f70ac9e6eb17121b81fa963 100644 --- a/Modules/Wrappers/ApplicationEngine/include/otbWrapperMetaDataHelper.h +++ b/Modules/Wrappers/ApplicationEngine/include/otbWrapperMetaDataHelper.h @@ -33,99 +33,96 @@ namespace Wrapper { /** - * \class MetaDataHelper + * \namespace MetaDataHelper * - * \brief Small helper to manipulate itk::MetaDataDictionary + * \brief Contains small helper functions to manipulate itk::MetaDataDictionary + * + * These functions are only here to instanciate the different template function that + * allow to get/set values in MetaDataDictionary. * - * This class is only here to instanciate the different template function that - * allow to get/set values in MetaDataDictionary. All functions are static. - * - * \ingroup OTBApplicationEngine */ -class OTBApplicationEngine_EXPORT MetaDataHelper +namespace MetaDataHelper { -public: - MetaDataHelper(); - virtual ~MetaDataHelper(); - typedef enum + enum class MDType { - MDType_STRING, - MDType_INT, - MDType_DOUBLE, - MDType_GCP, - MDType_VECTOR, - MDType_IMAGEKWL, - MDType_VECTORDATAKWL, - MDType_BOOLVECTOR - } MDType; - - static MDType GetType(const std::string &val); - - static std::string GetString( + String, + Int, + Double, + GCP, + Vector, + ImageKWL, + VectorDataKWL, + BoolVector + }; + + OTBApplicationEngine_EXPORT MDType GetType(const std::string &val); + + OTBApplicationEngine_EXPORT std::string GetString( const itk::MetaDataDictionary &dict, const std::string &key); - static void SetString( + OTBApplicationEngine_EXPORT void SetString( itk::MetaDataDictionary &dict, const std::string &key, const std::string &val); - static unsigned int GetInt( + OTBApplicationEngine_EXPORT unsigned int GetInt( const itk::MetaDataDictionary &dict, const std::string &key); - static void SetInt( + OTBApplicationEngine_EXPORT void SetInt( itk::MetaDataDictionary &dict, const std::string &key, unsigned int val); - static double GetDouble( + OTBApplicationEngine_EXPORT double GetDouble( const itk::MetaDataDictionary &dict, const std::string &key); - static void SetDouble( + OTBApplicationEngine_EXPORT void SetDouble( itk::MetaDataDictionary &dict, const std::string &key, double val); - static otb::OTB_GCP GetGCP( + OTBApplicationEngine_EXPORT otb::OTB_GCP GetGCP( const itk::MetaDataDictionary &dict, const std::string &key); - static void SetGCP( + OTBApplicationEngine_EXPORT void SetGCP( itk::MetaDataDictionary &dict, const std::string &key, const otb::OTB_GCP &val); - static otb::MetaDataKey::VectorType GetVector( + OTBApplicationEngine_EXPORT otb::MetaDataKey::VectorType GetVector( const itk::MetaDataDictionary &dict, const std::string &key); - static void SetVector( + OTBApplicationEngine_EXPORT void SetVector( itk::MetaDataDictionary &dict, const std::string &key, const otb::MetaDataKey::VectorType &val); - static otb::ImageKeywordlist GetImageKWL( + OTBApplicationEngine_EXPORT otb::ImageKeywordlist GetImageKWL( const itk::MetaDataDictionary &dict, const std::string &key); - static void SetImageKWL( + OTBApplicationEngine_EXPORT void SetImageKWL( itk::MetaDataDictionary &dict, const std::string &key, const otb::ImageKeywordlist &val); - static otb::VectorDataKeywordlist GetVectorDataKWL( + OTBApplicationEngine_EXPORT otb::VectorDataKeywordlist GetVectorDataKWL( const itk::MetaDataDictionary &dict, const std::string &key); - static void SetVectorDataKWL( + OTBApplicationEngine_EXPORT void SetVectorDataKWL( itk::MetaDataDictionary &dict, const std::string &key, const otb::VectorDataKeywordlist &val); - static otb::MetaDataKey::BoolVectorType GetBoolVector( + OTBApplicationEngine_EXPORT otb::MetaDataKey::BoolVectorType GetBoolVector( const itk::MetaDataDictionary &dict, const std::string &key); - static void SetBoolVector( + OTBApplicationEngine_EXPORT void SetBoolVector( itk::MetaDataDictionary &dict, const std::string &key, const otb::MetaDataKey::BoolVectorType &val); -}; + +} // end of namespace MetaDataHelper } // end of namespace Wrapper } // end of namespace otb diff --git a/Modules/Wrappers/ApplicationEngine/src/otbWrapperMetaDataHelper.cxx b/Modules/Wrappers/ApplicationEngine/src/otbWrapperMetaDataHelper.cxx index 661d5c6264efbc9100f12fe8e8a932d2f501ff0c..4cf7c602e1f247a6c9836a50cea9587218b9e989 100644 --- a/Modules/Wrappers/ApplicationEngine/src/otbWrapperMetaDataHelper.cxx +++ b/Modules/Wrappers/ApplicationEngine/src/otbWrapperMetaDataHelper.cxx @@ -25,45 +25,38 @@ namespace otb { namespace Wrapper { - -MetaDataHelper::MetaDataHelper() +namespace MetaDataHelper { -} - -MetaDataHelper::~MetaDataHelper() -{ -} -MetaDataHelper::MDType -MetaDataHelper::GetType(const std::string &val) +MDType GetType(const std::string &val) { MDType ret; otb::MetaDataKey::KeyType kt = otb::MetaDataKey::GetKeyType(val); switch (kt) { case otb::MetaDataKey::TSTRING: - ret = MDType_STRING; + ret = MDType::String; break; case otb::MetaDataKey::TENTIER: - ret = MDType_INT; + ret = MDType::Int; break; case otb::MetaDataKey::TDOUBLE: - ret = MDType_DOUBLE; + ret = MDType::Double; break; case otb::MetaDataKey::TOTB_GCP: - ret = MDType_GCP; + ret = MDType::GCP; break; case otb::MetaDataKey::TVECTOR: - ret = MDType_VECTOR; + ret = MDType::Vector; break; case otb::MetaDataKey::TOSSIMKEYWORDLIST: - ret = MDType_IMAGEKWL; + ret = MDType::ImageKWL; break; case otb::MetaDataKey::TVECTORDATAKEYWORDLIST: - ret = MDType_VECTORDATAKWL; + ret = MDType::VectorDataKWL; break; case otb::MetaDataKey::TBOOLVECTOR: - ret = MDType_BOOLVECTOR; + ret = MDType::BoolVector; break; default: break; @@ -72,7 +65,7 @@ MetaDataHelper::GetType(const std::string &val) } std::string -MetaDataHelper::GetString( +GetString( const itk::MetaDataDictionary &dict, const std::string &key) { @@ -82,7 +75,7 @@ MetaDataHelper::GetString( } void -MetaDataHelper::SetString( +SetString( itk::MetaDataDictionary &dict, const std::string &key, const std::string &val) @@ -91,7 +84,7 @@ MetaDataHelper::SetString( } unsigned int -MetaDataHelper::GetInt( +GetInt( const itk::MetaDataDictionary &dict, const std::string &key) { @@ -101,7 +94,7 @@ MetaDataHelper::GetInt( } void -MetaDataHelper::SetInt( +SetInt( itk::MetaDataDictionary &dict, const std::string &key, unsigned int val) @@ -110,7 +103,7 @@ MetaDataHelper::SetInt( } double -MetaDataHelper::GetDouble( +GetDouble( const itk::MetaDataDictionary &dict, const std::string &key) { @@ -120,7 +113,7 @@ MetaDataHelper::GetDouble( } void -MetaDataHelper::SetDouble( +SetDouble( itk::MetaDataDictionary &dict, const std::string &key, double val) @@ -129,7 +122,7 @@ MetaDataHelper::SetDouble( } otb::OTB_GCP -MetaDataHelper::GetGCP( +GetGCP( const itk::MetaDataDictionary &dict, const std::string &key) { @@ -139,7 +132,7 @@ MetaDataHelper::GetGCP( } void -MetaDataHelper::SetGCP( +SetGCP( itk::MetaDataDictionary &dict, const std::string &key, const otb::OTB_GCP &val) @@ -148,7 +141,7 @@ MetaDataHelper::SetGCP( } otb::MetaDataKey::VectorType -MetaDataHelper::GetVector( +GetVector( const itk::MetaDataDictionary &dict, const std::string &key) { @@ -158,7 +151,7 @@ MetaDataHelper::GetVector( } void -MetaDataHelper::SetVector( +SetVector( itk::MetaDataDictionary &dict, const std::string &key, const otb::MetaDataKey::VectorType &val) @@ -167,7 +160,7 @@ MetaDataHelper::SetVector( } otb::ImageKeywordlist -MetaDataHelper::GetImageKWL( +GetImageKWL( const itk::MetaDataDictionary &dict, const std::string &key) { @@ -177,7 +170,7 @@ MetaDataHelper::GetImageKWL( } void -MetaDataHelper::SetImageKWL( +SetImageKWL( itk::MetaDataDictionary &dict, const std::string &key, const otb::ImageKeywordlist &val) @@ -186,7 +179,7 @@ MetaDataHelper::SetImageKWL( } otb::VectorDataKeywordlist -MetaDataHelper::GetVectorDataKWL( +GetVectorDataKWL( const itk::MetaDataDictionary &dict, const std::string &key) { @@ -196,7 +189,7 @@ MetaDataHelper::GetVectorDataKWL( } void -MetaDataHelper::SetVectorDataKWL( +SetVectorDataKWL( itk::MetaDataDictionary &dict, const std::string &key, const otb::VectorDataKeywordlist &val) @@ -205,7 +198,7 @@ MetaDataHelper::SetVectorDataKWL( } otb::MetaDataKey::BoolVectorType -MetaDataHelper::GetBoolVector( +GetBoolVector( const itk::MetaDataDictionary &dict, const std::string &key) { @@ -215,7 +208,7 @@ MetaDataHelper::GetBoolVector( } void -MetaDataHelper::SetBoolVector( +SetBoolVector( itk::MetaDataDictionary &dict, const std::string &key, const otb::MetaDataKey::BoolVectorType &val) @@ -223,5 +216,6 @@ MetaDataHelper::SetBoolVector( itk::EncapsulateMetaData<otb::MetaDataKey::BoolVectorType>(dict, key, val); } +} // end of namespace MetaDataHelper } // end of namespace Wrapper } // end of namespace otb diff --git a/Modules/Wrappers/SWIG/src/otbApplication.i b/Modules/Wrappers/SWIG/src/otbApplication.i index b242048c492454f214b9ab64aa4822ab7c445ac7..c8b97c12e217b970a514dea5c1a248d6a89bb863 100644 --- a/Modules/Wrappers/SWIG/src/otbApplication.i +++ b/Modules/Wrappers/SWIG/src/otbApplication.i @@ -908,130 +908,111 @@ public: %include "PyCommand.i" -namespace otb -{ -namespace Wrapper -{ -class MetaDataHelper +%extend itkMetaDataDictionary { -public: - MetaDataHelper(); - virtual ~MetaDataHelper(); - typedef enum - { - MDType_STRING, - MDType_INT, - MDType_DOUBLE, - MDType_GCP, - MDType_VECTOR, - MDType_IMAGEKWL, - MDType_VECTORDATAKWL, - MDType_BOOLVECTOR - } MDType; - - static MDType GetType(const std::string &val); - - static std::string GetString( - const itkMetaDataDictionary &dict, - const std::string &key); - static void SetString( - itkMetaDataDictionary &dict, - const std::string &key, - const std::string &val); - - static unsigned int GetInt( - const itkMetaDataDictionary &dict, - const std::string &key); - static void SetInt( - itkMetaDataDictionary &dict, - const std::string &key, - unsigned int val); - - static double GetDouble( - const itkMetaDataDictionary &dict, - const std::string &key); - static void SetDouble( - itkMetaDataDictionary &dict, - const std::string &key, - double val); - - static OTB_GCP GetGCP( - const itkMetaDataDictionary &dict, - const std::string &key); - static void SetGCP( - itkMetaDataDictionary &dict, - const std::string &key, - const OTB_GCP &val); - - static std::vector<double> GetVector( - const itkMetaDataDictionary &dict, - const std::string &key); - static void SetVector( - itkMetaDataDictionary &dict, - const std::string &key, - const std::vector<double> &val); - - static ImageKeywordlist GetImageKWL( - const itkMetaDataDictionary &dict, - const std::string &key); - static void SetImageKWL( - itkMetaDataDictionary &dict, - const std::string &key, - const ImageKeywordlist &val); - - static VectorDataKeywordlist GetVectorDataKWL( - const itkMetaDataDictionary &dict, - const std::string &key); - static void SetVectorDataKWL( - itkMetaDataDictionary &dict, - const std::string &key, - const VectorDataKeywordlist &val); - - static std::vector<bool> GetBoolVector( - const itkMetaDataDictionary &dict, - const std::string &key); - static void SetBoolVector( - itkMetaDataDictionary &dict, - const std::string &key, - const std::vector<bool> &val); -}; + int GetType(const std::string &key) + { + return (int) otb::Wrapper::MetaDataHelper::GetType(key); + } -} // end of namespace Wrapper -} // end of namespace otb + std::string GetString(const std::string &key) + { + return otb::Wrapper::MetaDataHelper::GetString(* $self,key); + } + void SetString(const std::string &key, const std::string &val) + { + otb::Wrapper::MetaDataHelper::SetString(* $self,key,val); + } + unsigned int GetInt(const std::string &key) + { + return otb::Wrapper::MetaDataHelper::GetInt(* $self,key); + } + void SetInt(const std::string &key, unsigned int val) + { + otb::Wrapper::MetaDataHelper::SetInt(* $self,key,val); + } + double GetDouble(const std::string &key) + { + return otb::Wrapper::MetaDataHelper::GetDouble(* $self,key); + } + void SetDouble(const std::string &key, double val) + { + otb::Wrapper::MetaDataHelper::SetDouble(* $self,key,val); + } -#if SWIGPYTHON -%pythoncode -{ -MetaDataHelper.GetterMap = { - MetaDataHelper.MDType_STRING : MetaDataHelper.GetString, - MetaDataHelper.MDType_INT : MetaDataHelper.GetInt, - MetaDataHelper.MDType_DOUBLE : MetaDataHelper.GetDouble, - MetaDataHelper.MDType_GCP : MetaDataHelper.GetGCP, - MetaDataHelper.MDType_VECTOR : MetaDataHelper.GetVector, - MetaDataHelper.MDType_IMAGEKWL : MetaDataHelper.GetImageKWL, - MetaDataHelper.MDType_VECTORDATAKWL : MetaDataHelper.GetVectorDataKWL, - MetaDataHelper.MDType_BOOLVECTOR : MetaDataHelper.GetBoolVector, - } + otb::OTB_GCP GetGCP(const std::string &key) + { + return otb::Wrapper::MetaDataHelper::GetGCP(* $self,key); + } + void SetGCP(const std::string &key, const otb::OTB_GCP &val) + { + otb::Wrapper::MetaDataHelper::SetGCP(* $self,key,val); + } -MetaDataHelper.SetterMap = { - MetaDataHelper.MDType_STRING : MetaDataHelper.SetString, - MetaDataHelper.MDType_INT : MetaDataHelper.SetInt, - MetaDataHelper.MDType_DOUBLE : MetaDataHelper.SetDouble, - MetaDataHelper.MDType_GCP : MetaDataHelper.SetGCP, - MetaDataHelper.MDType_VECTOR : MetaDataHelper.SetVector, - MetaDataHelper.MDType_IMAGEKWL : MetaDataHelper.SetImageKWL, - MetaDataHelper.MDType_VECTORDATAKWL : MetaDataHelper.SetVectorDataKWL, - MetaDataHelper.MDType_BOOLVECTOR : MetaDataHelper.SetBoolVector, - } -} + std::vector<double> GetVector(const std::string &key) + { + return otb::Wrapper::MetaDataHelper::GetVector(* $self,key); + } + void SetVector(const std::string &key, const std::vector<double> &val) + { + otb::Wrapper::MetaDataHelper::SetVector(* $self,key,val); + } + + otb::ImageKeywordlist GetImageKWL(const std::string &key) + { + return otb::Wrapper::MetaDataHelper::GetImageKWL(* $self,key); + } + void SetImageKWL(const std::string &key, const otb::ImageKeywordlist &val) + { + otb::Wrapper::MetaDataHelper::SetImageKWL(* $self,key,val); + } + otb::VectorDataKeywordlist GetVectorDataKWL(const std::string &key) + { + return otb::Wrapper::MetaDataHelper::GetVectorDataKWL(* $self,key); + } + void SetVectorDataKWL(const std::string &key, const otb::VectorDataKeywordlist &val) + { + otb::Wrapper::MetaDataHelper::SetVectorDataKWL(* $self,key,val); + } + + std::vector<bool> GetBoolVector(const std::string &key) + { + return otb::Wrapper::MetaDataHelper::GetBoolVector(* $self,key); + } + void SetBoolVector(const std::string &key, const std::vector<bool> &val) + { + otb::Wrapper::MetaDataHelper::SetBoolVector(* $self,key,val); + } + +#if SWIGPYTHON // enhance the MetaDataDictionary class for Python -%extend itkMetaDataDictionary -{ %pythoncode { + GetterMap = { + 0 : GetString, + 1 : GetInt, + 2 : GetDouble, + 3 : GetGCP, + 4 : GetVector, + 5 : GetImageKWL, + 6 : GetVectorDataKWL, + 7 : GetBoolVector, + } + + SetterMap = { + 0 : SetString, + 1 : SetInt, + 2 : SetDouble, + 3 : SetGCP, + 4 : SetVector, + 5 : SetImageKWL, + 6 : SetVectorDataKWL, + 7 : SetBoolVector, + } + def __str__(self): ret = '' for k in self.GetKeys(): @@ -1045,14 +1026,14 @@ MetaDataHelper.SetterMap = { return self.GetKeys() def __getitem__(self,key): if key in self.GetKeys(): - return MetaDataHelper.GetterMap[MetaDataHelper.GetType(key)](self,key) + return self.GetterMap[self.GetType(key)](self,key) else: raise IndexError('Key not recognized') def __setitem__(self,key,val): if key in self.GetKeys(): - MetaDataHelper.SetterMap[MetaDataHelper.GetType(key)](self,key,val) + self.SetterMap[self.GetType(key)](self,key,val) else: raise IndexError('Key not recognized') } -}; #endif +};