# Hurricane Documentation

# Hurricane VLSI Database

List of all members | Public Member Functions | Static Public Member Functions
Hurricane::Path Class Reference

Path description (API) More...

## Public Member Functions

| Path (SharedPath *sharedPath=NULL)
| Path (Instance *instance)
| Path (Instance *headInstance, const Path &tailPath)
| Path (const Path &headPath, Instance *tailInstance)
| Path (Cell *cell, const string &pathName)
| Path (const Path &path)
| ~Path ()
Path & | operator= (const Path &path)
bool | operator== (const Path &path) const
bool | operator!= (const Path &path) const
bool | operator< (const Path &path) const
Instance * | getHeadInstance () const
Path | getTailPath () const
Path | getHeadPath () const
Instance * | getTailInstance () const
string | getName () const
Cell * | getOwnerCell () const
Cell * | getMasterCell () const
Instances | getInstances () const
Transformation | getTransformation (const Transformation &transformation=Transformation()) const
bool | isEmpty () const

## Static Public Member Functions

static char | getNameSeparator ()
static void | setNameSeparator (char nameSeparator)

## Detailed Description

Path description (API)

# Introduction

Pathes are objects representing an ordered sequence of instances through the hierarchy.

They are represented by a head instance which defines the path start and tail path which defines the remaining path with respect to the cell model referenced by the head instance.

terminology A non void path begins by an instance : this instance pertains to the top caller cell, named OwnerCell. On the other hand the path ends by an instance (which may be the same) : this instance refers to its model which will be named the MasterCell.

# Remarks

The different constructors (appart the one which analyses the names of the path) as welle as the destructor and the different operators are very efficient because the tail pathes being shared, only pointer assignments and pointer comparisons are realized.

## Constructor & Destructor Documentation

## ◆ Path() [1/6]

Hurricane::Path::Path | ( | SharedPath * | sharedPath = `NULL` | ) |

Default constructor : the path is then void.

Remarks
  This path has no instance and will be the tail terminal path of any other path.

## ◆ Path() [2/6]

Hurricane::Path::Path | ( | Instance * | instance | ) |

Builds the path made up of this unique instance.

Caution: If the instance is null an exception is thrown.

## ◆ Path() [3/6]

Hurricane::Path::Path | ( | Instance * | headInstance,
|  | const Path & | tailPath
| ) |  |

Builds the path with head instance `<headInstance>` and tail path `<tailPath>`.

Caution: If the instance is null, or if the tail path is not
  compatible with this head instance, an exception is thrown.

Remarks
  The head instance and the tail path are compatible if the tail path is void or if the owner cell of the tail path is the model cell referenced by the head instance.

## ◆ Path() [4/6]

Hurricane::Path::Path | ( | const Path & | headPath,
|  | Instance * | tailInstance
| ) |  |

Builds the path with head path `<headPath>` and tail instance `<tailInstance>`.

Caution: If the tail instance is null, or if the head path is not
  compatible with this tail instance, an exception is thrown.

Remarks
  The tail instance and the head path are compatible if the owner cell of the tail instance is the master cell of the head path (which is recall it, the model cell referenced by the last instance of the head path) or if the head path is empty (then compatible with any non null instance).

## ◆ Path() [5/6]

Hurricane::Path::Path | ( | Cell * | cell,
|  | const string & | pathName
| ) |  |

Builds the path representing the logic sequence of instance names described as a character string. Each instance name is separated from the preceeding one by a special delimiter (which can be defined with the function setPathNameSeparator to be defined later). The cell given in argument defines where sarts the search (at each new instance identified, we go to its model cell to pursue the search within the `<pathName>`).

Caution: If the cell is null or if the name doesn't correspond to an
  existing hierarchical instanciation path an exception is thrown.

## ◆ Path() [6/6]

Hurricane::Path::Path | ( | const Path & | path | ) |

Copy constructor.

## ◆ ~Path()

Hurricane::Path::~Path | ( |  | ) |

No description.

## Member Function Documentation

## ◆ operator=()

Path & Hurricane::Path::operator= | ( | const Path & | path | ) |

Assignment operator.

## ◆ operator==()

bool Hurricane::Path::operator== | ( | const Path & | path | ) | const

Two pathes are equal if they have the same head instance and if their tail pathes are equal.

## ◆ operator!=()

bool Hurricane::Path::operator!= | ( | const Path & | path | ) | const

Two pathes are differents either if they have different head instance or if the tail pathes differ.

## ◆ operator<()

bool Hurricane::Path::operator< | ( | const Path & | path | ) | const

This comparator has no particular signification. It is just defined to be abble to use a STL set of pathes which need a comparator.

## ◆ getNameSeparator()

char Hurricane::Path::getNameSeparator | ( |  | ) |

static

Returns: the special character used as a separator between the instance names of a path. By default it is the '.' (point).

## ◆ getHeadInstance()

Instance * Hurricane::Path::getHeadInstance | ( |  | ) | const

Returns: the head instance or NULL if the path is void.

## ◆ getTailPath()

Path Hurricane::Path::getTailPath | ( |  | ) | const

Returns: the tail path or a void path if the path has 1 or 0 hierarchical depth.

## ◆ getHeadPath()

Path Hurricane::Path::getHeadPath | ( |  | ) | const

Returns: the head path or a void path if the path has 1 or 0 hierarchical depth.

## ◆ getTailInstance()

Instance * Hurricane::Path::getTailInstance | ( |  | ) | const

Returns: the tail instance or NULL if the path is void.

## ◆ getName()

string Hurricane::Path::getName | ( |  | ) | const

Returns: a string defined by the concatenation of instance names separated by a special character (which can be set up by the function setPathNameSeparator).

Returns: the string "" when the path is void.

## ◆ getOwnerCell()

Cell * Hurricane::Path::getOwnerCell | ( |  | ) | const

Retruns the cell owning the head instance or NULL if the path is void.

## ◆ getMasterCell()

Cell * Hurricane::Path::getMasterCell | ( |  | ) | const

Returns: the master cell referenced by the last instance of the path or NULL if the path is void.

## ◆ getInstances()

Instances Hurricane::Path::getInstances | ( |  | ) | const

Returns: the collection of instances defining the path.

## ◆ getTransformation()

Transformation Hurricane::Path::getTransformation | ( | const Transformation & | transformation = `Transformation()` | ) | const

Returns: the transform resulting of the composition of all transforms associated with the different instances of the path, applied to the given `<transformation>`.

## ◆ isEmpty()

bool Hurricane::Path::isEmpty | ( |  | ) | const

Returns: true if the path is void and else false.

## ◆ setNameSeparator()

void Hurricane::Path::setNameSeparator | ( | char | separator | ) |

static

This function sets the special character used as a separator between the instance names of a path (choose it carrefully, it must not appear in any instance name).

The documentation for this class was generated from the following files:

- Path.h
- Path.dox