# Hurricane Documentation

# Hurricane VLSI Database

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

Occurrence description (API) More...

## Public Member Functions

| Occurrence (const Entity *entity=NULL)
| Occurrence (const Entity *entity, const Path &path)
| Occurrence (const Occurrence &occurrence)
Occurrence & | operator= (const Occurrence &occurrence)
bool | operator== (const Occurrence &occurrence) const
bool | operator!= (const Occurrence &occurrence) const
bool | operator< (const Occurrence &occurrence) const
Entity * | getEntity () const
Path | getPath () const
Cell * | getOwnerCell () const
Cell * | getMasterCell () const
Property * | getProperty (const Name &name) const
Properties | getProperties () const
Box | getBoundingBox () const
bool | isValid () const
bool | hasProperty () const
void | put (Property *property)
void | remove (Property *property)
void | removeProperty (const Name &name)
void | clearProperties ()

## Detailed Description

Occurrence description (API)

# Introduction

Occurrences are objects providing the capability to designate any entity of the hierarchical assembly as if this one was virtually unfolded.

For that purpose they handle, on one side the referenced entity and on the other side the hierarchical instanciation path which refers to the cell containing this entity.

Those occurrences are handy, volatile and very light objects. Two different occurrences may designate the same entity of the virtually unfolded data structure, simplifying the creation and deletion of those objects.

Anyway it is possible to attach properties to each occurrence.

Of course, those properties are securely stored in order to access them unambiguously.

Therefore, if a property is placed on an occurrence, we have access to it from a different occurrence provided it designates the same entity of the virtually unfolded data structure.

# Terminology

An occurrence is said invalid if it refers no entity.

When it is valid, an occurrence has : an OwnerCell which is either the cell owning the path if this one is non void, else the cell owning the entity itself. and a MasterCell which is always the cell owning the entity.

# Remarks

All constructors, the destructor and the different operators are very efficient.

## Constructor & Destructor Documentation

## ◆ Occurrence() [1/3]

Hurricane::Occurrence::Occurrence | ( | const Entity * | entity = `NULL` | ) |

Builds an occurrence refering to an entity through a void path, in some way it is equivalent to the entity itself.

Remarks
  If the entity is null the occurrence is invalid.

## ◆ Occurrence() [2/3]

Hurricane::Occurrence::Occurrence | ( | const Entity * | entity,
|  | const Path & | path
| ) |  |

Builds an occurrence refering to an entity through a path (possibly void).

Caution: If the entity is null or if the path is uncompatible with the
  entity, an exception is thrown.

Remarks
  The entity and the path are compatible if the path is void or if the master cell of the path is the cell owning the entity.

## ◆ Occurrence() [3/3]

Hurricane::Occurrence::Occurrence | ( | const Occurrence & | Occurrence | ) |

Copy constructor.

## Member Function Documentation

## ◆ operator=()

Occurrence & Hurricane::Occurrence::operator= | ( | const Occurrence & | occurrence | ) |

Assignment operator.

## ◆ operator==()

bool Hurricane::Occurrence::operator== | ( | const Occurrence & | occurrence | ) | const

Two occurrences are equal if both are valid and refer to the same entity and have indentical instanciation pathes.

## ◆ operator!=()

bool Hurricane::Occurrence::operator!= | ( | const Occurrence & | occurrence | ) | const

Two occurrences are different if a least one is either invalid or both don't refer to the same entity or have differing instanciation pathes.

## ◆ operator<()

bool Hurricane::Occurrence::operator< | ( | const Occurrence & | occurrence | ) | const

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

## ◆ getEntity()

Entity * Hurricane::Occurrence::getEntity | ( |  | ) | const

inline

Returns: the referenced entity or NULL if the occurrence is invalid.

## ◆ getPath()

const Path & Hurricane::Occurrence::getPath | ( |  | ) | const

inline

Returns: the hierarchical instanciation path of the occurrence (possibly void, but always void when the occurrence id invalid).

## ◆ getOwnerCell()

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

Returns: the owner cell of the occurrence or NULL if the occurrence is invalid.

Referenced by Hurricane::HyperNet::getCell().

## ◆ getMasterCell()

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

Returns: the cell owning the referenced entity or NULL if the occurrence is invalid.

## ◆ getProperty()

Property * Hurricane::Occurrence::getProperty | ( | const Name & | name | ) | const

Returns: the property named `<name>` if it exists or NULL if not (or if the occurrence is invalid).

## ◆ getProperties()

Properties Hurricane::Occurrence::getProperties | ( |  | ) | const

Returns: the collection of properties attached to the occurrence (always empty if the occurrence is invalid).

## ◆ getBoundingBox()

Box Hurricane::Occurrence::getBoundingBox | ( |  | ) | const

Returns: the bounding box of the occurrence (within the coordinate sysem of the owner cell) if it is valid or else the empty box.

## ◆ isValid()

bool Hurricane::Occurrence::isValid | ( |  | ) | const

inline

Returns: true if the occurrence is valid, else false (the occurrence refers no entity).

## ◆ hasProperty()

bool Hurricane::Occurrence::hasProperty | ( |  | ) | const

Returns: true if the occurrence owns some property else false.

## ◆ put()

void Hurricane::Occurrence::put | ( | Property * | property | ) |

Adds the property `<property>` to the occurrence property set. The property being named, if another property already exists in the set it will be, in a first step, detached from this set.

Remarks
  Does nothing if the occurrence already owns this property object.

Caution: If the occurrence is invalid or the property null, an
  exception is thrown.

## ◆ remove()

void Hurricane::Occurrence::remove | ( | Property * | property | ) |

removes the property `<property>` from the occurrence property set.

Remarks
  Does nothing if the occurrence doesn't own this property object.

Caution: If the occurrence is invalid or the property null, an
  exception is thrown.

## ◆ removeProperty()

void Hurricane::Occurrence::removeProperty | ( | const Name & | name | ) |

removes the property of name `<name>` if it exists.

Caution: If the occurrence is invalid an exception is thrown.

## ◆ clearProperties()

void Hurricane::Occurrence::clearProperties | ( |  | ) |

removes all properties attached to the occurrence. As a consequence, the occurrence is deleted.

Caution: If the occurrence is invalid an exception is thrown.

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

- Occurrence.h
- Occurrence.dox