Hurricane VLSI Database


Path.h
1 // ****************************************************************************************************
2 // File: ./hurricane/Path.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 #pragma once
21 #include "hurricane/Instances.h"
22 #include "hurricane/Transformation.h"
23 
24 namespace Hurricane {
25 
26 class Cell;
27 class SharedPath;
28 
29 
30 
31 // ****************************************************************************************************
32 // Path declaration
33 // ****************************************************************************************************
34 
35 class Path {
36 // *******
37 
38 // Attributes
39 // **********
40 
41  private: SharedPath* _sharedPath;
42 
43 // Constructors
44 // ************
45 
46  public: Path(SharedPath* sharedPath = NULL);
47  public: Path(Instance* instance);
48  public: Path(Instance* headInstance, const Path& tailPath);
49  public: Path(const Path& headPath, Instance* tailInstance);
50  public: Path(Cell* cell, const string& pathName);
51  public: Path(const Path& headPath, const Path& tailPath);
52  public: Path(const Path& path);
53 
54 // Destructor
55 // **********
56 
57  public: ~Path();
58 
59 // Operators
60 // *********
61 
62  public: Path& operator=(const Path& path);
63 
64  public: bool operator==(const Path& path) const;
65  public: bool operator!=(const Path& path) const;
66 
67  public: bool operator<(const Path& path) const; // for stl set -> less predicate
68 
69 // Accessors
70 // *********
71 
72  public: static char getNameSeparator();
73 
74  public: Instance* getHeadInstance() const;
75  public: Path getTailPath() const;
76  public: Path getHeadPath() const;
77  public: Instance* getTailInstance() const;
78  public: string getName() const;
79  public: Cell* getOwnerCell() const;
80  public: Cell* getMasterCell() const;
81  public: Instances getInstances() const;
82  public: Transformation getTransformation(const Transformation& transformation = Transformation()) const;
83 
84 // Predicates
85 // **********
86 
87  public: bool isEmpty() const;
88  public: int32_t contains(Instance*) const;
89 
90 // Updators
91 // ********
92 
93  public: void makeEmpty();
94  public: static void setNameSeparator(char nameSeparator);
95 
96 // Others
97 // ******
98 
99  public: string getCompactString(bool showBrackets=true) const;
100  public: string getJsonString(unsigned long flags) const;
101  public: string _getTypeName() const { return _TName("Occurrence"); };
102  public: string _getString() const;
103  public: Record* _getRecord() const;
104 
105  public: SharedPath* _getSharedPath() const {return _sharedPath;};
106 
107 };
108 
109 
110 
111 } // End of Hurricane namespace.
112 
113 
114 INSPECTOR_PR_SUPPORT(Hurricane::Path);
115 
116 
117 // ****************************************************************************************************
118 // Copyright (c) BULL S.A. 2000-2018, All Rights Reserved
119 // ****************************************************************************************************
The model (API).
Definition: Cell.h:64
Generic Collection auto-pointer.
Definition: Collection.h:235
Instance description (API)
Definition: Instance.h:35
Path description (API)
Definition: Path.h:35
Cell * getOwnerCell() const
Path & operator=(const Path &path)
bool operator==(const Path &path) const
bool operator!=(const Path &path) const
Instance * getTailInstance() const
Path(Instance *headInstance, const Path &tailPath)
Cell * getMasterCell() const
static void setNameSeparator(char nameSeparator)
bool operator<(const Path &path) const
Path(Cell *cell, const string &pathName)
Path(const Path &path)
string getName() const
Path(Instance *instance)
static char getNameSeparator()
Path(SharedPath *sharedPath=NULL)
Path(const Path &headPath, Instance *tailInstance)
Path getHeadPath() const
bool isEmpty() const
Path getTailPath() const
Transformation getTransformation(const Transformation &transformation=Transformation()) const
Instances getInstances() const
Instance * getHeadInstance() const
Transformation description (API)
Definition: Transformation.h:32
The namespace dedicated to Hurricane.
Definition: Generalities.dox:5


Generated by doxygen 1.9.1 on Thu Aug 11 2022 Return to top of page
Hurricane VLSI Database Copyright © 2000-2020 Bull S.A. All rights reserved