#include #include #include "cstrcache.h" using namespace std; struct const_string_table { unordered_map strings; }; static struct const_string_table table; const char *cstrcache_get(const char *str) { if (!str || !*str) return ""; auto &strings = table.strings; auto pair = strings.find(str); if (pair == strings.end()) { strings[str] = str; pair = strings.find(str); } return pair->second.c_str(); }