MCPcopy Create free account
hub / github.com/FirebirdSQL/firebird / removeTrailingSpaces

Method removeTrailingSpaces

src/common/CharSet.cpp:254–300  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

252
253
254ULONG CharSet::removeTrailingSpaces(ULONG srcLen, const UCHAR* src) const
255{
256 const unsigned spaceLen = getSpaceLength();
257 const UCHAR* p = src + srcLen - spaceLen;
258 const UCHAR* const q = getSpace();
259
260 switch (spaceLen)
261 {
262 case 1:
263 while (p >= src && *p == *q)
264 p -= spaceLen;
265 break;
266
267 case 2:
268 while (p >= src && p[0] == q[0] && p[1] == q[1])
269 p -= spaceLen;
270 break;
271
272 case 3:
273 while (p >= src && p[0] == q[0] && p[1] == q[1] && p[2] == q[2])
274 p -= spaceLen;
275 break;
276
277 case 4:
278 while (p >= src && p[0] == q[0] && p[1] == q[1] && p[2] == q[2] && p[3] == q[3])
279 p -= spaceLen;
280 break;
281
282 default:
283 while (p >= src)
284 {
285 unsigned i = 0;
286 for (; i < spaceLen; i++)
287 if (p[i] != q[i])
288 break;
289
290 if (i != spaceLen)
291 break;
292
293 p -= spaceLen;
294 }
295 break;
296 }
297
298 p += spaceLen;
299 return p - src;
300}
301
302
303} // namespace Jrd

Callers 1

validateLengthMethod · 0.80

Calls

no outgoing calls

Tested by

no test coverage detected