// -*- C++ -*-

 namespace Katabatic {

 /*! \class        AutoContactTurn
  *
  *  \brief        AutoContact Turn (one H, one V)
  *
  *                AutoContact to make a turn (one H, one V).
  */

 //! \function    AutoContactTurn* AutoContactTurn::create ( GCell* gcell, Net* net, const Layer* layer );
 //! \param       gcell  The GCell into which create the AutoContact.
 //! \param       net    The Net to which this AutoContact belongs.
 //! \param       layer  The Layer of the AutoContact.
 //! \return      The created AutoContactTurn.
 //!
 //!              Create a new AutoContactTurn.

 //! \function    void  AutoContactTurn::updateTopology ();
 //!              Restore the topology (i.e. connexity) of the contact after one or both 
 //!              connected segments has changed layer.
 //!
 //!              Based on the layer depth delta between the two perpandiculars segments.
 //!              Three case can occurs:
 //!                - The delta is \b zero, then just sets the layer of the contact
 //!                  to the common metal layer (turn in same layer).
 //!                - The delta is \b one, then sets the contact layer to VIA connecting
 //!                  the two layers.
 //!                - The delta <b>cannot be equal to two</b>, due to the alternatives
 //!                  routing directions, it would mean a \e turn connecting two \e horizontals
 //!                  (or verticals) in different layers.
 //!                - The delta is \b three, then create a dogleg to restore the connexity.
 //!                  The dogleg will be created on the connected segment which as been
 //!                  <em>layer invalidated</em>. If both of them have been invalidated,
 //!                  the horizontal one is preferred.
 //!                - A delta of more than \b three is an error, and must never occurs.
 //!
 //!              \image html  updateTopologyTurn.png  "Update Turn Topology"

 }