MCPcopy Create free account
hub / github.com/Vector35/binaryninja-api / ToEscapedString

Method ToEscapedString

unicode.cpp:152–189  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

150
151
152std::string BinaryNinja::Unicode::ToEscapedString(
153 const std::vector<std::vector<std::pair<uint32_t, uint32_t>>>& unicodeBlocks,
154 bool utf8Enabled,
155 const void* data,
156 const size_t dataLen
157)
158{
159 std::vector<std::vector<uint32_t>> starts;
160 std::vector<std::vector<uint32_t>> ends;
161
162 for (size_t i = 0; i < unicodeBlocks.size(); i ++)
163 {
164 std::vector<uint32_t> blockStarts;
165 std::vector<uint32_t> blockEnds;
166 for (size_t j = 0; j < unicodeBlocks[i].size(); j ++)
167 {
168 blockStarts.push_back(unicodeBlocks[i][j].first);
169 blockEnds.push_back(unicodeBlocks[i][j].second);
170 }
171 starts.push_back(blockStarts);
172 ends.push_back(blockEnds);
173 }
174
175 std::vector<uint32_t*> startPtrs;
176 std::vector<uint32_t*> endPtrs;
177 std::vector<size_t> counts;
178 for (size_t i = 0; i < unicodeBlocks.size(); i ++)
179 {
180 startPtrs.push_back(starts[i].data());
181 endPtrs.push_back(ends[i].data());
182 counts.push_back(starts[i].size());
183 }
184
185 char* value = BNUnicodeToEscapedString(startPtrs.data(), endPtrs.data(), counts.data(), unicodeBlocks.size(), utf8Enabled, data, dataLen);
186 std::string result(value);
187 BNFreeString(value);
188 return result;
189}
190

Callers 2

GetExprTextMethod · 0.45
GetExprTextInternalMethod · 0.45

Calls 3

push_backMethod · 0.80
sizeMethod · 0.45
dataMethod · 0.45

Tested by

no test coverage detected