// SPDX-FileCopyrightText: © 2026 Jeffrey C. Ollie // SPDX-License-Identifier: MIT const PrimitiveGroup = @This(); const std = @import("std"); const OSMPBF = @import("proto/OSMPBF.pb.zig"); const DenseNodeIterator = @import("DenseNodeIterator.zig"); block: *const OSMPBF.PrimitiveBlock, group: *const OSMPBF.PrimitiveGroup, pub fn init(block: *const OSMPBF.PrimitiveBlock, group: *const OSMPBF.PrimitiveGroup) PrimitiveGroup { return .{ .block = block, .group = group, }; } pub const PrimitiveType = enum { nodes, dense_nodes, ways, relations, changesets, empty, }; pub fn contains(self: *const PrimitiveGroup) PrimitiveType { if (self.group.dense) |_| return .dense_nodes; if (self.group.nodes.items.len > 0) return .nodes; if (self.group.ways.items.len > 0) return .ways; if (self.group.relations.items.len > 0) return .relations; if (self.group.changesets.items.len > 0) return .changesets; return .empty; } pub fn denseNodeIterator(self: *const PrimitiveGroup) DenseNodeIterator { return .init(self.block, self.group); }