mod arc_types;
mod rc_types;
mod string_types;
use crate::{Node, OSMObjBase, Relation, Way};
pub use self::arc_types::*;
pub use self::rc_types::*;
pub use self::string_types::*;
impl From<RcNode> for StringNode {
fn from(obj: RcNode) -> Self {
let mut n = StringNodeBuilder::default()._id(obj.id()).build().unwrap();
n.set_version(obj.version());
n.set_deleted(obj.deleted());
n.set_changeset_id(obj.changeset_id());
n.set_timestamp(obj.timestamp().clone());
n.set_uid(obj.uid());
n.set_user(obj.user());
n.set_lat_lon_direct(obj.lat_lon());
for (k, v) in obj.tags() {
n.set_tag(k, v);
}
n
}
}
impl From<RcWay> for StringWay {
fn from(obj: RcWay) -> Self {
let mut w = StringWayBuilder::default()._id(obj.id()).build().unwrap();
w.set_version(obj.version());
w.set_deleted(obj.deleted());
w.set_changeset_id(obj.changeset_id());
w.set_timestamp(obj.timestamp().clone());
w.set_uid(obj.uid());
w.set_user(obj.user());
for (k, v) in obj.tags() {
w.set_tag(k, v);
}
w.set_nodes(obj.nodes().iter().copied());
w
}
}
impl From<RcRelation> for StringRelation {
fn from(obj: RcRelation) -> Self {
let mut r = StringRelationBuilder::default()
._id(obj.id())
.build()
.unwrap();
r.set_version(obj.version());
r.set_deleted(obj.deleted());
r.set_changeset_id(obj.changeset_id());
r.set_timestamp(obj.timestamp().clone());
r.set_uid(obj.uid());
r.set_user(obj.user());
for (k, v) in obj.tags() {
r.set_tag(k, v);
}
r.set_members(obj.members());
r
}
}
impl From<RcOSMObj> for StringOSMObj {
fn from(obj: RcOSMObj) -> Self {
match obj {
RcOSMObj::Node(n) => StringOSMObj::Node(n.into()),
RcOSMObj::Way(w) => StringOSMObj::Way(w.into()),
RcOSMObj::Relation(r) => StringOSMObj::Relation(r.into()),
}
}
}
impl From<ArcNode> for StringNode {
fn from(obj: ArcNode) -> Self {
let mut n = StringNodeBuilder::default()._id(obj.id()).build().unwrap();
n.set_version(obj.version());
n.set_deleted(obj.deleted());
n.set_changeset_id(obj.changeset_id());
n.set_timestamp(obj.timestamp().clone());
n.set_uid(obj.uid());
n.set_user(obj.user());
n.set_lat_lon_direct(obj.lat_lon());
for (k, v) in obj.tags() {
n.set_tag(k, v);
}
n
}
}
impl From<ArcWay> for StringWay {
fn from(obj: ArcWay) -> Self {
let mut w = StringWayBuilder::default()._id(obj.id()).build().unwrap();
w.set_version(obj.version());
w.set_deleted(obj.deleted());
w.set_changeset_id(obj.changeset_id());
w.set_timestamp(obj.timestamp().clone());
w.set_uid(obj.uid());
w.set_user(obj.user());
for (k, v) in obj.tags() {
w.set_tag(k, v);
}
w.set_nodes(obj.nodes().iter().copied());
w
}
}
impl From<ArcRelation> for StringRelation {
fn from(obj: ArcRelation) -> Self {
let mut r = StringRelationBuilder::default()
._id(obj.id())
.build()
.unwrap();
r.set_version(obj.version());
r.set_deleted(obj.deleted());
r.set_changeset_id(obj.changeset_id());
r.set_timestamp(obj.timestamp().clone());
r.set_uid(obj.uid());
r.set_user(obj.user());
for (k, v) in obj.tags() {
r.set_tag(k, v);
}
r.set_members(obj.members());
r
}
}
impl From<ArcOSMObj> for StringOSMObj {
fn from(obj: ArcOSMObj) -> Self {
match obj {
ArcOSMObj::Node(n) => StringOSMObj::Node(n.into()),
ArcOSMObj::Way(w) => StringOSMObj::Way(w.into()),
ArcOSMObj::Relation(r) => StringOSMObj::Relation(r.into()),
}
}
}