* Use a unit number. If the unit number is not valid it is ignored. * @param index Unit number to use. * @returns Unit number used. */
| 1842 | * @returns Unit number used. |
| 1843 | */ |
| 1844 | UnitID FreeUnitIDGenerator::UseID(UnitID index) |
| 1845 | { |
| 1846 | if (index == 0 || index == UINT16_MAX) return index; |
| 1847 | |
| 1848 | index--; |
| 1849 | |
| 1850 | size_t slot = index / BITMAP_SIZE; |
| 1851 | if (slot >= this->used_bitmap.size()) this->used_bitmap.resize(slot + 1); |
| 1852 | SetBit(this->used_bitmap[index / BITMAP_SIZE], index % BITMAP_SIZE); |
| 1853 | |
| 1854 | return index + 1; |
| 1855 | } |
| 1856 | |
| 1857 | /** |
| 1858 | * Release a unit number. If the unit number is not valid it is ignored. |
no test coverage detected