1+ #!/usr/bin/wsjcpp-safe-scripting
2+
3+ # log_info rootdir
4+ # log_info script_filename
5+
6+ make_dir "src"
7+
8+ var user_class_name
9+ set_value user_class_name arg1
10+ normalize_class_name user_class_name
11+ convert_CamelCase_to_snake_case user_class_name user_class_name
12+
13+ var class_name
14+ set_value class_name arg1
15+ normalize_class_name class_name
16+
17+ var base_filename
18+ convert_CamelCase_to_snake_case class_name base_filename
19+ # log_info base_filename
20+
21+ var filename_cpp
22+ concat filename_cpp "./src/" base_filename ".cpp"
23+
24+ var filename_h
25+ concat filename_h "./src/" base_filename ".h"
26+
27+ var ifndef_header
28+ set_value ifndef_header base_filename
29+ concat ifndef_header "_H"
30+
31+ to_upper_case ifndef_header
32+
33+ var content_header
34+ concat content_header "#ifndef " ifndef_header "
35+ #define " ifndef_header "
36+
37+ #include <string>
38+
39+ class " class_name " {
40+ public:
41+ " class_name "();
42+
43+ private:
44+ std::string TAG;
45+ };
46+
47+ #endif // " ifndef_header
48+
49+
50+ var content_source
51+ concat content_source "
52+ #include \"" base_filename ".h\"
53+ #include <wsjcpp_core.h>
54+
55+ // ---------------------------------------------------------------------
56+ // " class_name "
57+
58+ " class_name "::" class_name "() {
59+ TAG = \"" class_name "\";
60+ }
61+
62+ "
63+
64+ var file_source
65+ concat file_source "src/" filename_cpp
66+
67+ write_file filename_h content_header
68+ write_file filename_cpp content_source
69+
70+ log_info "
71+ ======
72+ Generated class:
73+ - " class_name "
74+ Generated files:
75+ - " filename_h "
76+ - " filename_cpp "
77+ ======
78+ "
79+
80+ cmakelists_txt_append_wsjcpp filename_h
81+ cmakelists_txt_append_wsjcpp filename_cpp
0 commit comments