include
controller_manager
controller_loader.h
Go to the documentation of this file.
1
// Copyright (C) 2012, hiDOF, Inc
3
//
4
// Redistribution and use in source and binary forms, with or without
5
// modification, are permitted provided that the following conditions are met:
6
// * Redistributions of source code must retain the above copyright notice,
7
// this list of conditions and the following disclaimer.
8
// * Redistributions in binary form must reproduce the above copyright
9
// notice, this list of conditions and the following disclaimer in the
10
// documentation and/or other materials provided with the distribution.
11
// * Neither the name of hiDOF, Inc. nor the names of its
12
// contributors may be used to endorse or promote products derived from
13
// this software without specific prior written permission.
14
//
15
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
19
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25
// POSSIBILITY OF SUCH DAMAGE.
27
28
#pragma once
29
30
31
#include <
pluginlib/class_loader.hpp
>
32
#include <
controller_manager/controller_loader_interface.h
>
33
#include <memory>
34
35
namespace
controller_manager
36
{
37
47
template
<
class
T>
48
class
ControllerLoader
:
public
ControllerLoaderInterface
49
{
50
public
:
51
ControllerLoader
(
const
std::string& package,
const
std::string& base_class) :
52
ControllerLoaderInterface
(base_class),
53
package_
(
package
),
54
base_class_
(base_class)
55
{
56
reload
();
57
}
58
59
controller_interface::ControllerBaseSharedPtr
createInstance
(
const
std::string& lookup_name)
override
60
{
61
return
controller_loader_
->createUniqueInstance(lookup_name);
62
}
63
64
std::vector<std::string>
getDeclaredClasses
()
override
65
{
66
return
controller_loader_
->getDeclaredClasses();
67
}
68
69
void
reload
()
override
70
{
71
controller_loader_
.reset(
new
pluginlib::ClassLoader<T>
(
package_
,
base_class_
) );
72
}
73
74
private
:
75
std::string
package_
;
76
std::string
base_class_
;
77
std::unique_ptr<pluginlib::ClassLoader<T> >
controller_loader_
;
78
};
79
80
}
controller_manager::ControllerLoader::createInstance
controller_interface::ControllerBaseSharedPtr createInstance(const std::string &lookup_name) override
Definition:
controller_loader.h:59
controller_manager
Definition:
controller_loader.h:35
controller_manager::ControllerLoader::base_class_
std::string base_class_
Definition:
controller_loader.h:76
controller_manager::ControllerLoader
Pluginlib-Based Controller Loader.
Definition:
controller_loader.h:48
package
string package
controller_manager::ControllerLoader::getDeclaredClasses
std::vector< std::string > getDeclaredClasses() override
Definition:
controller_loader.h:64
pluginlib::ClassLoader
class_loader.hpp
controller_manager::ControllerLoaderInterface
Abstract Controller Loader Interface.
Definition:
controller_loader_interface.h:45
controller_interface::ControllerBaseSharedPtr
std::shared_ptr< ControllerBase > ControllerBaseSharedPtr
controller_manager::ControllerLoader::package_
std::string package_
Definition:
controller_loader.h:75
controller_loader_interface.h
controller_manager::ControllerLoader::controller_loader_
std::unique_ptr< pluginlib::ClassLoader< T > > controller_loader_
Definition:
controller_loader.h:77
controller_manager::ControllerLoader::ControllerLoader
ControllerLoader(const std::string &package, const std::string &base_class)
Definition:
controller_loader.h:51
controller_manager::ControllerLoader::reload
void reload() override
Definition:
controller_loader.h:69
controller_manager
Author(s): Wim Meeussen, Mathias Lüdtke
autogenerated on Tue Oct 15 2024 02:08:23