MCPcopy Index your code
hub / github.com/NetHack/NetHack / compactify

Function compactify

src/invent.c:1626–1660  ·  view source on GitHub ↗

compact a string of inventory letters by dashing runs of letters */

Source from the content-addressed store, hash-verified

1624
1625/* compact a string of inventory letters by dashing runs of letters */
1626staticfn void
1627compactify(char *buf)
1628{
1629 int i1 = 1, i2 = 1;
1630 char ilet, ilet1, ilet2;
1631
1632 ilet2 = buf[0];
1633 ilet1 = buf[1];
1634 buf[++i2] = buf[++i1];
1635 ilet = buf[i1];
1636 while (ilet) {
1637 if (ilet == ilet1 + 1) {
1638 if (ilet1 == ilet2 + 1)
1639 buf[i2 - 1] = ilet1 = '-';
1640 else if (ilet2 == '-') {
1641 buf[i2 - 1] = ++ilet1;
1642 buf[i2] = buf[++i1];
1643 ilet = buf[i1];
1644 continue;
1645 }
1646 } else if (ilet == NOINVSYM) {
1647 /* compact three or more consecutive '#'
1648 characters into "#-#" */
1649 if (i2 >= 2 && buf[i2 - 2] == NOINVSYM && buf[i2 - 1] == NOINVSYM)
1650 buf[i2 - 1] = '-';
1651 else if (i2 >= 3 && buf[i2 - 3] == NOINVSYM && buf[i2 - 2] == '-'
1652 && buf[i2 - 1] == NOINVSYM)
1653 --i2;
1654 }
1655 ilet2 = ilet1;
1656 ilet1 = ilet;
1657 buf[++i2] = buf[++i1];
1658 ilet = buf[i1];
1659 }
1660}
1661
1662/* some objects shouldn't be split when count given to getobj or askchain */
1663boolean

Callers 2

getobjFunction · 0.85
doorganize_coreFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected