// SPDX-FileCopyrightText: © 2026 Jeffrey C. Ollie // SPDX-License-Identifier: MIT const PrimitiveBlock = @This(); const std = @import("std"); const OSMPBF = @import("proto/OSMPBF.pb.zig"); const DenseNodeIterator = @import("DenseNodeIterator.zig"); const PrimitiveGroup = @import("PrimitiveGroup.zig"); block: OSMPBF.PrimitiveBlock, pub fn init(block: OSMPBF.PrimitiveBlock) PrimitiveBlock { return .{ .block = block, }; } pub const PrimitiveBlockIterator = struct { block: *const OSMPBF.PrimitiveBlock, index: usize, pub fn init(block: *const OSMPBF.PrimitiveBlock) PrimitiveBlockIterator { return .{ .block = block, .index = 0, }; } pub fn next(self: *PrimitiveBlockIterator) ?PrimitiveGroup { if (self.index >= self.block.primitivegroup.items.len) return null; const group = &self.block.primitivegroup.items[self.index]; self.index += 1; return .{ .block = self.block, .group = group, }; } }; pub fn iterator(self: *const PrimitiveBlock) PrimitiveBlockIterator { return .{ .block = &self.block, .index = 0, }; }