From 603c622a185418ebce7016b444744329a3eafdbd Mon Sep 17 00:00:00 2001 From: mrouffet Date: Sun, 19 Nov 2023 02:05:10 +0000 Subject: [PATCH] [Auto] Deploy Doxygen 1f80a1c08d7806157869d993b6dde7064133b5d5 --- .nojekyll | 0 _config_8hpp.html | 93 + _config_8hpp_source.html | 99 + _debug_8hpp.html | 94 + _debug_8hpp_source.html | 120 + _event_8hpp.html | 117 + _event_8hpp_source.html | 237 ++ _event_tests_8cpp-example.html | 316 +++ _function_8hpp.html | 105 + _function_8hpp_source.html | 220 ++ _function_member_data_8hpp.html | 108 + _function_member_data_8hpp_source.html | 152 ++ _function_tests_8cpp-example.html | 270 +++ _owned_event_8hpp.html | 103 + _owned_event_8hpp_source.html | 133 ++ _owned_event_tests_8cpp-example.html | 362 +++ _packed_function_8hpp.html | 105 + _packed_function_8hpp_source.html | 205 ++ _packed_function_tests_8cpp-example.html | 235 ++ annotated.html | 100 + bc_s.png | Bin 0 -> 676 bytes bc_sd.png | Bin 0 -> 635 bytes class_s_a_1_1_event.html | 104 + ...ent_3_01_r_07_args_8_8_8_08_4-members.html | 109 + ...a_1_1_event_3_01_r_07_args_8_8_8_08_4.html | 713 ++++++ ..._a_1_1_event_3_01_r_07_args_8_8_8_08_4.png | Bin 0 -> 862 bytes class_s_a_1_1_function-members.html | 111 + class_s_a_1_1_function.html | 737 ++++++ class_s_a_1_1_owned_event.html | 105 + ..._t_00_01_r_07_args_8_8_8_08_4-members.html | 88 + ...01_owner_t_00_01_r_07_args_8_8_8_08_4.html | 117 + ..._01_owner_t_00_01_r_07_args_8_8_8_08_4.png | Bin 0 -> 866 bytes class_s_a_1_1_packed_function-members.html | 114 + class_s_a_1_1_packed_function.html | 636 +++++ class_s_a_1_1_packed_function.png | Bin 0 -> 828 bytes classes.html | 97 + closed.png | Bin 0 -> 132 bytes dir_5e42f1ed0250ef473f569b10c537902f.html | 92 + dir_856524284ebe840938865dc061f982fb.html | 86 + dir_e9843a9354a1fdc8da6d0422e6636225.html | 111 + doc.svg | 12 + docd.svg | 12 + doxygen.css | 2045 +++++++++++++++++ doxygen.svg | 28 + dynsections.js | 192 ++ examples.html | 88 + files.html | 96 + folderclosed.svg | 11 + folderclosedd.svg | 11 + folderopen.svg | 17 + folderopend.svg | 12 + functions.html | 158 ++ functions_func.html | 148 ++ functions_vars.html | 87 + group___event.html | 111 + hierarchy.html | 99 + index.html | 82 + jquery.js | 34 + menu.js | 136 ++ menudata.js | 61 + minus.svg | 8 + minusd.svg | 8 + nav_f.png | Bin 0 -> 153 bytes nav_fd.png | Bin 0 -> 169 bytes nav_g.png | Bin 0 -> 95 bytes nav_h.png | Bin 0 -> 98 bytes nav_hd.png | Bin 0 -> 114 bytes open.png | Bin 0 -> 123 bytes plus.svg | 9 + plusd.svg | 9 + search/all_0.js | 4 + search/all_1.js | 7 + search/all_2.js | 6 + search/all_3.js | 8 + search/all_4.js | 14 + search/all_5.js | 5 + search/all_6.js | 5 + search/all_7.js | 13 + search/all_8.js | 5 + search/all_9.js | 6 + search/all_a.js | 4 + search/all_b.js | 6 + search/classes_0.js | 5 + search/classes_1.js | 11 + search/classes_2.js | 5 + search/classes_3.js | 4 + search/close.svg | 18 + search/files_0.js | 4 + search/files_1.js | 4 + search/files_2.js | 4 + search/files_3.js | 5 + search/files_4.js | 4 + search/files_5.js | 4 + search/functions_0.js | 4 + search/functions_1.js | 5 + search/functions_2.js | 4 + search/functions_3.js | 6 + search/functions_4.js | 5 + search/functions_5.js | 5 + search/functions_6.js | 10 + search/functions_7.js | 4 + search/functions_8.js | 5 + search/functions_9.js | 4 + search/functions_a.js | 6 + search/groups_0.js | 4 + search/mag.svg | 24 + search/mag_d.svg | 24 + search/mag_sel.svg | 31 + search/mag_seld.svg | 31 + search/search.css | 291 +++ search/search.js | 840 +++++++ search/searchdata.js | 30 + search/variables_0.js | 4 + search/variables_1.js | 4 + search/variables_2.js | 4 + search/variables_3.js | 5 + search/variables_4.js | 4 + splitbar.png | Bin 0 -> 314 bytes splitbard.png | Bin 0 -> 282 bytes ..._s_a_1_1_intl_1_1_func_handle-members.html | 91 + struct_s_a_1_1_intl_1_1_func_handle.html | 119 + ..._01void_00_01_args_8_8_8_01_4-members.html | 90 + ...handle_3_01void_00_01_args_8_8_8_01_4.html | 115 + ...1_1_intl_1_1_func_member_data-members.html | 96 + struct_s_a_1_1_intl_1_1_func_member_data.html | 314 +++ struct_s_a_1_1_intl_1_1_func_member_data.png | Bin 0 -> 913 bytes ...ntl_1_1_func_member_data_base-members.html | 92 + ..._a_1_1_intl_1_1_func_member_data_base.html | 191 ++ ...s_a_1_1_intl_1_1_func_member_data_base.png | Bin 0 -> 921 bytes ...1_intl_1_1_func_member_handle-members.html | 92 + ...t_s_a_1_1_intl_1_1_func_member_handle.html | 123 + ..._01void_00_01_args_8_8_8_01_4-members.html | 91 + ...handle_3_01void_00_01_args_8_8_8_01_4.html | 119 + sync_off.png | Bin 0 -> 853 bytes sync_on.png | Bin 0 -> 845 bytes tab_a.png | Bin 0 -> 142 bytes tab_ad.png | Bin 0 -> 135 bytes tab_b.png | Bin 0 -> 169 bytes tab_bd.png | Bin 0 -> 173 bytes tab_h.png | Bin 0 -> 177 bytes tab_hd.png | Bin 0 -> 180 bytes tab_s.png | Bin 0 -> 184 bytes tab_sd.png | Bin 0 -> 188 bytes tabs.css | 1 + topics.html | 87 + 145 files changed, 12994 insertions(+) create mode 100644 .nojekyll create mode 100644 _config_8hpp.html create mode 100644 _config_8hpp_source.html create mode 100644 _debug_8hpp.html create mode 100644 _debug_8hpp_source.html create mode 100644 _event_8hpp.html create mode 100644 _event_8hpp_source.html create mode 100644 _event_tests_8cpp-example.html create mode 100644 _function_8hpp.html create mode 100644 _function_8hpp_source.html create mode 100644 _function_member_data_8hpp.html create mode 100644 _function_member_data_8hpp_source.html create mode 100644 _function_tests_8cpp-example.html create mode 100644 _owned_event_8hpp.html create mode 100644 _owned_event_8hpp_source.html create mode 100644 _owned_event_tests_8cpp-example.html create mode 100644 _packed_function_8hpp.html create mode 100644 _packed_function_8hpp_source.html create mode 100644 _packed_function_tests_8cpp-example.html create mode 100644 annotated.html create mode 100644 bc_s.png create mode 100644 bc_sd.png create mode 100644 class_s_a_1_1_event.html create mode 100644 class_s_a_1_1_event_3_01_r_07_args_8_8_8_08_4-members.html create mode 100644 class_s_a_1_1_event_3_01_r_07_args_8_8_8_08_4.html create mode 100644 class_s_a_1_1_event_3_01_r_07_args_8_8_8_08_4.png create mode 100644 class_s_a_1_1_function-members.html create mode 100644 class_s_a_1_1_function.html create mode 100644 class_s_a_1_1_owned_event.html create mode 100644 class_s_a_1_1_owned_event_3_01_owner_t_00_01_r_07_args_8_8_8_08_4-members.html create mode 100644 class_s_a_1_1_owned_event_3_01_owner_t_00_01_r_07_args_8_8_8_08_4.html create mode 100644 class_s_a_1_1_owned_event_3_01_owner_t_00_01_r_07_args_8_8_8_08_4.png create mode 100644 class_s_a_1_1_packed_function-members.html create mode 100644 class_s_a_1_1_packed_function.html create mode 100644 class_s_a_1_1_packed_function.png create mode 100644 classes.html create mode 100644 closed.png create mode 100644 dir_5e42f1ed0250ef473f569b10c537902f.html create mode 100644 dir_856524284ebe840938865dc061f982fb.html create mode 100644 dir_e9843a9354a1fdc8da6d0422e6636225.html create mode 100644 doc.svg create mode 100644 docd.svg create mode 100644 doxygen.css create mode 100644 doxygen.svg create mode 100644 dynsections.js create mode 100644 examples.html create mode 100644 files.html create mode 100644 folderclosed.svg create mode 100644 folderclosedd.svg create mode 100644 folderopen.svg create mode 100644 folderopend.svg create mode 100644 functions.html create mode 100644 functions_func.html create mode 100644 functions_vars.html create mode 100644 group___event.html create mode 100644 hierarchy.html create mode 100644 index.html create mode 100644 jquery.js create mode 100644 menu.js create mode 100644 menudata.js create mode 100644 minus.svg create mode 100644 minusd.svg create mode 100644 nav_f.png create mode 100644 nav_fd.png create mode 100644 nav_g.png create mode 100644 nav_h.png create mode 100644 nav_hd.png create mode 100644 open.png create mode 100644 plus.svg create mode 100644 plusd.svg create mode 100644 search/all_0.js create mode 100644 search/all_1.js create mode 100644 search/all_2.js create mode 100644 search/all_3.js create mode 100644 search/all_4.js create mode 100644 search/all_5.js create mode 100644 search/all_6.js create mode 100644 search/all_7.js create mode 100644 search/all_8.js create mode 100644 search/all_9.js create mode 100644 search/all_a.js create mode 100644 search/all_b.js create mode 100644 search/classes_0.js create mode 100644 search/classes_1.js create mode 100644 search/classes_2.js create mode 100644 search/classes_3.js create mode 100644 search/close.svg create mode 100644 search/files_0.js create mode 100644 search/files_1.js create mode 100644 search/files_2.js create mode 100644 search/files_3.js create mode 100644 search/files_4.js create mode 100644 search/files_5.js create mode 100644 search/functions_0.js create mode 100644 search/functions_1.js create mode 100644 search/functions_2.js create mode 100644 search/functions_3.js create mode 100644 search/functions_4.js create mode 100644 search/functions_5.js create mode 100644 search/functions_6.js create mode 100644 search/functions_7.js create mode 100644 search/functions_8.js create mode 100644 search/functions_9.js create mode 100644 search/functions_a.js create mode 100644 search/groups_0.js create mode 100644 search/mag.svg create mode 100644 search/mag_d.svg create mode 100644 search/mag_sel.svg create mode 100644 search/mag_seld.svg create mode 100644 search/search.css create mode 100644 search/search.js create mode 100644 search/searchdata.js create mode 100644 search/variables_0.js create mode 100644 search/variables_1.js create mode 100644 search/variables_2.js create mode 100644 search/variables_3.js create mode 100644 search/variables_4.js create mode 100644 splitbar.png create mode 100644 splitbard.png create mode 100644 struct_s_a_1_1_intl_1_1_func_handle-members.html create mode 100644 struct_s_a_1_1_intl_1_1_func_handle.html create mode 100644 struct_s_a_1_1_intl_1_1_func_handle_3_01void_00_01_args_8_8_8_01_4-members.html create mode 100644 struct_s_a_1_1_intl_1_1_func_handle_3_01void_00_01_args_8_8_8_01_4.html create mode 100644 struct_s_a_1_1_intl_1_1_func_member_data-members.html create mode 100644 struct_s_a_1_1_intl_1_1_func_member_data.html create mode 100644 struct_s_a_1_1_intl_1_1_func_member_data.png create mode 100644 struct_s_a_1_1_intl_1_1_func_member_data_base-members.html create mode 100644 struct_s_a_1_1_intl_1_1_func_member_data_base.html create mode 100644 struct_s_a_1_1_intl_1_1_func_member_data_base.png create mode 100644 struct_s_a_1_1_intl_1_1_func_member_handle-members.html create mode 100644 struct_s_a_1_1_intl_1_1_func_member_handle.html create mode 100644 struct_s_a_1_1_intl_1_1_func_member_handle_3_01void_00_01_args_8_8_8_01_4-members.html create mode 100644 struct_s_a_1_1_intl_1_1_func_member_handle_3_01void_00_01_args_8_8_8_01_4.html create mode 100644 sync_off.png create mode 100644 sync_on.png create mode 100644 tab_a.png create mode 100644 tab_ad.png create mode 100644 tab_b.png create mode 100644 tab_bd.png create mode 100644 tab_h.png create mode 100644 tab_hd.png create mode 100644 tab_s.png create mode 100644 tab_sd.png create mode 100644 tabs.css create mode 100644 topics.html diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/_config_8hpp.html b/_config_8hpp.html new file mode 100644 index 0000000..9ac68d1 --- /dev/null +++ b/_config_8hpp.html @@ -0,0 +1,93 @@ + + + + + + + +SA_Event: Include/SA/Event/Config.hpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
SA_Event +
+
Sapphire's Suite's C++ Event and Function library.
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
Config.hpp File Reference
+
+
+ +

Evente specific config file. +More...

+ +

Go to the source code of this file.

+

Detailed Description

+

Evente specific config file.

+
+ + + + diff --git a/_config_8hpp_source.html b/_config_8hpp_source.html new file mode 100644 index 0000000..238ea4f --- /dev/null +++ b/_config_8hpp_source.html @@ -0,0 +1,99 @@ + + + + + + + +SA_Event: Include/SA/Event/Config.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
SA_Event +
+
Sapphire's Suite's C++ Event and Function library.
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
Config.hpp
+
+
+Go to the documentation of this file.
1// Copyright (c) 2023 Sapphire's Suite. All Rights Reserved.
+
2
+
3#pragma once
+
4
+
5#ifndef SAPPHIRE_EVENT_CONFIG_GUARD
+
6#define SAPPHIRE_EVENT_CONFIG_GUARD
+
7
+
27#endif // GUARD
+
+ + + + diff --git a/_debug_8hpp.html b/_debug_8hpp.html new file mode 100644 index 0000000..898a8f1 --- /dev/null +++ b/_debug_8hpp.html @@ -0,0 +1,94 @@ + + + + + + + +SA_Event: Include/SA/Event/Debug.hpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
SA_Event +
+
Sapphire's Suite's C++ Event and Function library.
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
Debug.hpp File Reference
+
+
+ +

Event specific Debug file. +More...

+
#include <SA/Collections/Debug>
+
+

Go to the source code of this file.

+

Detailed Description

+

Event specific Debug file.

+
+ + + + diff --git a/_debug_8hpp_source.html b/_debug_8hpp_source.html new file mode 100644 index 0000000..77cb444 --- /dev/null +++ b/_debug_8hpp_source.html @@ -0,0 +1,120 @@ + + + + + + + +SA_Event: Include/SA/Event/Debug.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
SA_Event +
+
Sapphire's Suite's C++ Event and Function library.
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
Debug.hpp
+
+
+Go to the documentation of this file.
1// Copyright (c) 2023 Sapphire's Suite. All Rights Reserved.
+
2
+
3#pragma once
+
4
+
5#ifndef SAPPHIRE_EVENT_DEBUG_GUARD
+
6#define SAPPHIRE_EVENT_DEBUG_GUARD
+
7
+
18#if SA_LOGGER_IMPL || defined(DOXYGEN)
+
19
+
20 // Add Sapphire Logger if implementation linked
+
21 #include <SA/Collections/Debug>
+
22
+
23#else
+
24
+
25 // Define empty logger macro.
+
26
+
27 #define SA_LOG(...) {}
+
28
+
29 #define SA_WARN(...) {}
+
30
+
31 #define SA_ERROR(...) {}
+
32
+
33
+
34 #define SA_ASSERT(...) {}
+
35
+
36#endif
+
37
+
38
+
41#endif // GUARD
+
+ + + + diff --git a/_event_8hpp.html b/_event_8hpp.html new file mode 100644 index 0000000..21d3e78 --- /dev/null +++ b/_event_8hpp.html @@ -0,0 +1,117 @@ + + + + + + + +SA_Event: Include/SA/Event/Event.hpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
SA_Event +
+
Sapphire's Suite's C++ Event and Function library.
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
Event.hpp File Reference
+
+
+ +

Definition of Sapphire Event type. +More...

+
#include <vector>
+#include <SA/Event/FunctionMemberData.hpp>
+#include <SA/Event/Event.inl>
+
+

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + +

+Classes

struct  SA::Intl::FuncHandle< R, Args >
 Handle struct for a function. More...
 
struct  SA::Intl::FuncHandle< void, Args... >
 Handle struct for a function with void return type. More...
 
struct  SA::Intl::FuncMemberHandle< R, Args >
 Handle struct for a member function. More...
 
struct  SA::Intl::FuncMemberHandle< void, Args... >
 Handle struct for a member function with void return type. More...
 
class  SA::Event< R(Args...)>
 Sapphire Event class. More...
 
+

Detailed Description

+

Definition of Sapphire Event type.

+
+ + + + diff --git a/_event_8hpp_source.html b/_event_8hpp_source.html new file mode 100644 index 0000000..cc043d9 --- /dev/null +++ b/_event_8hpp_source.html @@ -0,0 +1,237 @@ + + + + + + + +SA_Event: Include/SA/Event/Event.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
SA_Event +
+
Sapphire's Suite's C++ Event and Function library.
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
Event.hpp
+
+
+Go to the documentation of this file.
1// Copyright (c) 2023 Sapphire's Suite. All Rights Reserved.
+
2
+
3#pragma once
+
4
+
5#ifndef SAPPHIRE_EVENT_EVENT_GUARD
+
6#define SAPPHIRE_EVENT_EVENT_GUARD
+
7
+
8#include <vector>
+
9
+ +
11
+
22namespace SA
+
23{
+
24 namespace Intl
+
25 {
+
32 template <typename R, typename... Args>
+
+ +
34 {
+
36 R(*func)(Args...) = nullptr;
+
37
+
39 R* result = nullptr;
+
40 };
+
+
41
+
49 template <typename... Args>
+
+
50 struct FuncHandle<void, Args...>
+
51 {
+
53 void(*func)(Args...) = nullptr;
+
54 };
+
+
55
+
62 template <typename R, typename... Args>
+
+ +
64 {
+ +
67
+
69 R(*func)(void*, Args...) = nullptr;
+
70
+
72 R* result = nullptr;
+
73 };
+
+
74
+
82 template <typename... Args>
+
+
83 struct FuncMemberHandle<void, Args...>
+
84 {
+ +
87
+
89 void(*func)(void*, Args...) = nullptr;
+
90 };
+
+
91 }
+
92
+
93
+
100 template <typename R, typename... Args>
+
101 class Event;
+
102
+
111 template <typename R, typename... Args>
+
+
112 class Event<R(Args...)>
+
113 {
+
115 using FuncHandle = Intl::FuncHandle<R, Args...>;
+
116
+
118 using FuncMemberHandle = Intl::FuncMemberHandle<R, Args...>;
+
119
+
121 std::vector<FuncHandle> mFunctions;
+
122
+
124 std::vector<FuncMemberHandle> mMemberFunctions;
+
125
+
126 public:
+
128 Event() = default;
+
129
+
131 Event(Event&& _other) = default;
+
132
+
134 Event(const Event&) = delete;
+
135
+ +
138
+
139
+
145 bool IsEmpty() const noexcept;
+
146
+
150 void Clear();
+
151
+
152
+
161 void Add(R(*_func)(Args...), R* _result = nullptr);
+
162
+
174 template <typename C>
+
175 void Add(C* _caller, R(C::* _func)(Args...), R* _result = nullptr);
+
176
+
177
+
187 bool Remove(R(*_func)(Args...));
+
188
+
199 template <typename C>
+
200 bool Remove(const C* _caller, R(C::* _func)(Args...));
+
201
+
202
+
212 bool RRemove(R(*_func)(Args...));
+
213
+
224 template <typename C>
+
225 bool RRemove(const C* _caller, R(C::* _func)(Args...));
+
226
+
227
+
235 void Execute(const Args&... _args);
+
236
+
245 void Execute(std::vector<R>& _results, const Args&... _args);
+
246
+
247
+
253 Event& operator=(Event&& _other);
+
254
+
260 Event& operator=(const Event&) = delete;
+
261
+
262
+
272 Event& operator+=(R(*_func)(Args...));
+
273
+
283 Event& operator-=(R(*_func)(Args...));
+
284
+
285
+
293 void operator()(const Args&... _args);
+
294
+
304 void operator()(std::vector<R>& _results, const Args&... _args);
+
305 };
+
+
306}
+
307
+
308#include <SA/Event/Event.inl>
+
309
+
310
+
318#endif // GUARD
+
Internal Definition of Sapphire FunctionMemberData type.
+
Event(const Event &)=delete
Deleted copy constructor.
+
bool IsEmpty() const noexcept
Check whether this event is empty (no function registered).
+
Event(Event &&_other)=default
Default Move constructor.
+
~Event()
Destructor (auto clean).
+
Event()=default
Default constructor.
+
Sapphire Event default (undefined) declaration.
Definition Event.hpp:101
+
Handle struct for a function.
Definition Event.hpp:34
+
R * result
result ptr handle.
Definition Event.hpp:39
+
R(* func)(Args...)
Function ptr handle.
Definition Event.hpp:36
+
Base struct of member function data.
Definition FunctionMemberData.hpp:32
+
Handle struct for a member function.
Definition Event.hpp:64
+
R(* func)(void *, Args...)
Interface function ptr handle.
Definition Event.hpp:69
+
R * result
result ptr handle.
Definition Event.hpp:72
+
FuncMemberDataBase * data
Abstract member data (used by function interface).
Definition Event.hpp:66
+
+ + + + diff --git a/_event_tests_8cpp-example.html b/_event_tests_8cpp-example.html new file mode 100644 index 0000000..6a05911 --- /dev/null +++ b/_event_tests_8cpp-example.html @@ -0,0 +1,316 @@ + + + + + + + +SA_Event: EventTests.cpp + + + + + + + + + +
+
+ + + + + + +
+
SA_Event +
+
Sapphire's Suite's C++ Event and Function library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
EventTests.cpp
+
+
+

Examples and Unitary Tests for Event.

+
// Copyright (c) 2023 Sapphire's Suite. All Rights Reserved.
+
+
#include <cstring>
+
+
#include <gtest/gtest.h>
+
+ +
using namespace SA;
+
+
namespace SA::UT::EventTest
+
{
+
//{ Variables
+
+
int gFoo = 0;
+
+
int RFoo(int i)
+
{
+
return gFoo += i;
+
}
+
+
+
void Foo(int i)
+
{
+
RFoo(i);
+
}
+
+
+
struct A
+
{
+
static int sBar;
+
+
static int RBar(int i)
+
{
+
return sBar += 2 * i;
+
}
+
static void Bar(int i)
+
{
+
RBar(i);
+
}
+
};
+
+
int A::sBar = 0;
+
+
+
struct B
+
{
+
int pim = 0;
+
+
int RPim(int i)
+
{
+
return pim += i;
+
}
+
void Pim(int i)
+
{
+
RPim(i);
+
}
+
};
+
+
+
int gLambda = 0;
+
auto rlambda = [](int _i) { return gLambda += 3 * _i; };
+
auto lambda = [](int _i) { rlambda(_i); };
+
+
//}
+
+
TEST(Exception, Empty)
+
{
+
Event<void(int)> e;
+
+
EXPECT_TRUE(e.IsEmpty());
+
+
e += Foo;
+
EXPECT_FALSE(e.IsEmpty());
+
+
e -= Foo;
+
EXPECT_TRUE(e.IsEmpty());
+
+
e.Add(Foo);
+
EXPECT_FALSE(e.IsEmpty());
+
+
e.Remove(Foo);
+
EXPECT_TRUE(e.IsEmpty());
+
+
e.Add(Foo);
+
e.RRemove(Foo);
+
EXPECT_TRUE(e.IsEmpty());
+
}
+
+
TEST(Exception, Clear)
+
{
+
Event<void(int)> e;
+
+
e.Clear();
+
+
EXPECT_TRUE(e.IsEmpty());
+
+
e += Foo;
+
+
e.Clear();
+
EXPECT_TRUE(e.IsEmpty());
+
+
B b;
+
e.Add(&b, &B::Pim);
+
+
e.Clear();
+
EXPECT_TRUE(e.IsEmpty());
+
+
e += Foo;
+
e.Add(&b, &B::Pim);
+
+
e.Clear();
+
EXPECT_TRUE(e.IsEmpty());
+
}
+
+
TEST(Exception, Execute)
+
{
+
gFoo = 0;
+
A::sBar = 0;
+
gLambda = 0;
+
+
Event<void(int)> e;
+
+
e += Foo;
+
e += &A::Bar;
+
e += lambda;
+
+
e.Execute(4);
+
+
EXPECT_EQ(gFoo, 4);
+
EXPECT_EQ(A::sBar, 8);
+
EXPECT_EQ(gLambda, 12);
+
+
+
e += Foo;
+
e -= lambda;
+
+
B b1;
+
e.Add(&b1, &B::Pim);
+
+
e(7);
+
EXPECT_EQ(gFoo, 18);
+
EXPECT_EQ(A::sBar, 22);
+
EXPECT_EQ(gLambda, 12);
+
EXPECT_EQ(b1.pim, 7);
+
+
+
EXPECT_TRUE(e.RRemove(Foo));
+
EXPECT_TRUE(e.Remove(&b1, &B::Pim));
+
+
e(2);
+
EXPECT_EQ(gFoo, 20);
+
EXPECT_EQ(A::sBar, 26);
+
EXPECT_EQ(gLambda, 12);
+
EXPECT_EQ(b1.pim, 7);
+
+
EXPECT_TRUE(e.RRemove(Foo));
+
EXPECT_TRUE(e.RRemove(A::Bar));
+
EXPECT_FALSE(e.Remove(Foo));
+
EXPECT_FALSE(e.Remove(A::Bar));
+
+
e(1);
+
EXPECT_EQ(gFoo, 20);
+
EXPECT_EQ(A::sBar, 26);
+
+
e += Foo;
+
e.Clear();
+
EXPECT_EQ(gFoo, 20);
+
}
+
+
TEST(Exception, ExecuteR)
+
{
+
gFoo = 0;
+
A::sBar = 0;
+
gLambda = 0;
+
+
Event<int(int)> e;
+
std::vector<int> res;
+
+
e += RFoo;
+
e += &A::RBar;
+
e += rlambda;
+
+
e.Execute(res, 4);
+
+
EXPECT_EQ(gFoo, 4);
+
EXPECT_EQ(A::sBar, 8);
+
EXPECT_EQ(gLambda, 12);
+
+
int exp_res1[]{ 4, 8, 12 };
+
EXPECT_TRUE(std::memcmp(res.data(), exp_res1, sizeof(exp_res1)) == 0);
+
+
+
+
e += RFoo;
+
e -= rlambda;
+
+
B b1;
+
e.Add(&b1, &B::RPim);
+
+
e(res, 7);
+
EXPECT_EQ(gFoo, 18);
+
EXPECT_EQ(A::sBar, 22);
+
EXPECT_EQ(gLambda, 12);
+
EXPECT_EQ(b1.pim, 7);
+
+
int exp_res2[]{ 4, 8, 12, 11, 22, 18, 7 }; // Append result at the end.
+
EXPECT_TRUE(std::memcmp(res.data(), exp_res2, sizeof(exp_res2)) == 0);
+
+
EXPECT_TRUE(e.RRemove(RFoo));
+
EXPECT_TRUE(e.Remove(&b1, &B::RPim));
+
+
e.Execute(2);
+
EXPECT_EQ(gFoo, 20);
+
EXPECT_EQ(A::sBar, 26);
+
EXPECT_EQ(gLambda, 12);
+
EXPECT_EQ(b1.pim, 7);
+
+
EXPECT_TRUE(e.RRemove(RFoo));
+
EXPECT_TRUE(e.RRemove(A::RBar));
+
EXPECT_FALSE(e.Remove(RFoo));
+
EXPECT_FALSE(e.Remove(A::RBar));
+
+
e(1);
+
EXPECT_EQ(gFoo, 20);
+
EXPECT_EQ(A::sBar, 26);
+
+
e += RFoo;
+
e.Clear();
+
EXPECT_EQ(gFoo, 20);
+
}
+
}
+
Definition of Sapphire Event type.
+
Sapphire Event default (undefined) declaration.
Definition Event.hpp:101
+
+ + + + diff --git a/_function_8hpp.html b/_function_8hpp.html new file mode 100644 index 0000000..43c0ced --- /dev/null +++ b/_function_8hpp.html @@ -0,0 +1,105 @@ + + + + + + + +SA_Event: Include/SA/Event/Function.hpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
SA_Event +
+
Sapphire's Suite's C++ Event and Function library.
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
Function.hpp File Reference
+
+
+ +

Definition of Sapphire Function type. +More...

+
#include <cstddef>
+#include <SA/Event/FunctionMemberData.hpp>
+#include <SA/Event/Function.inl>
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  SA::Function< R, Args >
 Function type implementation. More...
 
+

Detailed Description

+

Definition of Sapphire Function type.

+
+ + + + diff --git a/_function_8hpp_source.html b/_function_8hpp_source.html new file mode 100644 index 0000000..78652df --- /dev/null +++ b/_function_8hpp_source.html @@ -0,0 +1,220 @@ + + + + + + + +SA_Event: Include/SA/Event/Function.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
SA_Event +
+
Sapphire's Suite's C++ Event and Function library.
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
Function.hpp
+
+
+Go to the documentation of this file.
1// Copyright (c) 2023 Sapphire's Suite. All Rights Reserved.
+
2
+
3#pragma once
+
4
+
5#ifndef SAPPHIRE_EVENT_FUNCTION_GUARD
+
6#define SAPPHIRE_EVENT_FUNCTION_GUARD
+
7
+
8#include <cstddef>
+
9
+ +
11
+
22namespace SA
+
23{
+
30 template <typename R, typename... Args>
+
+ +
32 {
+
34 Intl::FuncMemberDataBase* mMemberData = nullptr;
+
35
+
36 union
+
37 {
+
39 R(*mSFunc)(Args...) = nullptr;
+
40
+
42 R(*mIntlFunc)(void*, Args...);
+
43 };
+
44
+
45 public:
+
46
+
47//{ Constructors
+
48
+
50 Function() = default;
+
51
+
57 Function(R(*_func)(Args...)) noexcept;
+
58
+
66 template <typename C>
+
67 Function(C* _caller, R(C::*_func)(Args...));
+
68
+
69
+
76 Function(Function&& _other) noexcept;
+
77
+
84 Function(const Function& _other) noexcept;
+
85
+ +
88
+
89//}
+
90
+
91//{ Equals
+
92
+
98 bool IsEmpty() const noexcept;
+
99
+
105 operator bool() const;
+
106
+
107
+
115 bool Equals(const Function& _other) const;
+
116
+
124 bool operator==(const Function& _rhs) const;
+
125
+
126
+
134 bool operator!=(const Function& _rhs) const;
+
135
+
136//}
+
137
+
138//{ Set
+
139
+
146 void Set(R(*_func)(Args...));
+
147
+
156 template <typename C>
+
157 void Set(C* _caller, R(C::* _func)(Args...));
+
158
+
159
+
168 Function& operator=(Function&& _rhs) noexcept;
+
169
+
178 Function& operator=(const Function& _rhs) noexcept;
+
179
+
180
+
189 Function& operator=(R(*_func)(Args...)) noexcept;
+
190
+
191 //template <typename C>
+
192 //Function& operator=(C* _caller, R(C::* _func)(Args...));
+
193
+
194//}
+
195
+
196//{ Clear
+
197
+
202 void Clear();
+
203
+
210 Function& operator=(std::nullptr_t);
+
211
+
212//}
+
213
+
214//{ Execute
+
215
+
223 R Execute(Args... _args) const;
+
224
+
225
+
233 R operator()(Args... _args) const;
+
234
+
235//}
+
236 };
+
+
237
+
238
+
240
+
247 template <typename R, typename... Args>
+
248 class Function<R(Args...)> : public Function<R, Args...>
+
249 {
+
250 public:
+
251 using Function<R, Args...>::Function;
+
252 using Function<R, Args...>::operator=;
+
253 };
+
254
+
256}
+
257
+
258#include <SA/Event/Function.inl>
+
259
+
260
+
268#endif // GUARD
+
Internal Definition of Sapphire FunctionMemberData type.
+
Function type implementation.
Definition Function.hpp:32
+
R Execute(Args... _args) const
Execute bound function with args.
+
void Set(R(*_func)(Args...))
Set (assignation) new static function to bind. Free previous allocated memory.
+
R(* mIntlFunc)(void *, Args...)
Internal interface function ptr (handle for member function call).
Definition Function.hpp:42
+
bool Equals(const Function &_other) const
Compare 2 function handle.
+
R(* mSFunc)(Args...)
Static function ptr.
Definition Function.hpp:39
+
Function(R(*_func)(Args...)) noexcept
+
Function()=default
Default constructor.
+
void Clear()
Clear bound function. Free allocated memory.
+
bool IsEmpty() const noexcept
Check whether this function handle is empty (no function bound).
+
Base struct of member function data.
Definition FunctionMemberData.hpp:32
+
+ + + + diff --git a/_function_member_data_8hpp.html b/_function_member_data_8hpp.html new file mode 100644 index 0000000..5636a5e --- /dev/null +++ b/_function_member_data_8hpp.html @@ -0,0 +1,108 @@ + + + + + + + +SA_Event: Include/SA/Event/FunctionMemberData.hpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
SA_Event +
+
Sapphire's Suite's C++ Event and Function library.
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
FunctionMemberData.hpp File Reference
+
+
+ +

Internal Definition of Sapphire FunctionMemberData type. +More...

+
#include <cstdint>
+#include <SA/Event/Debug.hpp>
+#include <SA/Event/FunctionMemberData.inl>
+
+

Go to the source code of this file.

+ + + + + + + + +

+Classes

struct  SA::Intl::FuncMemberDataBase
 Base struct of member function data. More...
 
struct  SA::Intl::FuncMemberData< C, R, Args >
 Data struct for typed member function. More...
 
+

Detailed Description

+

Internal Definition of Sapphire FunctionMemberData type.

+
+ + + + diff --git a/_function_member_data_8hpp_source.html b/_function_member_data_8hpp_source.html new file mode 100644 index 0000000..2e11880 --- /dev/null +++ b/_function_member_data_8hpp_source.html @@ -0,0 +1,152 @@ + + + + + + + +SA_Event: Include/SA/Event/FunctionMemberData.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
SA_Event +
+
Sapphire's Suite's C++ Event and Function library.
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
FunctionMemberData.hpp
+
+
+Go to the documentation of this file.
1// Copyright (c) 2023 Sapphire's Suite. All Rights Reserved.
+
2
+
3#pragma once
+
4
+
5#ifndef SAPPHIRE_EVENT_FUNCTION_MEMBER_DATA_GUARD
+
6#define SAPPHIRE_EVENT_FUNCTION_MEMBER_DATA_GUARD
+
7
+
8#include <cstdint>
+
9
+
10#include <SA/Event/Debug.hpp>
+
11
+
22namespace SA
+
23{
+
24 namespace Intl
+
25 {
+
+ +
32 {
+
37 virtual ~FuncMemberDataBase() = default;
+
38
+
44 virtual FuncMemberDataBase* Duplicate() const = 0;
+
45
+
53 virtual bool Compare(const FuncMemberDataBase* _other) const = 0;
+
54 };
+
+
55
+
63 template <typename C, typename R, typename... Args>
+
+ +
65 {
+
67 C* caller = nullptr;
+
68
+
70 R(C::* func)(Args...) = nullptr;
+
71
+
78 FuncMemberData(C* _caller, R(C::* _func)(Args...));
+
79
+
80 FuncMemberDataBase* Duplicate() const override final;
+
81 bool Compare(const FuncMemberDataBase* _other) const override final;
+
82
+
92 static R InterfaceCall(void* _data, Args... _args);
+
93 };
+
+
94 }
+
95}
+
96
+
97#include <SA/Event/FunctionMemberData.inl>
+
98
+
99
+
102#endif // GUARD
+
Event specific Debug file.
+
Base struct of member function data.
Definition FunctionMemberData.hpp:32
+
virtual bool Compare(const FuncMemberDataBase *_other) const =0
Compare child data class
+
virtual FuncMemberDataBase * Duplicate() const =0
Duplicate child data (used for copy operations).
+
virtual ~FuncMemberDataBase()=default
default virtual destructor. Ensure correct child class destruction on delete.
+
Data struct for typed member function.
Definition FunctionMemberData.hpp:65
+
FuncMemberData(C *_caller, R(C::*_func)(Args...))
Default value constructor.
+
R(C::* func)(Args...)
Function ptr handle.
Definition FunctionMemberData.hpp:70
+
bool Compare(const FuncMemberDataBase *_other) const override final
Compare child data class
+
FuncMemberDataBase * Duplicate() const override final
Duplicate child data (used for copy operations).
+
C * caller
Caller ptr handle.
Definition FunctionMemberData.hpp:67
+
static R InterfaceCall(void *_data, Args... _args)
Interface methods requiered for function handle. Ensure correct child type call.
+
+ + + + diff --git a/_function_tests_8cpp-example.html b/_function_tests_8cpp-example.html new file mode 100644 index 0000000..e0530b8 --- /dev/null +++ b/_function_tests_8cpp-example.html @@ -0,0 +1,270 @@ + + + + + + + +SA_Event: FunctionTests.cpp + + + + + + + + + +
+
+ + + + + + +
+
SA_Event +
+
Sapphire's Suite's C++ Event and Function library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
FunctionTests.cpp
+
+
+

Examples and Unitary Tests for Function.

+
// Copyright (c) 2023 Sapphire's Suite. All Rights Reserved.
+
+
#include <gtest/gtest.h>
+
+ +
using namespace SA;
+
+
namespace SA::UT::FunctionTest
+
{
+
//{ Variables
+
+
int Foo(int _i)
+
{
+
return _i * 2;
+
}
+
+
class A
+
{
+
public:
+
int Bar(int _i)
+
{
+
return _i * 3;
+
}
+
};
+
+
//}
+
+
TEST(Function, ValueConstructors)
+
{
+
Function<int(int)> f1;
+
EXPECT_TRUE(f1.IsEmpty());
+
+
Function f2 = Foo;
+
EXPECT_FALSE(f2.IsEmpty());
+
EXPECT_EQ(f2(2), 4);
+
+
A a;
+
Function f3(&a, &A::Bar);
+
EXPECT_FALSE(f3.IsEmpty());
+
EXPECT_EQ(f3(2), 6);
+
}
+
+
TEST(Function, MoveConstructors)
+
{
+
// Static function move.
+
Function f1 = Foo;
+
const Function f2 = std::move(f1);
+
EXPECT_TRUE(f1.IsEmpty());
+
EXPECT_FALSE(f2.IsEmpty());
+
EXPECT_EQ(f2(2), 4);
+
+
// Member function move.
+
A a;
+
Function f3(&a, &A::Bar);
+
const Function f4 = std::move(f3);
+
EXPECT_TRUE(f3.IsEmpty());
+
EXPECT_FALSE(f4.IsEmpty());
+
EXPECT_EQ(f4(2), 6);
+
}
+
+
TEST(Function, CopyConstructors)
+
{
+
// Static function copy.
+
const Function f1 = Foo;
+
const Function f2 = f1;
+
EXPECT_EQ(f2(2), 4);
+
+
// Member function copy.
+
A a;
+
const Function f3(&a, &A::Bar);
+
const Function f4 = f3;
+
EXPECT_EQ(f4(2), 6);
+
}
+
+
TEST(Function, Equals)
+
{
+
A a1;
+
A a2;
+
const Function f1 = Foo;
+
const Function f2(&a1, &A::Bar);
+
const Function f3(&a2, &A::Bar);
+
+
EXPECT_TRUE(f1.Equals(f1));
+
EXPECT_FALSE(f1.Equals(f2));
+
EXPECT_FALSE(f2.Equals(f3));
+
+
EXPECT_EQ(f1, f1);
+
EXPECT_EQ(f2, f2);
+
EXPECT_TRUE(f1 == f1);
+
EXPECT_FALSE(f1 == f2);
+
EXPECT_FALSE(f2 == f3);
+
+
EXPECT_NE(f1, f2);
+
EXPECT_NE(f2, f3);
+
EXPECT_FALSE(f1 != f1);
+
EXPECT_TRUE(f1 != f2);
+
EXPECT_TRUE(f2 != f3);
+
+
+
Function f4 = Foo;
+
EXPECT_FALSE(f4.IsEmpty());
+
+
f4.Clear();
+
EXPECT_TRUE(f4.IsEmpty());
+
}
+
+
TEST(Function, Set)
+
{
+
Function<int(int)> f1;
+
+
EXPECT_TRUE(f1.IsEmpty());
+
+
f1.Set(&Foo);
+
EXPECT_FALSE(f1.IsEmpty());
+
EXPECT_EQ(f1(3), 6);
+
+
A a1;
+
f1.Set(&a1, &A::Bar);
+
EXPECT_FALSE(f1.IsEmpty());
+
+
EXPECT_EQ(f1(3), 9);
+
}
+
+
TEST(Function, Clear)
+
{
+
Function<int(int)> f1;
+
+
EXPECT_TRUE(f1.IsEmpty());
+
+
f1.Set(&Foo);
+
EXPECT_FALSE(f1.IsEmpty());
+
+
f1.Clear();
+
EXPECT_TRUE(f1.IsEmpty());
+
+
+
f1.Set(&Foo);
+
EXPECT_FALSE(f1.IsEmpty());
+
+
f1 = nullptr;
+
EXPECT_TRUE(f1.IsEmpty());
+
}
+
+
TEST(Function, MoveOperators)
+
{
+
// Static function move.
+
Function f1 = Foo;
+
Function<int(int)> f2;
+
f2 = std::move(f1);
+
EXPECT_TRUE(f1.IsEmpty());
+
EXPECT_FALSE(f2.IsEmpty());
+
EXPECT_EQ(f2(2), 4);
+
+
// Member function move.
+
A a;
+
Function f3(&a, &A::Bar);
+
Function<int(int)> f4;
+
f4 = std::move(f3);
+
EXPECT_TRUE(f3.IsEmpty());
+
EXPECT_FALSE(f4.IsEmpty());
+
EXPECT_EQ(f4(2), 6);
+
}
+
+
TEST(Function, CopyOperators)
+
{
+
// Static function copy.
+
const Function f1 = Foo;
+
Function<int(int)> f2;
+
f2 = f1;
+
EXPECT_FALSE(f1.IsEmpty());
+
EXPECT_EQ(f2(2), 4);
+
+
// Member function copy.
+
A a;
+
const Function f3(&a, &A::Bar);
+
Function<int(int)> f4;
+
f4 = f3;
+
EXPECT_FALSE(f1.IsEmpty());
+
EXPECT_EQ(f4(2), 6);
+
}
+
}
+
Definition of Sapphire Function type.
+
Function type implementation.
Definition Function.hpp:32
+
void Set(R(*_func)(Args...))
Set (assignation) new static function to bind. Free previous allocated memory.
+
bool Equals(const Function &_other) const
Compare 2 function handle.
+
void Clear()
Clear bound function. Free allocated memory.
+
bool IsEmpty() const noexcept
Check whether this function handle is empty (no function bound).
+
+ + + + diff --git a/_owned_event_8hpp.html b/_owned_event_8hpp.html new file mode 100644 index 0000000..d07bc7f --- /dev/null +++ b/_owned_event_8hpp.html @@ -0,0 +1,103 @@ + + + + + + + +SA_Event: Include/SA/Event/OwnedEvent.hpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
SA_Event +
+
Sapphire's Suite's C++ Event and Function library.
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
OwnedEvent.hpp File Reference
+
+
+ +

Definition of Sapphire Owned-Event type. +More...

+
#include <SA/Event/Event.hpp>
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  SA::OwnedEvent< OwnerT, R(Args...)>
 Sapphire Owned-Event class. More...
 
+

Detailed Description

+

Definition of Sapphire Owned-Event type.

+
+ + + + diff --git a/_owned_event_8hpp_source.html b/_owned_event_8hpp_source.html new file mode 100644 index 0000000..1ad68b3 --- /dev/null +++ b/_owned_event_8hpp_source.html @@ -0,0 +1,133 @@ + + + + + + + +SA_Event: Include/SA/Event/OwnedEvent.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
SA_Event +
+
Sapphire's Suite's C++ Event and Function library.
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
OwnedEvent.hpp
+
+
+Go to the documentation of this file.
1// Copyright (c) 2023 Sapphire's Suite. All Rights Reserved.
+
2
+
3#pragma once
+
4
+
5#ifndef SAPPHIRE_OWNED_EVENT_EVENT_GUARD
+
6#define SAPPHIRE_OWNED_EVENT_EVENT_GUARD
+
7
+
8#include <SA/Event/Event.hpp>
+
9
+
20namespace SA
+
21{
+
29 template <typename OwnerT, typename R, typename... Args>
+ +
31
+
42 template <typename OwnerT, typename R, typename... Args>
+
+
43 class OwnedEvent<OwnerT, R(Args...)> : private Event<R(Args...)>
+
44 {
+
45 // Only OwnerT can call Execute.
+
46 friend OwnerT;
+
47
+
48 using Event<R(Args...)>::Execute;
+
49 using Event<R(Args...)>::operator();
+
50
+
51 public:
+
52 using Event<R(Args...)>::Event;
+
53 using Event<R(Args...)>::IsEmpty;
+
54 using Event<R(Args...)>::Clear;
+
55 using Event<R(Args...)>::Add;
+
56 using Event<R(Args...)>::Remove;
+
57 using Event<R(Args...)>::RRemove;
+
58 using Event<R(Args...)>::operator=;
+
59 using Event<R(Args...)>::operator+=;
+
60 using Event<R(Args...)>::operator-=;
+
61 };
+
+
62}
+
63
+
72#endif // GUARD
+
Definition of Sapphire Event type.
+
Sapphire Event default (undefined) declaration.
Definition Event.hpp:101
+
Sapphire Owned-Event default (undefined) declaration.
Definition OwnedEvent.hpp:30
+
+ + + + diff --git a/_owned_event_tests_8cpp-example.html b/_owned_event_tests_8cpp-example.html new file mode 100644 index 0000000..8ae36c2 --- /dev/null +++ b/_owned_event_tests_8cpp-example.html @@ -0,0 +1,362 @@ + + + + + + + +SA_Event: OwnedEventTests.cpp + + + + + + + + + +
+
+ + + + + + +
+
SA_Event +
+
Sapphire's Suite's C++ Event and Function library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
OwnedEventTests.cpp
+
+
+

Examples and Unitary Tests for OwnedEvent.

+
// Copyright (c) 2023 Sapphire's Suite. All Rights Reserved.
+
+
#include <cstring>
+
+
#include <gtest/gtest.h>
+
+ +
using namespace SA;
+
+
namespace SA::UT::OwnedEventTest
+
{
+
//{ Variables
+
+
int gFoo = 0;
+
+
int RFoo(int i)
+
{
+
return gFoo += i;
+
}
+
+
+
void Foo(int i)
+
{
+
RFoo(i);
+
}
+
+
+
struct A
+
{
+
static int sBar;
+
+
static int RBar(int i)
+
{
+
return sBar += 2 * i;
+
}
+
static void Bar(int i)
+
{
+
RBar(i);
+
}
+
};
+
+
int A::sBar = 0;
+
+
+
struct B
+
{
+
int pim = 0;
+
+
int RPim(int i)
+
{
+
return pim += i;
+
}
+
void Pim(int i)
+
{
+
RPim(i);
+
}
+
};
+
+
+
int gLambda = 0;
+
auto rlambda = [](int _i) { return gLambda += 3 * _i; };
+
auto lambda = [](int _i) { rlambda(_i); };
+
+
class EventOwner
+
{
+
public:
+
OwnedEvent<EventOwner, void(int)> e;
+
+
void Do(int _param)
+
{
+
e.Execute(_param);
+
}
+
+
void operator()(int _param)
+
{
+
e(_param);
+
}
+
};
+
+
class EventOwnerR
+
{
+
public:
+
OwnedEvent<EventOwnerR, int(int)> e;
+
+
void Do(int _param)
+
{
+
e.Execute(_param);
+
}
+
+
void Do(std::vector<int>& _results, int _param)
+
{
+
e.Execute(_results, _param);
+
}
+
+
void operator()(int _param)
+
{
+
e.Execute(_param);
+
}
+
+
void operator()(std::vector<int>& _results, int _param)
+
{
+
e.Execute(_results, _param);
+
}
+
};
+
+
//}
+
+
TEST(Exception, Empty)
+
{
+
EventOwner owner;
+
+
EXPECT_TRUE(owner.e.IsEmpty());
+
+
owner.e += Foo;
+
EXPECT_FALSE(owner.e.IsEmpty());
+
+
owner.e -= Foo;
+
EXPECT_TRUE(owner.e.IsEmpty());
+
+
owner.e.Add(Foo);
+
EXPECT_FALSE(owner.e.IsEmpty());
+
+
owner.e.Remove(Foo);
+
EXPECT_TRUE(owner.e.IsEmpty());
+
+
owner.e.Add(Foo);
+
owner.e.RRemove(Foo);
+
EXPECT_TRUE(owner.e.IsEmpty());
+
}
+
+
TEST(Exception, Clear)
+
{
+
EventOwner owner;
+
+
owner.e.Clear();
+
+
EXPECT_TRUE(owner.e.IsEmpty());
+
+
owner.e += Foo;
+
+
owner.e.Clear();
+
EXPECT_TRUE(owner.e.IsEmpty());
+
+
B b;
+
owner.e.Add(&b, &B::Pim);
+
+
owner.e.Clear();
+
EXPECT_TRUE(owner.e.IsEmpty());
+
+
owner.e += Foo;
+
owner.e.Add(&b, &B::Pim);
+
+
owner.e.Clear();
+
EXPECT_TRUE(owner.e.IsEmpty());
+
}
+
+
TEST(Exception, Execute)
+
{
+
gFoo = 0;
+
A::sBar = 0;
+
gLambda = 0;
+
+
EventOwner owner;
+
// owner.e.Execute(1); // must not compile.
+
// owner.e(1); // must not compile.
+
+
owner.e += Foo;
+
owner.e += &A::Bar;
+
owner.e += lambda;
+
+
owner.Do(4);
+
+
EXPECT_EQ(gFoo, 4);
+
EXPECT_EQ(A::sBar, 8);
+
EXPECT_EQ(gLambda, 12);
+
+
+
owner.e += Foo;
+
owner.e -= lambda;
+
+
B b1;
+
owner.e.Add(&b1, &B::Pim);
+
+
owner(7);
+
EXPECT_EQ(gFoo, 18);
+
EXPECT_EQ(A::sBar, 22);
+
EXPECT_EQ(gLambda, 12);
+
EXPECT_EQ(b1.pim, 7);
+
+
+
EXPECT_TRUE(owner.e.RRemove(Foo));
+
EXPECT_TRUE(owner.e.Remove(&b1, &B::Pim));
+
+
owner(2);
+
EXPECT_EQ(gFoo, 20);
+
EXPECT_EQ(A::sBar, 26);
+
EXPECT_EQ(gLambda, 12);
+
EXPECT_EQ(b1.pim, 7);
+
+
EXPECT_TRUE(owner.e.RRemove(Foo));
+
EXPECT_TRUE(owner.e.RRemove(A::Bar));
+
EXPECT_FALSE(owner.e.Remove(Foo));
+
EXPECT_FALSE(owner.e.Remove(A::Bar));
+
+
owner(1);
+
EXPECT_EQ(gFoo, 20);
+
EXPECT_EQ(A::sBar, 26);
+
+
owner.e += Foo;
+
owner.e.Clear();
+
EXPECT_EQ(gFoo, 20);
+
}
+
+
TEST(Exception, ExecuteR)
+
{
+
gFoo = 0;
+
A::sBar = 0;
+
gLambda = 0;
+
+
EventOwnerR owner;
+
std::vector<int> res;
+
// owner.e.Execute(res, 1); // must not compile.
+
// owner.e(res, 1); // must not compile.
+
+
owner.e += RFoo;
+
owner.e += &A::RBar;
+
owner.e += rlambda;
+
+
owner.Do(res, 4);
+
+
EXPECT_EQ(gFoo, 4);
+
EXPECT_EQ(A::sBar, 8);
+
EXPECT_EQ(gLambda, 12);
+
+
int exp_res1[]{ 4, 8, 12 };
+
EXPECT_TRUE(std::memcmp(res.data(), exp_res1, sizeof(exp_res1)) == 0);
+
+
+
+
owner.e += RFoo;
+
owner.e -= rlambda;
+
+
B b1;
+
owner.e.Add(&b1, &B::RPim);
+
+
owner(res, 7);
+
EXPECT_EQ(gFoo, 18);
+
EXPECT_EQ(A::sBar, 22);
+
EXPECT_EQ(gLambda, 12);
+
EXPECT_EQ(b1.pim, 7);
+
+
int exp_res2[]{ 4, 8, 12, 11, 22, 18, 7 }; // Append result at the end.
+
EXPECT_TRUE(std::memcmp(res.data(), exp_res2, sizeof(exp_res2)) == 0);
+
+
EXPECT_TRUE(owner.e.RRemove(RFoo));
+
EXPECT_TRUE(owner.e.Remove(&b1, &B::RPim));
+
+
owner.Do(2);
+
EXPECT_EQ(gFoo, 20);
+
EXPECT_EQ(A::sBar, 26);
+
EXPECT_EQ(gLambda, 12);
+
EXPECT_EQ(b1.pim, 7);
+
+
EXPECT_TRUE(owner.e.RRemove(RFoo));
+
EXPECT_TRUE(owner.e.RRemove(A::RBar));
+
EXPECT_FALSE(owner.e.Remove(RFoo));
+
EXPECT_FALSE(owner.e.Remove(A::RBar));
+
+
owner(1);
+
EXPECT_EQ(gFoo, 20);
+
EXPECT_EQ(A::sBar, 26);
+
+
owner.e += RFoo;
+
owner.e.Clear();
+
EXPECT_EQ(gFoo, 20);
+
}
+
}
+
Definition of Sapphire Owned-Event type.
+
Sapphire Owned-Event default (undefined) declaration.
Definition OwnedEvent.hpp:30
+
+ + + + diff --git a/_packed_function_8hpp.html b/_packed_function_8hpp.html new file mode 100644 index 0000000..151be64 --- /dev/null +++ b/_packed_function_8hpp.html @@ -0,0 +1,105 @@ + + + + + + + +SA_Event: Include/SA/Event/PackedFunction.hpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
SA_Event +
+
Sapphire's Suite's C++ Event and Function library.
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
PackedFunction.hpp File Reference
+
+
+ +

