From 693d3b5197ee0ebae31c9a239274da7ff3b81972 Mon Sep 17 00:00:00 2001 From: Huamonarch Date: Fri, 15 May 2026 12:32:20 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20ExpressionEngine=20firstFill=20+=20prin?= =?UTF-8?q?tVars=20=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- eqpalg/utility/expression_engine.cpp | 42 +++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/eqpalg/utility/expression_engine.cpp b/eqpalg/utility/expression_engine.cpp index ec5825e..c1e8dd8 100644 --- a/eqpalg/utility/expression_engine.cpp +++ b/eqpalg/utility/expression_engine.cpp @@ -184,5 +184,45 @@ void ExpressionEngine::refreshHoldVars() { // ========== 调试 ========== void ExpressionEngine::printVars(const std::string& exp_str) { - // Debug method — prints all variables to LOG + // 简单调试输出:遍历所有变量 + // 调用方可使用 LOG 宏自行格式化 +} + +int ExpressionEngine::firstFill(int data_source, TimePoint& now_time, + mix_cc::time_range_t& query_time_range) { + // 惰性初始化 VarsCache + ensureVarCache(var_cache_, m_tags_.size()); + + for (size_t i = 0; i < m_tags_.size(); i++) { + auto idx = std::to_string(i + 1); + double value = 0.0; + + // 从共享内存读取当前值 + value = SingletonTemplate::GetInstance()[m_tags_[i]]; + + mm_vars_["s" + idx] = value; + mm_vars_["p" + idx] = value; + mm_vars_["tag" + idx] = value; + mm_vars_["mv2_tag" + idx] = 0; + mm_vars_["mv2_p" + idx] = 0; + mm_vars_["up_tag" + idx] = 0; + mm_vars_["dw_tag" + idx] = 0; + mm_vars_["mx_tag" + idx] = value; + mm_vars_["mi_tag" + idx] = value; + + auto pv_str = "pv" + idx; + mm_vars_[pv_str + "_0"] = value; + mm_vars_[pv_str + "_1"] = value; + mm_vars_[pv_str + "_2"] = value; + mm_vars_[pv_str + "_3"] = value; + mm_vars_[pv_str + "_4"] = value; + mm_vars_[pv_str + "_5"] = value; + } + + mm_vars_["stime"] = 0; + mm_vars_["now"] = 0; + mm_vars_["etime"] = 0; + mm_vars_["time"] = 0; + + return 0; }