for library load,createclass object
更多...
#include <class_loader.h>
for library load,createclass object
在文件 class_loader.h 第 35 行定义.
◆ ClassLoader()
| apollo::cyber::class_loader::ClassLoader::ClassLoader |
( |
const std::string & |
library_path | ) |
|
|
explicit |
在文件 class_loader.cc 第 21 行定义.
22 : library_path_(library_path),
23 loadlib_ref_count_(0),
24 classobj_ref_count_(0) {
26}
◆ ~ClassLoader()
| apollo::cyber::class_loader::ClassLoader::~ClassLoader |
( |
| ) |
|
|
virtual |
◆ CreateClassObj()
| std::shared_ptr< Base > apollo::cyber::class_loader::ClassLoader::CreateClassObj |
( |
const std::string & |
class_name | ) |
|
在文件 class_loader.h 第 76 行定义.
77 {
80 }
81
82 Base* class_object = utility::CreateClassObj<Base>(class_name,
this);
83 if (class_object == nullptr) {
84 AWARN <<
"CreateClassObj failed, ensure class has been registered. "
86 return std::shared_ptr<Base>();
87 }
88
89 std::lock_guard<std::mutex> lck(classobj_ref_count_mutex_);
90 classobj_ref_count_ = classobj_ref_count_ + 1;
91 std::shared_ptr<Base> classObjSharePtr(
92 class_object, std::bind(&ClassLoader::OnClassObjDeleter<Base>, this,
93 std::placeholders::_1));
94 return classObjSharePtr;
95}
const std::string GetLibraryPath() const
◆ GetLibraryPath()
| const std::string apollo::cyber::class_loader::ClassLoader::GetLibraryPath |
( |
| ) |
const |
◆ GetValidClassNames()
| std::vector< std::string > apollo::cyber::class_loader::ClassLoader::GetValidClassNames |
( |
| ) |
|
在文件 class_loader.h 第 64 行定义.
64 {
65 return (utility::GetValidClassNames<Base>(this));
66}
◆ IsClassValid()
| bool apollo::cyber::class_loader::ClassLoader::IsClassValid |
( |
const std::string & |
class_name | ) |
|
在文件 class_loader.h 第 69 行定义.
69 {
70 std::vector<std::string> valid_classes = GetValidClassNames<Base>();
71 return (std::find(valid_classes.begin(), valid_classes.end(), class_name) !=
72 valid_classes.end());
73}
◆ IsLibraryLoaded()
| bool apollo::cyber::class_loader::ClassLoader::IsLibraryLoaded |
( |
| ) |
|
在文件 class_loader.cc 第 30 行定义.
30 {
32}
bool IsLibraryLoaded(const std::string &library_path, ClassLoader *class_loader)
◆ LoadLibrary()
| bool apollo::cyber::class_loader::ClassLoader::LoadLibrary |
( |
| ) |
|
在文件 class_loader.cc 第 34 行定义.
34 {
35 std::lock_guard<std::mutex> lck(loadlib_ref_count_mutex_);
36 ++loadlib_ref_count_;
37 AINFO <<
"Begin LoadLibrary: " << library_path_;
39}
bool LoadLibrary(const std::string &library_path, ClassLoader *loader)
◆ UnloadLibrary()
| int apollo::cyber::class_loader::ClassLoader::UnloadLibrary |
( |
| ) |
|
在文件 class_loader.cc 第 41 行定义.
41 {
42 std::lock_guard<std::mutex> lckLib(loadlib_ref_count_mutex_);
43 std::lock_guard<std::mutex> lckObj(classobj_ref_count_mutex_);
44
45 if (classobj_ref_count_ > 0) {
46 AINFO <<
"There are still classobjs have not been deleted, "
47 "classobj_ref_count_: "
48 << classobj_ref_count_;
49 } else {
50 --loadlib_ref_count_;
51 if (loadlib_ref_count_ == 0) {
53 } else {
54 if (loadlib_ref_count_ < 0) {
55 loadlib_ref_count_ = 0;
56 }
57 }
58 }
59 return loadlib_ref_count_;
60}
void UnloadLibrary(const std::string &library_path, ClassLoader *loader)
该类的文档由以下文件生成: