001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.data.osm;
003
004import org.openstreetmap.josm.data.coor.EastNorth;
005import org.openstreetmap.josm.data.coor.ILatLon;
006import org.openstreetmap.josm.data.coor.LatLon;
007
008/**
009 * INode captures the common functions of {@link Node} and {@link NodeData}.
010 * @since 4098
011 */
012public interface INode extends IPrimitive, ILatLon {
013
014    /**
015     * Returns lat/lon coordinates of this node.
016     * @return lat/lon coordinates of this node
017     */
018    LatLon getCoor();
019
020    /**
021     * Sets lat/lon coordinates of this node.
022     * @param coor lat/lon coordinates of this node
023     */
024    void setCoor(LatLon coor);
025
026    /**
027     * Sets east/north coordinates of this node.
028     * @param eastNorth east/north coordinates of this node
029     */
030    void setEastNorth(EastNorth eastNorth);
031
032    @Override
033    default String getDisplayName(NameFormatter formatter) {
034        return formatter.format(this);
035    }
036}