void VeinGenerator::write_tiles() { for (int x = 0; x < size.x; x++) { for (int y = 0; y < size.y; y++) { df::coord2d column(x,y); int top = findTopBlock(map, x, y); for (int z = top; z >= 0; z--) { Block *b = map.BlockAt(df::coord(x,y,z)); if (!b || !b->is_valid()) continue; write_block_tiles(b, column, z); b->Write(); map.discardBlock(b); } map.trash(); } } }
void CoinEng::ExportToBootstrapDat(const path& pathBoostrap) { uint32_t n = Db->GetMaxHeight()+1; #ifndef X_DEBUG//!!!T if (Mode == EngMode::Bootstrap) { CEngStateDescription stateDesc(_self, EXT_STR("Copying " << GetBootstrapPath() << " -> " << pathBoostrap)); return (void)copy_file(GetBootstrapPath(), pathBoostrap, copy_options::overwrite_existing); } #endif CEngStateDescription stateDesc(_self, EXT_STR("Exporting " << n << " blocks to " << pathBoostrap)); FileStream fs(pathBoostrap, FileMode::Create, FileAccess::Write); BinaryWriter wr(fs); for (uint32_t i=0; i<n && Runned; ++i) { wr << ChainParams.ProtocolMagic; MemoryStream ms; Block block = GetBlockByHeight(i); //!!!? block.LoadToMemory(); //!!!? EXT_FOR (const Tx& tx, block.Txes) { //!!!? // tx.m_pimpl->m_nBytesOfHash = 0; //!!!? } //!!!? block.m_pimpl->m_hash.reset(); //!!!?block.m_pimpl->m_txHashesOutNums.clear(); block.Write(BinaryWriter(ms).Ref()); wr << uint32_t(ms.Position); fs.WriteBuf(ms); } }