Something went wrong. Try again.
Zig parser for the OSM PBF file format. jeff.jcollie.pages/osm.zig
Something went wrong. Try again.
12345678910111213141516171819202122232425262728293031323334353637383940414243// 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);}