Suppress all static attributes & methods from Anabatic::NetBuilder.

This commit is contained in:
Jean-Paul Chaput 2017-12-17 12:51:04 +01:00
parent 4c57b0651a
commit e17a50ca0b
2 changed files with 54 additions and 71 deletions

View File

@ -92,18 +92,6 @@ namespace Anabatic {
// -------------------------------------------------------------------
// Class : "NetBuilder".
map<Component*,AutoSegment*> NetBuilder::_routingPadAutoSegments;
vector<AutoSegment*> NetBuilder::_toFixSegments;
unsigned int NetBuilder::_degree = 0;
map<Component*,AutoSegment*>& NetBuilder::getRpLookup ()
{ return _routingPadAutoSegments; }
void NetBuilder::clearRpLookup ()
{ _routingPadAutoSegments.clear(); }
void NetBuilder::getPositions ( Component* anchor, Point& source, Point& target )
{
@ -187,35 +175,23 @@ namespace Anabatic {
}
void NetBuilder::fixSegments ()
{
for ( size_t i=0 ; i<_toFixSegments.size() ; ++i )
_toFixSegments[i]->setFlags( AutoSegment::SegFixed );
_toFixSegments.clear();
}
void NetBuilder::init ( unsigned int degree )
{
_degree = degree;
_toFixSegments.clear();
}
NetBuilder::NetBuilder ()
: _forks ()
, _connexity ()
, _topology (0)
, _gcell (NULL)
, _sourceContact (NULL)
, _southWestContact(NULL)
, _northEastContact(NULL)
, _fromHook (NULL)
, _easts ()
, _wests ()
, _norths ()
, _souths ()
, _routingPads ()
: _forks ()
, _connexity ()
, _topology (0)
, _gcell (NULL)
, _sourceContact (NULL)
, _southWestContact (NULL)
, _northEastContact (NULL)
, _fromHook (NULL)
, _easts ()
, _wests ()
, _norths ()
, _souths ()
, _routingPads ()
, _routingPadAutoSegments()
, _toFixSegments ()
, _degree (0)
{ }
@ -228,14 +204,24 @@ namespace Anabatic {
_southWestContact = NULL;
_northEastContact = NULL;
_fromHook = NULL;
_easts .clear();
_wests .clear();
_norths .clear();
_souths .clear();
_routingPads.clear();
_easts .clear();
_wests .clear();
_norths .clear();
_souths .clear();
_routingPads .clear();
_toFixSegments .clear();
_routingPadAutoSegments.clear();
}
void NetBuilder::fixSegments ()
{
for ( size_t i=0 ; i<_toFixSegments.size() ; ++i )
_toFixSegments[i]->setFlags( AutoSegment::SegFixed );
_toFixSegments.clear();
}
NetBuilder& NetBuilder::startFrom ( AnabaticEngine* anbt, Hook* fromHook, AutoContact* sourceContact )
{
clear();
@ -2653,11 +2639,8 @@ namespace Anabatic {
Hook* sourceHook = NULL;
AutoContact* sourceContact = NULL;
clearRpLookup();
RoutingPads routingPads = net->getRoutingPads();
size_t degree = routingPads.getSize();
RoutingPads routingPads = net->getRoutingPads();
size_t degree = routingPads.getSize();
if (degree == 0) {
cmess2 << Warning("Net \"%s\" do not have any RoutingPad (ignored)."
@ -2676,7 +2659,7 @@ namespace Anabatic {
size_t unconnecteds = 0;
size_t connecteds = 0;
init( degree );
setDegree( degree );
cdebug_log(145,0) << "Start RoutingPad Ring" << endl;
for ( RoutingPad* startRp : routingPads ) {
@ -2745,7 +2728,6 @@ namespace Anabatic {
cdebug_log(145,0) << "Popping (to) " << sourceContact << endl;
}
clearRpLookup();
Session::revalidate();
//Breakpoint::stop( 0, "After construct" );

View File

@ -122,8 +122,6 @@ namespace Anabatic {
public:
template< typename BuilderT >
static void load ( AnabaticEngine*, Net* );
static void init ( unsigned int degree );
static void fixSegments ();
static void getPositions ( Component* anchor, Point& source, Point& target );
static uint64_t checkRoutingPadSize ( Component* anchor );
static Hook* getSegmentOppositeHook ( Hook* hook );
@ -132,6 +130,8 @@ namespace Anabatic {
NetBuilder ();
virtual ~NetBuilder ();
void clear ();
inline void setDegree ( unsigned int degree );
void fixSegments ();
NetBuilder& startFrom ( AnabaticEngine*
, Hook* fromHook
, AutoContact* sourceContact=NULL );
@ -142,14 +142,13 @@ namespace Anabatic {
inline GCell* getGCell () const;
inline ForkStack& getForks ();
inline vector<RoutingPad*>& getRoutingPads ();
static map<Component*,AutoSegment*>& getRpLookup ();
inline map<Component*,AutoSegment*>& getRpLookup ();
inline unsigned int getTopology () const;
inline Hook* north ( size_t i=0 ) const;
inline Hook* south ( size_t i=0 ) const;
inline Hook* east ( size_t i=0 ) const;
inline Hook* west ( size_t i=0 ) const;
inline void setBothCornerContacts ( AutoContact* );
static void clearRpLookup ();
bool push ( Hook* to, AutoContact* contact, uint64_t flags=0 );
virtual void doRp_AutoContacts ( GCell*, Component*, AutoContact*& source, AutoContact*& target, uint64_t flags ) = 0;
virtual AutoContact* doRp_Access ( GCell*, Component*, uint64_t flags ) = 0;
@ -270,9 +269,6 @@ namespace Anabatic {
// Attributes.
private:
static map<Component*,AutoSegment*> _routingPadAutoSegments;
static vector<AutoSegment*> _toFixSegments;
static unsigned int _degree;
ForkStack _forks;
UConnexity _connexity;
unsigned int _topology;
@ -287,6 +283,9 @@ namespace Anabatic {
vector<Hook*> _norths;
vector<Hook*> _souths;
vector<RoutingPad*> _routingPads;
map<Component*,AutoSegment*> _routingPadAutoSegments;
vector<AutoSegment*> _toFixSegments;
unsigned int _degree;
// Sort classes.
public:
@ -324,18 +323,20 @@ namespace Anabatic {
};
inline NetBuilder::UConnexity NetBuilder::getConnexity () const { return _connexity; }
inline ForkStack& NetBuilder::getForks () { return _forks; }
inline unsigned int NetBuilder::getStateG () const { return _connexity.fields.globals; }
inline GCell* NetBuilder::getGCell () const { return _gcell; }
inline Net* NetBuilder::getNet () const { return _net; }
inline unsigned int NetBuilder::getTopology () const { return _topology; }
inline vector<RoutingPad*>& NetBuilder::getRoutingPads () { return _routingPads; }
inline Hook* NetBuilder::north ( size_t i ) const { return (i<_norths.size()) ? _norths[i] : NULL; }
inline Hook* NetBuilder::south ( size_t i ) const { return (i<_souths.size()) ? _souths[i] : NULL; }
inline Hook* NetBuilder::east ( size_t i ) const { return (i<_easts .size()) ? _easts [i] : NULL; }
inline Hook* NetBuilder::west ( size_t i ) const { return (i<_wests .size()) ? _wests [i] : NULL; }
inline void NetBuilder::setBothCornerContacts ( AutoContact* ac ) { _southWestContact = _northEastContact = ac; }
inline NetBuilder::UConnexity NetBuilder::getConnexity () const { return _connexity; }
inline ForkStack& NetBuilder::getForks () { return _forks; }
inline unsigned int NetBuilder::getStateG () const { return _connexity.fields.globals; }
inline GCell* NetBuilder::getGCell () const { return _gcell; }
inline Net* NetBuilder::getNet () const { return _net; }
inline unsigned int NetBuilder::getTopology () const { return _topology; }
inline vector<RoutingPad*>& NetBuilder::getRoutingPads () { return _routingPads; }
inline map<Component*,AutoSegment*>& NetBuilder::getRpLookup () { return _routingPadAutoSegments; }
inline Hook* NetBuilder::north ( size_t i ) const { return (i<_norths.size()) ? _norths[i] : NULL; }
inline Hook* NetBuilder::south ( size_t i ) const { return (i<_souths.size()) ? _souths[i] : NULL; }
inline Hook* NetBuilder::east ( size_t i ) const { return (i<_easts .size()) ? _easts [i] : NULL; }
inline Hook* NetBuilder::west ( size_t i ) const { return (i<_wests .size()) ? _wests [i] : NULL; }
inline void NetBuilder::setDegree ( unsigned int degree ) { _degree = degree; }
inline void NetBuilder::setBothCornerContacts ( AutoContact* ac ) { _southWestContact = _northEastContact = ac; }
template< typename BuilderT >
void NetBuilder::load ( AnabaticEngine* engine, Net* net ) { BuilderT()._load(engine,net); }