plugin_loader.h
Go to the documentation of this file.
00001 //=================================================================================================
00002 // Copyright (c) 2016, Alexander Stumpf, TU Darmstadt
00003 // Based on pluginlib (http://wiki.ros.org/pluginlib)
00004 // All rights reserved.
00005 
00006 // Redistribution and use in source and binary forms, with or without
00007 // modification, are permitted provided that the following conditions are met:
00008 //     * Redistributions of source code must retain the above copyright
00009 //       notice, this list of conditions and the following disclaimer.
00010 //     * Redistributions in binary form must reproduce the above copyright
00011 //       notice, this list of conditions and the following disclaimer in the
00012 //       documentation and/or other materials provided with the distribution.
00013 //     * Neither the name of the Simulation, Systems Optimization and Robotics
00014 //       group, TU Darmstadt nor the names of its contributors may be used to
00015 //       endorse or promote products derived from this software without
00016 //       specific prior written permission.
00017 
00018 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
00019 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
00020 // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
00021 // DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
00022 // DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
00023 // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
00024 // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
00025 // ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
00026 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
00027 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00028 //=================================================================================================
00029 
00030 #ifndef VIGIR_PLUGINLIB_PLUGIN_LOADER_H__
00031 #define VIGIR_PLUGINLIB_PLUGIN_LOADER_H__
00032 
00033 #include <ros/ros.h>
00034 
00035 #include <pluginlib/class_loader.h>
00036 
00037 #include <vigir_pluginlib/plugin_loader_base.h>
00038 #include <vigir_pluginlib/plugin.h>
00039 
00040 
00041 
00042 namespace vigir_pluginlib
00043 {
00044 template <class T>
00045 class PluginLoader
00046   : public pluginlib::ClassLoader<T>
00047   , public PluginLoaderBase
00048 {
00049 public:
00058   PluginLoader(const std::string& package, const std::string& base_class, const std::string& attrib_name = std::string("plugin"), const std::vector<std::string>& plugin_xml_paths = std::vector<std::string>())
00059     : pluginlib::ClassLoader<T>(package, base_class, attrib_name, plugin_xml_paths)
00060     , PluginLoaderBase(package, base_class, attrib_name, plugin_xml_paths)
00061   {
00062   }
00063 
00068   std::vector<std::string> getPluginXmlPaths() override
00069   {
00070     return pluginlib::ClassLoader<T>::getPluginXmlPaths();
00071   }
00072 
00077   std::vector<std::string> getDeclaredClasses() override
00078   {
00079     return pluginlib::ClassLoader<T>::getDeclaredClasses();
00080   }
00081 
00086   void refreshDeclaredClasses() override
00087   {
00088     return pluginlib::ClassLoader<T>::refreshDeclaredClasses();
00089   }
00090 
00096   std::string getName(const std::string& lookup_name) override
00097   {
00098     return pluginlib::ClassLoader<T>::getName(lookup_name);
00099   }
00100 
00106   bool isClassAvailable(const std::string& lookup_name) override
00107   {
00108     return pluginlib::ClassLoader<T>::isClassAvailable(lookup_name);
00109   }
00110 
00116   std::string getClassType(const std::string& lookup_name) override
00117   {
00118     return pluginlib::ClassLoader<T>::getClassType(lookup_name);
00119   }
00120 
00126   std::string getClassDescription(const std::string& lookup_name) override
00127   {
00128     return pluginlib::ClassLoader<T>::getClassDescription(lookup_name);
00129   }
00130 
00135   std::string getBaseClassType() const override
00136   {
00137     return pluginlib::ClassLoader<T>::getBaseClassType();
00138   }
00139 
00145   std::string getClassPackage(const std::string& lookup_name) override
00146   {
00147     return pluginlib::ClassLoader<T>::getClassPackage(lookup_name);
00148   }
00149 
00155   std::string getPluginManifestPath(const std::string& lookup_name) override
00156   {
00157     return pluginlib::ClassLoader<T>::getPluginManifestPath(lookup_name);
00158   }
00159 
00165   bool isClassLoaded(const std::string& lookup_name) override
00166   {
00167     return pluginlib::ClassLoader<T>::isClassLoaded(lookup_name);
00168   }
00169 
00175   void loadLibraryForClass(const std::string & lookup_name) override
00176   {
00177     return pluginlib::ClassLoader<T>::loadLibraryForClass(lookup_name);
00178   }
00179 
00186   int unloadLibraryForClass(const std::string& lookup_name) override
00187   {
00188     return pluginlib::ClassLoader<T>::unloadLibraryForClass(lookup_name);
00189   }
00190 
00195   std::vector<std::string> getRegisteredLibraries() override
00196   {
00197     return pluginlib::ClassLoader<T>::getRegisteredLibraries();
00198   }
00199 
00205   std::string getClassLibraryPath(const std::string& lookup_name) override
00206   {
00207     return pluginlib::ClassLoader<T>::getClassLibraryPath(lookup_name);
00208   }
00209 
00217   Plugin::Ptr createPluginInstance(const std::string& lookup_name) override
00218   {
00219     return pluginlib::ClassLoader<T>::createInstance(lookup_name);
00220   }
00221 };
00222 }
00223 
00224 #endif


vigir_pluginlib
Author(s): Alexander Stumpf
autogenerated on Tue Sep 13 2016 03:47:30