| 314 | |
| 315 | template<typename Stream> |
| 316 | void Unserialize(Stream &s) { |
| 317 | unsigned int nCode = 0; |
| 318 | // version |
| 319 | unsigned int nVersionDummy; |
| 320 | ::Unserialize(s, VARINT(nVersionDummy)); |
| 321 | // header code |
| 322 | ::Unserialize(s, VARINT(nCode)); |
| 323 | fCoinBase = nCode & 1; |
| 324 | std::vector<bool> vAvail(2, false); |
| 325 | vAvail[0] = (nCode & 2) != 0; |
| 326 | vAvail[1] = (nCode & 4) != 0; |
| 327 | unsigned int nMaskCode = (nCode / 8) + ((nCode & 6) != 0 ? 0 : 1); |
| 328 | // spentness bitmask |
| 329 | while (nMaskCode > 0) { |
| 330 | unsigned char chAvail = 0; |
| 331 | ::Unserialize(s, chAvail); |
| 332 | for (unsigned int p = 0; p < 8; p++) { |
| 333 | bool f = (chAvail & (1 << p)) != 0; |
| 334 | vAvail.push_back(f); |
| 335 | } |
| 336 | if (chAvail != 0) |
| 337 | nMaskCode--; |
| 338 | } |
| 339 | // txouts themself |
| 340 | vout.assign(vAvail.size(), CTxOut()); |
| 341 | for (unsigned int i = 0; i < vAvail.size(); i++) { |
| 342 | if (vAvail[i]) |
| 343 | ::Unserialize(s, CTxOutCompressor(vout[i])); |
| 344 | } |
| 345 | // coinbase height |
| 346 | ::Unserialize(s, VARINT(nHeight, VarIntMode::NONNEGATIVE_SIGNED)); |
| 347 | } |
| 348 | }; |
| 349 | |
| 350 | } |
nothing calls this directly
no test coverage detected