coriolis/anabatic/src/anabatic/AutoHorizontal.h

97 lines
4.1 KiB
C++

// -*- C++ -*-
//
// This file is part of the Coriolis Software.
// Copyright (c) UPMC 2008-2013, All Rights Reserved
//
// +-----------------------------------------------------------------+
// | C O R I O L I S |
// | A n a b a t i c - Routing Toolbox |
// | |
// | Author : Jean-Paul CHAPUT |
// | E-mail : Jean-Paul.Chaput@lip6.fr |
// | =============================================================== |
// | C++ Header : "./anabatic/AutoHorizontal.h" |
// +-----------------------------------------------------------------+
#ifndef ANABATIC_AUTOHORIZONTAL_H
#define ANABATIC_AUTOHORIZONTAL_H
#include "hurricane/Horizontal.h"
#include "anabatic/AutoSegment.h"
namespace Anabatic {
// -------------------------------------------------------------------
// Class : "AutoHorizontal".
class AutoHorizontal : public AutoSegment {
friend class AutoSegment;
public:
// Predicates.
virtual bool _canSlacken () const;
virtual bool canMoveULeft ( float reserve=0.0 ) const;
virtual bool canMoveURight ( float reserve=0.0 ) const;
// Accessors.
virtual Segment* base ();
virtual Segment* base () const;
virtual Horizontal* getHorizontal ();
virtual DbU::Unit getSourceU () const;
virtual DbU::Unit getTargetU () const;
virtual DbU::Unit getDuSource () const;
virtual DbU::Unit getDuTarget () const;
virtual Interval getSpanU () const;
virtual bool getConstraints ( DbU::Unit& min , DbU::Unit& max ) const;
virtual Interval getSourceConstraints ( Flags flags=0 ) const;
virtual Interval getTargetConstraints ( Flags flags=0 ) const;
virtual Flags getDirection () const;
virtual size_t getGCells ( vector<GCell*>& ) const;
// Modifiers.
virtual void setDuSource ( DbU::Unit );
virtual void setDuTarget ( DbU::Unit );
virtual void _setAxis ( DbU::Unit );
virtual void updateOrient ();
virtual void updatePositions ();
virtual void updateNativeConstraints ();
virtual bool checkPositions () const;
virtual bool checkConstraints () const;
virtual Flags _makeDogleg ( GCell*, Flags flags );
virtual bool moveULeft ();
virtual bool moveURight ();
virtual bool _slacken ( Flags flags );
#if THIS_IS_DISABLED
virtual void desalignate ( AutoContact* );
#endif
// Inspector Management.
virtual Record* _getRecord () const;
virtual string _getString () const;
virtual string _getTypeName () const;
// Internal: Attributes.
protected:
Horizontal* _horizontal;
// Internal: Constructors.
protected:
AutoHorizontal ( Horizontal* );
virtual ~AutoHorizontal ();
virtual void _postCreate ();
virtual void _preDestroy ();
private:
AutoHorizontal ( const AutoHorizontal& );
AutoHorizontal& operator= ( const AutoHorizontal& );
};
} // End of Anabatic namespace.
INSPECTOR_P_SUPPORT(Anabatic::AutoHorizontal);
#endif // ANABATIC_AUTOHORIZONTAL_H