|
8 | 8 | // Created by Hedzr Yeh on 2021/10/14.
|
9 | 9 | //
|
10 | 10 |
|
11 |
| -#include "undo_cxx.hh" |
12 |
| - |
13 |
| -#include <iomanip> |
| 11 | +#include <cstddef> |
14 | 12 | #include <iostream>
|
15 |
| -#include <math.h> |
16 | 13 | #include <string>
|
17 | 14 |
|
18 | 15 | #include <functional>
|
19 | 16 | #include <memory>
|
20 |
| -#include <random> |
21 | 17 |
|
22 |
| -#include <deque> |
23 |
| -#include <list> |
24 |
| -#include <optional> |
25 |
| -#include <queue> |
26 |
| -#include <stack> |
27 |
| -#include <vector> |
| 18 | +#include <string_view> |
| 19 | +#include <utility> |
| 20 | + |
| 21 | +#include "undo_cxx/undo-log.hh" |
| 22 | +#include "undo_cxx/undo-util.hh" |
| 23 | +#include "undo_cxx/undo-zcore.hh" |
28 | 24 |
|
29 | 25 | namespace word_processor {
|
30 | 26 |
|
31 | 27 | template<typename State>
|
32 | 28 | class FontStyleCmd : public undo_cxx::cmd_t<State> {
|
33 | 29 | public:
|
34 |
| - ~FontStyleCmd() {} |
| 30 | + ~FontStyleCmd() override {} |
35 | 31 | FontStyleCmd() {}
|
36 |
| - explicit FontStyleCmd(std::string const &default_state_info) |
37 |
| - : _info(default_state_info) {} |
| 32 | + explicit FontStyleCmd(std::string default_state_info) |
| 33 | + : _info(std::move(default_state_info)) {} |
38 | 34 | UNDO_CXX_DEFINE_DEFAULT_CMD_TYPES(FontStyleCmd, undo_cxx::cmd_t);
|
39 | 35 |
|
40 | 36 | protected:
|
@@ -63,10 +59,10 @@ namespace word_processor {
|
63 | 59 | template<typename State>
|
64 | 60 | class UndoCmd : public undo_cxx::base_undo_cmd_t<State> {
|
65 | 61 | public:
|
66 |
| - ~UndoCmd() {} |
| 62 | + ~UndoCmd() override {} |
67 | 63 | using undo_cxx::base_undo_cmd_t<State>::base_undo_cmd_t;
|
68 |
| - explicit UndoCmd(std::string const &default_state_info) |
69 |
| - : _info(default_state_info) {} |
| 64 | + explicit UndoCmd(std::string default_state_info) |
| 65 | + : _info(std::move(default_state_info)) {} |
70 | 66 | UNDO_CXX_DEFINE_DEFAULT_CMD_TYPES(UndoCmd, undo_cxx::base_undo_cmd_t);
|
71 | 67 |
|
72 | 68 | protected:
|
@@ -94,10 +90,10 @@ namespace word_processor {
|
94 | 90 | template<typename State>
|
95 | 91 | class RedoCmd : public undo_cxx::base_redo_cmd_t<State> {
|
96 | 92 | public:
|
97 |
| - ~RedoCmd() {} |
| 93 | + ~RedoCmd() override {} |
98 | 94 | using undo_cxx::base_redo_cmd_t<State>::base_redo_cmd_t;
|
99 |
| - explicit RedoCmd(std::string const &default_state_info) |
100 |
| - : _info(default_state_info) {} |
| 95 | + explicit RedoCmd(std::string default_state_info) |
| 96 | + : _info(std::move(default_state_info)) {} |
101 | 97 | UNDO_CXX_DEFINE_DEFAULT_CMD_TYPES(RedoCmd, undo_cxx::base_redo_cmd_t);
|
102 | 98 |
|
103 | 99 | protected:
|
@@ -162,58 +158,60 @@ namespace word_processor {
|
162 | 158 |
|
163 | 159 | } // namespace word_processor
|
164 | 160 |
|
165 |
| -void test_undo_sys() { |
166 |
| - using namespace word_processor; |
167 |
| - actions_controller controller; |
| 161 | +namespace { |
| 162 | + static void test_undo_sys() { |
| 163 | + using namespace word_processor; |
| 164 | + actions_controller controller; |
168 | 165 |
|
169 |
| - using FontStyleCmd = actions_controller::FontStyleCmdT; |
170 |
| - using UndoCmd = actions_controller::UndoCmdT; |
171 |
| - using RedoCmd = actions_controller::RedoCmdT; |
| 166 | + using FontStyleCmd = actions_controller::FontStyleCmdT; |
| 167 | + using UndoCmd = actions_controller::UndoCmdT; |
| 168 | + using RedoCmd = actions_controller::RedoCmdT; |
172 | 169 |
|
173 |
| - // do some stuffs |
| 170 | + // do some stuffs |
174 | 171 |
|
175 |
| - // controller.invoke("word_processor::FontStyleCmd<std::__1::basic_string<char> >", "italic state1"); |
176 |
| - controller.invoke<FontStyleCmd>("italic state1"); |
177 |
| - controller.invoke<FontStyleCmd>("italic-bold state2"); |
178 |
| - controller.invoke<FontStyleCmd>("underline state3"); |
179 |
| - controller.invoke<FontStyleCmd>("italic state4"); |
| 172 | + // controller.invoke("word_processor::FontStyleCmd<std::__1::basic_string<char> >", "italic state1"); |
| 173 | + controller.invoke<FontStyleCmd>("italic state1"); |
| 174 | + controller.invoke<FontStyleCmd>("italic-bold state2"); |
| 175 | + controller.invoke<FontStyleCmd>("underline state3"); |
| 176 | + controller.invoke<FontStyleCmd>("italic state4"); |
180 | 177 |
|
181 |
| - // and try to undo or redo |
| 178 | + // and try to undo or redo |
182 | 179 |
|
183 |
| - controller.invoke<UndoCmd>("undo 1"); |
184 |
| - controller.invoke<UndoCmd>("undo 2"); |
| 180 | + controller.invoke<UndoCmd>("undo 1"); |
| 181 | + controller.invoke<UndoCmd>("undo 2"); |
185 | 182 |
|
186 |
| - controller.invoke<RedoCmd>("redo 1"); |
| 183 | + controller.invoke<RedoCmd>("redo 1"); |
187 | 184 |
|
188 |
| - controller.invoke<UndoCmd>("undo 3"); |
189 |
| - controller.invoke<UndoCmd>("undo 4"); |
| 185 | + controller.invoke<UndoCmd>("undo 3"); |
| 186 | + controller.invoke<UndoCmd>("undo 4"); |
190 | 187 |
|
191 |
| - controller.invoke("word_processor::RedoCmd", "redo 2 redo"); |
192 |
| -} |
| 188 | + controller.invoke("word_processor::RedoCmd", "redo 2 redo"); |
| 189 | + } |
193 | 190 |
|
194 |
| -void test_undo_pre() { |
195 |
| - using namespace std::string_view_literals; |
196 |
| - std::string_view v1{"v1"}; |
197 |
| - std::size_t v1_hash = std::hash<std::string_view>{}(v1); |
198 |
| - std::cout << v1 << ", hash = "sv << v1_hash << '\n'; |
199 |
| - using namespace undo_cxx; |
200 |
| - using State = std::string; |
201 |
| - // using FontStyleCmd = word_processor::FontStyleCmd<State>; |
202 |
| - using UndoCmd = word_processor::UndoCmd<State>; |
203 |
| - using RedoCmd = word_processor::RedoCmd<State>; |
| 191 | + static void test_undo_pre() { |
| 192 | + using namespace std::string_view_literals; |
| 193 | + std::string_view const v1{"v1"}; |
| 194 | + std::size_t const v1_hash = std::hash<std::string_view>{}(v1); |
| 195 | + std::cout << v1 << ", hash = "sv << v1_hash << '\n'; |
| 196 | + using namespace undo_cxx; |
| 197 | + using State = std::string; |
| 198 | + // using FontStyleCmd = word_processor::FontStyleCmd<State>; |
| 199 | + using UndoCmd = word_processor::UndoCmd<State>; |
| 200 | + using RedoCmd = word_processor::RedoCmd<State>; |
204 | 201 | #if !defined(_MSC_VER)
|
205 |
| - std::cout << "id: " << id_gen<UndoCmd>{}(UndoCmd{}) << '\n'; |
206 |
| - std::cout << "id: " << id_name<UndoCmd>() << '\n'; |
207 |
| - std::cout << "id: " << id_name<RedoCmd>() << '\n'; |
| 202 | + std::cout << "id: " << id_gen<UndoCmd>{}(UndoCmd{}) << '\n'; |
| 203 | + std::cout << "id: " << id_name<UndoCmd>() << '\n'; |
| 204 | + std::cout << "id: " << id_name<RedoCmd>() << '\n'; |
208 | 205 | #else
|
209 |
| - std::cout << "detail::type_name: " << debug::detail::type_name<UndoCmd>() << '\n'; |
210 |
| - std::cout << "type_name : " << debug::type_name<UndoCmd>() << '\n'; |
211 |
| - std::cout << "id_name : " << id_name<UndoCmd>() << '\n'; |
212 |
| - std::cout << "id_name : " << id_name<RedoCmd>() << '\n'; |
| 206 | + std::cout << "detail::type_name: " << debug::detail::type_name<UndoCmd>() << '\n'; |
| 207 | + std::cout << "type_name : " << debug::type_name<UndoCmd>() << '\n'; |
| 208 | + std::cout << "id_name : " << id_name<UndoCmd>() << '\n'; |
| 209 | + std::cout << "id_name : " << id_name<RedoCmd>() << '\n'; |
213 | 210 | #endif
|
214 |
| - dbg_debug("OK, UndoCmd's id = %s", std::string(id_name<UndoCmd>()).c_str()); |
215 |
| - dbg_debug("OK, RedoCmd's id = %s", std::string(id_name<RedoCmd>()).c_str()); |
216 |
| -} |
| 211 | + dbg_debug("OK, UndoCmd's id = %s", std::string(id_name<UndoCmd>()).c_str()); |
| 212 | + dbg_debug("OK, RedoCmd's id = %s", std::string(id_name<RedoCmd>()).c_str()); |
| 213 | + } |
| 214 | +} // namespace |
217 | 215 |
|
218 | 216 | int main() {
|
219 | 217 |
|
|
0 commit comments