output in XML
| 2197 | |
| 2198 | // output in XML |
| 2199 | void Output::xml(const char *data, size_t size) |
| 2200 | { |
| 2201 | const char *s = data; |
| 2202 | const char *e = data + size; |
| 2203 | const char *t = s; |
| 2204 | |
| 2205 | while (s < e) |
| 2206 | { |
| 2207 | int c = *s; |
| 2208 | |
| 2209 | if ((c & 0x80) == 0) |
| 2210 | { |
| 2211 | switch (c) |
| 2212 | { |
| 2213 | case '&': |
| 2214 | str(t, s - t); |
| 2215 | t = s + 1; |
| 2216 | str("&", 5); |
| 2217 | break; |
| 2218 | |
| 2219 | case '<': |
| 2220 | str(t, s - t); |
| 2221 | t = s + 1; |
| 2222 | str("<", 4); |
| 2223 | break; |
| 2224 | |
| 2225 | case '>': |
| 2226 | str(t, s - t); |
| 2227 | t = s + 1; |
| 2228 | str(">", 4); |
| 2229 | break; |
| 2230 | |
| 2231 | case '"': |
| 2232 | str(t, s - t); |
| 2233 | t = s + 1; |
| 2234 | str(""", 6); |
| 2235 | break; |
| 2236 | |
| 2237 | case 0x7f: |
| 2238 | str(t, s - t); |
| 2239 | t = s + 1; |
| 2240 | str("", 6); |
| 2241 | break; |
| 2242 | |
| 2243 | default: |
| 2244 | if (c < 0x20) |
| 2245 | { |
| 2246 | str(t, s - t); |
| 2247 | t = s + 1; |
| 2248 | str("&#", 2); |
| 2249 | num(c); |
| 2250 | chr(';'); |
| 2251 | } |
| 2252 | } |
| 2253 | } |
| 2254 | ++s; |
| 2255 | } |
| 2256 | str(t, s - t); |
nothing calls this directly
no outgoing calls
no test coverage detected