001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.data.osm;
003
004/**
005 * IRelation captures the common functions of {@link Relation} and {@link RelationData}.
006 * @since 4098
007 */
008public interface IRelation extends IPrimitive {
009
010    /**
011     * Returns the number of members.
012     * @return number of members
013     */
014    int getMembersCount();
015
016    /**
017     * Returns id of the member at given index.
018     * @param idx member index
019     * @return id of the member at given index
020     */
021    long getMemberId(int idx);
022
023    /**
024     * Returns role of the member at given index.
025     * @param idx member index
026     * @return role of the member at given index
027     */
028    String getRole(int idx);
029
030    /**
031     * Returns type of the member at given index.
032     * @param idx member index
033     * @return type of the member at given index
034     */
035    OsmPrimitiveType getMemberType(int idx);
036}