12345678910111213141516171819202122232425262728 |
- #include <unordered_map>
- #include <string>
- #include "cstrcache.h"
- using namespace std;
- struct const_string_table {
- unordered_map<string, string> 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();
- }
|