Definition of Sapphire Packed Function type. +More...

+
#include <tuple>
+#include <SA/Event/Function.hpp>
+#include <SA/Event/PackedFunction.inl>
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  SA::PackedFunction< R, Args >
 Packed Function type implementation. More...
 
+

Detailed Description

+

Definition of Sapphire Packed Function type.

+
+ + + + diff --git a/_packed_function_8hpp_source.html b/_packed_function_8hpp_source.html new file mode 100644 index 0000000..82b4676 --- /dev/null +++ b/_packed_function_8hpp_source.html @@ -0,0 +1,205 @@ + + + + + + + +SA_Event: Include/SA/Event/PackedFunction.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
SA_Event +
+
Sapphire's Suite's C++ Event and Function library.
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
PackedFunction.hpp
+
+
+Go to the documentation of this file.
1// Copyright (c) 2023 Sapphire's Suite. All Rights Reserved.
+
2
+
3#pragma once
+
4
+
5#ifndef SAPPHIRE_EVENT_PACKED_FUNCTION_GUARD
+
6#define SAPPHIRE_EVENT_PACKED_FUNCTION_GUARD
+
7
+
8#include <tuple>
+
9
+
10#include <SA/Event/Function.hpp>
+
11
+
22namespace SA
+
23{
+
30 template <typename R, typename... Args>
+
+
31 class PackedFunction : private Function<R, Args...>
+
32 {
+
33 std::tuple<Args...> mArgs;
+
34
+
35 public:
+
36
+
37 //{ Constructors
+
38
+
40 PackedFunction() = default;
+
41
+
48 PackedFunction(R(*_func)(Args...), Args... _args) noexcept;
+
49
+
58 template <typename C>
+
59 PackedFunction(C* _caller, R(C::* _func)(Args...), Args... _args);
+
60
+
61
+
68 PackedFunction(PackedFunction&& _other) noexcept;
+
69
+
76 PackedFunction(const PackedFunction& _other) noexcept;
+
77
+
78 //}
+
79
+
80 //{ Equals
+
81
+
82 using Function<R, Args...>::IsEmpty;
+
83 using Function<R, Args...>::operator bool;
+
84
+
85
+
93 bool Equals(const PackedFunction& _other) const;
+
94
+
102 bool operator==(const PackedFunction& _rhs) const;
+
103
+
104
+
112 bool operator!=(const PackedFunction& _rhs) const;
+
113
+
114 //}
+
115
+
116 //{ Set
+
117
+
118 using Function<R, Args...>::Clear;
+
119
+
127 void Set(R(*_func)(Args...), Args... _args);
+
128
+
138 template <typename C>
+
139 void Set(C* _caller, R(C::* _func)(Args...), Args... _args);
+
140
+
141
+ +
151
+ +
161
+
162 //}
+
163
+
164 //{ Execute
+
165
+
171 R Execute() const;
+
172
+
173
+
179 R operator()() const;
+
180
+
181 //}
+
182 };
+
+
183
+
184
+
186
+
193 template <typename R, typename... Args>
+
194 class PackedFunction<R(Args...)> : public PackedFunction<R, Args...>
+
195 {
+
196 public:
+
197 using PackedFunction<R, Args...>::PackedFunction;
+
198 using PackedFunction<R, Args...>::operator=;
+
199 };
+
200
+
202}
+
203
+
204#include <SA/Event/PackedFunction.inl>
+
205
+
206
+
214#endif // GUARD
+
Definition of Sapphire Function type.
+
Function type implementation.
Definition Function.hpp:32
+
void Clear()
Clear bound function. Free allocated memory.
+
bool IsEmpty() const noexcept
Check whether this function handle is empty (no function bound).
+
Packed Function type implementation.
Definition PackedFunction.hpp:32
+
bool operator==(const PackedFunction &_rhs) const
Compare 2 function handle equality.
+
R Execute() const
Execute bound function with packed args.
+
bool operator!=(const PackedFunction &_rhs) const
Compare 2 function handle inequality.
+
void Set(C *_caller, R(C::*_func)(Args...), Args... _args)
Set (assignation) new member function to bind. Free previous allocated memory.
+
PackedFunction()=default
Default constructor.
+
PackedFunction(R(*_func)(Args...), Args... _args) noexcept
+
PackedFunction & operator=(PackedFunction &&_rhs) noexcept
Move operator Steal function handle (no additional memory allocation).
+
void Set(R(*_func)(Args...), Args... _args)
Set (assignation) new static function to bind. Free previous allocated memory.
+
PackedFunction(const PackedFunction &_other) noexcept
+
PackedFunction(C *_caller, R(C::*_func)(Args...), Args... _args)
+
PackedFunction(PackedFunction &&_other) noexcept
+
bool Equals(const PackedFunction &_other) const
Compare 2 function handle.
+
R operator()() const
Execute bound function with packed args operator.
+
PackedFunction & operator=(const PackedFunction &_rhs) noexcept
Copy operator Additional memory allocation on member function copy.
+
+ + + + diff --git a/_packed_function_tests_8cpp-example.html b/_packed_function_tests_8cpp-example.html new file mode 100644 index 0000000..8be7257 --- /dev/null +++ b/_packed_function_tests_8cpp-example.html @@ -0,0 +1,235 @@ + + + + + + + +SA_Event: PackedFunctionTests.cpp + + + + + + + + + +
+
+ + + + + + +
+
SA_Event +
+
Sapphire's Suite's C++ Event and Function library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PackedFunctionTests.cpp
+
+
+

Examples and Unitary Tests for PackedFunction.

+
// Copyright (c) 2023 Sapphire's Suite. All Rights Reserved.
+
+
#include <gtest/gtest.h>
+
+ +
using namespace SA;
+
+
namespace SA::UT::PackedFunctionTest
+
{
+
//{ Variables
+
+
int Foo(int _i, int _j)
+
{
+
return _i * 2 + _j;
+
}
+
+
class A
+
{
+
public:
+
int Bar(int _i, int _j)
+
{
+
return _i * 3 + _j;
+
}
+
};
+
+
//}
+
+
TEST(PackedFunction, ValueConstructors)
+
{
+
PackedFunction<int(int)> f1;
+
EXPECT_TRUE(f1.IsEmpty());
+
+
PackedFunction f2(Foo, 2, 3);
+
EXPECT_FALSE(f2.IsEmpty());
+
EXPECT_EQ(f2(), 7);
+
+
A a;
+
PackedFunction f3(&a, &A::Bar, 2, 2);
+
EXPECT_FALSE(f3.IsEmpty());
+
EXPECT_EQ(f3(), 8);
+
}
+
+
TEST(PackedFunction, MoveConstructors)
+
{
+
// Static function move.
+
PackedFunction f1(Foo, 2, 3);
+
const PackedFunction f2 = std::move(f1);
+
EXPECT_TRUE(f1.IsEmpty());
+
EXPECT_FALSE(f2.IsEmpty());
+
EXPECT_EQ(f2(), 7);
+
+
// Member function move.
+
A a;
+
PackedFunction f3(&a, &A::Bar, 2, 2);
+
const PackedFunction f4 = std::move(f3);
+
EXPECT_TRUE(f3.IsEmpty());
+
EXPECT_FALSE(f4.IsEmpty());
+
EXPECT_EQ(f4(), 8);
+
}
+
+
TEST(PackedFunction, CopyConstructors)
+
{
+
// Static function copy.
+
const PackedFunction f1(Foo, 2, 3);
+
const PackedFunction f2 = f1;
+
EXPECT_FALSE(f1.IsEmpty());
+
EXPECT_EQ(f2(), 7);
+
+
// Member function copy.
+
A a;
+
const PackedFunction f3(&a, &A::Bar, 2, 2);
+
const PackedFunction f4 = f3;
+
EXPECT_FALSE(f3.IsEmpty());
+
EXPECT_EQ(f4(), 8);
+
}
+
+
TEST(PackedFunction, Equals)
+
{
+
A a;
+
const PackedFunction f1(Foo, 2, 3);
+
const PackedFunction f2(&a, &A::Bar, 2, 2);
+
+
EXPECT_TRUE(f1.Equals(f1));
+
EXPECT_FALSE(f1.Equals(f2));
+
+
EXPECT_EQ(f1, f1);
+
EXPECT_FALSE(f1 == f2);
+
+
EXPECT_NE(f1, f2);
+
EXPECT_FALSE(f1 != f1);
+
+
+
PackedFunction f3(Foo, 2, 3);
+
EXPECT_FALSE(f3.IsEmpty());
+
+
f3.Clear();
+
EXPECT_TRUE(f3.IsEmpty());
+
}
+
+
TEST(PackedFunction, Set)
+
{
+
PackedFunction<int(int, int)> f1;
+
f1.Set(Foo, 2, 3);
+
EXPECT_EQ(f1(), 7);
+
+
A a;
+
f1.Set(&a, &A::Bar, 2, 2);
+
EXPECT_EQ(f1(), 8);
+
}
+
+
TEST(PackedFunction, MoveOperators)
+
{
+
// Static function move.
+
PackedFunction f1(Foo, 2, 3);
+
PackedFunction<int(int, int)> f2;
+
f2 = std::move(f1);
+
EXPECT_TRUE(f1.IsEmpty());
+
EXPECT_FALSE(f2.IsEmpty());
+
EXPECT_EQ(f2(), 7);
+
+
// Member function move.
+
A a;
+
PackedFunction f3(&a, &A::Bar, 2, 2);
+
PackedFunction<int(int, int)> f4;
+
f4 = std::move(f3);
+
EXPECT_TRUE(f3.IsEmpty());
+
EXPECT_FALSE(f4.IsEmpty());
+
EXPECT_EQ(f4(), 8);
+
}
+
+
TEST(PackedFunction, CopyOperators)
+
{
+
// Static function copy.
+
const PackedFunction f1(Foo, 2, 3);
+
PackedFunction<int(int, int)> f2;
+
f2 = f1;
+
EXPECT_FALSE(f1.IsEmpty());
+
EXPECT_EQ(f2(), 7);
+
+
// Member function copy.
+
A a;
+
const PackedFunction f3(&a, &A::Bar, 2, 2);
+
PackedFunction<int(int, int)> f4;
+
f4 = f3;
+
EXPECT_FALSE(f3.IsEmpty());
+
EXPECT_EQ(f4(), 8);
+
}
+
}
+
Definition of Sapphire Packed Function type.
+
Packed Function type implementation.
Definition PackedFunction.hpp:32
+
void Set(R(*_func)(Args...), Args... _args)
Set (assignation) new static function to bind. Free previous allocated memory.
+
bool Equals(const PackedFunction &_other) const
Compare 2 function handle.
+
+ + + + diff --git a/annotated.html b/annotated.html new file mode 100644 index 0000000..85375a4 --- /dev/null +++ b/annotated.html @@ -0,0 +1,100 @@ + + + + + + + +SA_Event: Class List + + + + + + + + + +
+
+ + + + + + +
+
SA_Event +
+
Sapphire's Suite's C++ Event and Function library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+
[detail level 123]
+ + + + + + + + + + + + + + +
 NSA
 NIntl
 CFuncHandleHandle struct for a function
 CFuncHandle< void, Args... >Handle struct for a function with void return type
 CFuncMemberDataData struct for typed member function
 CFuncMemberDataBaseBase struct of member function data
 CFuncMemberHandleHandle struct for a member function
 CFuncMemberHandle< void, Args... >Handle struct for a member function with void return type
 CEventSapphire Event default (undefined) declaration
 CEvent< R(Args...)>Sapphire Event class
 CFunctionFunction type implementation
 COwnedEventSapphire Owned-Event default (undefined) declaration
 COwnedEvent< OwnerT, R(Args...)>Sapphire Owned-Event class
 CPackedFunctionPacked Function type implementation
+
+
+ + + + diff --git a/bc_s.png b/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/bc_sd.png b/bc_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..31ca888dc71049713b35c351933a8d0f36180bf1 GIT binary patch literal 635 zcmV->0)+jEP)Jwi0r1~gdSq#w{Bu1q z`craw(p2!hu$4C_$Oc3X(sI6e=9QSTwPt{G) z=htT&^~&c~L2~e{r5_5SYe7#Is-$ln>~Kd%$F#tC65?{LvQ}8O`A~RBB0N~`2M+waajO;5>3B&-viHGJeEK2TQOiPRa zfDKyqwMc4wfaEh4jt>H`nW_Zidwk@Bowp`}(VUaj-pSI(-1L>FJVsX}Yl9~JsqgsZ zUD9(rMwf23Gez6KPa|wwInZodP-2}9@fK0Ga_9{8SOjU&4l`pH4@qlQp83>>HT$xW zER^U>)MyV%t(Lu=`d=Y?{k1@}&r7ZGkFQ%z%N+sE9BtYjovzxyxCPxN6&@wLK{soQ zSmkj$aLI}miuE^p@~4}mg9OjDfGEkgY4~^XzLRUBB*O{+&vq<3v(E%+k_i%=`~j%{ Vj14gnt9}3g002ovPDHLkV1n!oC4m3{ literal 0 HcmV?d00001 diff --git a/class_s_a_1_1_event.html b/class_s_a_1_1_event.html new file mode 100644 index 0000000..ca273d1 --- /dev/null +++ b/class_s_a_1_1_event.html @@ -0,0 +1,104 @@ + + + + + + + +SA_Event: SA::Event< R, Args > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
SA_Event +
+
Sapphire's Suite's C++ Event and Function library.
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
SA::Event< R, Args > Class Template Reference
+
+
+ +

Sapphire Event default (undefined) declaration. + More...

+

Detailed Description

+
template<typename R, typename... Args>
+class SA::Event< R, Args >

Sapphire Event default (undefined) declaration.

+
Template Parameters
+ + + +
RReturn type.
ArgsArgument types
+
+
+
Examples
EventTests.cpp.
+
+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/class_s_a_1_1_event_3_01_r_07_args_8_8_8_08_4-members.html b/class_s_a_1_1_event_3_01_r_07_args_8_8_8_08_4-members.html new file mode 100644 index 0000000..869e85b --- /dev/null +++ b/class_s_a_1_1_event_3_01_r_07_args_8_8_8_08_4-members.html @@ -0,0 +1,109 @@ + + + + + + + +SA_Event: Member List + + + + + + + + + +
+
+ + + + + + +
+
SA_Event +
+
Sapphire's Suite's C++ Event and Function library.
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
SA::Event< R(Args...)> Member List
+
+
+ +

This is the complete list of members for SA::Event< R(Args...)>, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + +
Add(R(*_func)(Args...), R *_result=nullptr)SA::Event< R(Args...)>
Add(C *_caller, R(C::*_func)(Args...), R *_result=nullptr)SA::Event< R(Args...)>
Clear()SA::Event< R(Args...)>
Event()=defaultSA::Event< R(Args...)>
Event(Event &&_other)=defaultSA::Event< R(Args...)>
Event(const Event &)=deleteSA::Event< R(Args...)>
Execute(const Args &... _args)SA::Event< R(Args...)>
Execute(std::vector< R > &_results, const Args &... _args)SA::Event< R(Args...)>
IsEmpty() const noexceptSA::Event< R(Args...)>
operator()(const Args &... _args)SA::Event< R(Args...)>
operator()(std::vector< R > &_results, const Args &... _args)SA::Event< R(Args...)>
operator+=(R(*_func)(Args...))SA::Event< R(Args...)>
operator-=(R(*_func)(Args...))SA::Event< R(Args...)>
operator=(Event &&_other)SA::Event< R(Args...)>
operator=(const Event &)=deleteSA::Event< R(Args...)>
Remove(R(*_func)(Args...))SA::Event< R(Args...)>
Remove(const C *_caller, R(C::*_func)(Args...))SA::Event< R(Args...)>
RRemove(R(*_func)(Args...))SA::Event< R(Args...)>
RRemove(const C *_caller, R(C::*_func)(Args...))SA::Event< R(Args...)>
~Event()SA::Event< R(Args...)>
+ + + + diff --git a/class_s_a_1_1_event_3_01_r_07_args_8_8_8_08_4.html b/class_s_a_1_1_event_3_01_r_07_args_8_8_8_08_4.html new file mode 100644 index 0000000..90c50b8 --- /dev/null +++ b/class_s_a_1_1_event_3_01_r_07_args_8_8_8_08_4.html @@ -0,0 +1,713 @@ + + + + + + + +SA_Event: SA::Event< R(Args...)> Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
SA_Event +
+
Sapphire's Suite's C++ Event and Function library.
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
SA::Event< R(Args...)> Class Template Reference
+
+
+ +

Sapphire Event class. + More...

+ +

#include <Event.hpp>

+
+Inheritance diagram for SA::Event< R(Args...)>:
+
+
+ + +SA::OwnedEvent< OwnerT, R(Args...)> + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Event ()=default
 Default constructor.
 
Event (Event &&_other)=default
 Default Move constructor.
 
Event (const Event &)=delete
 Deleted copy constructor.
 
~Event ()
 Destructor (auto clean).
 
bool IsEmpty () const noexcept
 Check whether this event is empty (no function registered).
 
+void Clear ()
 Clear all registered function.
 
void Add (R(*_func)(Args...), R *_result=nullptr)
 Add a function to register.
 
template<typename C >
void Add (C *_caller, R(C::*_func)(Args...), R *_result=nullptr)
 Add a member function to register.
 
bool Remove (R(*_func)(Args...))
 Remove a registered function.
 
template<typename C >
bool Remove (const C *_caller, R(C::*_func)(Args...))
 Remove a registered member function.
 
bool RRemove (R(*_func)(Args...))
 Reverse Remove a registered function.
 
template<typename C >
bool RRemove (const C *_caller, R(C::*_func)(Args...))
 Reverse Remove a registered member function.
 
void Execute (const Args &... _args)
 Execute all registered functions.
 
void Execute (std::vector< R > &_results, const Args &... _args)
 Execute all registered functions.
 
Eventoperator= (Event &&_other)
 Move operator.
 
Eventoperator= (const Event &)=delete
 Deleted copy operator.
 
Eventoperator+= (R(*_func)(Args...))
 Add a function to register.
 
Eventoperator-= (R(*_func)(Args...))
 Remove a registered function.
 
void operator() (const Args &... _args)
 Execute all registered functions.
 
void operator() (std::vector< R > &_results, const Args &... _args)
 Execute all registered functions.
 
+

Detailed Description

+
template<typename R, typename... Args>
+class SA::Event< R(Args...)>

Sapphire Event class.

+

Template specialization for R(Args...) deduction.

+
Template Parameters
+ + + +
RReturn type.
ArgsArgument types
+
+
+

Member Function Documentation

+ +

◆ Add() [1/2]

+ +
+
+
+template<typename R , typename... Args>
+
+template<typename C >
+ + + + + + + + + + + + + + + + + + + + + + + + +
void SA::Event< R(Args...)>::Add (C * _caller,
R(C::*)(Args...) _func,
R * _result = nullptr 
)
+
+ +

Add a member function to register.

+

Ensure registered order on execution.

+
Template Parameters
+ + +
CCaller type.
+
+
+
Parameters
+ + + + +
[in]_callerCaller instance to call function from.
[in]_funcMember function to register.
[in]_resultOptionnal result handle.
+
+
+ +
+
+ +

◆ Add() [2/2]

+ +
+
+
+template<typename R , typename... Args>
+ + + + + + + + + + + + + + + + + + +
void SA::Event< R(Args...)>::Add (R(*)(Args...) _func,
R * _result = nullptr 
)
+
+ +

Add a function to register.

+

Ensure registered order on execution.

+
Parameters
+ + + +
[in]_funcFunction to register.
[in]_resultOptionnal result handle.
+
+
+ +
+
+ +

◆ Execute() [1/2]

+ +
+
+
+template<typename R , typename... Args>
+ + + + + + + + +
void SA::Event< R(Args...)>::Execute (const Args &... _args)
+
+ +

Execute all registered functions.

+

Ensure registered order execution.

+
Parameters
+ + +
[in]_argsArgument to forward to functions.
+
+
+ +
+
+ +

◆ Execute() [2/2]

+ +
+
+
+template<typename R , typename... Args>
+ + + + + + + + + + + + + + + + + + +
void SA::Event< R(Args...)>::Execute (std::vector< R > & _results,
const Args &... _args 
)
+
+ +

Execute all registered functions.

+

Ensure registered order execution.

+
Parameters
+ + + +
[in]_resultsOptionnal output results (append).
[in]_argsArgument to forward to functions.
+
+
+ +
+
+ +

◆ IsEmpty()

+ +
+
+
+template<typename R , typename... Args>
+ + + + + +
+ + + + + + + +
bool SA::Event< R(Args...)>::IsEmpty () const
+
+noexcept
+
+ +

Check whether this event is empty (no function registered).

+
Returns
true if empty.
+ +
+
+ +

◆ operator()() [1/2]

+ +
+
+
+template<typename R , typename... Args>
+ + + + + + + + +
void SA::Event< R(Args...)>::operator() (const Args &... _args)
+
+ +

Execute all registered functions.

+

Use Execute() method.

+
Parameters
+ + +
[in]_argsArgument to forward to functions.
+
+
+ +
+
+ +

◆ operator()() [2/2]

+ +
+
+
+template<typename R , typename... Args>
+ + + + + + + + + + + + + + + + + + +
void SA::Event< R(Args...)>::operator() (std::vector< R > & _results,
const Args &... _args 
)
+
+ +

Execute all registered functions.

+

Use Execute() method. Ensure registered order execution.

+
Parameters
+ + + +
[in]_resultsOptionnal output results (append).
[in]_argsArgument to forward to functions.
+
+
+ +
+
+ +

◆ operator+=()

+ +
+
+
+template<typename R , typename... Args>
+ + + + + + + + +
Event & SA::Event< R(Args...)>::operator+= (R(*)(Args...) _func)
+
+ +

Add a function to register.

+

Use Add() method.

+
Parameters
+ + +
[in]_funcFunction to register.
+
+
+
Returns
This event.
+ +
+
+ +

◆ operator-=()

+ +
+
+
+template<typename R , typename... Args>
+ + + + + + + + +
Event & SA::Event< R(Args...)>::operator-= (R(*)(Args...) _func)
+
+ +

Remove a registered function.

+

Use Remove() method.

+
Parameters
+ + +
[in]_funcFunction to unregister.
+
+
+
Returns
This event.
+ +
+
+ +

◆ operator=() [1/2]

+ +
+
+
+template<typename R , typename... Args>
+ + + + + +
+ + + + + + + + +
Event & SA::Event< R(Args...)>::operator= (const Event< R(Args...)> & )
+
+delete
+
+ +

Deleted copy operator.

+
Returns
this.
+ +
+
+ +

◆ operator=() [2/2]

+ +
+
+
+template<typename R , typename... Args>
+ + + + + + + + +
Event & SA::Event< R(Args...)>::operator= (Event< R(Args...)> && _other)
+
+ +

Move operator.

+
Returns
this.
+ +
+
+ +

◆ Remove() [1/2]

+ +
+
+
+template<typename R , typename... Args>
+
+template<typename C >
+ + + + + + + + + + + + + + + + + + +
bool SA::Event< R(Args...)>::Remove (const C * _caller,
R(C::*)(Args...) _func 
)
+
+ +

Remove a registered member function.

+

Start function iteration from first to last registered.

+
Parameters
+ + + +
[in]_callerCaller instance of registered function.
[in]_funcMember function to unregister.
+
+
+
Returns
true if successfully removed, otherwise false.
+ +
+
+ +

◆ Remove() [2/2]

+ +
+
+
+template<typename R , typename... Args>
+ + + + + + + + +
bool SA::Event< R(Args...)>::Remove (R(*)(Args...) _func)
+
+ +

Remove a registered function.

+

Start function iteration from first to last registered.

+
Parameters
+ + +
[in]_funcFunction to unregister.
+
+
+
Returns
true if successfully removed, otherwise false.
+ +
+
+ +

◆ RRemove() [1/2]

+ +
+
+
+template<typename R , typename... Args>
+
+template<typename C >
+ + + + + + + + + + + + + + + + + + +
bool SA::Event< R(Args...)>::RRemove (const C * _caller,
R(C::*)(Args...) _func 
)
+
+ +

Reverse Remove a registered member function.

+

Start function iteration from last to first registered.

+
Parameters
+ + + +
[in]_callerCaller instance of registered function.
[in]_funcMember function to unregister.
+
+
+
Returns
true if successfully removed, otherwise false.
+ +
+
+ +

◆ RRemove() [2/2]

+ +
+
+
+template<typename R , typename... Args>
+ + + + + + + + +
bool SA::Event< R(Args...)>::RRemove (R(*)(Args...) _func)
+
+ +

Reverse Remove a registered function.

+

Start function iteration from last to first registered.

