/** * Container for link between two Osm nodes (pre-pocessor version) * * @author ab */ package btools.mapcreator; public class OsmLinkP { /** * The description bitmap is mainly the way description * used to calculate the costfactor */ public byte[] descriptionBitmap; /** * The target is either the next link or the target node */ protected OsmNodeP sourceNode; protected OsmNodeP targetNode; protected OsmLinkP previous; protected OsmLinkP next; public OsmLinkP( OsmNodeP source, OsmNodeP target ) { sourceNode = source; targetNode = target; } protected OsmLinkP() { } public final boolean counterLinkWritten( ) { return descriptionBitmap == null; } /** * Set the relevant next-pointer for the given source */ public void setNext( OsmLinkP link, OsmNodeP source ) { if ( sourceNode == source ) { next = link; } else if ( targetNode == source ) { previous = link; } else { throw new IllegalArgumentException( "internal error: setNext: unknown source" ); } } /** * Get the relevant next-pointer for the given source */ public OsmLinkP getNext( OsmNodeP source ) { if ( sourceNode == source ) { return next; } else if ( targetNode == source ) { return previous; } else { throw new IllegalArgumentException( "internal error: gextNext: unknown source" ); } } /** * Get the relevant target-node for the given source */ public OsmNodeP getTarget( OsmNodeP source ) { if ( sourceNode == source ) { return targetNode; } else if ( targetNode == source ) { return sourceNode; } else { throw new IllegalArgumentException( "internal error: getTarget: unknown source" ); } } /** * Check if reverse link for the given source */ public boolean isReverse( OsmNodeP source ) { if ( sourceNode == source ) { return false; } else if ( targetNode == source ) { return true; } else { throw new IllegalArgumentException( "internal error: isReverse: unknown source" ); } } }