#include "html_special.hpp" #include const size_t html_special_table_size = sizeof(html_special_table) / sizeof(html_special_table[0]); extern "C" const char * html_special_table_lookup(const char * const name) { // XXX: this should be a iterating-decreasing jump search for (size_t i = 0; i < html_special_table_size; i++) { if (!strcmp(name, html_special_table[i][0])) { return html_special_table[i][1]; } } return NULL; } extern "C" const char * html_special_to_utf8(const char * const special) { static std::string r; r = std::string(special); trim(r); uint32_t i; sscanf(r.c_str(), "%u", &i); std::wstring_convert, char32_t> conv1; r = conv1.to_bytes(i); return r.c_str(); } extern "C" const char * utf8_to_html_special(const char * const utf) { for (size_t i = 0; i < html_special_table_size; i++) { if (!strcmp(utf, html_special_table[i][2])) { return html_special_table[i][0]; } } return utf; }