001    // License: GPL. Copyright 2007 by Immanuel Scholz and others
002    package org.openstreetmap.josm.data.osm.visitor;
003    
004    import org.openstreetmap.josm.data.osm.Changeset;
005    import org.openstreetmap.josm.data.osm.Node;
006    import org.openstreetmap.josm.data.osm.Relation;
007    import org.openstreetmap.josm.data.osm.Way;
008    
009    /**
010     * Implementation of the visitor scheme. Every @{link org.openstreetmap.josm.data.OsmPrimitive}
011     * can be visited by several different visitors.
012     */
013    public interface Visitor {
014        /**
015         * Visiting call for points.
016         * @param n The node to inspect.
017         */
018        void visit(Node n);
019        /**
020         * Visiting call for lines.
021         * @param w The way to inspect.
022         */
023        void visit(Way w);
024        /**
025         * Visiting call for relations.
026         * @param e The relation to inspect.
027         */
028        void visit(Relation e);
029        /**
030         * Visiting call for changesets.
031         * @param cs The changeset to inspect.
032         */
033        void visit(Changeset cs);
034    }