| 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();
 
- }
 
 
  |