# Katabatic Documentation

# Katabatic - Routing Toolbox

GCellGrid.h
1 // -*- C++ -*-
2 //
3 // This file is part of the Coriolis Software.
4 // Copyright (c) UPMC 2008-2018, All Rights Reserved
5 //
6 // +-----------------------------------------------------------------+
7 // | C O R I O L I S |
8 // | K a t a b a t i c - Routing Toolbox |
9 // | |
10 // | Author : Jean-Paul CHAPUT |
11 // | E-mail : Jean-Paul.Chaput@lip6.fr |
12 // | =============================================================== |
13 // | C++ Header : "./katabatic/GCellGrid.h" |
14 // +-----------------------------------------------------------------+
15
16
17 #ifndef KATABATIC_GCELL_GRID_H
18 #define KATABATIC_GCELL_GRID_H
19
20 namespace Hurricane {
21 class Cell;
22 }
23
24 #include "katabatic/Constants.h"
25 #include "katabatic/Grid.h"
26 #include "katabatic/GCell.h"
27
28
29 namespace Katabatic {
30
31
32 using Hurricane::Cell;
33 using Hurricane::_TName;
34
35 class KatabaticEngine;
36
37
38 // -------------------------------------------------------------------
39 // Class : "Katabatic::GCellGrid".
40
41
42 class GCellGrid : public Grid<GCell> {
43 public:
44 enum DensityMode { AverageHVDensity=1 // Average between all densities.
45 , AverageHDensity =2 // Average between all H densities.
46 , AverageVDensity =3 // Average between all V densities.
47 , MaxHVDensity =4 // Maximum between average H and average V.
48 , MaxVDensity =5 // Maximum of V densities.
49 , MaxHDensity =6 // Maximum of H densities.
50 , MaxDensity =7 // Maximum of H & V densities.
51 };
52
53 public:
54 Cell* getCell () const;
55 inline KatabaticEngine* getKatabatic () const;
56 inline unsigned int getDensityMode () const;
57 inline size_t getHEdgeCapacity () const;
58 inline size_t getVEdgeCapacity () const;
59 Interval getUSide ( unsigned int ) const;
60 size_t checkDensity () const;
61 bool checkEdgeOverflow ( size_t hreserved, size_t vreserved ) const;
62 size_t updateDensity ();
63 void updateContacts ( unsigned int flags=KbOpenSession );
64 inline void setDensityMode ( unsigned int );
65 void _xmlWrite ( ostream& );
66 virtual Record* _getRecord () const;
67 virtual string _getString () const;
68 virtual string _getTypeName () const;
69
70 // Attributes.
71 protected:
72 KatabaticEngine* _katabatic;
73 int _densityMode;
74 size_t _hEdgeCapacity;
75 size_t _vEdgeCapacity;
76
77 // Constructors & Destructors.
78 protected:
79 GCellGrid ( KatabaticEngine* );
80 virtual ~GCellGrid ();
81 void _postCreate ();
82 void _preDestroy ();
83 static GCellGrid* create ( KatabaticEngine* );
84 private:
85 GCellGrid ( const GCellGrid& );
86 GCellGrid& operator= ( const GCellGrid& );
87
88 // Friends.
89 friend class KatabaticEngine;
90 };
91
92
93 inline KatabaticEngine* GCellGrid::getKatabatic () const { return _katabatic; }
94 inline unsigned int GCellGrid::getDensityMode () const { return _densityMode; }
95 inline size_t GCellGrid::getHEdgeCapacity () const { return _hEdgeCapacity; }
96 inline size_t GCellGrid::getVEdgeCapacity () const { return _vEdgeCapacity; }
97 inline void GCellGrid::setDensityMode ( unsigned int mode ) { _densityMode=mode; }
98
99
100 } // End of Katabatic namespace.
101
102
103 INSPECTOR_P_SUPPORT(Katabatic::GCellGrid);
104
105
106
107 #endif // __KATABATIC_GCELL_GRID__
Katabatic::GCellGrid::updateDensity
size_t updateDensity()
Definition: GCellGrid.cpp:158
Katabatic::GCellGrid::_preDestroy
void _preDestroy()
Definition: GCellGrid.cpp:115
Katabatic::KbOpenSession
Definition: Constants.h:23
Katabatic::GCellGrid::AverageVDensity
Definition: GCellGrid.h:46
Katabatic::GCellGrid::getDensityMode
unsigned int getDensityMode() const
Definition: GCellGrid.h:94
Katabatic::Grid
Template Class for Regular Grid.
Definition: Grid.h:136
Katabatic::GCellGrid::getCell
Cell * getCell() const
Definition: GCellGrid.cpp:127
Katabatic::GCellGrid::getUSide
Interval getUSide(unsigned int) const
Definition: GCellGrid.cpp:133
Hurricane::Cell
Katabatic::GCellGrid::MaxVDensity
Definition: GCellGrid.h:48
Katabatic::GCellGrid::MaxHVDensity
Definition: GCellGrid.h:47
Katabatic::GCellGrid::AverageHVDensity
Definition: GCellGrid.h:44
Katabatic::GCellGrid::setDensityMode
void setDensityMode(unsigned int)
Definition: GCellGrid.h:97
Katabatic::GCellGrid::updateContacts
void updateContacts(unsigned int flags=KbOpenSession)
Definition: GCellGrid.cpp:147
Hurricane::Interval
Katabatic::GCellGrid::MaxDensity
Definition: GCellGrid.h:50
Katabatic::GCellGrid
GCell Grid.
Definition: GCellGrid.h:42
Katabatic::GCellGrid::create
static GCellGrid * create(KatabaticEngine *)
Definition: GCellGrid.cpp:103
Katabatic
The namespace dedicated to Katabatic.
Definition: Katabatic.dox:13
Katabatic::KatabaticEngine
The Katabatic Tool.
Definition: KatabaticEngine.h:91
Katabatic::GCellGrid::checkDensity
size_t checkDensity() const
Definition: GCellGrid.cpp:168
Katabatic::GCellGrid::_postCreate
void _postCreate()
Definition: GCellGrid.cpp:53
Katabatic::GCellGrid::getHEdgeCapacity
size_t getHEdgeCapacity() const
Definition: GCellGrid.h:95
Katabatic::GCellGrid::DensityMode
DensityMode
Definition: GCellGrid.h:44
Hurricane
Katabatic::GCellGrid::MaxHDensity
Definition: GCellGrid.h:49
Katabatic::GCellGrid::getVEdgeCapacity
size_t getVEdgeCapacity() const
Definition: GCellGrid.h:96
Katabatic::GCellGrid::getKatabatic
KatabaticEngine * getKatabatic() const
Definition: GCellGrid.h:93
Katabatic::GCellGrid::AverageHDensity
Definition: GCellGrid.h:45