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
24namespace Hurricane {
25
26class Cell;
27class SharedPath;
28
29
30
31// ****************************************************************************************************
32// Path declaration
33// ****************************************************************************************************
34
35class 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
114INSPECTOR_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
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
static void setNameSeparator(char nameSeparator)
Instance * getTailInstance() const
Path(Instance *headInstance, const Path &tailPath)
Cell * getMasterCell() const
bool operator<(const Path &path) const
Path(Cell *cell, const string &pathName)
static char getNameSeparator()
Path(const Path &path)
string getName() const
Path(Instance *instance)
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
Contains Almost Everything.
Definition BasicLayer.h:39
GenericCollection< Instance * > Instances
Definition Instances.h:35


Generated by doxygen 1.13.2 on Fri Sep 27 2024 Return to top of page
Hurricane VLSI Database Copyright © 2000-2020 Bull S.A. All rights reserved