+
Parameters
+ + +
[in]_funcFunction to unregister.
+
+
+
Returns
true if successfully removed, otherwise false.
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/class_s_a_1_1_event_3_01_r_07_args_8_8_8_08_4.png b/class_s_a_1_1_event_3_01_r_07_args_8_8_8_08_4.png new file mode 100644 index 0000000000000000000000000000000000000000..3165038b11a62c7cc04b8245bbbf20f283a3f7a6 GIT binary patch literal 862 zcmV-k1EKthP)vTJr#LVva2S`&=)l0h|Ns9}lGCUF000SeQchC<|NsC0|NsC0Hv*f~0008% zNkls?sg)+Na)tXI>=^+X&O)AA~74X@Y`zH}B@w@d3rk}_R`y~MiS zC9E65lDXMro?^mt*2g?sF5i}9$M3N2aqLvvu&di-AMOAfYhYe&y*~qcctj-WOI_$q z%S-nl-FXeHW(u}Rex1D}JNE66r0?odA6~1}#_uaTlDjAkm2qQNTd1v=UJCkZZ!(QE zV{I!s>`UDVNhK();h)dzGgeoSt|rs-+OWRWd9{bFHm3Ufx`BoG54Ov*`aaxdTasST zrSmFD|3PU4=NBdEl-`o{FoS=eHG$0!<;76nf>n}!K!a71`qN;Qr2aIsmQu<+1OPv; z4*`#@o%zx`0$vWyfNv4{ge_9>dHS1@5MvwL1$MxCw6O)~_Iw;QQjN?yMk~~s;crw_q z=i4O-k|Yxa6VJNd+1<2ji{{Vrx^1$oyV>L6Vj7cp!e@ng!n(YCwNLjnui+4_&6kU- zK3VTt)@`y*_E4Vs+`viJu`LB=7eWGSHo*3#`Uab1Q>78oQ7y+Qf9N;;sn0!U%>hpG z>%L6Vj(t0lKD<`nxwslQo2~HBmDf|BIjc|SUhT0OveUB6O>YXXv2iV*KzG2}R&>69 zsn0`Jn|rd*>!=Afc|Blt{kbWb_Plyqhfrys`TRcXH_vMAVcQOz+5JUUl6*yj ol_dMqU?s`^G_y|AG~Gl008{hF$|H58$p8QV07*qoM6N<$g1SGiwg3PC literal 0 HcmV?d00001 diff --git a/class_s_a_1_1_function-members.html b/class_s_a_1_1_function-members.html new file mode 100644 index 0000000..5eabd80 --- /dev/null +++ b/class_s_a_1_1_function-members.html @@ -0,0 +1,111 @@ + + + + + + + +SA_Event: Member List + + + + + + + + + +
+
+ + + + + + +
+
SA_Event +
+
Sapphire's Suite's C++ Event and Function library.
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
SA::Function< R, Args > Member List
+
+
+ +

This is the complete list of members for SA::Function< R, Args >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + +
Clear()SA::Function< R, Args >
Equals(const Function &_other) constSA::Function< R, Args >
Execute(Args... _args) constSA::Function< R, Args >
Function()=defaultSA::Function< R, Args >
Function(R(*_func)(Args...)) noexceptSA::Function< R, Args >
Function(C *_caller, R(C::*_func)(Args...))SA::Function< R, Args >
Function(Function &&_other) noexceptSA::Function< R, Args >
Function(const Function &_other) noexceptSA::Function< R, Args >
IsEmpty() const noexceptSA::Function< R, Args >
mIntlFuncSA::Function< R, Args >
mSFuncSA::Function< R, Args >
operator bool() constSA::Function< R, Args >
operator!=(const Function &_rhs) constSA::Function< R, Args >
operator()(Args... _args) constSA::Function< R, Args >
operator=(Function &&_rhs) noexceptSA::Function< R, Args >
operator=(const Function &_rhs) noexceptSA::Function< R, Args >
operator=(R(*_func)(Args...)) noexceptSA::Function< R, Args >
operator=(std::nullptr_t)SA::Function< R, Args >
operator==(const Function &_rhs) constSA::Function< R, Args >
Set(R(*_func)(Args...))SA::Function< R, Args >
Set(C *_caller, R(C::*_func)(Args...))SA::Function< R, Args >
~Function()SA::Function< R, Args >
+ + + + diff --git a/class_s_a_1_1_function.html b/class_s_a_1_1_function.html new file mode 100644 index 0000000..31d0c1c --- /dev/null +++ b/class_s_a_1_1_function.html @@ -0,0 +1,737 @@ + + + + + + + +SA_Event: SA::Function< R, Args > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
SA_Event +
+
Sapphire's Suite's C++ Event and Function library.
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
SA::Function< R, Args > Class Template Reference
+
+
+ +

Function type implementation. + More...

+ +

#include <Function.hpp>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Function ()=default
 Default constructor.
 
 Function (R(*_func)(Args...)) noexcept
 
template<typename C >
 Function (C *_caller, R(C::*_func)(Args...))
 
 Function (Function &&_other) noexcept
 
 Function (const Function &_other) noexcept
 
~Function ()
 Destructor (free memory).
 
bool IsEmpty () const noexcept
 Check whether this function handle is empty (no function bound).
 
 operator bool () const
 !IsEmpty bool operator.
 
bool Equals (const Function &_other) const
 Compare 2 function handle.
 
bool operator== (const Function &_rhs) const
 Compare 2 function handle equality.
 
bool operator!= (const Function &_rhs) const
 Compare 2 function handle inequality.
 
void Set (R(*_func)(Args...))
 Set (assignation) new static function to bind. Free previous allocated memory.
 
template<typename C >
void Set (C *_caller, R(C::*_func)(Args...))
 Set (assignation) new member function to bind. Free previous allocated memory.
 
Functionoperator= (Function &&_rhs) noexcept
 Move operator Steal function handle (no additional memory allocation).
 
Functionoperator= (const Function &_rhs) noexcept
 Copy operator Additional memory allocation on member function copy.
 
Functionoperator= (R(*_func)(Args...)) noexcept
 
+void Clear ()
 Clear bound function. Free allocated memory.
 
Functionoperator= (std::nullptr_t)
 Clear bound function. Free allocated memory.
 
Execute (Args... _args) const
 Execute bound function with args.
 
operator() (Args... _args) const
 Execute bound function with args operator.
 
+

Detailed Description

+
template<typename R, typename... Args>
+class SA::Function< R, Args >

Function type implementation.

+
Template Parameters
+ + + +
RReturn type.
ArgsArgument types
+
+
+
Examples
FunctionTests.cpp.
+
+

Constructor & Destructor Documentation

+ +

◆ Function() [1/4]

+ +
+
+
+template<typename R , typename... Args>
+ + + + + +
+ + + + + + + + +
SA::Function< R, Args >::Function (R(*)(Args...) _func)
+
+noexcept
+
+

Value constructor with static function.

+
Parameters
+ + +
[in]_funcStatic function to bind.
+
+
+ +
+
+ +

◆ Function() [2/4]

+ +
+
+
+template<typename R , typename... Args>
+
+template<typename C >
+ + + + + + + + + + + + + + + + + + +
SA::Function< R, Args >::Function (C * _caller,
R(C::*)(Args...) _func 
)
+
+

Value constructor with member function.

+
Template Parameters
+ + +
CCaller type.
+
+
+
Parameters
+ + + +
[in]_callerObject caller of member function.
[in]_funcMember function to bind.
+
+
+ +
+
+ +

◆ Function() [3/4]

+ +
+
+
+template<typename R , typename... Args>
+ + + + + +
+ + + + + + + + +
SA::Function< R, Args >::Function (Function< R, Args > && _other)
+
+noexcept
+
+

Move constructor. Steal function handle (no additional memory allocation).

+
Parameters
+ + +
[in]_otherOther handle to move.
+
+
+ +
+
+ +

◆ Function() [4/4]

+ +
+
+
+template<typename R , typename... Args>
+ + + + + +
+ + + + + + + + +
SA::Function< R, Args >::Function (const Function< R, Args > & _other)
+
+noexcept
+
+

Copy constructor. Additional memory allocation on member function copy.

+
Parameters
+ + +
[in]_otherOther handle to copy.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ Equals()

+ +
+
+
+template<typename R , typename... Args>
+ + + + + + + + +
bool SA::Function< R, Args >::Equals (const Function< R, Args > & _other) const
+
+ +

Compare 2 function handle.

+
Parameters
+ + +
[in]_otherOther function to compare to.
+
+
+
Returns
Whether this and _other are equal.
+
Examples
FunctionTests.cpp.
+
+ +
+
+ +

◆ Execute()

+ +
+
+
+template<typename R , typename... Args>
+ + + + + + + + +
R SA::Function< R, Args >::Execute (Args... _args) const
+
+ +

Execute bound function with args.

+
Parameters
+ + +
[in]_argsArgument to forward to bound function.
+
+
+
Returns
Bound function result value.
+ +
+
+ +

◆ IsEmpty()

+ +
+
+
+template<typename R , typename... Args>
+ + + + + +
+ + + + + + + +
bool SA::Function< R, Args >::IsEmpty () const
+
+noexcept
+
+ +

Check whether this function handle is empty (no function bound).

+
Returns
true if empty.
+
Examples
FunctionTests.cpp.
+
+ +
+
+ +

◆ operator bool()

+ +
+
+
+template<typename R , typename... Args>
+ + + + + + + +
SA::Function< R, Args >::operator bool () const
+
+ +

!IsEmpty bool operator.

+
Returns
true if non empty.
+ +
+
+ +

◆ operator!=()

+ +
+
+
+template<typename R , typename... Args>
+ + + + + + + + +
bool SA::Function< R, Args >::operator!= (const Function< R, Args > & _rhs) const
+
+ +

Compare 2 function handle inequality.

+
Parameters
+ + +
[in]_rhsOther function to compare to.
+
+
+
Returns
Whether this and _other are non-equal.
+ +
+
+ +

◆ operator()()

+ +
+
+
+template<typename R , typename... Args>
+ + + + + + + + +
R SA::Function< R, Args >::operator() (Args... _args) const
+
+ +

Execute bound function with args operator.

+
Parameters
+ + +
[in]_argsArgument to forward to bound function.
+
+
+
Returns
Bound function result value.
+ +
+
+ +

◆ operator=() [1/4]

+ +
+
+
+template<typename R , typename... Args>
+ + + + + +
+ + + + + + + + +
Function & SA::Function< R, Args >::operator= (const Function< R, Args > & _rhs)
+
+noexcept
+
+ +

Copy operator Additional memory allocation on member function copy.

+
Parameters
+ + +
[in]_rhsFunction handle to move.
+
+
+
Returns
this.
+ +
+
+ +

◆ operator=() [2/4]

+ +
+
+
+template<typename R , typename... Args>
+ + + + + +
+ + + + + + + + +
Function & SA::Function< R, Args >::operator= (Function< R, Args > && _rhs)
+
+noexcept
+
+ +

Move operator Steal function handle (no additional memory allocation).

+
Parameters
+ + +
[in]_rhsFunction handle to move.
+
+
+
Returns
this.
+ +
+
+ +

◆ operator=() [3/4]

+ +
+
+
+template<typename R , typename... Args>
+ + + + + +
+ + + + + + + + +
Function & SA::Function< R, Args >::operator= (R(*)(Args...) _func)
+
+noexcept
+
+

Value assignation with static function. Free previous allocated memory.

+
Parameters
+ + +
[in]_funcStatic function to bind.
+
+
+
Returns
this
+ +
+
+ +

◆ operator=() [4/4]

+ +
+
+
+template<typename R , typename... Args>
+ + + + + + + + +
Function & SA::Function< R, Args >::operator= (std::nullptr_t )
+
+ +

Clear bound function. Free allocated memory.

+
Returns
this
+ +
+
+ +

◆ operator==()

+ +
+
+
+template<typename R , typename... Args>
+ + + + + + + + +
bool SA::Function< R, Args >::operator== (const Function< R, Args > & _rhs) const
+
+ +

Compare 2 function handle equality.

+
Parameters
+ + +
[in]_rhsOther function to compare to.
+
+
+
Returns
Whether this and _other are equal.
+ +
+
+ +

◆ Set() [1/2]

+ +
+
+
+template<typename R , typename... Args>
+
+template<typename C >
+ + + + + + + + + + + + + + + + + + +
void SA::Function< R, Args >::Set (C * _caller,
R(C::*)(Args...) _func 
)
+
+ +

Set (assignation) new member function to bind. Free previous allocated memory.

+
Template Parameters
+ + +
CCaller type.
+
+
+
Parameters
+ + + +
[in]_callerNew object caller of member function.
[in]_funcNew member function to bind.
+
+
+ +
+
+ +

◆ Set() [2/2]

+ +
+
+
+template<typename R , typename... Args>
+ + + + + + + + +
void SA::Function< R, Args >::Set (R(*)(Args...) _func)
+
+ +

Set (assignation) new static function to bind. Free previous allocated memory.

+
Parameters
+ + +
[in]_funcNew static function to bind.
+
+
+
Examples
FunctionTests.cpp.
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/class_s_a_1_1_owned_event.html b/class_s_a_1_1_owned_event.html new file mode 100644 index 0000000..113e2fb --- /dev/null +++ b/class_s_a_1_1_owned_event.html @@ -0,0 +1,105 @@ + + + + + + + +SA_Event: SA::OwnedEvent< OwnerT, R, Args > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
SA_Event +
+
Sapphire's Suite's C++ Event and Function library.
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
SA::OwnedEvent< OwnerT, R, Args > Class Template Reference
+
+
+ +

Sapphire Owned-Event default (undefined) declaration. + More...

+

Detailed Description

+
template<typename OwnerT, typename R, typename... Args>
+class SA::OwnedEvent< OwnerT, R, Args >

Sapphire Owned-Event default (undefined) declaration.

+
Template Parameters
+ + + + +
OwnerTOwner type.
RReturn type.
ArgsArgument types
+
+
+
Examples
OwnedEventTests.cpp.
+
+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/class_s_a_1_1_owned_event_3_01_owner_t_00_01_r_07_args_8_8_8_08_4-members.html b/class_s_a_1_1_owned_event_3_01_owner_t_00_01_r_07_args_8_8_8_08_4-members.html new file mode 100644 index 0000000..7b989dd --- /dev/null +++ b/class_s_a_1_1_owned_event_3_01_owner_t_00_01_r_07_args_8_8_8_08_4-members.html @@ -0,0 +1,88 @@ + + + + + + + +SA_Event: Member List + + + + + + + + + +
+
+ + + + + + +
+
SA_Event +
+
Sapphire's Suite's C++ Event and Function library.
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
SA::OwnedEvent< OwnerT, R(Args...)> Member List
+
+
+ +

This is the complete list of members for SA::OwnedEvent< OwnerT, R(Args...)>, including all inherited members.

+
+ + + + diff --git a/class_s_a_1_1_owned_event_3_01_owner_t_00_01_r_07_args_8_8_8_08_4.html b/class_s_a_1_1_owned_event_3_01_owner_t_00_01_r_07_args_8_8_8_08_4.html new file mode 100644 index 0000000..1731b6a --- /dev/null +++ b/class_s_a_1_1_owned_event_3_01_owner_t_00_01_r_07_args_8_8_8_08_4.html @@ -0,0 +1,117 @@ + + + + + + + +SA_Event: SA::OwnedEvent< OwnerT, R(Args...)> Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
SA_Event +
+
Sapphire's Suite's C++ Event and Function library.
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
SA::OwnedEvent< OwnerT, R(Args...)> Class Template Reference
+
+
+ +

Sapphire Owned-Event class. + More...

+ +

#include <OwnedEvent.hpp>

+
+Inheritance diagram for SA::OwnedEvent< OwnerT, R(Args...)>:
+
+
+ + +SA::Event< R(Args...)> + +
+

Detailed Description

+
template<typename OwnerT, typename R, typename... Args>
+class SA::OwnedEvent< OwnerT, R(Args...)>

Sapphire Owned-Event class.

+

Event class with Execute-protected system. Only Owner class is allowed to call Execute().

