3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-14 21:08:46 +00:00

add unicode encoding back

This commit is contained in:
Nikolaj Bjorner 2020-05-16 17:11:34 -07:00
parent cd64967706
commit bfb38451d1

View file

@ -238,13 +238,12 @@ static const char esc_table[32][6] =
};
std::string zstring::encode() const {
SASSERT(m_encoding == ascii);
std::ostringstream strm;
char buffer[100];
unsigned offset = 0;
#define _flush() if (offset > 0) { buffer[offset] = 0; strm << buffer; offset = 0; }
for (unsigned i = 0; i < m_buffer.size(); ++i) {
unsigned char ch = m_buffer[i];
unsigned ch = m_buffer[i];
if (0 <= ch && ch < 32) {
_flush();
strm << esc_table[ch];
@ -253,9 +252,13 @@ std::string zstring::encode() const {
_flush();
strm << "\\\\";
}
else if (ch >= 256) {
_flush();
strm << "\\u{" << std::hex << ch << std::dec << "}";
}
else if (ch >= 128) {
_flush();
strm << "\\x" << std::hex << (unsigned)ch << std::dec;
strm << "\\x" << std::hex << ch << std::dec;
}
else {
if (offset == 99) {
@ -269,7 +272,7 @@ std::string zstring::encode() const {
}
std::string zstring::as_string() const {
SASSERT(m_encoding == ascii);
SASSERT(m_encoding == ascii);
std::ostringstream strm;
char buffer[100];
unsigned offset = 0;