8 #ifndef HPP_ALIB_FS_PLUGINS_PLUGINS 
    9 #define HPP_ALIB_FS_PLUGINS_PLUGINS 1 
   11 #if !defined(HPP_ALIB_MODULES) && !defined(ALIB_DOX) 
   17 #if !defined(HPP_ALIB_TOOLS) && !defined(ALIB_DOX) 
   21 #if !defined(HPP_ALIB_FEATURES) && !defined(ALIB_DOX) 
   25 #if !defined(HPP_ALIB_FS_COMMONENUMS_DEFS) 
   29 #if !defined (HPP_ALIB_ENUMS_BITWISE) 
   33 #if !defined (_GLIBCXX_VECTOR) && !defined(_VECTOR_) 
   37 #if !defined (_GLIBCXX_ALGORITHM) && !defined(_ALGORITHM_) 
   41 namespace aworx { 
namespace lib { 
namespace detail {
 
   58 template<
typename pTPlugin, 
typename pTPriorities>
 
  129             ALIB_ASSERT_ERROR( plugin != 
nullptr, 
"FSPLUGINS", 
"Nullptr provided for plugin." )
 
  131             static_assert(    std::has_virtual_destructor<TPlugin>::value
 
  133                 "Can't take responsibility for plug-in destruction. TPlugin has no virtual destructor." );
 
  136                                           [priority]( Slot& ppp)
 
  139                                                "PluginContainer::InsertPlugin(): Plug-in with same priority exists" )
 
  141                                               return ppp.priority < priority;
 
  164             auto it= std::find_if( 
plugins.begin(), 
plugins.end(), [plugIn](Slot& pair)
 
  166                                                                        return pair.plugin == plugIn;
 
  174             ALIB_WARNING( 
"PluginContainer::RemovePlugin(): Plug-in not found for removal." )
 
  190                                  "FSPLUGINS: PluginContainer::RemovePlugin(): Index out of bounds: ", idx )
 
  210                                             [priority, &plugin](Slot& entry)
 
  212                                                 if( entry.priority == priority)
 
  214                                                     plugin= entry.plugin;
 
  222                                  "PluginContainer::RemovePlugin(): No Plug-in was removed " )
 
  245             return static_cast<integer>(
plugins.size());
 
  257             return plugins[static_cast<size_t>(number)].plugin;
 
  271                                     [priority](Slot& pair) { 
return pair.priority == priority; } );
 
  288         template<
typename TPluginType>
 
  291             return dynamic_cast<TPluginType*>( 
GetPlugin( priority ) );
 
  300         template<
typename TPluginType>
 
  303             TPluginType* casted= 
nullptr;
 
  305                 if( (casted= dynamic_cast<TPluginType*>( ppp.plugin )) != 
nullptr )
 
  318 #endif // HPP_ALIB_FS_PLUGINS_PLUGINS