+
Template Parameters
+ + + + +
OwnerTOwner type.
RReturn type.
ArgsArgument types
+
+
+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/class_s_a_1_1_owned_event_3_01_owner_t_00_01_r_07_args_8_8_8_08_4.png b/class_s_a_1_1_owned_event_3_01_owner_t_00_01_r_07_args_8_8_8_08_4.png new file mode 100644 index 0000000000000000000000000000000000000000..6d9042cd5eea9da4af5d948856a7f994ce636c05 GIT binary patch literal 866 zcmeAS@N?(olHy`uVBq!ia0vp^uYov#gBeJkzgZLrq@)9ULR|m<{|{uoc=NTi|Il&^ z1I+@7>1SRXIB)lFzsbG9NH@a%I0Z+?u zXSuZh+IA)}Iwuz?p8R?1%8tYaDfbuOPn^9a6O!p=Q|1g_F%kHZIn^66T|Sao_FP zKFVh!Zg=s$4hnBd;q=P>@w~S7$SbZ(S5tPyOJD21wZ3fg)ng&`@#Y&Q{6AP!8Fs%t zdb{T**1cQfJwMrNuv*xAOj`bB;+l58f3??G%wpY$s5xT@yWKQ);plcubYv==sZTl4?kd3Bwx;IeB{3wC&> zGu3bOx-@at^m*Q9Ykrn_O`5XAC9x|#_WhfzTN_AZi-Z?*B@6$O6j1raFinaTSD@_Zot^IIe>h;4jELU$YUjHqE z_hw$?UP;*vi{*)_gv*t+&b&EHEi+SgpGUU}m63Qn_qavOI2yEDaScl_U&_JB_nv$Ide=#lyB~J+N7l;c-91+|S*3PfpV>l{ z;yIFkDz2IB71_rf=E;?nc$;rd*(&=JTAu4OHh2ZqORbr7Wq#VVAg`Tm{}|uBJ*>dJ T=$t4pH!yg*`njxgN@xNA`NOKm literal 0 HcmV?d00001 diff --git a/class_s_a_1_1_packed_function-members.html b/class_s_a_1_1_packed_function-members.html new file mode 100644 index 0000000..b55f66b --- /dev/null +++ b/class_s_a_1_1_packed_function-members.html @@ -0,0 +1,114 @@ + + + + + + + +SA_Event: Member List + + + + + + + + + +
+
+ + + + + + +
+
SA_Event +
+
Sapphire's Suite's C++ Event and Function library.
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
SA::PackedFunction< R, Args > Member List
+
+
+ +

This is the complete list of members for SA::PackedFunction< R, Args >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Equals(const PackedFunction &_other) constSA::PackedFunction< R, Args >
Function< R, Args... >::Equals(const Function &_other) constSA::Function< R, Args... >private
Execute() constSA::PackedFunction< R, Args >
Function< R, Args... >::Execute(Args... _args) constSA::Function< R, Args... >private
operator!=(const PackedFunction &_rhs) constSA::PackedFunction< R, Args >
Function< R, Args... >::operator!=(const Function &_rhs) constSA::Function< R, Args... >private
operator()() constSA::PackedFunction< R, Args >
Function< R, Args... >::operator()(Args... _args) constSA::Function< R, Args... >private
operator=(PackedFunction &&_rhs) noexceptSA::PackedFunction< R, Args >
operator=(const PackedFunction &_rhs) noexceptSA::PackedFunction< R, Args >
Function< R, Args... >::operator=(Function &&_rhs) noexceptSA::Function< R, Args... >private
Function< R, Args... >::operator=(const Function &_rhs) noexceptSA::Function< R, Args... >private
Function< R, Args... >::operator=(R(*_func)(Args...)) noexceptSA::Function< R, Args... >private
Function< R, Args... >::operator=(std::nullptr_t)SA::Function< R, Args... >private
operator==(const PackedFunction &_rhs) constSA::PackedFunction< R, Args >
Function< R, Args... >::operator==(const Function &_rhs) constSA::Function< R, Args... >private
PackedFunction()=defaultSA::PackedFunction< R, Args >
PackedFunction(R(*_func)(Args...), Args... _args) noexceptSA::PackedFunction< R, Args >
PackedFunction(C *_caller, R(C::*_func)(Args...), Args... _args)SA::PackedFunction< R, Args >
PackedFunction(PackedFunction &&_other) noexceptSA::PackedFunction< R, Args >
PackedFunction(const PackedFunction &_other) noexceptSA::PackedFunction< R, Args >
Set(R(*_func)(Args...), Args... _args)SA::PackedFunction< R, Args >
Set(C *_caller, R(C::*_func)(Args...), Args... _args)SA::PackedFunction< R, Args >
Function< R, Args... >::Set(R(*_func)(Args...))SA::Function< R, Args... >private
Function< R, Args... >::Set(C *_caller, R(C::*_func)(Args...))SA::Function< R, Args... >private
+ + + + diff --git a/class_s_a_1_1_packed_function.html b/class_s_a_1_1_packed_function.html new file mode 100644 index 0000000..cbeb2cb --- /dev/null +++ b/class_s_a_1_1_packed_function.html @@ -0,0 +1,636 @@ + + + + + + + +SA_Event: SA::PackedFunction< R, Args > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
SA_Event +
+
Sapphire's Suite's C++ Event and Function library.
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
SA::PackedFunction< R, Args > Class Template Reference
+
+
+ +

Packed Function type implementation. + More...

+ +

#include <PackedFunction.hpp>

+
+Inheritance diagram for SA::PackedFunction< R, Args >:
+
+
+ + +SA::Function< R, Args... > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

PackedFunction ()=default
 Default constructor.
 
 PackedFunction (R(*_func)(Args...), Args... _args) noexcept
 
template<typename C >
 PackedFunction (C *_caller, R(C::*_func)(Args...), Args... _args)
 
 PackedFunction (PackedFunction &&_other) noexcept
 
 PackedFunction (const PackedFunction &_other) noexcept
 
bool Equals (const PackedFunction &_other) const
 Compare 2 function handle.
 
bool operator== (const PackedFunction &_rhs) const
 Compare 2 function handle equality.
 
bool operator!= (const PackedFunction &_rhs) const
 Compare 2 function handle inequality.
 
void Set (R(*_func)(Args...), Args... _args)
 Set (assignation) new static function to bind. Free previous allocated memory.
 
template<typename C >
void Set (C *_caller, R(C::*_func)(Args...), Args... _args)
 Set (assignation) new member function to bind. Free previous allocated memory.
 
PackedFunctionoperator= (PackedFunction &&_rhs) noexcept
 Move operator Steal function handle (no additional memory allocation).
 
PackedFunctionoperator= (const PackedFunction &_rhs) noexcept
 Copy operator Additional memory allocation on member function copy.
 
Execute () const
 Execute bound function with packed args.
 
operator() () const
 Execute bound function with packed args operator.
 
+

Detailed Description

+
template<typename R, typename... Args>
+class SA::PackedFunction< R, Args >

Packed Function type implementation.

+
Template Parameters
+ + + +
RReturn type.
ArgsArgument types
+
+
+
Examples
PackedFunctionTests.cpp.
+
+

Constructor & Destructor Documentation

+ +

◆ PackedFunction() [1/4]

+ +
+
+
+template<typename R , typename... Args>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
SA::PackedFunction< R, Args >::PackedFunction (R(*)(Args...) _func,
Args... _args 
)
+
+noexcept
+
+

Value constructor with static function.

+
Parameters
+ + + +
[in]_funcStatic function to bind.
[in]_argsArgs to pack.
+
+
+ +
+
+ +

◆ PackedFunction() [2/4]

+ +
+
+
+template<typename R , typename... Args>
+
+template<typename C >
+ + + + + + + + + + + + + + + + + + + + + + + + +
SA::PackedFunction< R, Args >::PackedFunction (C * _caller,
R(C::*)(Args...) _func,
Args... _args 
)
+
+

Value constructor with member function.

+
Template Parameters
+ + +
CCaller type.
+
+
+
Parameters
+ + + + +
[in]_callerObject caller of member function.
[in]_funcMember function to bind.
[in]_argsArgs to pack.
+
+
+ +
+
+ +

◆ PackedFunction() [3/4]

+ +
+
+
+template<typename R , typename... Args>
+ + + + + +
+ + + + + + + + +
SA::PackedFunction< R, Args >::PackedFunction (PackedFunction< R, Args > && _other)
+
+noexcept
+
+

Move constructor. Steal function handle (no additional memory allocation).

+
Parameters
+ + +
[in]_otherOther handle to move.
+
+
+ +
+
+ +

◆ PackedFunction() [4/4]

+ +
+
+
+template<typename R , typename... Args>
+ + + + + +
+ + + + + + + + +
SA::PackedFunction< R, Args >::PackedFunction (const PackedFunction< R, Args > & _other)
+
+noexcept
+
+

Copy constructor. Additional memory allocation on member function copy.

+
Parameters
+ + +
[in]_otherOther handle to copy.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ Equals()

+ +
+
+
+template<typename R , typename... Args>
+ + + + + + + + +
bool SA::PackedFunction< R, Args >::Equals (const PackedFunction< R, Args > & _other) const
+
+ +

Compare 2 function handle.

+
Parameters
+ + +
[in]_otherOther function to compare to.
+
+
+
Returns
Whether this and _other are equal.
+
Examples
PackedFunctionTests.cpp.
+
+ +
+
+ +

◆ Execute()

+ +
+
+
+template<typename R , typename... Args>
+ + + + + + + +
R SA::PackedFunction< R, Args >::Execute () const
+
+ +

Execute bound function with packed args.

+
Returns
Bound function result value.
+ +
+
+ +

◆ operator!=()

+ +
+
+
+template<typename R , typename... Args>
+ + + + + + + + +
bool SA::PackedFunction< R, Args >::operator!= (const PackedFunction< R, Args > & _rhs) const
+
+ +

Compare 2 function handle inequality.

+
Parameters
+ + +
[in]_rhsOther function to compare to.
+
+
+
Returns
Whether this and _other are non-equal.
+ +
+
+ +

◆ operator()()

+ +
+
+
+template<typename R , typename... Args>
+ + + + + + + +
R SA::PackedFunction< R, Args >::operator() () const
+
+ +

Execute bound function with packed args operator.

+
Returns
Bound function result value.
+ +
+
+ +

◆ operator=() [1/2]

+ +
+
+
+template<typename R , typename... Args>
+ + + + + +
+ + + + + + + + +
PackedFunction & SA::PackedFunction< R, Args >::operator= (const PackedFunction< R, Args > & _rhs)
+
+noexcept
+
+ +

Copy operator Additional memory allocation on member function copy.

+
Parameters
+ + +
[in]_rhsFunction handle to move.
+
+
+
Returns
this.
+ +
+
+ +

◆ operator=() [2/2]

+ +
+
+
+template<typename R , typename... Args>
+ + + + + +
+ + + + + + + + +
PackedFunction & SA::PackedFunction< R, Args >::operator= (PackedFunction< R, Args > && _rhs)
+
+noexcept
+
+ +

Move operator Steal function handle (no additional memory allocation).

+
Parameters
+ + +
[in]_rhsFunction handle to move.
+
+
+
Returns
this.
+ +
+
+ +

◆ operator==()

+ +
+
+
+template<typename R , typename... Args>
+ + + + + + + + +
bool SA::PackedFunction< R, Args >::operator== (const PackedFunction< R, Args > & _rhs) const
+
+ +

Compare 2 function handle equality.

+
Parameters
+ + +
[in]_rhsOther function to compare to.
+
+
+
Returns
Whether this and _other are equal.
+ +
+
+ +

◆ Set() [1/2]

+ +
+
+
+template<typename R , typename... Args>
+
+template<typename C >
+ + + + + + + + + + + + + + + + + + + + + + + + +
void SA::PackedFunction< R, Args >::Set (C * _caller,
R(C::*)(Args...) _func,
Args... _args 
)
+
+ +

Set (assignation) new member function to bind. Free previous allocated memory.

+
Template Parameters
+ + +
CCaller type.
+
+
+
Parameters
+ + + + +
[in]_callerNew object caller of member function.
[in]_funcNew member function to bind.
[in]_argsArgs to pack.
+
+
+ +
+
+ +

◆ Set() [2/2]

+ +
+
+
+template<typename R , typename... Args>
+ + + + + + + + + + + + + + + + + + +
void SA::PackedFunction< R, Args >::Set (R(*)(Args...) _func,
Args... _args 
)
+
+ +

Set (assignation) new static function to bind. Free previous allocated memory.

+
Parameters
+ + + +
[in]_funcNew static function to bind.
[in]_argsArgs to pack.
+
+
+
Examples
PackedFunctionTests.cpp.
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/class_s_a_1_1_packed_function.png b/class_s_a_1_1_packed_function.png new file mode 100644 index 0000000000000000000000000000000000000000..45654ccbf7ab1ce9903ace32c89966476f10d132 GIT binary patch literal 828 zcmeAS@N?(olHy`uVBq!ia0vp^hk!VMgBeKHOpNjdQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCG95?_J51w>+1yGK&B*-tA0mugfbEer>7#Nt2d%8G=R4~4sdvnub10I*z zYW#oy$J=mzRH|gmOUtvISJcIpbbM2v*mKd}``#CGTYH{c)9Ns3@m2wkqAj~PZhscO z*LBgtZ<62nkM~02d@jW;=l1v%W!rMNWXH_hbFnHXg;Qszy?8I_C-^G%(d*ZhEPrLM zDeqc;+pw%PyV*jRC%7WVv>+z|1xv?)Yw&mi$12Dcz@|ryUJd_Tb3+0 zma9xDF1wWz`Du#b+G<7RirFfWE7=RHlv+1!h?~+{()eK8*NX)KY!6lLy`8zbtZ(Tr z#isL4rTeBXjmmR3inl*|$ka*aTbzDM`>wqKihpj$8MylAJ@XQaUEzG-ZD+{Nps&;1 zKd1*CXY&-3`t<%z`RmE`oq`;)_V16*QQ6y;(x@V>)gLoy&%%5sg_HbSKpq!k^6a}N zoOu6xZ5HE!_pcZkinHrljwe^O{S=(Xvf20#I|qZo-Y`Cfge_rWWD#}t+_$&o7IV*5 zIlHD+!4nwVDw$i14z1pPc=p`$hs#1H?ViW{{<7mFsj9QyLH=vEmM6~^=yTsO^JwJ{ zA;(EoyNZ@?>@9YlRP~AD>#Y=PmzRGzAJ3dNAP!nd&eGEd1|F_pWG?1 zr)%5V#~1hf3}sea@1I|HYFCKz5#C9PkNevogrmMwoeL*{M@6|ZWU ztv*SmH~jwWcW0(6mdwd~^0s=jf+z1(_jfHEldfELny} + + + + + + +SA_Event: Class Index + + + + + + + + + +
+
+ + + + + + +
+
SA_Event +
+
Sapphire's Suite's C++ Event and Function library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class Index
+
+
+
E | F | O | P
+ +
+ + + + diff --git a/closed.png b/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/dir_5e42f1ed0250ef473f569b10c537902f.html b/dir_5e42f1ed0250ef473f569b10c537902f.html new file mode 100644 index 0000000..bf8f51c --- /dev/null +++ b/dir_5e42f1ed0250ef473f569b10c537902f.html @@ -0,0 +1,92 @@ + + + + + + + +SA_Event: Include/SA Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
SA_Event +
+
Sapphire's Suite's C++ Event and Function library.
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
SA Directory Reference
+
+
+ + + + +

+Directories

 Event
 
+
+ + + + diff --git a/dir_856524284ebe840938865dc061f982fb.html b/dir_856524284ebe840938865dc061f982fb.html new file mode 100644 index 0000000..240528f --- /dev/null +++ b/dir_856524284ebe840938865dc061f982fb.html @@ -0,0 +1,86 @@ + + + + + + + +SA_Event: Include Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
SA_Event +
+
Sapphire's Suite's C++ Event and Function library.
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
Include Directory Reference
+
+
+
+ + + + diff --git a/dir_e9843a9354a1fdc8da6d0422e6636225.html b/dir_e9843a9354a1fdc8da6d0422e6636225.html new file mode 100644 index 0000000..0ef2e25 --- /dev/null +++ b/dir_e9843a9354a1fdc8da6d0422e6636225.html @@ -0,0 +1,111 @@ + + + + + + + +SA_Event: Include/SA/Event Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
SA_Event +
+
Sapphire's Suite's C++ Event and Function library.
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
Event Directory Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +

+Files

 Config.hpp
 Evente specific config file.
 
 Debug.hpp
 Event specific Debug file.
 
 Event.hpp
 Definition of Sapphire Event type.
 
 Function.hpp
 Definition of Sapphire Function type.
 
 FunctionMemberData.hpp
 Internal Definition of Sapphire FunctionMemberData type.
 
 OwnedEvent.hpp
 Definition of Sapphire Owned-Event type.
 
 PackedFunction.hpp
 Definition of Sapphire Packed Function type.
 
+
+ + + + diff --git a/doc.svg b/doc.svg new file mode 100644 index 0000000..0b928a5 --- /dev/null +++ b/doc.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/docd.svg b/docd.svg new file mode 100644 index 0000000..ac18b27 --- /dev/null +++ b/docd.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/doxygen.css b/doxygen.css new file mode 100644 index 0000000..009a9b5 --- /dev/null +++ b/doxygen.css @@ -0,0 +1,2045 @@ +/* The standard CSS for doxygen 1.9.8*/ + +html { +/* page base colors */ +--page-background-color: white; +--page-foreground-color: black; +--page-link-color: #3D578C; +--page-visited-link-color: #4665A2; + +/* index */ +--index-odd-item-bg-color: #F8F9FC; +--index-even-item-bg-color: white; +--index-header-color: black; +--index-separator-color: #A0A0A0; + +/* header */ +--header-background-color: #F9FAFC; +--header-separator-color: #C4CFE5; +--header-gradient-image: url('nav_h.png'); +--group-header-separator-color: #879ECB; +--group-header-color: #354C7B; +--inherit-header-color: gray; + +--footer-foreground-color: #2A3D61; +--footer-logo-width: 104px; +--citation-label-color: #334975; +--glow-color: cyan; + +--title-background-color: white; +--title-separator-color: #5373B4; +--directory-separator-color: #9CAFD4; +--separator-color: #4A6AAA; + +--blockquote-background-color: #F7F8FB; +--blockquote-border-color: #9CAFD4; + +--scrollbar-thumb-color: #9CAFD4; +--scrollbar-background-color: #F9FAFC; + +--icon-background-color: #728DC1; +--icon-foreground-color: white; +--icon-doc-image: url('doc.svg'); +--icon-folder-open-image: url('folderopen.svg'); +--icon-folder-closed-image: url('folderclosed.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #F9FAFC; +--memdecl-separator-color: #DEE4F0; +--memdecl-foreground-color: #555; +--memdecl-template-color: #4665A2; + +/* detailed member list */ +--memdef-border-color: #A8B8D9; +--memdef-title-background-color: #E2E8F2; +--memdef-title-gradient-image: url('nav_f.png'); +--memdef-proto-background-color: #DFE5F1; +--memdef-proto-text-color: #253555; +--memdef-proto-text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--memdef-doc-background-color: white; +--memdef-param-name-color: #602020; +--memdef-template-color: #4665A2; + +/* tables */ +--table-cell-border-color: #2D4068; +--table-header-background-color: #374F7F; +--table-header-foreground-color: #FFFFFF; + +/* labels */ +--label-background-color: #728DC1; +--label-left-top-border-color: #5373B4; +--label-right-bottom-border-color: #C4CFE5; +--label-foreground-color: white; + +/** navigation bar/tree/menu */ +--nav-background-color: #F9FAFC; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_b.png'); +--nav-gradient-hover-image: url('tab_h.png'); +--nav-gradient-active-image: url('tab_a.png'); +--nav-gradient-active-image-parent: url("../tab_a.png"); +--nav-separator-image: url('tab_s.png'); +--nav-breadcrumb-image: url('bc_s.png'); +--nav-breadcrumb-border-color: #C2CDE4; +--nav-splitbar-image: url('splitbar.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #283A5D; +--nav-text-hover-color: white; +--nav-text-active-color: white; +--nav-text-normal-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #364D7C; +--nav-menu-background-color: white; +--nav-menu-foreground-color: #555555; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.5); +--nav-arrow-color: #9CAFD4; +--nav-arrow-selected-color: #9CAFD4; + +/* table of contents */ +--toc-background-color: #F4F6FA; +--toc-border-color: #D8DFEE; +--toc-header-color: #4665A2; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: white; +--search-foreground-color: #909090; +--search-magnification-image: url('mag.svg'); +--search-magnification-select-image: url('mag_sel.svg'); +--search-active-color: black; +--search-filter-background-color: #F9FAFC; +--search-filter-foreground-color: black; +--search-filter-border-color: #90A5CE; +--search-filter-highlight-text-color: white; +--search-filter-highlight-bg-color: #3D578C; +--search-results-foreground-color: #425E97; +--search-results-background-color: #EEF1F7; +--search-results-border-color: black; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #555; + +/** code fragments */ +--code-keyword-color: #008000; +--code-type-keyword-color: #604020; +--code-flow-keyword-color: #E08000; +--code-comment-color: #800000; +--code-preprocessor-color: #806020; +--code-string-literal-color: #002080; +--code-char-literal-color: #008080; +--code-xml-cdata-color: black; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #000000; +--code-vhdl-keyword-color: #700070; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #4665A2; +--code-external-link-color: #4665A2; +--fragment-foreground-color: black; +--fragment-background-color: #FBFCFD; +--fragment-border-color: #C4CFE5; +--fragment-lineno-border-color: #00FF00; +--fragment-lineno-background-color: #E8E8E8; +--fragment-lineno-foreground-color: black; +--fragment-lineno-link-fg-color: #4665A2; +--fragment-lineno-link-bg-color: #D8D8D8; +--fragment-lineno-link-hover-fg-color: #4665A2; +--fragment-lineno-link-hover-bg-color: #C8C8C8; +--tooltip-foreground-color: black; +--tooltip-background-color: white; +--tooltip-border-color: gray; +--tooltip-doc-color: grey; +--tooltip-declaration-color: #006318; +--tooltip-link-color: #4665A2; +--tooltip-shadow: 1px 1px 7px gray; +--fold-line-color: #808080; +--fold-minus-image: url('minus.svg'); +--fold-plus-image: url('plus.svg'); +--fold-minus-image-relpath: url('../../minus.svg'); +--fold-plus-image-relpath: url('../../plus.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +} + +@media (prefers-color-scheme: dark) { + html:not(.dark-mode) { + color-scheme: dark; + +/* page base colors */ +--page-background-color: black; +--page-foreground-color: #C9D1D9; +--page-link-color: #90A5CE; +--page-visited-link-color: #A3B4D7; + +/* index */ +--index-odd-item-bg-color: #0B101A; +--index-even-item-bg-color: black; +--index-header-color: #C4CFE5; +--index-separator-color: #334975; + +/* header */ +--header-background-color: #070B11; +--header-separator-color: #141C2E; +--header-gradient-image: url('nav_hd.png'); +--group-header-separator-color: #283A5D; +--group-header-color: #90A5CE; +--inherit-header-color: #A0A0A0; + +--footer-foreground-color: #5B7AB7; +--footer-logo-width: 60px; +--citation-label-color: #90A5CE; +--glow-color: cyan; + +--title-background-color: #090D16; +--title-separator-color: #354C79; +--directory-separator-color: #283A5D; +--separator-color: #283A5D; + +--blockquote-background-color: #101826; +--blockquote-border-color: #283A5D; + +--scrollbar-thumb-color: #283A5D; +--scrollbar-background-color: #070B11; + +--icon-background-color: #334975; +--icon-foreground-color: #C4CFE5; +--icon-doc-image: url('docd.svg'); +--icon-folder-open-image: url('folderopend.svg'); +--icon-folder-closed-image: url('folderclosedd.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #0B101A; +--memdecl-separator-color: #2C3F65; +--memdecl-foreground-color: #BBB; +--memdecl-template-color: #7C95C6; + +/* detailed member list */ +--memdef-border-color: #233250; +--memdef-title-background-color: #1B2840; +--memdef-title-gradient-image: url('nav_fd.png'); +--memdef-proto-background-color: #19243A; +--memdef-proto-text-color: #9DB0D4; +--memdef-proto-text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.9); +--memdef-doc-background-color: black; +--memdef-param-name-color: #D28757; +--memdef-template-color: #7C95C6; + +/* tables */ +--table-cell-border-color: #283A5D; +--table-header-background-color: #283A5D; +--table-header-foreground-color: #C4CFE5; + +/* labels */ +--label-background-color: #354C7B; +--label-left-top-border-color: #4665A2; +--label-right-bottom-border-color: #283A5D; +--label-foreground-color: #CCCCCC; + +/** navigation bar/tree/menu */ +--nav-background-color: #101826; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_bd.png'); +--nav-gradient-hover-image: url('tab_hd.png'); +--nav-gradient-active-image: url('tab_ad.png'); +--nav-gradient-active-image-parent: url("../tab_ad.png"); +--nav-separator-image: url('tab_sd.png'); +--nav-breadcrumb-image: url('bc_sd.png'); +--nav-breadcrumb-border-color: #2A3D61; +--nav-splitbar-image: url('splitbard.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #B6C4DF; +--nav-text-hover-color: #DCE2EF; +--nav-text-active-color: #DCE2EF; +--nav-text-normal-shadow: 0px 1px 1px black; +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #B6C4DF; +--nav-menu-background-color: #05070C; +--nav-menu-foreground-color: #BBBBBB; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.2); +--nav-arrow-color: #334975; +--nav-arrow-selected-color: #90A5CE; + +/* table of contents */ +--toc-background-color: #151E30; +--toc-border-color: #202E4A; +--toc-header-color: #A3B4D7; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: black; +--search-foreground-color: #C5C5C5; +--search-magnification-image: url('mag_d.svg'); +--search-magnification-select-image: url('mag_seld.svg'); +--search-active-color: #C5C5C5; +--search-filter-background-color: #101826; +--search-filter-foreground-color: #90A5CE; +--search-filter-border-color: #7C95C6; +--search-filter-highlight-text-color: #BCC9E2; +--search-filter-highlight-bg-color: #283A5D; +--search-results-background-color: #101826; +--search-results-foreground-color: #90A5CE; +--search-results-border-color: #7C95C6; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #2F436C; + +/** code fragments */ +--code-keyword-color: #CC99CD; +--code-type-keyword-color: #AB99CD; +--code-flow-keyword-color: #E08000; +--code-comment-color: #717790; +--code-preprocessor-color: #65CABE; +--code-string-literal-color: #7EC699; +--code-char-literal-color: #00E0F0; +--code-xml-cdata-color: #C9D1D9; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #C0C0C0; +--code-vhdl-keyword-color: #CF53C9; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #79C0FF; +--code-external-link-color: #79C0FF; +--fragment-foreground-color: #C9D1D9; +--fragment-background-color: black; +--fragment-border-color: #30363D; +--fragment-lineno-border-color: #30363D; +--fragment-lineno-background-color: black; +--fragment-lineno-foreground-color: #6E7681; +--fragment-lineno-link-fg-color: #6E7681; +--fragment-lineno-link-bg-color: #303030; +--fragment-lineno-link-hover-fg-color: #8E96A1; +--fragment-lineno-link-hover-bg-color: #505050; +--tooltip-foreground-color: #C9D1D9; +--tooltip-background-color: #202020; +--tooltip-border-color: #C9D1D9; +--tooltip-doc-color: #D9E1E9; +--tooltip-declaration-color: #20C348; +--tooltip-link-color: #79C0FF; +--tooltip-shadow: none; +--fold-line-color: #808080; +--fold-minus-image: url('minusd.svg'); +--fold-plus-image: url('plusd.svg'); +--fold-minus-image-relpath: url('../../minusd.svg'); +--fold-plus-image-relpath: url('../../plusd.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +}} +body { + background-color: var(--page-background-color); + color: var(--page-foreground-color); +} + +body, table, div, p, dl { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 22px; +} + +/* @group Heading Levels */ + +.title { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 28px; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h1.groupheader { + font-size: 150%; +} + +h2.groupheader { + border-bottom: 1px solid var(--group-header-separator-color); + color: var(--group-header-color); + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px var(--glow-color); +} + +dt { + font-weight: bold; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL { + background-image: var(--nav-gradient-active-image); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: var(--index-separator-color); +} + +#main-menu a:focus { + outline: auto; + z-index: 10; + position: relative; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: var(--index-header-color); +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.even { + background-color: var(--index-even-item-bg-color); +} + +.classindex dl.odd { + background-color: var(--index-odd-item-bg-color); +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: var(--page-link-color); + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: var(--page-visited-link-color); +} + +a:hover { + text-decoration: underline; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: var(--code-link-color); +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: var(--code-external-link-color); +} + +a.code.hl_class { /* style for links to class names in code snippets */ } +a.code.hl_struct { /* style for links to struct names in code snippets */ } +a.code.hl_union { /* style for links to union names in code snippets */ } +a.code.hl_interface { /* style for links to interface names in code snippets */ } +a.code.hl_protocol { /* style for links to protocol names in code snippets */ } +a.code.hl_category { /* style for links to category names in code snippets */ } +a.code.hl_exception { /* style for links to exception names in code snippets */ } +a.code.hl_service { /* style for links to service names in code snippets */ } +a.code.hl_singleton { /* style for links to singleton names in code snippets */ } +a.code.hl_concept { /* style for links to concept names in code snippets */ } +a.code.hl_namespace { /* style for links to namespace names in code snippets */ } +a.code.hl_package { /* style for links to package names in code snippets */ } +a.code.hl_define { /* style for links to macro names in code snippets */ } +a.code.hl_function { /* style for links to function names in code snippets */ } +a.code.hl_variable { /* style for links to variable names in code snippets */ } +a.code.hl_typedef { /* style for links to typedef names in code snippets */ } +a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } +a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } +a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } +a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } +a.code.hl_friend { /* style for links to friend names in code snippets */ } +a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } +a.code.hl_property { /* style for links to property names in code snippets */ } +a.code.hl_event { /* style for links to event names in code snippets */ } +a.code.hl_sequence { /* style for links to sequence names in code snippets */ } +a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: visible; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; + list-style-type: none; +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid var(--fragment-border-color); + background-color: var(--fragment-background-color); + color: var(--fragment-foreground-color); + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: var(--font-family-monospace); + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + color: var(--fragment-foreground-color); + background-color: var(--fragment-background-color); + border: 1px solid var(--fragment-border-color); +} + +div.line { + font-family: var(--font-family-monospace); + font-size: 13px; + min-height: 13px; + line-height: 1.2; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: var(--glow-color); + box-shadow: 0 0 10px var(--glow-color); +} + +span.fold { + margin-left: 5px; + margin-right: 1px; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; + display: inline-block; + width: 12px; + height: 12px; + background-repeat:no-repeat; + background-position:center; +} + +span.lineno { + padding-right: 4px; + margin-right: 9px; + text-align: right; + border-right: 2px solid var(--fragment-lineno-border-color); + color: var(--fragment-lineno-foreground-color); + background-color: var(--fragment-lineno-background-color); + white-space: pre; +} +span.lineno a, span.lineno a:visited { + color: var(--fragment-lineno-link-fg-color); + background-color: var(--fragment-lineno-link-bg-color); +} + +span.lineno a:hover { + color: var(--fragment-lineno-link-hover-fg-color); + background-color: var(--fragment-lineno-link-hover-bg-color); +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + color: var(--page-foreground-color); + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +p.formulaDsp { + text-align: center; +} + +img.dark-mode-visible { + display: none; +} +img.light-mode-visible { + display: none; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; + width: var(--footer-logo-width); +} + +.compoundTemplParams { + color: var(--memdecl-template-color); + font-size: 80%; + line-height: 120%; +} + +/* @group Code Colorization */ + +span.keyword { + color: var(--code-keyword-color); +} + +span.keywordtype { + color: var(--code-type-keyword-color); +} + +span.keywordflow { + color: var(--code-flow-keyword-color); +} + +span.comment { + color: var(--code-comment-color); +} + +span.preprocessor { + color: var(--code-preprocessor-color); +} + +span.stringliteral { + color: var(--code-string-literal-color); +} + +span.charliteral { + color: var(--code-char-literal-color); +} + +span.xmlcdata { + color: var(--code-xml-cdata-color); +} + +span.vhdldigit { + color: var(--code-vhdl-digit-color); +} + +span.vhdlchar { + color: var(--code-vhdl-char-color); +} + +span.vhdlkeyword { + color: var(--code-vhdl-keyword-color); +} + +span.vhdllogic { + color: var(--code-vhdl-logic-color); +} + +blockquote { + background-color: var(--blockquote-background-color); + border-left: 2px solid var(--blockquote-border-color); + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid var(--table-cell-border-color); +} + +th.dirtab { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid var(--separator-color); +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: var(--glow-color); + box-shadow: 0 0 15px var(--glow-color); +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: var(--memdecl-background-color); + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: var(--memdecl-foreground-color); +} + +.memSeparator { + border-bottom: 1px solid var(--memdecl-separator-color); + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: var(--memdecl-template-color); + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: var(--memdef-title-gradient-image); + background-repeat: repeat-x; + background-color: var(--memdef-title-background-color); + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: var(--memdef-template-color); + font-weight: normal; + margin-left: 9px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px var(--glow-color); +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 0px 6px 0px; + color: var(--memdef-proto-text-color); + font-weight: bold; + text-shadow: var(--memdef-proto-text-shadow); + background-color: var(--memdef-proto-background-color); + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; +} + +.overload { + font-family: var(--font-family-monospace); + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 10px 2px 10px; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: var(--memdef-doc-background-color); + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: var(--memdef-param-name-color); + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: var(--font-family-monospace); + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: var(--label-background-color); + border-top:1px solid var(--label-left-top-border-color); + border-left:1px solid var(--label-left-top-border-color); + border-right:1px solid var(--label-right-bottom-border-color); + border-bottom:1px solid var(--label-right-bottom-border-color); + text-shadow: none; + color: var(--label-foreground-color); + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid var(--directory-separator-color); + border-bottom: 1px solid var(--directory-separator-color); + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.odd { + padding-left: 6px; + background-color: var(--index-odd-item-bg-color); +} + +.directory tr.even { + padding-left: 6px; + background-color: var(--index-even-item-bg-color); +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: var(--page-link-color); +} + +.arrow { + color: var(--nav-arrow-color); + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: var(--font-family-icon); + line-height: normal; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: var(--icon-background-color); + color: var(--icon-foreground-color); + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-open-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-closed-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-doc-image); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: var(--footer-foreground-color); +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + margin-bottom: 10px; + border: 1px solid var(--memdef-border-color); + border-spacing: 0px; + border-radius: 4px; + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid var(--memdef-border-color); + border-bottom: 1px solid var(--memdef-border-color); + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid var(--memdef-border-color); +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image: var(--memdef-title-gradient-image); + background-repeat:repeat-x; + background-color: var(--memdef-title-background-color); + font-size: 90%; + color: var(--memdef-proto-text-color); + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid var(--memdef-border-color); +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: var(--nav-gradient-image); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image: var(--nav-gradient-image); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:var(--nav-text-normal-color); + border:solid 1px var(--nav-breadcrumb-border-color); + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:var(--nav-breadcrumb-image); + background-repeat:no-repeat; + background-position:right; + color: var(--nav-foreground-color); +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: var(--nav-text-normal-color); + font-family: var(--font-family-nav); + text-shadow: var(--nav-text-normal-shadow); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color: var(--footer-foreground-color); + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image: var(--header-gradient-image); + background-repeat:repeat-x; + background-color: var(--header-background-color); + margin: 0px; + border-bottom: 1px solid var(--header-separator-color); +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectrow +{ + height: 56px; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; + padding-left: 0.5em; +} + +#projectname +{ + font-size: 200%; + font-family: var(--font-family-title); + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font-size: 90%; + font-family: var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font-size: 50%; + font-family: 50% var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid var(--title-separator-color); + background-color: var(--title-background-color); +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:var(--citation-label-color); + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: var(--toc-background-color); + border: 1px solid var(--toc-border-color); + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: var(--toc-down-arrow-image) no-repeat scroll 0 5px transparent; + font: 10px/1.2 var(--font-family-toc); + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 var(--font-family-toc); + color: var(--toc-header-color); + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 15px; +} + +div.toc li.level4 { + margin-left: 15px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +span.obfuscator { + display: none; +} + +.inherit_header { + font-weight: bold; + color: var(--inherit-header-color); + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + /*white-space: nowrap;*/ + color: var(--tooltip-foreground-color); + background-color: var(--tooltip-background-color); + border: 1px solid var(--tooltip-border-color); + border-radius: 4px 4px 4px 4px; + box-shadow: var(--tooltip-shadow); + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: var(--tooltip-doc-color); + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip a { + color: var(--tooltip-link-color); +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: var(--tooltip-declaration-color); +} + +#powerTip div { + margin: 0px; + padding: 0px; + font-size: 12px; + font-family: var(--font-family-tooltip); + line-height: 16px; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before, #powerTip.ne:before, #powerTip.nw:before { + border-top-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +tt, code, kbd, samp +{ + display: inline-block; +} +/* @end */ + +u { + text-decoration: underline; +} + +details>summary { + list-style-type: none; +} + +details > summary::-webkit-details-marker { + display: none; +} + +details>summary::before { + content: "\25ba"; + padding-right:4px; + font-size: 80%; +} + +details[open]>summary::before { + content: "\25bc"; + padding-right:4px; + font-size: 80%; +} + +body { + scrollbar-color: var(--scrollbar-thumb-color) var(--scrollbar-background-color); +} + +::-webkit-scrollbar { + background-color: var(--scrollbar-background-color); + height: 12px; + width: 12px; +} +::-webkit-scrollbar-thumb { + border-radius: 6px; + box-shadow: inset 0 0 12px 12px var(--scrollbar-thumb-color); + border: solid 2px transparent; +} +::-webkit-scrollbar-corner { + background-color: var(--scrollbar-background-color); +} + diff --git a/doxygen.svg b/doxygen.svg new file mode 100644 index 0000000..79a7635 --- /dev/null +++ b/doxygen.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dynsections.js b/dynsections.js new file mode 100644 index 0000000..b73c828 --- /dev/null +++ b/dynsections.js @@ -0,0 +1,192 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); + $('table.directory tr'). + removeClass('odd').filter(':visible:odd').addClass('odd'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l'); + // add vertical lines to other rows + $('span[class=lineno]').not(':eq(0)').append(''); + // add toggle controls to lines with fold divs + $('div[class=foldopen]').each(function() { + // extract specific id to use + var id = $(this).attr('id').replace('foldopen',''); + // extract start and end foldable fragment attributes + var start = $(this).attr('data-start'); + var end = $(this).attr('data-end'); + // replace normal fold span with controls for the first line of a foldable fragment + $(this).find('span[class=fold]:first').replaceWith(''); + // append div for folded (closed) representation + $(this).after(''); + // extract the first line from the "open" section to represent closed content + var line = $(this).children().first().clone(); + // remove any glow that might still be active on the original line + $(line).removeClass('glow'); + if (start) { + // if line already ends with a start marker (e.g. trailing {), remove it + $(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),'')); + } + // replace minus with plus symbol + $(line).find('span[class=fold]').css('background-image',plusImg[relPath]); + // append ellipsis + $(line).append(' '+start+''+end); + // insert constructed line into closed div + $('#foldclosed'+id).html(line); + }); +} + +/* @license-end */ diff --git a/examples.html b/examples.html new file mode 100644 index 0000000..2081f3f --- /dev/null +++ b/examples.html @@ -0,0 +1,88 @@ + + + + + + + +SA_Event: Examples + + + + + + + + + +
+
+ + + + + + +
+
SA_Event +
+
Sapphire's Suite's C++ Event and Function library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Examples
+
+ + + + + diff --git a/files.html b/files.html new file mode 100644 index 0000000..f466a9a --- /dev/null +++ b/files.html @@ -0,0 +1,96 @@ + + + + + + + +SA_Event: File List + + + + + + + + + +
+
+ + + + + + +
+
SA_Event +
+
Sapphire's Suite's C++ Event and Function library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
File List
+
+
+
Here is a list of all documented files with brief descriptions:
+
[detail level 1234]
+ + + + + + + + + + +
  Include
  SA
  Event
 Config.hppEvente specific config file
 Debug.hppEvent specific Debug file
 Event.hppDefinition of Sapphire Event type
 Function.hppDefinition of Sapphire Function type
 FunctionMemberData.hppInternal Definition of Sapphire FunctionMemberData type
 OwnedEvent.hppDefinition of Sapphire Owned-Event type
 PackedFunction.hppDefinition of Sapphire Packed Function type
+
+
+ + + + diff --git a/folderclosed.svg b/folderclosed.svg new file mode 100644 index 0000000..b04bed2 --- /dev/null +++ b/folderclosed.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/folderclosedd.svg b/folderclosedd.svg new file mode 100644 index 0000000..52f0166 --- /dev/null +++ b/folderclosedd.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/folderopen.svg b/folderopen.svg new file mode 100644 index 0000000..f6896dd --- /dev/null +++ b/folderopen.svg @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/folderopend.svg b/folderopend.svg new file mode 100644 index 0000000..2d1f06e --- /dev/null +++ b/folderopend.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/functions.html b/functions.html new file mode 100644 index 0000000..ec7e5ff --- /dev/null +++ b/functions.html @@ -0,0 +1,158 @@ + + + + + + + +SA_Event: Class Members + + + + + + + + + +
+
+ + + + + + +
+
SA_Event +
+
Sapphire's Suite's C++ Event and Function library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- a -

+ + +

- c -

+ + +

- d -

+ + +

- e -

+ + +

- f -

+ + +

- i -

+ + +

- m -

+ + +

- o -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- ~ -

+
+ + + + diff --git a/functions_func.html b/functions_func.html new file mode 100644 index 0000000..adf0fe6 --- /dev/null +++ b/functions_func.html @@ -0,0 +1,148 @@ + + + + + + + +SA_Event: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
SA_Event +
+
Sapphire's Suite's C++ Event and Function library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented functions with links to the class documentation for each member:
+ +

- a -

+ + +

- c -

+ + +

- d -

+ + +

- e -

+ + +

- f -

+ + +

- i -

+ + +

- o -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- ~ -

+
+ + + + diff --git a/functions_vars.html b/functions_vars.html new file mode 100644 index 0000000..2ad1863 --- /dev/null +++ b/functions_vars.html @@ -0,0 +1,87 @@ + + + + + + + +SA_Event: Class Members - Variables + + + + + + + + + +
+
+ + + + + + +
+
SA_Event +
+
Sapphire's Suite's C++ Event and Function library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + + + + + diff --git a/group___event.html b/group___event.html new file mode 100644 index 0000000..266ce1b --- /dev/null +++ b/group___event.html @@ -0,0 +1,111 @@ + + + + + + + +SA_Event: Event + + + + + + + + + +
+
+ + + + + + +
+
SA_Event +
+
Sapphire's Suite's C++ Event and Function library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Event
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +

+Files

file  Config.hpp
 Evente specific config file.
 
file  Debug.hpp
 Event specific Debug file.
 
file  Event.hpp
 Definition of Sapphire Event type.
 
file  Function.hpp
 Definition of Sapphire Function type.
 
file  FunctionMemberData.hpp
 Internal Definition of Sapphire FunctionMemberData type.
 
file  OwnedEvent.hpp
 Definition of Sapphire Owned-Event type.
 
file  PackedFunction.hpp
 Definition of Sapphire Packed Function type.
 
+

Detailed Description

+

Sapphire Suite's Event Module.

+
+ + + + diff --git a/hierarchy.html b/hierarchy.html new file mode 100644 index 0000000..507e96f --- /dev/null +++ b/hierarchy.html @@ -0,0 +1,99 @@ + + + + + + + +SA_Event: Class Hierarchy + + + + + + + + + +
+
+ + + + + + +
+
SA_Event +
+
Sapphire's Suite's C++ Event and Function library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class Hierarchy
+
+
+
This inheritance list is sorted roughly, but not completely, alphabetically:
+
[detail level 12]
+ + + + + + + + + + + + + +
 CSA::Event< R, Args >Sapphire Event default (undefined) declaration
 CSA::Event< R(Args...)>Sapphire Event class
 CSA::OwnedEvent< OwnerT, R(Args...)>Sapphire Owned-Event class
 CSA::Intl::FuncHandle< R, Args >Handle struct for a function
 CSA::Intl::FuncHandle< void, Args... >Handle struct for a function with void return type
 CSA::Intl::FuncMemberDataBaseBase struct of member function data
 CSA::Intl::FuncMemberData< C, R, Args >Data struct for typed member function
 CSA::Intl::FuncMemberHandle< R, Args >Handle struct for a member function
 CSA::Intl::FuncMemberHandle< void, Args... >Handle struct for a member function with void return type
 CSA::Function< R, Args >Function type implementation
 CSA::Function< R, Args... >
 CSA::PackedFunction< R, Args >Packed Function type implementation
 CSA::OwnedEvent< OwnerT, R, Args >Sapphire Owned-Event default (undefined) declaration
+
+
+ + + + diff --git a/index.html b/index.html new file mode 100644 index 0000000..7148dc1 --- /dev/null +++ b/index.html @@ -0,0 +1,82 @@ + + + + + + + +SA_Event: Main Page + + + + + + + + + +
+
+ + + + + + +
+
SA_Event +
+
Sapphire's Suite's C++ Event and Function library.
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SA_Event Documentation
+
+
+
+ + + + diff --git a/jquery.js b/jquery.js new file mode 100644 index 0000000..1dffb65 --- /dev/null +++ b/jquery.js @@ -0,0 +1,34 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=y.widget.extend({},this.options[t]),n=0;n
"),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e,function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/menu.js b/menu.js new file mode 100644 index 0000000..b0b2693 --- /dev/null +++ b/menu.js @@ -0,0 +1,136 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+='
    '; + for (var i in data.children) { + var url; + var link; + link = data.children[i].url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + } else { + url = relPath+link; + } + result+='
  • '+ + data.children[i].text+''+ + makeTree(data.children[i],relPath)+'
  • '; + } + result+='
'; + } + return result; + } + var searchBoxHtml; + if (searchEnabled) { + if (serverSide) { + searchBoxHtml='
'+ + '
'+ + '
 '+ + ''+ + '
'+ + '
'+ + '
'+ + '
'; + } else { + searchBoxHtml='
'+ + ''+ + ' '+ + ''+ + ''+ + ''+ + ''+ + ''+ + '
'; + } + } + + $('#main-nav').before('
'+ + ''+ + ''+ + '
'); + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchBoxHtml) { + $('#main-menu').append('
  • '); + } + var $mainMenuState = $('#main-menu-state'); + var prevWidth = 0; + if ($mainMenuState.length) { + function initResizableIfExists() { + if (typeof initResizable==='function') initResizable(); + } + // animate mobile menu + $mainMenuState.change(function(e) { + var $menu = $('#main-menu'); + var options = { duration: 250, step: initResizableIfExists }; + if (this.checked) { + options['complete'] = function() { $menu.css('display', 'block') }; + $menu.hide().slideDown(options); + } else { + options['complete'] = function() { $menu.css('display', 'none') }; + $menu.show().slideUp(options); + } + }); + // set default menu visibility + function resetState() { + var $menu = $('#main-menu'); + var $mainMenuState = $('#main-menu-state'); + var newWidth = $(window).outerWidth(); + if (newWidth!=prevWidth) { + if ($(window).outerWidth()<768) { + $mainMenuState.prop('checked',false); $menu.hide(); + $('#searchBoxPos1').html(searchBoxHtml); + $('#searchBoxPos2').hide(); + } else { + $menu.show(); + $('#searchBoxPos1').empty(); + $('#searchBoxPos2').html(searchBoxHtml); + $('#searchBoxPos2').show(); + } + if (typeof searchBox!=='undefined') { + searchBox.CloseResultsWindow(); + } + prevWidth = newWidth; + } + } + $(window).ready(function() { resetState(); initResizableIfExists(); }); + $(window).resize(resetState); + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/menudata.js b/menudata.js new file mode 100644 index 0000000..c8cff7d --- /dev/null +++ b/menudata.js @@ -0,0 +1,61 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Topics",url:"topics.html"}, +{text:"Classes",url:"annotated.html",children:[ +{text:"Class List",url:"annotated.html"}, +{text:"Class Index",url:"classes.html"}, +{text:"Class Hierarchy",url:"hierarchy.html"}, +{text:"Class Members",url:"functions.html",children:[ +{text:"All",url:"functions.html",children:[ +{text:"a",url:"functions.html#index_a"}, +{text:"c",url:"functions.html#index_c"}, +{text:"d",url:"functions.html#index_d"}, +{text:"e",url:"functions.html#index_e"}, +{text:"f",url:"functions.html#index_f"}, +{text:"i",url:"functions.html#index_i"}, +{text:"m",url:"functions.html#index_m"}, +{text:"o",url:"functions.html#index_o"}, +{text:"p",url:"functions.html#index_p"}, +{text:"r",url:"functions.html#index_r"}, +{text:"s",url:"functions.html#index_s"}, +{text:"~",url:"functions.html#index__7E"}]}, +{text:"Functions",url:"functions_func.html",children:[ +{text:"a",url:"functions_func.html#index_a"}, +{text:"c",url:"functions_func.html#index_c"}, +{text:"d",url:"functions_func.html#index_d"}, +{text:"e",url:"functions_func.html#index_e"}, +{text:"f",url:"functions_func.html#index_f"}, +{text:"i",url:"functions_func.html#index_i"}, +{text:"o",url:"functions_func.html#index_o"}, +{text:"p",url:"functions_func.html#index_p"}, +{text:"r",url:"functions_func.html#index_r"}, +{text:"s",url:"functions_func.html#index_s"}, +{text:"~",url:"functions_func.html#index__7E"}]}, +{text:"Variables",url:"functions_vars.html"}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}]}, +{text:"Examples",url:"examples.html"}]} diff --git a/minus.svg b/minus.svg new file mode 100644 index 0000000..f70d0c1 --- /dev/null +++ b/minus.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/minusd.svg b/minusd.svg new file mode 100644 index 0000000..5f8e879 --- /dev/null +++ b/minusd.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/nav_f.png b/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/nav_fd.png b/nav_fd.png new file mode 100644 index 0000000000000000000000000000000000000000..032fbdd4c54f54fa9a2e6423b94ef4b2ebdfaceb GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQU#tajv*C{Z|C~*H7f|XvG1G8 zt7aS*L7xwMeS}!z6R#{C5tIw-s~AJ==F^i}x3XyJseHR@yF& zerFf(Zf;Dd{+(0lDIROL@Sj-Ju2JQ8&-n%4%q?>|^bShc&lR?}7HeMo@BDl5N(aHY Uj$gdr1MOz;boFyt=akR{0D!zeaR2}S literal 0 HcmV?d00001 diff --git a/nav_g.png b/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL6W-eg#Jd_@e6*DPn)w;=|1H}Zvm9l6xXXB%>yL=NQU;mg M>FVdQ&MBb@0Bdt1Qvd(} literal 0 HcmV?d00001 diff --git a/open.png b/open.png new file mode 100644 index 0000000000000000000000000000000000000000..30f75c7efe2dd0c9e956e35b69777a02751f048b GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + + + diff --git a/plusd.svg b/plusd.svg new file mode 100644 index 0000000..0c65bfe --- /dev/null +++ b/plusd.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/search/all_0.js b/search/all_0.js new file mode 100644 index 0000000..5bb41a9 --- /dev/null +++ b/search/all_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['add_0',['add',['../class_s_a_1_1_event_3_01_r_07_args_8_8_8_08_4.html#a8ecaaaf40d1090b12145806de460eb56',1,'SA::Event< R(Args...)>::Add(R(*_func)(Args...), R *_result=nullptr)'],['../class_s_a_1_1_event_3_01_r_07_args_8_8_8_08_4.html#a1036e97e983cdbfdde12511af4098eba',1,'SA::Event< R(Args...)>::Add(C *_caller, R(C::*_func)(Args...), R *_result=nullptr)']]] +]; diff --git a/search/all_1.js b/search/all_1.js new file mode 100644 index 0000000..4ca3418 --- /dev/null +++ b/search/all_1.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['caller_0',['caller',['../struct_s_a_1_1_intl_1_1_func_member_data.html#ad14ba781bc712603fae819216f7dea10',1,'SA::Intl::FuncMemberData']]], + ['clear_1',['clear',['../class_s_a_1_1_event_3_01_r_07_args_8_8_8_08_4.html#a0c7378c8b3ccf57bd04ee06fd296a5a5',1,'SA::Event< R(Args...)>::Clear()'],['../class_s_a_1_1_function.html#aa5b5ac63f5eab84d66b527ea279ec121',1,'SA::Function::Clear()']]], + ['compare_2',['compare',['../struct_s_a_1_1_intl_1_1_func_member_data_base.html#ac286e2f5059894b06fc0823dc5f54f39',1,'SA::Intl::FuncMemberDataBase::Compare()'],['../struct_s_a_1_1_intl_1_1_func_member_data.html#aba950fb6ac5de391a5d6693019bfdb9b',1,'SA::Intl::FuncMemberData::Compare()']]], + ['config_2ehpp_3',['Config.hpp',['../_config_8hpp.html',1,'']]] +]; diff --git a/search/all_2.js b/search/all_2.js new file mode 100644 index 0000000..9d8bbc4 --- /dev/null +++ b/search/all_2.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['data_0',['data',['../struct_s_a_1_1_intl_1_1_func_member_handle.html#a3d826cb7bfe7bb7d412b4766c4810bd2',1,'SA::Intl::FuncMemberHandle::data'],['../struct_s_a_1_1_intl_1_1_func_member_handle_3_01void_00_01_args_8_8_8_01_4.html#a2c2717ed529002e10021eac3c782e96f',1,'SA::Intl::FuncMemberHandle< void, Args... >::data']]], + ['debug_2ehpp_1',['Debug.hpp',['../_debug_8hpp.html',1,'']]], + ['duplicate_2',['duplicate',['../struct_s_a_1_1_intl_1_1_func_member_data_base.html#ac564e1bcbe76fe22373588d28cc7c5e6',1,'SA::Intl::FuncMemberDataBase::Duplicate()'],['../struct_s_a_1_1_intl_1_1_func_member_data.html#ac5ed1b532100cea57ce9d95c869f5598',1,'SA::Intl::FuncMemberData::Duplicate()']]] +]; diff --git a/search/all_3.js b/search/all_3.js new file mode 100644 index 0000000..d489e42 --- /dev/null +++ b/search/all_3.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['equals_0',['equals',['../class_s_a_1_1_function.html#a1096725c0c2e8369fda1545fabd62d13',1,'SA::Function::Equals()'],['../class_s_a_1_1_packed_function.html#aef5f1c2e45386e36175046db1e450afd',1,'SA::PackedFunction::Equals()']]], + ['event_1',['event',['../class_s_a_1_1_event.html',1,'SA::Event< R, Args >'],['../class_s_a_1_1_event_3_01_r_07_args_8_8_8_08_4.html#af1476436423999c249b0761c6328309b',1,'SA::Event< R(Args...)>::Event()=default'],['../class_s_a_1_1_event_3_01_r_07_args_8_8_8_08_4.html#a73fc357a26a3c5c277630eb525f9d423',1,'SA::Event< R(Args...)>::Event(Event &&_other)=default'],['../class_s_a_1_1_event_3_01_r_07_args_8_8_8_08_4.html#a5bc57db125df8a80825bd4b89308a401',1,'SA::Event< R(Args...)>::Event(const Event &)=delete'],['../group___event.html',1,'Event']]], + ['event_2ehpp_2',['Event.hpp',['../_event_8hpp.html',1,'']]], + ['event_3c_20r_28args_2e_2e_2e_29_3e_3',['Event< R(Args...)>',['../class_s_a_1_1_event_3_01_r_07_args_8_8_8_08_4.html',1,'SA']]], + ['execute_4',['execute',['../class_s_a_1_1_event_3_01_r_07_args_8_8_8_08_4.html#a5954a03a5d03976c9ebe4d9c410386e4',1,'SA::Event< R(Args...)>::Execute(const Args &... _args)'],['../class_s_a_1_1_event_3_01_r_07_args_8_8_8_08_4.html#a7ad5297720f7a90615d52b92f379bc3d',1,'SA::Event< R(Args...)>::Execute(std::vector< R > &_results, const Args &... _args)'],['../class_s_a_1_1_function.html#a01bdd1f46db315a694c4a6e3a026e334',1,'SA::Function::Execute()'],['../class_s_a_1_1_packed_function.html#a35e10ce391763630ba36156d11ceb890',1,'SA::PackedFunction::Execute()']]] +]; diff --git a/search/all_4.js b/search/all_4.js new file mode 100644 index 0000000..760f27f --- /dev/null +++ b/search/all_4.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['func_0',['func',['../struct_s_a_1_1_intl_1_1_func_member_data.html#a1c47fa403407412eabd3f24d0623981e',1,'SA::Intl::FuncMemberData::func'],['../struct_s_a_1_1_intl_1_1_func_member_handle_3_01void_00_01_args_8_8_8_01_4.html#a744a8d9e58e302c092d88981f449bd2d',1,'SA::Intl::FuncMemberHandle< void, Args... >::func'],['../struct_s_a_1_1_intl_1_1_func_member_handle.html#a0ea7be6fe1877f622b323dd35d8f7aab',1,'SA::Intl::FuncMemberHandle::func'],['../struct_s_a_1_1_intl_1_1_func_handle_3_01void_00_01_args_8_8_8_01_4.html#ac80ec7459caa0cb2aee0f9baaf1755dd',1,'SA::Intl::FuncHandle< void, Args... >::func'],['../struct_s_a_1_1_intl_1_1_func_handle.html#a71b42a6d71f01e2c4d0b8af289530d54',1,'SA::Intl::FuncHandle::func']]], + ['funchandle_1',['FuncHandle',['../struct_s_a_1_1_intl_1_1_func_handle.html',1,'SA::Intl']]], + ['funchandle_3c_20void_2c_20args_2e_2e_2e_20_3e_2',['FuncHandle< void, Args... >',['../struct_s_a_1_1_intl_1_1_func_handle_3_01void_00_01_args_8_8_8_01_4.html',1,'SA::Intl']]], + ['funcmemberdata_3',['funcmemberdata',['../struct_s_a_1_1_intl_1_1_func_member_data.html',1,'SA::Intl::FuncMemberData< C, R, Args >'],['../struct_s_a_1_1_intl_1_1_func_member_data.html#a03cfbd224bed5b40b97a1e4b3a32980c',1,'SA::Intl::FuncMemberData::FuncMemberData()']]], + ['funcmemberdatabase_4',['FuncMemberDataBase',['../struct_s_a_1_1_intl_1_1_func_member_data_base.html',1,'SA::Intl']]], + ['funcmemberhandle_5',['FuncMemberHandle',['../struct_s_a_1_1_intl_1_1_func_member_handle.html',1,'SA::Intl']]], + ['funcmemberhandle_3c_20void_2c_20args_2e_2e_2e_20_3e_6',['FuncMemberHandle< void, Args... >',['../struct_s_a_1_1_intl_1_1_func_member_handle_3_01void_00_01_args_8_8_8_01_4.html',1,'SA::Intl']]], + ['function_7',['function',['../class_s_a_1_1_function.html',1,'SA::Function< R, Args >'],['../class_s_a_1_1_function.html#a8437e538f585594d57fe112160a4633e',1,'SA::Function::Function()=default'],['../class_s_a_1_1_function.html#a468e88d7ecf3da58a99220a651f72823',1,'SA::Function::Function(R(*_func)(Args...)) noexcept'],['../class_s_a_1_1_function.html#a8cc4af336b19dd83da2dd4c1f8a937fb',1,'SA::Function::Function(C *_caller, R(C::*_func)(Args...))'],['../class_s_a_1_1_function.html#a5f147689421a62f3c69f902a2b01dbf1',1,'SA::Function::Function(Function &&_other) noexcept'],['../class_s_a_1_1_function.html#a1a0487f9f630867142ded88112f89863',1,'SA::Function::Function(const Function &_other) noexcept']]], + ['function_2ehpp_8',['Function.hpp',['../_function_8hpp.html',1,'']]], + ['function_3c_20r_2c_20args_2e_2e_2e_20_3e_9',['Function< R, Args... >',['../class_s_a_1_1_function.html',1,'SA']]], + ['functionmemberdata_2ehpp_10',['FunctionMemberData.hpp',['../_function_member_data_8hpp.html',1,'']]] +]; diff --git a/search/all_5.js b/search/all_5.js new file mode 100644 index 0000000..11eca02 --- /dev/null +++ b/search/all_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['interfacecall_0',['InterfaceCall',['../struct_s_a_1_1_intl_1_1_func_member_data.html#adf2b1a2e5db8ce3e305e36d7d3b79be0',1,'SA::Intl::FuncMemberData']]], + ['isempty_1',['isempty',['../class_s_a_1_1_event_3_01_r_07_args_8_8_8_08_4.html#a6df1a519fd264f0cf913f96fea65b083',1,'SA::Event< R(Args...)>::IsEmpty()'],['../class_s_a_1_1_function.html#ac009f6bfeaa0d093666bfafcf6aca4a4',1,'SA::Function::IsEmpty()']]] +]; diff --git a/search/all_6.js b/search/all_6.js new file mode 100644 index 0000000..fab5ac6 --- /dev/null +++ b/search/all_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['mintlfunc_0',['mIntlFunc',['../class_s_a_1_1_function.html#a08207b8a94b56e42727deb3797bc0654',1,'SA::Function']]], + ['msfunc_1',['mSFunc',['../class_s_a_1_1_function.html#a1ef6921f09b9943aafa41328b26f638f',1,'SA::Function']]] +]; diff --git a/search/all_7.js b/search/all_7.js new file mode 100644 index 0000000..385b4fa --- /dev/null +++ b/search/all_7.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['operator_20bool_0',['operator bool',['../class_s_a_1_1_function.html#ab55a32e31cbdb13f47488b1efaa708d4',1,'SA::Function']]], + ['operator_21_3d_1',['operator!=',['../class_s_a_1_1_function.html#a8a4e259bf7934ecce2eb61e2d9f9980e',1,'SA::Function::operator!=()'],['../class_s_a_1_1_packed_function.html#a4355d7f4b567ff08d7e9544b19fec345',1,'SA::PackedFunction::operator!=()']]], + ['operator_28_29_2',['operator()',['../class_s_a_1_1_event_3_01_r_07_args_8_8_8_08_4.html#a1e557cdfd86e4c49c6271d842bdc6a36',1,'SA::Event< R(Args...)>::operator()(const Args &... _args)'],['../class_s_a_1_1_event_3_01_r_07_args_8_8_8_08_4.html#a27f77ceb5024fa0b03a331a41122849e',1,'SA::Event< R(Args...)>::operator()(std::vector< R > &_results, const Args &... _args)'],['../class_s_a_1_1_function.html#a1e519c429caec75bdb235917cd0f7fae',1,'SA::Function::operator()()'],['../class_s_a_1_1_packed_function.html#afb330b79f95f332d508bb3679bc7bed9',1,'SA::PackedFunction::operator()()']]], + ['operator_2b_3d_3',['operator+=',['../class_s_a_1_1_event_3_01_r_07_args_8_8_8_08_4.html#aa109498170fe85efa22b86f2082146d7',1,'SA::Event< R(Args...)>']]], + ['operator_2d_3d_4',['operator-=',['../class_s_a_1_1_event_3_01_r_07_args_8_8_8_08_4.html#af2f2571bfa5e2f394c1c12047aa87181',1,'SA::Event< R(Args...)>']]], + ['operator_3d_5',['operator=',['../class_s_a_1_1_packed_function.html#ac588dff81945f3e01956c751bebe3057',1,'SA::PackedFunction::operator=()'],['../class_s_a_1_1_function.html#ae820d039623d516bbd514a82a7405eea',1,'SA::Function::operator=(std::nullptr_t)'],['../class_s_a_1_1_function.html#ac688571c4c8af23101e79a6ed7eb6d47',1,'SA::Function::operator=(R(*_func)(Args...)) noexcept'],['../class_s_a_1_1_function.html#a74d66c221582feba9e86bd8dd52c15bf',1,'SA::Function::operator=(const Function &_rhs) noexcept'],['../class_s_a_1_1_function.html#af237fd7ec965f9ef5cb1b35153873fe1',1,'SA::Function::operator=(Function &&_rhs) noexcept'],['../class_s_a_1_1_event_3_01_r_07_args_8_8_8_08_4.html#ab7f2eff6dccc790fa035febb3d73d072',1,'SA::Event< R(Args...)>::operator=(const Event &)=delete'],['../class_s_a_1_1_event_3_01_r_07_args_8_8_8_08_4.html#a9d0531299a5b97af77ad58555a1f53ce',1,'SA::Event< R(Args...)>::operator=(Event &&_other)'],['../class_s_a_1_1_packed_function.html#afe435f7877ced079c4ffbf95d49101d9',1,'SA::PackedFunction::operator=()']]], + ['operator_3d_3d_6',['operator==',['../class_s_a_1_1_function.html#a98b9b8c0c06b236eb38b1b871bcfa3d0',1,'SA::Function::operator==()'],['../class_s_a_1_1_packed_function.html#a088d7668c3197459139c454044596715',1,'SA::PackedFunction::operator==()']]], + ['ownedevent_7',['OwnedEvent',['../class_s_a_1_1_owned_event.html',1,'SA']]], + ['ownedevent_2ehpp_8',['OwnedEvent.hpp',['../_owned_event_8hpp.html',1,'']]], + ['ownedevent_3c_20ownert_2c_20r_28args_2e_2e_2e_29_3e_9',['OwnedEvent< OwnerT, R(Args...)>',['../class_s_a_1_1_owned_event_3_01_owner_t_00_01_r_07_args_8_8_8_08_4.html',1,'SA']]] +]; diff --git a/search/all_8.js b/search/all_8.js new file mode 100644 index 0000000..1222436 --- /dev/null +++ b/search/all_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['packedfunction_0',['packedfunction',['../class_s_a_1_1_packed_function.html',1,'SA::PackedFunction< R, Args >'],['../class_s_a_1_1_packed_function.html#a96ae85902eff2684b411fc400d52aba7',1,'SA::PackedFunction::PackedFunction()=default'],['../class_s_a_1_1_packed_function.html#abc7460ae060983c5f635b43471813e04',1,'SA::PackedFunction::PackedFunction(R(*_func)(Args...), Args... _args) noexcept'],['../class_s_a_1_1_packed_function.html#aea1799e9f445da2cc363823682616f44',1,'SA::PackedFunction::PackedFunction(C *_caller, R(C::*_func)(Args...), Args... _args)'],['../class_s_a_1_1_packed_function.html#aed1f4ef223b88c82b350edc17dc3e34a',1,'SA::PackedFunction::PackedFunction(PackedFunction &&_other) noexcept'],['../class_s_a_1_1_packed_function.html#ae51c3243bdec4eeb136956a999d478d5',1,'SA::PackedFunction::PackedFunction(const PackedFunction &_other) noexcept']]], + ['packedfunction_2ehpp_1',['PackedFunction.hpp',['../_packed_function_8hpp.html',1,'']]] +]; diff --git a/search/all_9.js b/search/all_9.js new file mode 100644 index 0000000..a37b22b --- /dev/null +++ b/search/all_9.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['remove_0',['remove',['../class_s_a_1_1_event_3_01_r_07_args_8_8_8_08_4.html#a52cf4168537165e95b0ce84cb4356e0c',1,'SA::Event< R(Args...)>::Remove(R(*_func)(Args...))'],['../class_s_a_1_1_event_3_01_r_07_args_8_8_8_08_4.html#ace3290346617e28b91535a6dcb209551',1,'SA::Event< R(Args...)>::Remove(const C *_caller, R(C::*_func)(Args...))']]], + ['result_1',['result',['../struct_s_a_1_1_intl_1_1_func_handle.html#a650b306ff960d341eed419e14cdd9bd2',1,'SA::Intl::FuncHandle::result'],['../struct_s_a_1_1_intl_1_1_func_member_handle.html#a26cfb569f626a0aabfd1e597b40d774a',1,'SA::Intl::FuncMemberHandle::result']]], + ['rremove_2',['rremove',['../class_s_a_1_1_event_3_01_r_07_args_8_8_8_08_4.html#a52f390678ef4c07244dfa3cda6cc8011',1,'SA::Event< R(Args...)>::RRemove(R(*_func)(Args...))'],['../class_s_a_1_1_event_3_01_r_07_args_8_8_8_08_4.html#a67e889b2faae4854525800d0f2a39cfa',1,'SA::Event< R(Args...)>::RRemove(const C *_caller, R(C::*_func)(Args...))']]] +]; diff --git a/search/all_a.js b/search/all_a.js new file mode 100644 index 0000000..abc72c7 --- /dev/null +++ b/search/all_a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['set_0',['set',['../class_s_a_1_1_function.html#a01f4d5f15a1e12f430d72b22d485a347',1,'SA::Function::Set(R(*_func)(Args...))'],['../class_s_a_1_1_function.html#abdeaa4aa9077012694360a432db32db3',1,'SA::Function::Set(C *_caller, R(C::*_func)(Args...))'],['../class_s_a_1_1_packed_function.html#ad70444c9566c9be292d5f0e12b963a67',1,'SA::PackedFunction::Set(R(*_func)(Args...), Args... _args)'],['../class_s_a_1_1_packed_function.html#a883261f0eb5df31819dcaebbfded0999',1,'SA::PackedFunction::Set(C *_caller, R(C::*_func)(Args...), Args... _args)']]] +]; diff --git a/search/all_b.js b/search/all_b.js new file mode 100644 index 0000000..7eab1c9 --- /dev/null +++ b/search/all_b.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['_7eevent_0',['~Event',['../class_s_a_1_1_event_3_01_r_07_args_8_8_8_08_4.html#a7fc72b00bee3f9ddc0616369f655ebbd',1,'SA::Event< R(Args...)>']]], + ['_7efuncmemberdatabase_1',['~FuncMemberDataBase',['../struct_s_a_1_1_intl_1_1_func_member_data_base.html#ac9e7ac33d3f77ac308fc14a6a7a1a56f',1,'SA::Intl::FuncMemberDataBase']]], + ['_7efunction_2',['~Function',['../class_s_a_1_1_function.html#a4d7b4ddb4685a4f538ecdb2a08e07bed',1,'SA::Function']]] +]; diff --git a/search/classes_0.js b/search/classes_0.js new file mode 100644 index 0000000..c0e2278 --- /dev/null +++ b/search/classes_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['event_0',['Event',['../class_s_a_1_1_event.html',1,'SA']]], + ['event_3c_20r_28args_2e_2e_2e_29_3e_1',['Event< R(Args...)>',['../class_s_a_1_1_event_3_01_r_07_args_8_8_8_08_4.html',1,'SA']]] +]; diff --git a/search/classes_1.js b/search/classes_1.js new file mode 100644 index 0000000..d076727 --- /dev/null +++ b/search/classes_1.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['funchandle_0',['FuncHandle',['../struct_s_a_1_1_intl_1_1_func_handle.html',1,'SA::Intl']]], + ['funchandle_3c_20void_2c_20args_2e_2e_2e_20_3e_1',['FuncHandle< void, Args... >',['../struct_s_a_1_1_intl_1_1_func_handle_3_01void_00_01_args_8_8_8_01_4.html',1,'SA::Intl']]], + ['funcmemberdata_2',['FuncMemberData',['../struct_s_a_1_1_intl_1_1_func_member_data.html',1,'SA::Intl']]], + ['funcmemberdatabase_3',['FuncMemberDataBase',['../struct_s_a_1_1_intl_1_1_func_member_data_base.html',1,'SA::Intl']]], + ['funcmemberhandle_4',['FuncMemberHandle',['../struct_s_a_1_1_intl_1_1_func_member_handle.html',1,'SA::Intl']]], + ['funcmemberhandle_3c_20void_2c_20args_2e_2e_2e_20_3e_5',['FuncMemberHandle< void, Args... >',['../struct_s_a_1_1_intl_1_1_func_member_handle_3_01void_00_01_args_8_8_8_01_4.html',1,'SA::Intl']]], + ['function_6',['Function',['../class_s_a_1_1_function.html',1,'SA']]], + ['function_3c_20r_2c_20args_2e_2e_2e_20_3e_7',['Function< R, Args... >',['../class_s_a_1_1_function.html',1,'SA']]] +]; diff --git a/search/classes_2.js b/search/classes_2.js new file mode 100644 index 0000000..5f5a4ee --- /dev/null +++ b/search/classes_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['ownedevent_0',['OwnedEvent',['../class_s_a_1_1_owned_event.html',1,'SA']]], + ['ownedevent_3c_20ownert_2c_20r_28args_2e_2e_2e_29_3e_1',['OwnedEvent< OwnerT, R(Args...)>',['../class_s_a_1_1_owned_event_3_01_owner_t_00_01_r_07_args_8_8_8_08_4.html',1,'SA']]] +]; diff --git a/search/classes_3.js b/search/classes_3.js new file mode 100644 index 0000000..5b3844e --- /dev/null +++ b/search/classes_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['packedfunction_0',['PackedFunction',['../class_s_a_1_1_packed_function.html',1,'SA']]] +]; diff --git a/search/close.svg b/search/close.svg new file mode 100644 index 0000000..337d6cc --- /dev/null +++ b/search/close.svg @@ -0,0 +1,18 @@ + + + + + + diff --git a/search/files_0.js b/search/files_0.js new file mode 100644 index 0000000..4b79db0 --- /dev/null +++ b/search/files_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['config_2ehpp_0',['Config.hpp',['../_config_8hpp.html',1,'']]] +]; diff --git a/search/files_1.js b/search/files_1.js new file mode 100644 index 0000000..d539ba7 --- /dev/null +++ b/search/files_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['debug_2ehpp_0',['Debug.hpp',['../_debug_8hpp.html',1,'']]] +]; diff --git a/search/files_2.js b/search/files_2.js new file mode 100644 index 0000000..2e0bb20 --- /dev/null +++ b/search/files_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['event_2ehpp_0',['Event.hpp',['../_event_8hpp.html',1,'']]] +]; diff --git a/search/files_3.js b/search/files_3.js new file mode 100644 index 0000000..93a5826 --- /dev/null +++ b/search/files_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['function_2ehpp_0',['Function.hpp',['../_function_8hpp.html',1,'']]], + ['functionmemberdata_2ehpp_1',['FunctionMemberData.hpp',['../_function_member_data_8hpp.html',1,'']]] +]; diff --git a/search/files_4.js b/search/files_4.js new file mode 100644 index 0000000..4589f89 --- /dev/null +++ b/search/files_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['ownedevent_2ehpp_0',['OwnedEvent.hpp',['../_owned_event_8hpp.html',1,'']]] +]; diff --git a/search/files_5.js b/search/files_5.js new file mode 100644 index 0000000..1dbb6f5 --- /dev/null +++ b/search/files_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['packedfunction_2ehpp_0',['PackedFunction.hpp',['../_packed_function_8hpp.html',1,'']]] +]; diff --git a/search/functions_0.js b/search/functions_0.js new file mode 100644 index 0000000..5bb41a9 --- /dev/null +++ b/search/functions_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['add_0',['add',['../class_s_a_1_1_event_3_01_r_07_args_8_8_8_08_4.html#a8ecaaaf40d1090b12145806de460eb56',1,'SA::Event< R(Args...)>::Add(R(*_func)(Args...), R *_result=nullptr)'],['../class_s_a_1_1_event_3_01_r_07_args_8_8_8_08_4.html#a1036e97e983cdbfdde12511af4098eba',1,'SA::Event< R(Args...)>::Add(C *_caller, R(C::*_func)(Args...), R *_result=nullptr)']]] +]; diff --git a/search/functions_1.js b/search/functions_1.js new file mode 100644 index 0000000..6541ae3 --- /dev/null +++ b/search/functions_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['clear_0',['clear',['../class_s_a_1_1_event_3_01_r_07_args_8_8_8_08_4.html#a0c7378c8b3ccf57bd04ee06fd296a5a5',1,'SA::Event< R(Args...)>::Clear()'],['../class_s_a_1_1_function.html#aa5b5ac63f5eab84d66b527ea279ec121',1,'SA::Function::Clear()']]], + ['compare_1',['compare',['../struct_s_a_1_1_intl_1_1_func_member_data_base.html#ac286e2f5059894b06fc0823dc5f54f39',1,'SA::Intl::FuncMemberDataBase::Compare()'],['../struct_s_a_1_1_intl_1_1_func_member_data.html#aba950fb6ac5de391a5d6693019bfdb9b',1,'SA::Intl::FuncMemberData::Compare()']]] +]; diff --git a/search/functions_2.js b/search/functions_2.js new file mode 100644 index 0000000..fe08b83 --- /dev/null +++ b/search/functions_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['duplicate_0',['duplicate',['../struct_s_a_1_1_intl_1_1_func_member_data_base.html#ac564e1bcbe76fe22373588d28cc7c5e6',1,'SA::Intl::FuncMemberDataBase::Duplicate()'],['../struct_s_a_1_1_intl_1_1_func_member_data.html#ac5ed1b532100cea57ce9d95c869f5598',1,'SA::Intl::FuncMemberData::Duplicate()']]] +]; diff --git a/search/functions_3.js b/search/functions_3.js new file mode 100644 index 0000000..fabc999 --- /dev/null +++ b/search/functions_3.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['equals_0',['equals',['../class_s_a_1_1_function.html#a1096725c0c2e8369fda1545fabd62d13',1,'SA::Function::Equals()'],['../class_s_a_1_1_packed_function.html#aef5f1c2e45386e36175046db1e450afd',1,'SA::PackedFunction::Equals()']]], + ['event_1',['event',['../class_s_a_1_1_event_3_01_r_07_args_8_8_8_08_4.html#af1476436423999c249b0761c6328309b',1,'SA::Event< R(Args...)>::Event()=default'],['../class_s_a_1_1_event_3_01_r_07_args_8_8_8_08_4.html#a73fc357a26a3c5c277630eb525f9d423',1,'SA::Event< R(Args...)>::Event(Event &&_other)=default'],['../class_s_a_1_1_event_3_01_r_07_args_8_8_8_08_4.html#a5bc57db125df8a80825bd4b89308a401',1,'SA::Event< R(Args...)>::Event(const Event &)=delete']]], + ['execute_2',['execute',['../class_s_a_1_1_event_3_01_r_07_args_8_8_8_08_4.html#a5954a03a5d03976c9ebe4d9c410386e4',1,'SA::Event< R(Args...)>::Execute(const Args &... _args)'],['../class_s_a_1_1_event_3_01_r_07_args_8_8_8_08_4.html#a7ad5297720f7a90615d52b92f379bc3d',1,'SA::Event< R(Args...)>::Execute(std::vector< R > &_results, const Args &... _args)'],['../class_s_a_1_1_function.html#a01bdd1f46db315a694c4a6e3a026e334',1,'SA::Function::Execute()'],['../class_s_a_1_1_packed_function.html#a35e10ce391763630ba36156d11ceb890',1,'SA::PackedFunction::Execute()']]] +]; diff --git a/search/functions_4.js b/search/functions_4.js new file mode 100644 index 0000000..bb5007b --- /dev/null +++ b/search/functions_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['funcmemberdata_0',['FuncMemberData',['../struct_s_a_1_1_intl_1_1_func_member_data.html#a03cfbd224bed5b40b97a1e4b3a32980c',1,'SA::Intl::FuncMemberData']]], + ['function_1',['function',['../class_s_a_1_1_function.html#a8437e538f585594d57fe112160a4633e',1,'SA::Function::Function()=default'],['../class_s_a_1_1_function.html#a468e88d7ecf3da58a99220a651f72823',1,'SA::Function::Function(R(*_func)(Args...)) noexcept'],['../class_s_a_1_1_function.html#a8cc4af336b19dd83da2dd4c1f8a937fb',1,'SA::Function::Function(C *_caller, R(C::*_func)(Args...))'],['../class_s_a_1_1_function.html#a5f147689421a62f3c69f902a2b01dbf1',1,'SA::Function::Function(Function &&_other) noexcept'],['../class_s_a_1_1_function.html#a1a0487f9f630867142ded88112f89863',1,'SA::Function::Function(const Function &_other) noexcept']]] +]; diff --git a/search/functions_5.js b/search/functions_5.js new file mode 100644 index 0000000..11eca02 --- /dev/null +++ b/search/functions_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['interfacecall_0',['InterfaceCall',['../struct_s_a_1_1_intl_1_1_func_member_data.html#adf2b1a2e5db8ce3e305e36d7d3b79be0',1,'SA::Intl::FuncMemberData']]], + ['isempty_1',['isempty',['../class_s_a_1_1_event_3_01_r_07_args_8_8_8_08_4.html#a6df1a519fd264f0cf913f96fea65b083',1,'SA::Event< R(Args...)>::IsEmpty()'],['../class_s_a_1_1_function.html#ac009f6bfeaa0d093666bfafcf6aca4a4',1,'SA::Function::IsEmpty()']]] +]; diff --git a/search/functions_6.js b/search/functions_6.js new file mode 100644 index 0000000..1cf42fa --- /dev/null +++ b/search/functions_6.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['operator_20bool_0',['operator bool',['../class_s_a_1_1_function.html#ab55a32e31cbdb13f47488b1efaa708d4',1,'SA::Function']]], + ['operator_21_3d_1',['operator!=',['../class_s_a_1_1_function.html#a8a4e259bf7934ecce2eb61e2d9f9980e',1,'SA::Function::operator!=()'],['../class_s_a_1_1_packed_function.html#a4355d7f4b567ff08d7e9544b19fec345',1,'SA::PackedFunction::operator!=()']]], + ['operator_28_29_2',['operator()',['../class_s_a_1_1_event_3_01_r_07_args_8_8_8_08_4.html#a1e557cdfd86e4c49c6271d842bdc6a36',1,'SA::Event< R(Args...)>::operator()(const Args &... _args)'],['../class_s_a_1_1_event_3_01_r_07_args_8_8_8_08_4.html#a27f77ceb5024fa0b03a331a41122849e',1,'SA::Event< R(Args...)>::operator()(std::vector< R > &_results, const Args &... _args)'],['../class_s_a_1_1_function.html#a1e519c429caec75bdb235917cd0f7fae',1,'SA::Function::operator()()'],['../class_s_a_1_1_packed_function.html#afb330b79f95f332d508bb3679bc7bed9',1,'SA::PackedFunction::operator()()']]], + ['operator_2b_3d_3',['operator+=',['../class_s_a_1_1_event_3_01_r_07_args_8_8_8_08_4.html#aa109498170fe85efa22b86f2082146d7',1,'SA::Event< R(Args...)>']]], + ['operator_2d_3d_4',['operator-=',['../class_s_a_1_1_event_3_01_r_07_args_8_8_8_08_4.html#af2f2571bfa5e2f394c1c12047aa87181',1,'SA::Event< R(Args...)>']]], + ['operator_3d_5',['operator=',['../class_s_a_1_1_event_3_01_r_07_args_8_8_8_08_4.html#a9d0531299a5b97af77ad58555a1f53ce',1,'SA::Event< R(Args...)>::operator=()'],['../class_s_a_1_1_packed_function.html#afe435f7877ced079c4ffbf95d49101d9',1,'SA::PackedFunction::operator=(const PackedFunction &_rhs) noexcept'],['../class_s_a_1_1_packed_function.html#ac588dff81945f3e01956c751bebe3057',1,'SA::PackedFunction::operator=(PackedFunction &&_rhs) noexcept'],['../class_s_a_1_1_function.html#ae820d039623d516bbd514a82a7405eea',1,'SA::Function::operator=(std::nullptr_t)'],['../class_s_a_1_1_function.html#ac688571c4c8af23101e79a6ed7eb6d47',1,'SA::Function::operator=(R(*_func)(Args...)) noexcept'],['../class_s_a_1_1_function.html#a74d66c221582feba9e86bd8dd52c15bf',1,'SA::Function::operator=(const Function &_rhs) noexcept'],['../class_s_a_1_1_function.html#af237fd7ec965f9ef5cb1b35153873fe1',1,'SA::Function::operator=(Function &&_rhs) noexcept'],['../class_s_a_1_1_event_3_01_r_07_args_8_8_8_08_4.html#ab7f2eff6dccc790fa035febb3d73d072',1,'SA::Event< R(Args...)>::operator=()']]], + ['operator_3d_3d_6',['operator==',['../class_s_a_1_1_function.html#a98b9b8c0c06b236eb38b1b871bcfa3d0',1,'SA::Function::operator==()'],['../class_s_a_1_1_packed_function.html#a088d7668c3197459139c454044596715',1,'SA::PackedFunction::operator==()']]] +]; diff --git a/search/functions_7.js b/search/functions_7.js new file mode 100644 index 0000000..9e99fa7 --- /dev/null +++ b/search/functions_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['packedfunction_0',['packedfunction',['../class_s_a_1_1_packed_function.html#a96ae85902eff2684b411fc400d52aba7',1,'SA::PackedFunction::PackedFunction()=default'],['../class_s_a_1_1_packed_function.html#abc7460ae060983c5f635b43471813e04',1,'SA::PackedFunction::PackedFunction(R(*_func)(Args...), Args... _args) noexcept'],['../class_s_a_1_1_packed_function.html#aea1799e9f445da2cc363823682616f44',1,'SA::PackedFunction::PackedFunction(C *_caller, R(C::*_func)(Args...), Args... _args)'],['../class_s_a_1_1_packed_function.html#aed1f4ef223b88c82b350edc17dc3e34a',1,'SA::PackedFunction::PackedFunction(PackedFunction &&_other) noexcept'],['../class_s_a_1_1_packed_function.html#ae51c3243bdec4eeb136956a999d478d5',1,'SA::PackedFunction::PackedFunction(const PackedFunction &_other) noexcept']]] +]; diff --git a/search/functions_8.js b/search/functions_8.js new file mode 100644 index 0000000..a7b2e25 --- /dev/null +++ b/search/functions_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['remove_0',['remove',['../class_s_a_1_1_event_3_01_r_07_args_8_8_8_08_4.html#a52cf4168537165e95b0ce84cb4356e0c',1,'SA::Event< R(Args...)>::Remove(R(*_func)(Args...))'],['../class_s_a_1_1_event_3_01_r_07_args_8_8_8_08_4.html#ace3290346617e28b91535a6dcb209551',1,'SA::Event< R(Args...)>::Remove(const C *_caller, R(C::*_func)(Args...))']]], + ['rremove_1',['rremove',['../class_s_a_1_1_event_3_01_r_07_args_8_8_8_08_4.html#a52f390678ef4c07244dfa3cda6cc8011',1,'SA::Event< R(Args...)>::RRemove(R(*_func)(Args...))'],['../class_s_a_1_1_event_3_01_r_07_args_8_8_8_08_4.html#a67e889b2faae4854525800d0f2a39cfa',1,'SA::Event< R(Args...)>::RRemove(const C *_caller, R(C::*_func)(Args...))']]] +]; diff --git a/search/functions_9.js b/search/functions_9.js new file mode 100644 index 0000000..abc72c7 --- /dev/null +++ b/search/functions_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['set_0',['set',['../class_s_a_1_1_function.html#a01f4d5f15a1e12f430d72b22d485a347',1,'SA::Function::Set(R(*_func)(Args...))'],['../class_s_a_1_1_function.html#abdeaa4aa9077012694360a432db32db3',1,'SA::Function::Set(C *_caller, R(C::*_func)(Args...))'],['../class_s_a_1_1_packed_function.html#ad70444c9566c9be292d5f0e12b963a67',1,'SA::PackedFunction::Set(R(*_func)(Args...), Args... _args)'],['../class_s_a_1_1_packed_function.html#a883261f0eb5df31819dcaebbfded0999',1,'SA::PackedFunction::Set(C *_caller, R(C::*_func)(Args...), Args... _args)']]] +]; diff --git a/search/functions_a.js b/search/functions_a.js new file mode 100644 index 0000000..7eab1c9 --- /dev/null +++ b/search/functions_a.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['_7eevent_0',['~Event',['../class_s_a_1_1_event_3_01_r_07_args_8_8_8_08_4.html#a7fc72b00bee3f9ddc0616369f655ebbd',1,'SA::Event< R(Args...)>']]], + ['_7efuncmemberdatabase_1',['~FuncMemberDataBase',['../struct_s_a_1_1_intl_1_1_func_member_data_base.html#ac9e7ac33d3f77ac308fc14a6a7a1a56f',1,'SA::Intl::FuncMemberDataBase']]], + ['_7efunction_2',['~Function',['../class_s_a_1_1_function.html#a4d7b4ddb4685a4f538ecdb2a08e07bed',1,'SA::Function']]] +]; diff --git a/search/groups_0.js b/search/groups_0.js new file mode 100644 index 0000000..81d5c49 --- /dev/null +++ b/search/groups_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['event_0',['Event',['../group___event.html',1,'']]] +]; diff --git a/search/mag.svg b/search/mag.svg new file mode 100644 index 0000000..ffb6cf0 --- /dev/null +++ b/search/mag.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/search/mag_d.svg b/search/mag_d.svg new file mode 100644 index 0000000..4122773 --- /dev/null +++ b/search/mag_d.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/search/mag_sel.svg b/search/mag_sel.svg new file mode 100644 index 0000000..553dba8 --- /dev/null +++ b/search/mag_sel.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/search/mag_seld.svg b/search/mag_seld.svg new file mode 100644 index 0000000..c906f84 --- /dev/null +++ b/search/mag_seld.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/search/search.css b/search/search.css new file mode 100644 index 0000000..19f76f9 --- /dev/null +++ b/search/search.css @@ -0,0 +1,291 @@ +/*---------------- Search Box positioning */ + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search box styling */ + +.SRPage * { + font-weight: normal; + line-height: normal; +} + +dark-mode-toggle { + margin-left: 5px; + display: flex; + float: right; +} + +#MSearchBox { + display: inline-block; + white-space : nowrap; + background: var(--search-background-color); + border-radius: 0.65em; + box-shadow: var(--search-box-shadow); + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + width: 20px; + height: 19px; + background-image: var(--search-magnification-select-image); + margin: 0 0 0 0.3em; + padding: 0; +} + +#MSearchSelectExt { + display: inline-block; + vertical-align: middle; + width: 10px; + height: 19px; + background-image: var(--search-magnification-image); + margin: 0 0 0 0.5em; + padding: 0; +} + + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 19px; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: var(--search-foreground-color); + outline: none; + font-family: var(--font-family-search); + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + +@media(hover: none) { + /* to avoid zooming on iOS */ + #MSearchField { + font-size: 16px; + } +} + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: var(--search-active-color); +} + + + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-filter-border-color); + background-color: var(--search-filter-background-color); + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt var(--font-family-search); + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: var(--font-family-monospace); + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: var(--search-filter-foreground-color); + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: var(--search-filter-foreground-color); + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: var(--search-filter-highlight-text-color); + background-color: var(--search-filter-highlight-bg-color); + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + /*width: 60ex;*/ + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-results-border-color); + background-color: var(--search-results-background-color); + z-index:10000; + width: 300px; + height: 400px; + overflow: auto; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +div.SRPage { + margin: 5px 2px; + background-color: var(--search-results-background-color); +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + font-size: 8pt; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: var(--font-family-search); +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: var(--font-family-search); +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: var(--nav-gradient-active-image-parent); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/search/search.js b/search/search.js new file mode 100644 index 0000000..6fd40c6 --- /dev/null +++ b/search/search.js @@ -0,0 +1,840 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + e.stopPropagation(); + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var jsFile; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; + } + + var loadJS = function(url, impl, loc){ + var scriptTag = document.createElement('script'); + scriptTag.src = url; + scriptTag.onload = impl; + scriptTag.onreadystatechange = impl; + loc.appendChild(scriptTag); + } + + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + var domSearchBox = this.DOMSearchBox(); + var domPopupSearchResults = this.DOMPopupSearchResults(); + var domSearchClose = this.DOMSearchClose(); + var resultsPath = this.resultsPath; + + var handleResults = function() { + document.getElementById("Loading").style.display="none"; + if (typeof searchData !== 'undefined') { + createResults(resultsPath); + document.getElementById("NoMatches").style.display="none"; + } + + if (idx!=-1) { + searchResults.Search(searchValue); + } else { // no file with search results => force empty search results + searchResults.Search('===='); + } + + if (domPopupSearchResultsWindow.style.display!='block') + { + domSearchClose.style.display = 'inline-block'; + var left = getXPos(domSearchBox) + 150; + var top = getYPos(domSearchBox) + 20; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + var maxWidth = document.body.clientWidth; + var maxHeight = document.body.clientHeight; + var width = 300; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + var height = 400; + if (height+top+8>maxHeight) height=maxHeight-top-8; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResultsWindow.style.height = height + 'px'; + } + } + + if (jsFile) { + loadJS(jsFile, handleResults, this.DOMPopupSearchResultsWindow()); + } else { + handleResults(); + } + + this.lastSearchValue = searchValue; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + this.searchActive = true; + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + this.DOMSearchField().value = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults(resultsPath) +{ + var results = document.getElementById("SRResults"); + results.innerHTML = ''; + for (var e=0; e-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/splitbard.png b/splitbard.png new file mode 100644 index 0000000000000000000000000000000000000000..8367416d757fd7b6dc4272b6432dc75a75abd068 GIT binary patch literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf@VhhFKy35^fiT zT~&lUj3=cDh^%3HDY9k5CEku}PHXNoNC(_$U3XPb&Q*ME25pT;2(*BOgAf<+R$lzakPG`kF31()Fx{L5Wrac|GQzjeE= zueY1`Ze{#x<8=S|`~MgGetGce)#vN&|J{Cd^tS%;tBYTo?+^d68<#n_Y_xx`J||4O V@QB{^CqU0Kc)I$ztaD0e0svEzbJzd? literal 0 HcmV?d00001 diff --git a/struct_s_a_1_1_intl_1_1_func_handle-members.html b/struct_s_a_1_1_intl_1_1_func_handle-members.html new file mode 100644 index 0000000..13104b9 --- /dev/null +++ b/struct_s_a_1_1_intl_1_1_func_handle-members.html @@ -0,0 +1,91 @@ + + + + + + + +SA_Event: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    SA_Event +
    +
    Sapphire's Suite's C++ Event and Function library.
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    SA::Intl::FuncHandle< R, Args > Member List
    +
    +
    + +

    This is the complete list of members for SA::Intl::FuncHandle< R, Args >, including all inherited members.

    + + + +
    funcSA::Intl::FuncHandle< R, Args >
    resultSA::Intl::FuncHandle< R, Args >
    + + + + diff --git a/struct_s_a_1_1_intl_1_1_func_handle.html b/struct_s_a_1_1_intl_1_1_func_handle.html new file mode 100644 index 0000000..15dfd25 --- /dev/null +++ b/struct_s_a_1_1_intl_1_1_func_handle.html @@ -0,0 +1,119 @@ + + + + + + + +SA_Event: SA::Intl::FuncHandle< R, Args > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    SA_Event +
    +
    Sapphire's Suite's C++ Event and Function library.
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    SA::Intl::FuncHandle< R, Args > Struct Template Reference
    +
    +
    + +

    Handle struct for a function. + More...

    + +

    #include <Event.hpp>

    + + + + + + + + +

    +Public Attributes

    +R(* func )(Args...) = nullptr
     Function ptr handle.
     
    +R * result = nullptr
     result ptr handle.
     
    +

    Detailed Description

    +
    template<typename R, typename... Args>
    +struct SA::Intl::FuncHandle< R, Args >

    Handle struct for a function.

    +
    Template Parameters
    + + + +
    RReturn type of function's declaration.
    ArgsArgument types of function's declaration.
    +
    +
    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/struct_s_a_1_1_intl_1_1_func_handle_3_01void_00_01_args_8_8_8_01_4-members.html b/struct_s_a_1_1_intl_1_1_func_handle_3_01void_00_01_args_8_8_8_01_4-members.html new file mode 100644 index 0000000..23bed8a --- /dev/null +++ b/struct_s_a_1_1_intl_1_1_func_handle_3_01void_00_01_args_8_8_8_01_4-members.html @@ -0,0 +1,90 @@ + + + + + + + +SA_Event: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    SA_Event +
    +
    Sapphire's Suite's C++ Event and Function library.
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    SA::Intl::FuncHandle< void, Args... > Member List
    +
    +
    + +

    This is the complete list of members for SA::Intl::FuncHandle< void, Args... >, including all inherited members.

    + + +
    funcSA::Intl::FuncHandle< void, Args... >
    + + + + diff --git a/struct_s_a_1_1_intl_1_1_func_handle_3_01void_00_01_args_8_8_8_01_4.html b/struct_s_a_1_1_intl_1_1_func_handle_3_01void_00_01_args_8_8_8_01_4.html new file mode 100644 index 0000000..5bceb3e --- /dev/null +++ b/struct_s_a_1_1_intl_1_1_func_handle_3_01void_00_01_args_8_8_8_01_4.html @@ -0,0 +1,115 @@ + + + + + + + +SA_Event: SA::Intl::FuncHandle< void, Args... > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    SA_Event +
    +
    Sapphire's Suite's C++ Event and Function library.
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    SA::Intl::FuncHandle< void, Args... > Struct Template Reference
    +
    +
    + +

    Handle struct for a function with void return type. + More...

    + +

    #include <Event.hpp>

    + + + + + +

    +Public Attributes

    +void(* func )(Args...) = nullptr
     Function ptr handle.
     
    +

    Detailed Description

    +
    template<typename... Args>
    +struct SA::Intl::FuncHandle< void, Args... >

    Handle struct for a function with void return type.

    +

    Template specialization of FuncHandle for function with void return type.

    +
    Template Parameters
    + + +
    ArgsArgument types of function's declaration.
    +
    +
    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/struct_s_a_1_1_intl_1_1_func_member_data-members.html b/struct_s_a_1_1_intl_1_1_func_member_data-members.html new file mode 100644 index 0000000..cb28914 --- /dev/null +++ b/struct_s_a_1_1_intl_1_1_func_member_data-members.html @@ -0,0 +1,96 @@ + + + + + + + +SA_Event: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    SA_Event +
    +
    Sapphire's Suite's C++ Event and Function library.
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    SA::Intl::FuncMemberData< C, R, Args > Member List
    +
    +
    + +

    This is the complete list of members for SA::Intl::FuncMemberData< C, R, Args >, including all inherited members.

    + + + + + + + + +
    callerSA::Intl::FuncMemberData< C, R, Args >
    Compare(const FuncMemberDataBase *_other) const override finalSA::Intl::FuncMemberData< C, R, Args >virtual
    Duplicate() const override finalSA::Intl::FuncMemberData< C, R, Args >virtual
    funcSA::Intl::FuncMemberData< C, R, Args >
    FuncMemberData(C *_caller, R(C::*_func)(Args...))SA::Intl::FuncMemberData< C, R, Args >
    InterfaceCall(void *_data, Args... _args)SA::Intl::FuncMemberData< C, R, Args >static
    ~FuncMemberDataBase()=defaultSA::Intl::FuncMemberDataBasevirtual
    + + + + diff --git a/struct_s_a_1_1_intl_1_1_func_member_data.html b/struct_s_a_1_1_intl_1_1_func_member_data.html new file mode 100644 index 0000000..75e3767 --- /dev/null +++ b/struct_s_a_1_1_intl_1_1_func_member_data.html @@ -0,0 +1,314 @@ + + + + + + + +SA_Event: SA::Intl::FuncMemberData< C, R, Args > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    SA_Event +
    +
    Sapphire's Suite's C++ Event and Function library.
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    SA::Intl::FuncMemberData< C, R, Args > Struct Template Reference
    +
    +
    + +

    Data struct for typed member function. + More...

    + +

    #include <FunctionMemberData.hpp>

    +
    +Inheritance diagram for SA::Intl::FuncMemberData< C, R, Args >:
    +
    +
    + + +SA::Intl::FuncMemberDataBase + +
    + + + + + + + + + + + + + + + +

    +Public Member Functions

     FuncMemberData (C *_caller, R(C::*_func)(Args...))
     Default value constructor.
     
    FuncMemberDataBaseDuplicate () const override final
     Duplicate child data (used for copy operations).
     
    bool Compare (const FuncMemberDataBase *_other) const override final
     Compare child data class
     
    - Public Member Functions inherited from SA::Intl::FuncMemberDataBase
    +virtual ~FuncMemberDataBase ()=default
     default virtual destructor. Ensure correct child class destruction on delete.
     
    + + + + +

    +Static Public Member Functions

    static R InterfaceCall (void *_data, Args... _args)
     Interface methods requiered for function handle. Ensure correct child type call.
     
    + + + + + + + +

    +Public Attributes

    +C * caller = nullptr
     Caller ptr handle.
     
    +R(C::* func )(Args...) = nullptr
     Function ptr handle.
     
    +

    Detailed Description

    +
    template<typename C, typename R, typename... Args>
    +struct SA::Intl::FuncMemberData< C, R, Args >

    Data struct for typed member function.

    +
    Template Parameters
    + + + + +
    CCaller type of function's declaration.
    RReturn type of function's declaration.
    ArgsArgument types of function's declaration.
    +
    +
    +

    Constructor & Destructor Documentation

    + +

    ◆ FuncMemberData()

    + +
    +
    +
    +template<typename C , typename R , typename... Args>
    + + + + + + + + + + + + + + + + + + +
    SA::Intl::FuncMemberData< C, R, Args >::FuncMemberData (C * _caller,
    R(C::*)(Args...) _func 
    )
    +
    + +

    Default value constructor.

    +
    Parameters
    + + + +
    [in]_callerCaller of the member function.
    [in]_funcMember function to call.
    +
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ Compare()

    + +
    +
    +
    +template<typename C , typename R , typename... Args>
    + + + + + +
    + + + + + + + + +
    bool SA::Intl::FuncMemberData< C, R, Args >::Compare (const FuncMemberDataBase_other) const
    +
    +finaloverridevirtual
    +
    + +

    Compare child data class

    +
    Parameters
    + + +
    [in]_othermember to compare to.
    +
    +
    +
    Returns
    true on equality.
    + +

    Implements SA::Intl::FuncMemberDataBase.

    + +
    +
    + +

    ◆ Duplicate()

    + +
    +
    +
    +template<typename C , typename R , typename... Args>
    + + + + + +
    + + + + + + + +
    FuncMemberDataBase * SA::Intl::FuncMemberData< C, R, Args >::Duplicate () const
    +
    +finaloverridevirtual
    +
    + +

    Duplicate child data (used for copy operations).

    +
    Returns
    new data duplicated.
    + +

    Implements SA::Intl::FuncMemberDataBase.

    + +
    +
    + +

    ◆ InterfaceCall()

    + +
    +
    +
    +template<typename C , typename R , typename... Args>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static R SA::Intl::FuncMemberData< C, R, Args >::InterfaceCall (void * _data,
    Args... _args 
    )
    +
    +static
    +
    + +

    Interface methods requiered for function handle. Ensure correct child type call.

    +
    Parameters
    + + + +
    [in]_dataStored typed FuncMemberData.
    [in]_argsFunction arguments.
    +
    +
    +
    Returns
    function return value.
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/struct_s_a_1_1_intl_1_1_func_member_data.png b/struct_s_a_1_1_intl_1_1_func_member_data.png new file mode 100644 index 0000000000000000000000000000000000000000..fd2798fc2ca110ccc9316ce958a5333cf2bf4716 GIT binary patch literal 913 zcmeAS@N?(olHy`uVBq!ia0vp^Uw}A(gBeIl)~qlAQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCG95?_J51w>+1yGK&B*-tA0mugfbEer>7#NskJY5_^Dj46+y_xsKipRw} zRbj>d|Bo_nM|tSVoYvv0a>x!$p|>QnW=k$fyMl*S$9KOH2`#XB_6Tj#^jl_TIJKy$f z>y!Jn`OCX3P0xK7@3*eoZR~wdaqn*9x2LX_&&ixzl=3NjrQ77gZ@Gh&UWVvAeYI-) z+3UZ5U)U$IRkhyYpW9cpllAV>vs9EboF}KS$o5< z&$v?AY5$DJf$c5#u1Yf`WjHfC0F^RyEa2s300t(bLX(*ZgUf|Bwg!${7Z?N_rKK2@ zFcdxbAMB;+Dm+Q$=%u!4OMnU|i8%89T9ftjC|Cz?7zd$u}>6_C!8rqjj96jH@+TGiBuFx~;q;r3={*}xBjn`p|hsjsg zO?<}tW$&H8W@p`J-{VvHUCAFFRB!nrZLjkKM}77#^rJq^b zu8M3D`sW$+`{P%Kt!kHT8s8P13D|u3uF5@M&myVwCC%UFeSN-e{XNUmf3l2U*zL8h z=PsO=-SExOn0xke|5LN?ON+CKUzYq9a3bc(ex6))Nvo+4 z?YH|7l~L!@$hL;OXk;vd$@?2>_LIy`KO8 literal 0 HcmV?d00001 diff --git a/struct_s_a_1_1_intl_1_1_func_member_data_base-members.html b/struct_s_a_1_1_intl_1_1_func_member_data_base-members.html new file mode 100644 index 0000000..9807386 --- /dev/null +++ b/struct_s_a_1_1_intl_1_1_func_member_data_base-members.html @@ -0,0 +1,92 @@ + + + + + + + +SA_Event: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    SA_Event +
    +
    Sapphire's Suite's C++ Event and Function library.
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    SA::Intl::FuncMemberDataBase Member List
    +
    +
    + +

    This is the complete list of members for SA::Intl::FuncMemberDataBase, including all inherited members.

    + + + + +
    Compare(const FuncMemberDataBase *_other) const =0SA::Intl::FuncMemberDataBasepure virtual
    Duplicate() const =0SA::Intl::FuncMemberDataBasepure virtual
    ~FuncMemberDataBase()=defaultSA::Intl::FuncMemberDataBasevirtual
    + + + + diff --git a/struct_s_a_1_1_intl_1_1_func_member_data_base.html b/struct_s_a_1_1_intl_1_1_func_member_data_base.html new file mode 100644 index 0000000..def6c0b --- /dev/null +++ b/struct_s_a_1_1_intl_1_1_func_member_data_base.html @@ -0,0 +1,191 @@ + + + + + + + +SA_Event: SA::Intl::FuncMemberDataBase Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    SA_Event +
    +
    Sapphire's Suite's C++ Event and Function library.
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    SA::Intl::FuncMemberDataBase Struct Referenceabstract
    +
    +
    + +

    Base struct of member function data. + More...

    + +

    #include <FunctionMemberData.hpp>

    +
    +Inheritance diagram for SA::Intl::FuncMemberDataBase:
    +
    +
    + + +SA::Intl::FuncMemberData< C, R, Args > + +
    + + + + + + + + + + + +

    +Public Member Functions

    +virtual ~FuncMemberDataBase ()=default
     default virtual destructor. Ensure correct child class destruction on delete.
     
    virtual FuncMemberDataBaseDuplicate () const =0
     Duplicate child data (used for copy operations).
     
    virtual bool Compare (const FuncMemberDataBase *_other) const =0
     Compare child data class
     
    +

    Detailed Description

    +

    Base struct of member function data.

    +

    Interface class with virtual destructor to store template child class.

    +

    Member Function Documentation

    + +

    ◆ Compare()

    + +
    +
    + + + + + +
    + + + + + + + + +
    virtual bool SA::Intl::FuncMemberDataBase::Compare (const FuncMemberDataBase_other) const
    +
    +pure virtual
    +
    + +

    Compare child data class

    +
    Parameters
    + + +
    [in]_othermember to compare to.
    +
    +
    +
    Returns
    true on equality.
    + +

    Implemented in SA::Intl::FuncMemberData< C, R, Args >.

    + +
    +
    + +

    ◆ Duplicate()

    + +
    +
    + + + + + +
    + + + + + + + +
    virtual FuncMemberDataBase * SA::Intl::FuncMemberDataBase::Duplicate () const
    +
    +pure virtual
    +
    + +

    Duplicate child data (used for copy operations).

    +
    Returns
    new data duplicated.
    + +

    Implemented in SA::Intl::FuncMemberData< C, R, Args >.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/struct_s_a_1_1_intl_1_1_func_member_data_base.png b/struct_s_a_1_1_intl_1_1_func_member_data_base.png new file mode 100644 index 0000000000000000000000000000000000000000..1bfe3e87d0f90029224e27c632b2f6e5d7d4f6f1 GIT binary patch literal 921 zcmV;K17`e*P)vTJr#LVva2S`&=)l0h|Ns9}lGCUF000SeQchC<|NsC0|NsC0Hv*f~0009d zNklu%#Z41`BxAei@m;*DcnNL^C*bbE>}6?hz(qAY$gMg2ueDMb^KB*oH( zmZS*U(2^8EH=)mxms{3qTlL{8kdib}u}}JErtVEkf zS->mPYQhg@lB9(`0i9buhUfEnf8GY@^S^prJ{~$-%8Gf%mpwZdW4krz;%$dY(mUNw zZwHd&e1#yT;d0Q;dM$wmJ^QaE^N!`QrBU~uNk?4`NqVE(g{&<9B&j`X-EJnl);)oq z;8>ZVwq^FTU7f!RU6aXV&;q(o?>^p|Bv-oj(05aY@x_+Hm@($_U?P*u8eqv9Xl#`ObN;R5nZeN&^B&T92S697lzFy}; zJ1J^UJ~+OkdP~y3qYW)d5wxKtDS|e%Bt=kE=#)|lCII*$Jpdq@B0@hN0jVQGKbhlE zhlJkM8vtTxLjynrZD;_9pbZTG5wxKJAc8hD07TG+27n0K&;SrY8yWy2XhQ=)1Z`*l zh@cG(01>pI0pS1BaU93b=y4p!@gu@PlCiX*Niu>qG)YEKgHF$1Zkhhpezxkv>07)> z(y7=d{WDYdrsZ3^31<%dDEo5c+CrRzc*A3OWO!ox3!!bk6m+oHT z!kj=4d%8jU$ohTPSMQuEP03Y?x^MoIoZ=Us`mhWXHT1yBa^>cIUF{( z|1^oDQ?Zn*tKN1uUFXAaQgr9ED{VH%J@n1$O_IMr1H}4lUiSPp=)25go%_vSnk4V2 vKhQ!zljKSpnj|A=Lz83#J)w`|ID+X96za>{BXPLF00000NkvXXu0mjf$N{^K literal 0 HcmV?d00001 diff --git a/struct_s_a_1_1_intl_1_1_func_member_handle-members.html b/struct_s_a_1_1_intl_1_1_func_member_handle-members.html new file mode 100644 index 0000000..b66f2e4 --- /dev/null +++ b/struct_s_a_1_1_intl_1_1_func_member_handle-members.html @@ -0,0 +1,92 @@ + + + + + + + +SA_Event: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    SA_Event +
    +
    Sapphire's Suite's C++ Event and Function library.
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    SA::Intl::FuncMemberHandle< R, Args > Member List
    +
    + + + + + diff --git a/struct_s_a_1_1_intl_1_1_func_member_handle.html b/struct_s_a_1_1_intl_1_1_func_member_handle.html new file mode 100644 index 0000000..a9a654d --- /dev/null +++ b/struct_s_a_1_1_intl_1_1_func_member_handle.html @@ -0,0 +1,123 @@ + + + + + + + +SA_Event: SA::Intl::FuncMemberHandle< R, Args > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    SA_Event +
    +
    Sapphire's Suite's C++ Event and Function library.
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    SA::Intl::FuncMemberHandle< R, Args > Struct Template Reference
    +
    +
    + +

    Handle struct for a member function. + More...

    + +

    #include <Event.hpp>

    + + + + + + + + + + + +

    +Public Attributes

    +FuncMemberDataBasedata = nullptr
     Abstract member data (used by function interface).
     
    +R(* func )(void *, Args...) = nullptr
     Interface function ptr handle.
     
    +R * result = nullptr
     result ptr handle.
     
    +

    Detailed Description

    +
    template<typename R, typename... Args>
    +struct SA::Intl::FuncMemberHandle< R, Args >

    Handle struct for a member function.

    +
    Template Parameters
    + + + +
    RReturn type of function's declaration.
    ArgsArgument types of function's declaration.
    +
    +
    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/struct_s_a_1_1_intl_1_1_func_member_handle_3_01void_00_01_args_8_8_8_01_4-members.html b/struct_s_a_1_1_intl_1_1_func_member_handle_3_01void_00_01_args_8_8_8_01_4-members.html new file mode 100644 index 0000000..2225096 --- /dev/null +++ b/struct_s_a_1_1_intl_1_1_func_member_handle_3_01void_00_01_args_8_8_8_01_4-members.html @@ -0,0 +1,91 @@ + + + + + + + +SA_Event: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    SA_Event +
    +
    Sapphire's Suite's C++ Event and Function library.
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    SA::Intl::FuncMemberHandle< void, Args... > Member List
    +
    + + + + + diff --git a/struct_s_a_1_1_intl_1_1_func_member_handle_3_01void_00_01_args_8_8_8_01_4.html b/struct_s_a_1_1_intl_1_1_func_member_handle_3_01void_00_01_args_8_8_8_01_4.html new file mode 100644 index 0000000..c1c0da2 --- /dev/null +++ b/struct_s_a_1_1_intl_1_1_func_member_handle_3_01void_00_01_args_8_8_8_01_4.html @@ -0,0 +1,119 @@ + + + + + + + +SA_Event: SA::Intl::FuncMemberHandle< void, Args... > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    SA_Event +
    +
    Sapphire's Suite's C++ Event and Function library.
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    SA::Intl::FuncMemberHandle< void, Args... > Struct Template Reference
    +
    +
    + +

    Handle struct for a member function with void return type. + More...

    + +

    #include <Event.hpp>

    + + + + + + + + +

    +Public Attributes

    +FuncMemberDataBasedata = nullptr
     Abstract member data (used by function interface).
     
    +void(* func )(void *, Args...) = nullptr
     Interface function ptr handle.
     
    +

    Detailed Description

    +
    template<typename... Args>
    +struct SA::Intl::FuncMemberHandle< void, Args... >

    Handle struct for a member function with void return type.

    +

    Template specialization of FuncMemberHandle for member function with void return type.

    +
    Template Parameters
    + + +
    ArgsArgument types of function's declaration.
    +
    +
    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/sync_off.png b/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/sync_on.png b/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/tab_a.png b/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/tab_ad.png b/tab_ad.png new file mode 100644 index 0000000000000000000000000000000000000000..e34850acfc24be58da6d2fd1ccc6b29cc84fe34d GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QhuH;jv*C{Z|5d*H3V=pKi{In zd2jxLclDRPylmD}^l7{QOtL{vUjO{-WqItb5sQp2h-99b8^^Scr-=2mblCdZuUm?4 jzOJvgvt3{(cjKLW5(A@0qPS@<&}0TrS3j3^P6y&q2{!U5bk+Tso_B!YCpDh>v z{CM*1U8YvQRyBUHt^Ju0W_sq-?;9@_4equ-bavTs=gk796zopr0EBT&m;e9( literal 0 HcmV?d00001 diff --git a/tab_s.png b/tab_s.png new file mode 100644 index 0000000000000000000000000000000000000000..ab478c95b67371d700a20869f7de1ddd73522d50 GIT binary patch literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QuUrLjv*C{Z|^p8HaRdjTwH7) zC?wLlL}}I{)n%R&r+1}IGmDnq;&J#%V6)9VsYhS`O^BVBQlxOUep0c$RENLq#g8A$ z)z7%K_bI&n@J+X_=x}fJoEKed-$<>=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/tab_sd.png b/tab_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..757a565ced4730f85c833fb2547d8e199ae68f19 GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!Qq7(&jv*C{Z|_!fH5o7*c=%9% zcILh!EA=pAQKdx-Cdiev=v{eg{8Ht<{e8_NAN~b=)%W>-WDCE0PyDHGemi$BoXwcK z{>e9^za6*c1ilttWw&V+U;WCPlV9{LdC~Ey%_H(qj`xgfES(4Yz5jSTZfCt`4E$0YRsR*S^mTCR^;V&sxC8{l_Cp7w8-YPgg&ebxsLQ00$vXK>z>% literal 0 HcmV?d00001 diff --git a/tabs.css b/tabs.css new file mode 100644 index 0000000..71c8a47 --- /dev/null +++ b/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.sm-dox{background-image:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:0}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:var(--nav-menu-toggle-color);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:var(--nav-menu-background-color)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:var(--nav-gradient-image);line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:var(--nav-text-normal-color) transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:var(--nav-separator-image);background-repeat:no-repeat;background-position:right;-moz-border-radius:0 !important;-webkit-border-radius:0;border-radius:0 !important}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);-moz-border-radius:5px !important;-webkit-border-radius:5px;border-radius:5px !important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--nav-menu-foreground-color);border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:var(--nav-menu-foreground-color);background-image:none;border:0 !important;color:var(--nav-menu-foreground-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:var(--nav-gradient-image)}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:var(--nav-menu-background-color)}} \ No newline at end of file diff --git a/topics.html b/topics.html new file mode 100644 index 0000000..fe5d001 --- /dev/null +++ b/topics.html @@ -0,0 +1,87 @@ + + + + + + + +SA_Event: Topics + + + + + + + + + +
    +
    + + + + + + +
    +
    SA_Event +
    +
    Sapphire's Suite's C++ Event and Function library.
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Topics
    +
    +
    +
    Here is a list of all topics with brief descriptions:
    + + +
     Event
    +
    +
    + + + +