cpPlugins::Interface::Plugins::
CreateFilter( const std::string& category, const std::string& name )
{
- std::cout << "1" << std::endl;
typedef void* ( *_TCreator )( );
- std::cout << "2" << std::endl;
typedef cpPlugins::BaseObjects::ProcessObject::Pointer _TPtr;
- std::cout << "3" << std::endl;
_TPtr o = NULL;
- std::cout << "4" << std::endl;
auto cat = this->m_Filters.find( category );
- std::cout << "5" << std::endl;
if( cat != this->m_Filters.end( ) )
{
- std::cout << "6" << std::endl;
auto nam = cat->second.find( name );
- std::cout << "7" << std::endl;
if( nam != cat->second.end( ) )
{
- std::cout << "8" << std::endl;
void* l_hnd = nam->second.second.first;
- std::cout << "9" << std::endl;
void* f_hnd = nam->second.second.second;
- std::cout << "10" << std::endl;
if( l_hnd == NULL )
{
- std::cout << "11" << std::endl;
l_hnd = cpPlugins::OS::DLLManager::LoadPlugins( nam->second.first );
- std::cout << "12" << std::endl;
nam->second.second.first = l_hnd;
- std::cout << "13" << std::endl;
} // fi
if( f_hnd == NULL )
{
- std::cout << "14" << std::endl;
f_hnd =
cpPlugins::OS::DLLManager::LoadCreator( l_hnd, category, name );
- std::cout << "15" << std::endl;
nam->second.second.second = f_hnd;
- std::cout << "16" << std::endl;
} // fi
- std::cout << "17" << std::endl;
_TCreator creator = reinterpret_cast< _TCreator >( f_hnd );
- std::cout << "18" << std::endl;
if( creator != NULL )
{
- std::cout << "19 " << creator << " " << f_hnd << std::endl;
void* a = creator( );
- std::cout << "20" << std::endl;
- std::cout << "20 " << creator << " " << a << std::endl;
- std::cout << "21" << std::endl;
o = reinterpret_cast< _TPtr* >( a )->GetPointer( );
- std::cout << "22" << std::endl;
o->SetName( name );
- std::cout << "23" << std::endl;
o->SetPluginName( nam->second.first );
- std::cout << "24" << std::endl;
} // fi
} // fi
} // fi
- std::cout << "25" << std::endl;
if( o.IsNull( ) )
throw std::runtime_error(
std::string( "Could not create a valid ProcessObject of type \"" ) +
category + std::string( ":" ) +
name + std::string( "\"" )
);
- std::cout << "26" << std::endl;
return( o );
}