File tree Expand file tree Collapse file tree 4 files changed +39
-1
lines changed Expand file tree Collapse file tree 4 files changed +39
-1
lines changed Original file line number Diff line number Diff line change @@ -41,7 +41,10 @@ TEST(ToGraphviz, ActionJson) {
4141
4242 auto seq_action = new SequenceAction (*loop);
4343 seq_action->set_label (" This is test" );
44+ seq_action->vars ().define (" seq.value" , 12 );
4445 auto if_else_action = new IfElseAction (*loop);
46+ if_else_action->vars ().define (" if_else.name" , " hello" );
47+ if_else_action->vars ().define (" if_else.value" , 100 );
4548 if_else_action->setChildAs (new SuccAction (*loop), " if" );
4649 if_else_action->setChildAs (new FunctionAction (*loop, []{return true ;}), " succ" );
4750 if_else_action->setChildAs (new FunctionAction (*loop, []{return true ;}), " fail" );
Original file line number Diff line number Diff line change 2323#include < map>
2424#include < tbox/base/defines.h>
2525#include < tbox/base/json_fwd.h>
26+ #include < tbox/util/json.h>
2627
2728namespace tbox {
2829namespace util {
@@ -78,6 +79,15 @@ class Variables {
7879 */
7980 bool get (const std::string &name, Json &js_out_value, bool local_only = false ) const ;
8081
82+ // ! 获取变量的模板
83+ template <typename T>
84+ bool get (const std::string &name, T &out_value, bool local_only = false ) const {
85+ Json js;
86+ if (get (name, js, local_only))
87+ return json::Get (js, out_value);
88+ return false ;
89+ }
90+
8191 /* *
8292 * 更新变量
8393 *
Original file line number Diff line number Diff line change @@ -42,6 +42,31 @@ TEST(Variables, Base) {
4242 EXPECT_FALSE (vars.has (" a" ));
4343}
4444
45+ TEST (Variables, GetTemplate) {
46+ Variables vars;
47+
48+ EXPECT_TRUE (vars.define (" b" , true ));
49+ EXPECT_TRUE (vars.define (" i" , 12 ));
50+ EXPECT_TRUE (vars.define (" s" , " hello" ));
51+ EXPECT_TRUE (vars.define (" d" , 12.345 ));
52+
53+ bool b = false ;
54+ int i = 0 ;
55+ std::string s;
56+ double d = 0 ;
57+
58+ EXPECT_TRUE (vars.get (" b" , b));
59+ EXPECT_TRUE (vars.get (" i" , i));
60+ EXPECT_TRUE (vars.get (" s" , s));
61+ EXPECT_TRUE (vars.get (" d" , d));
62+ EXPECT_FALSE (vars.get (" s" , d));
63+
64+ EXPECT_TRUE (b);
65+ EXPECT_EQ (i, 12 );
66+ EXPECT_EQ (s, " hello" );
67+ EXPECT_DOUBLE_EQ (d, 12.345 );
68+ }
69+
4570TEST (Variables, RepeatDefine) {
4671 Variables vars;
4772 EXPECT_TRUE (vars.define (" a" , 12 ));
Original file line number Diff line number Diff line change 2121# TBOX版本号
2222TBOX_VERSION_MAJOR := 1
2323TBOX_VERSION_MINOR := 11
24- TBOX_VERSION_REVISION := 7
24+ TBOX_VERSION_REVISION := 8
You can’t perform that action at this time.
0 commit comments