[Hdrflow-svn] SF.net SVN: hdrflow: [163] trunk/lib/openlibraries/src/openpluginlib/pl/ openpluginli
Status: Pre-Alpha
Brought to you by:
glslang
|
From: <gl...@us...> - 2007-06-25 19:09:11
|
Revision: 163
http://hdrflow.svn.sourceforge.net/hdrflow/?rev=163&view=rev
Author: glslang
Date: 2007-06-25 12:09:09 -0700 (Mon, 25 Jun 2007)
Log Message:
-----------
+ ensures discovery returns a unique set of sorted plugins
Modified Paths:
--------------
trunk/lib/openlibraries/src/openpluginlib/pl/openpluginlib.hpp
Modified: trunk/lib/openlibraries/src/openpluginlib/pl/openpluginlib.hpp
===================================================================
--- trunk/lib/openlibraries/src/openpluginlib/pl/openpluginlib.hpp 2007-06-24 20:49:00 UTC (rev 162)
+++ trunk/lib/openlibraries/src/openpluginlib/pl/openpluginlib.hpp 2007-06-25 19:09:09 UTC (rev 163)
@@ -39,7 +39,7 @@
namespace detail
{
class OPENPLUGINLIB_DECLSPEC discover_query_impl
- {
+ {
public:
class OPENPLUGINLIB_DECLSPEC plugin_proxy
{
@@ -80,6 +80,15 @@
plugin_item& item_;
};
+ private:
+ struct equals : std::binary_function<plugin_proxy, plugin_proxy, bool>
+ {
+ bool operator( )( const plugin_proxy& x, const plugin_proxy& y ) const
+ {
+ return x.name( ) == y.name( ) && x.type( ) == y.type( );
+ }
+ };
+
public:
typedef std::vector<plugin_proxy> container;
typedef container::const_iterator const_iterator;
@@ -102,7 +111,10 @@
template<class StrictWeakOrdering>
void sort( const StrictWeakOrdering& comp = StrictWeakOrdering( ) )
- { std::sort( plugins_.begin( ), plugins_.end( ), comp ); }
+ {
+ std::sort( plugins_.begin( ), plugins_.end( ), comp );
+ plugins_.erase( std::unique( plugins_.begin( ), plugins_.end( ), equals( ) ), plugins_.end( ) );
+ }
private:
container plugins_;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|