MCPcopy Create free account
hub / github.com/alliedmodders/sourcemod / AddInt

Function AddInt

core/logic/sprintf.cpp:482–551  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

480}
481
482void AddInt(char **buf_p, size_t &maxlen, int64_t val, int width, int flags)
483{
484 char text[32];
485 int digits;
486 int64_t signedVal;
487 char *buf;
488 uint64_t unsignedVal;
489
490 digits = 0;
491 signedVal = val;
492 if (val < 0)
493 {
494 unsignedVal = 0 - static_cast<uint64_t>(val);
495 width--; // Reserved for '-' sign
496 }
497 else
498 {
499 unsignedVal = static_cast<uint64_t>(val);
500 }
501
502 do
503 {
504 text[digits++] = '0' + unsignedVal % 10;
505 unsignedVal /= 10;
506 } while (unsignedVal);
507
508 buf = *buf_p;
509
510 // minus sign BEFORE left padding if padding with zeros
511 if (signedVal < 0 && maxlen && (flags & ZEROPAD))
512 {
513 *buf++ = '-';
514 maxlen--;
515 }
516
517 if (!(flags & LADJUST))
518 {
519 while ((digits < width) && maxlen)
520 {
521 *buf++ = (flags & ZEROPAD) ? '0' : ' ';
522 width--;
523 maxlen--;
524 }
525 }
526
527 // minus sign AFTER left padding if padding with spaces
528 if (signedVal < 0 && maxlen && !(flags & ZEROPAD))
529 {
530 *buf++ = '-';
531 maxlen--;
532 }
533
534 while (digits-- && maxlen)
535 {
536 *buf++ = text[digits];
537 width--;
538 maxlen--;
539 }

Callers 2

gnprintfFunction · 0.85
atcprintfFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected