2026-05-09 11:23:45 +08:00
|
|
|
#pragma once
|
|
|
|
|
#include <map>
|
|
|
|
|
#include <mix_cc/json.h>
|
|
|
|
|
#include <string>
|
|
|
|
|
struct VarsCache {
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
void init(const std::vector<std::string> &tags, size_t _pv_num = 6) {
|
|
|
|
|
m_tags = tags;
|
|
|
|
|
tag_num = tags.size();
|
|
|
|
|
pv_num = _pv_num;
|
|
|
|
|
p_keys.resize(tag_num);
|
|
|
|
|
tag_keys.resize(tag_num);
|
2026-05-09 13:30:09 +08:00
|
|
|
pv_keys.resize(tag_num);
|
2026-05-09 11:23:45 +08:00
|
|
|
|
|
|
|
|
for (size_t i = 0; i < tag_num; ++i) {
|
|
|
|
|
auto &x = tags[i];
|
|
|
|
|
int item_index = stoi(x.substr(3));
|
|
|
|
|
p_keys[i] = "p" + std::to_string(item_index);
|
|
|
|
|
tag_keys[i] = "tag" + std::to_string(item_index);
|
|
|
|
|
|
|
|
|
|
pv_keys[i].resize(pv_num);
|
|
|
|
|
for (int j = 0; j < pv_num; ++j) {
|
|
|
|
|
pv_keys[i][j] =
|
|
|
|
|
"pv" + std::to_string(item_index) + "_" + std::to_string(j);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
void init(size_t _tag_num, size_t _pv_num = 6) {
|
|
|
|
|
|
|
|
|
|
tag_num = _tag_num;
|
|
|
|
|
pv_num = _pv_num;
|
|
|
|
|
p_keys.resize(tag_num);
|
|
|
|
|
tag_keys.resize(tag_num);
|
2026-05-09 13:30:09 +08:00
|
|
|
pv_keys.resize(tag_num);
|
2026-05-09 11:23:45 +08:00
|
|
|
m_tags.resize(tag_num);
|
|
|
|
|
for (size_t i = 0; i < tag_num; ++i) {
|
|
|
|
|
|
|
|
|
|
int item_index = i + 1;
|
|
|
|
|
m_tags[i] = "tag" + std::to_string(item_index);
|
|
|
|
|
p_keys[i] = "p" + std::to_string(item_index);
|
|
|
|
|
tag_keys[i] = "tag" + std::to_string(item_index);
|
|
|
|
|
|
|
|
|
|
pv_keys[i].resize(pv_num);
|
|
|
|
|
for (int j = 0; j < pv_num; ++j) {
|
|
|
|
|
pv_keys[i][j] =
|
|
|
|
|
"pv" + std::to_string(item_index) + "_" + std::to_string(j);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
std::string dumps() {
|
|
|
|
|
mix_cc::json js1;
|
|
|
|
|
js1["tag_num"] = tag_num;
|
|
|
|
|
js1["pv_num"] = pv_num;
|
|
|
|
|
js1["p_keys"] = p_keys;
|
|
|
|
|
js1["tag_keys"] = tag_keys;
|
|
|
|
|
js1["pv_keys"] = pv_keys;
|
|
|
|
|
js1["m_tags"] = m_tags;
|
|
|
|
|
return js1.dump();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
size_t tag_num;
|
|
|
|
|
size_t pv_num;
|
|
|
|
|
std::vector<std::string> p_keys;
|
|
|
|
|
std::vector<std::string> tag_keys;
|
|
|
|
|
std::vector<std::vector<std::string>> pv_keys; // [tag_index][window_index]
|
|
|
|
|
std::vector<std::string> m_tags;
|
|
|
|
|
};
|