MCPcopy Create free account
hub / github.com/Genivia/RE-flex / regex_error_message

Method regex_error_message

lib/error.cpp:71–97  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

69}
70
71std::string regex_error::regex_error_message(const char *message, const char *pattern, size_t pos)
72{
73 const char *p = strrchr(pattern, '\n');
74 if (p != NULL)
75 pattern = p + 1;
76 size_t l = strlen(pattern);
77 if (pos > l)
78 pos = l;
79 l = strlen(message);
80 size_t n = pos / 40;
81 size_t k = pos % 40 + (n == 0 ? 0 : 20);
82 p = n == 0 ? pattern : pattern + 40 * n - 20;
83 while (p > pattern && (*p & 0xc0) == 0x80)
84 {
85 --p;
86 ++k;
87 }
88 size_t m = disppos(p, 79) - p;
89 size_t r = displen(p, k);
90 std::string what("error at position ");
91 what.append(ztoa(pos)).append("\n").append(p, m).append("\n");
92 if (r >= l + 4)
93 what.append(r - l - 4, ' ').append(message).append("___/\n");
94 else
95 what.append(r, ' ').append("\\___").append(message).append("\n");
96 return what;
97}
98
99size_t regex_error::displen(const char *s, size_t k)
100{

Callers

nothing calls this directly

Calls 1

ztoaFunction · 0.85

Tested by

no test coverage detected