Skip to content
Snippets Groups Projects
Commit 70831f5e authored by Julien Malik's avatar Julien Malik
Browse files

BUG: fix bug about name clashing in VectorDataIO factories caused by the template parameter

parent a35f177b
No related branches found
No related tags found
No related merge requests found
......@@ -29,22 +29,28 @@ namespace otb
template<class TData>
KMLVectorDataIOFactory<TData>::KMLVectorDataIOFactory()
{
this->RegisterOverride("otbVectorDataIOBase",
"otbKMLVectorDataIO",
static std::string classOverride = std::string("otbVectorDataIOBase<") + typeid(TData).name() + ">";
static std::string subclass = std::string("otbKMLVectorDataIO<") + typeid(TData).name() + ">";
this->RegisterOverride(classOverride.c_str(),
subclass.c_str(),
"KML Vectordata IO",
1,
itk::CreateObjectFunction<KMLVectorDataIO<TData> >::New());
}
template<class TData>
KMLVectorDataIOFactory<TData>::~KMLVectorDataIOFactory()
{
}
template<class TData>
const char*
KMLVectorDataIOFactory<TData>::GetITKSourceVersion(void) const
{
return ITK_SOURCE_VERSION;
}
template<class TData>
const char*
KMLVectorDataIOFactory<TData>::GetDescription() const
......
......@@ -29,8 +29,11 @@ namespace otb
template<class TData>
OGRVectorDataIOFactory<TData>::OGRVectorDataIOFactory()
{
this->RegisterOverride("otbVectorDataIOBase",
"otbOGRVectorDataIO",
static std::string classOverride = std::string("otbVectorDataIOBase<") + typeid(TData).name() + ">";
static std::string subclass = std::string("otbOGRVectorDataIO<") + typeid(TData).name() + ">";
this->RegisterOverride(classOverride.c_str(),
subclass.c_str(),
"OGR Vectordata IO",
1,
itk::CreateObjectFunction<OGRVectorDataIO<TData> >::New());
......
......@@ -38,10 +38,12 @@ VectorDataIOFactory<TData>
::CreateVectorDataIO(const char* path, FileModeType mode)
{
RegisterBuiltInFactories();
std::string baseclassID = std::string("otbVectorDataIOBase<") + typeid(TData).name() + ">";
std::list<VectorDataIOBasePointerType> possibleVectorDataIO;
std::list<itk::LightObject::Pointer> allobjects =
itk::ObjectFactoryBase::CreateAllInstance("otbVectorDataIOBase");
itk::ObjectFactoryBase::CreateAllInstance(baseclassID.c_str());
for (std::list<itk::LightObject::Pointer>::iterator i = allobjects.begin();
i != allobjects.end(); ++i)
{
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment