Sese Framework
x.y.z
A cross-platform framework
载入中...
搜索中...
未找到
Module.h
浏览该文件的文档.
1
// Copyright 2024 libsese
2
//
3
// Licensed under the Apache License, Version 2.0 (the "License");
4
// you may not use this file except in compliance with the License.
5
// You may obtain a copy of the License at
6
//
7
// http://www.apache.org/licenses/LICENSE-2.0
8
//
9
// Unless required by applicable law or agreed to in writing, software
10
// distributed under the License is distributed on an "AS IS" BASIS,
11
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
// See the License for the specific language governing permissions and
13
// limitations under the License.
14
20
21
#pragma once
22
23
#include "
sese/plugin/Marco.h
"
24
#include "
sese/system/LibraryLoader.h
"
25
26
#ifdef _WIN32
27
#pragma warning(disable : 4251)
28
#endif
29
30
namespace
sese::plugin
{
31
33
class
Module
{
34
public
:
35
using
Ptr
= std::unique_ptr<Module>;
36
using
LibraryObject
=
sese::system::LibraryObject
;
37
41
static
Module::Ptr
open
(
const
std::string &path)
noexcept
;
42
43
static
Result<Ptr>
openEx
(
const
std::string &path)
noexcept
;
44
48
static
Module::Ptr
openWithPath
(
const
system::Path
&path)
noexcept
;
49
52
const
char
*
getName
() noexcept;
53
56
const
char
*
getVersion
() noexcept;
57
60
const
char
*
getDescription
() noexcept;
61
65
BaseClass
::
Ptr
createClass
(const std::
string
&
id
) noexcept;
66
71
template<typename TYPE>
72
std::shared_ptr<TYPE>
createClassAs
(const std::
string
&name) {
73
auto
p =
createClass
(name);
74
if
(p) {
75
return
std::reinterpret_pointer_cast<TYPE>(p);
76
}
77
return
nullptr
;
78
}
79
82
const
ClassFactory::RegisterInfoMapType
&
83
getRegisterClassInfo
() noexcept;
84
85
private:
86
Module
() = default;
87
88
LibraryObject
::
Ptr
object
=
nullptr
;
89
90
ModuleInfo
*
info
=
nullptr
;
91
ClassFactory
*
factory
=
nullptr
;
92
};
93
}
// namespace sese::plugin
sese
plugin
Module.h
生成于 2024年 十一月 4日 星期一 09:58:02 , 为 Sese Framework使用
1.11.0