// -*- C++ -*- namespace Hurricane { /*! \class Plug * \brief Plug description (\b API) * * \section secPlugIntro Introduction * * A plug can be assimilated to a "logical port instance" : it * designates both the concerned instance and the net of the * model cell instanciated to which it is connected. This net, * which must be an external net, will be named "master * net" because it is a net of the instance master cell * (notice that this net can be asimilated to a "logical port"). * * A plug is unique, that is, for a given instance there is one * and only one plug refering to a given master net. * * \caution When created, an instance creates all plugs corresponding to * the external nets of its master cell. So, some plugs may * exist without being connected. Plugs are the only components * which have this characteristic. * * \remark Plugs being completely managed by the system, you can't * define sub-types of plugs. * * * \section secPlugConstructors Constructors \& Destructors * * Plugs being completely managed by the system, there is no * constructor nor destructor provided. * * * \section secPlugPredefinedFilters Predefined filters * * * Hurricane::Plug::getIsConnectedFilter * Hurricane::Plug::getIsUnconnectedFilter */ /*! \typedef Plug::Inherit * Useful for calling upon methods of the base class without * knowing it. */ /*! \function Instance* Plug::getInstance() const; * \Return the instance to which belongs the plug. */ /*! \function Net* Plug::getMasterNet() const; * \Return the external net referenced by the plug in the master cell of * its instance. * * \remark Don't mistake with getNet() which returns the net owning the * plug (or NULL if is unconnected). */ /*! \function bool Plug::isConnected() const; * \Return \true if the plug is connected, else \false. * * \remark A plug is connected if the call upon getNet() doesn't * return NULL. */ /*! \function void Plug::setNet(Net* net); * This method allows to connect or change the net of a plug. * * \caution An exception is thrown if the net owner cell differs from the * plug owner cell, or if there are components (contact, * segments, ...) currently anchored on the plug. * * \remark The properties attached to this plug and its occurences are * left unchanged. */ //! \name Plug Collection // \{ /*! \typedef Plugs * Generic collection representing a set of plugs. */ /*! \typedef PlugLocator * Generic locator for traversing a collection of plugs. */ /*! \typedef PlugFilter * Generic filter allowing to select a subset of plugs matching * some criteria. */ /*! \def for_each_plug(plug, plugs) * Macro for visiting all the plugs of a collection of plugs. */ // \} /*! \function PlugFilter Plug::getIsConnectedFilter(); * \Return a filter for selecting only connected plugs. */ /*! \function PlugFilter Plug::getIsUnconnectedFilter(); * \Return a filter for selecting only unconnected plugs. */ }