Sese Framework
x.y.z
A cross-platform framework
载入中...
搜索中...
未找到
Initializer.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
22
#pragma once
23
24
#include "
sese/Config.h
"
25
#include <stack>
26
27
#ifdef _WIN32
28
#pragma warning(disable : 4251)
29
#endif
30
31
namespace
sese
{
32
34
class
InitiateTask
{
35
public
:
44
using
Ptr
= std::shared_ptr<InitiateTask>;
45
46
explicit
InitiateTask
(std::string
name
);
47
virtual
~InitiateTask
() =
default
;
48
49
virtual
int32_t
init
() noexcept = 0;
50
virtual int32_t
destroy
() noexcept = 0;
51
52
[[nodiscard]] const std::
string
&
getName
() const;
53
54
private:
55
std::
string
name
;
56
};
57
59
class
Initializer
final {
// GCOVR_EXCL_LINE
60
public
:
61
~Initializer
();
62
63
private
:
64
std::stack<InitiateTask::Ptr>
tasks
;
65
66
public
:
69
static
void
addTask(
const
InitiateTask::Ptr
&task)
noexcept
;
70
71
template
<
class
T>
72
static
void
addTask
() noexcept {
73
Initializer::addTask
(std::make_unique<T>());
74
}
75
79
[[maybe_unused]]
SESE_DEPRECATED
static
void
*getInitializer() noexcept;
80
};
81
85
[[maybe_unused]]
void
initCore
(
int
argc, const
char
*const *argv) noexcept;
86
87
}
// namespace sese
sese
util
Initializer.h
生成于 2024年 十一月 4日 星期一 09:58:03 , 为 Sese Framework使用
1.11.0