# Hurricane Documentation

# Hurricane VLSI Database

Library.h
1 // ****************************************************************************************************
2 // File: ./hurricane/Library.h
3 // Authors: R. Escassut
4 // Copyright (c) BULL S.A. 2000-2018, All Rights Reserved
5 //
6 // This file is part of Hurricane.
7 //
8 // Hurricane is free software: you can redistribute it and/or modify it under the terms of the GNU
9 // Lesser General Public License as published by the Free Software Foundation, either version 3 of the
10 // License, or (at your option) any later version.
11 //
12 // Hurricane is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
13 // the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU
14 // General Public License for more details.
15 //
16 // You should have received a copy of the Lesser GNU General Public License along with Hurricane. If
17 // not, see <http://www.gnu.org/licenses/>.
18 // ****************************************************************************************************
19
20 #ifndef HURRICANE_LIBRARY
21 #define HURRICANE_LIBRARY
22
23 #include "hurricane/DBo.h"
24 #include "hurricane/Libraries.h"
25 #include "hurricane/Cell.h"
26 #include "hurricane/IntrusiveMap.h"
27
28 namespace Hurricane {
29
30 class DataBase;
31
32
33
34 // ****************************************************************************************************
35 // Library declaration
36 // ****************************************************************************************************
37
38 class Library : public DBo {
39 // ***********************
40
41 // Types
42 // *****
43
44 public: typedef DBo Inherit;
45
46 public: class LibraryMap : public IntrusiveMap<Name, Library> {
47 // **********************************************************
48
49 public: typedef IntrusiveMap<Name, Library> Inherit;
50
51 public: LibraryMap();
52
53 public: virtual Name _getKey(Library* library) const;
54 public: virtual unsigned _getHashValue(Name name) const;
55 public: virtual Library* _getNextElement(Library* library) const;
56 public: virtual void _setNextElement(Library* library, Library* nextLibrary) const;
57
58 };
59
60 public: class CellMap : public IntrusiveMap<Name, Cell> {
61 // ****************************************************
62
63 public: typedef IntrusiveMap<Name, Cell> Inherit;
64
65 public: CellMap();
66
67 public: virtual Name _getKey(Cell* cell) const;
68 public: virtual unsigned _getHashValue(Name name) const;
69 public: virtual Cell* _getNextElement(Cell* cell) const;
70 public: virtual void _setNextElement(Cell* cell, Cell* nextCell) const;
71
72 };
73
74 // Attributes
75 // **********
76
77 private: DataBase* _dataBase;
78 private: Library* _library;
79 private: Name _name;
80 private: LibraryMap _libraryMap;
81 private: CellMap _cellMap;
82 private: Library* _nextOfLibraryLibraryMap;
83
84 // Constructors
85 // ************
86
87 protected: Library(DataBase* dataBase, Library* library, const Name& name);
88
89 public: static Library* create(DataBase* dataBase, const Name& name);
90 public: static Library* create(Library* library, const Name& name);
91
92 // Accessors
93 // *********
94
95 public: DataBase* getDataBase() const {return _dataBase;};
96 public: Library* getLibrary() const {return _library;};
97 public: const Name& getName() const {return _name;};
98 public: string getHierarchicalName () const;
99 public: Library* getLibrary(const Name& name) const {return _libraryMap.getElement(name);};
100 public: Libraries getLibraries() const {return _libraryMap.getElements();};
101 public: Cell* getCell(const Name& name) const {return _cellMap.getElement(name);};
102 public: Cells getCells() const {return _cellMap.getElements();};
103
104 // Updators
105 // ********
106
107 public: void setName(const Name& name);
108
109 // Others
110 // ******
111
112 protected: virtual void _postCreate();
113
114 protected: virtual void _preDestroy();
115
116 public: virtual string _getTypeName() const {return _TName("Library");};
117 public: virtual string _getString() const;
118 public: virtual Record* _getRecord() const;
119 public: virtual void _toJson( JsonWriter* ) const;
120 public: LibraryMap& _getLibraryMap() {return _libraryMap;};
121 public: CellMap& _getCellMap() {return _cellMap;};
122 public: Library* _getNextOfLibraryLibraryMap() const {return _nextOfLibraryLibraryMap;};
123
124 public: void _setNextOfLibraryLibraryMap(Library* library) {_nextOfLibraryLibraryMap = library;};
125
126 };
127
128
129 class JsonLibrary : public JsonDBo {
130 // *******************************
131
132 public: static void initialize();
133 public: JsonLibrary(unsigned long flags);
134 public: virtual string getTypeName() const;
135 public: virtual JsonLibrary* clone(unsigned long) const;
136 public: virtual void toData(JsonStack&);
137 };
138
139
140 } // End of Hurricane namespace.
141
142
143 INSPECTOR_P_SUPPORT(Hurricane::Library);
144 INSPECTOR_P_SUPPORT(Hurricane::Library::LibraryMap);
145 INSPECTOR_P_SUPPORT(Hurricane::Library::CellMap);
146
147 #endif // HURRICANE_LIBRARY
148
149
150 // ****************************************************************************************************
151 // Copyright (c) BULL S.A. 2000-2018, All Rights Reserved
152 // ****************************************************************************************************
Hurricane::Library::getLibrary
Library * getLibrary(const Name &name) const
Definition: Library.h:99
Hurricane::Library
Library description (API)
Definition: Library.h:38
Hurricane::Library::getCells
Cells getCells() const
Definition: Library.h:102
Hurricane::Name
Name description (API)
Definition: Name.h:35
Hurricane::Cell
The model (API).
Definition: Cell.h:66
Hurricane::Library::getCell
Cell * getCell(const Name &name) const
Definition: Library.h:101
Hurricane::DBo
DataBase object root class (API).
Definition: DBo.h:47
Hurricane::Library::Inherit
DBo Inherit
Definition: Library.h:44
Hurricane::GenericCollection
Generic Collection auto-pointer.
Definition: Collection.h:28
Hurricane::Library::setName
void setName(const Name &name)
Hurricane::DataBase
The whole DataBase (API).
Definition: DataBase.h:40
Hurricane::Library::getDataBase
DataBase * getDataBase() const
Definition: Library.h:95
Hurricane::Library::getLibrary
Library * getLibrary() const
Definition: Library.h:96
Hurricane
The namespace dedicated to Hurricane.
Definition: Generalities.dox:5
Hurricane::Library::getLibraries
Libraries getLibraries() const
Definition: Library.h:100
Hurricane::Library::create
static Library * create(DataBase *dataBase, const Name &name)
Hurricane::Library::getName
const Name & getName() const
Definition: Library.h:97