mirror of
https://github.com/Z3Prover/z3
synced 2025-04-23 09:05:31 +00:00
seq
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
34cc60410f
commit
fc8dfe3e40
5 changed files with 50 additions and 47 deletions
|
@ -163,12 +163,32 @@ extern "C" {
|
|||
SET_ERROR_CODE(Z3_INVALID_ARG, "expression is not a string literal");
|
||||
return "";
|
||||
}
|
||||
mk_c(c)->m_char_buffer.reset();
|
||||
auto& buffer = mk_c(c)->m_char_buffer;
|
||||
buffer.reset();
|
||||
svector<char> buff;
|
||||
for (unsigned i = 0; i < str.length(); ++i) {
|
||||
mk_c(c)->m_char_buffer.push_back((char)str[i]);
|
||||
unsigned ch = str[i];
|
||||
if (ch >= 256) {
|
||||
buff.reset();
|
||||
buffer.push_back('\\');
|
||||
buffer.push_back('\\'); // possibly replace by native non-escaped version?
|
||||
buffer.push_back('u');
|
||||
buffer.push_back('{');
|
||||
while (ch > 0) {
|
||||
buff.push_back('0' + (ch & 0xF));
|
||||
ch /= 16;
|
||||
}
|
||||
for (unsigned j = buff.size(); j-- > 0; ) {
|
||||
buffer.push_back(buff[j]);
|
||||
}
|
||||
buffer.push_back('}');
|
||||
}
|
||||
else {
|
||||
buffer.push_back((char)ch);
|
||||
}
|
||||
}
|
||||
*length = str.length();
|
||||
return mk_c(c)->m_char_buffer.c_ptr();
|
||||
*length = buffer.size();
|
||||
return buffer.c_ptr();
|
||||
Z3_CATCH_RETURN("");
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue