
 // -*- C++ -*-


 namespace CRL {

 /*! \class        Environment
  *  \brief        Holds all the Alliance environment variables.
  *
  *                This object is not to be used alone, but only as an attribute
  *                of AllianceFramework.
  *
  *                Although we constantly refer of the contents of this object
  *                as <em>environement variables</em>, they may (and should) be
  *                initialized through the Coriolis Python environement loader
  *                or legacy XML parsers.
  */


 /*! \function     Environment::Environment()
  *                Default constructor. All variables are initialized to their
  *                reasonable defaults.
  */
   
 /*! \function     Environment::~Environment()
  *                Destructor.
  */


 /*! \function     bool  Environment::isPOWER(const char* name) const;
  *  \Return       \true if \c name is recognized as a power net name.
  */
 /*! \function     bool  Environment::isGROUND(const char* name) const;
  *  \Return       \true if \c name is recognized as a ground net name.
  */
 /*! \function     bool  Environment::isCLOCK(const char* name) const;
  *  \Return       \true if \c name is recognized as a clock net name.
  */
 /*! \function     bool  Environment::isBLOCKAGE(const char* name) const;
  *  \Return       \true if \c name is recognized as a blockage net name.
  */
 /*! \function     bool  Environment::isPad(const char* name) const;
  *  \Return       \true if \c name is recognized as a pad cell name.
  */

   
 /*! \function     const std::string& Environment::getCORIOLIS_TOP() const;
  *  \Return       The Coriolis top installation directory.
  */
 /*! \function     const std::string& Environment::getDisplayStyle() const;
  *  \Return       The current display style name.
  */
 /*! \function     long Environment::getSCALE_X() const;
  *  \Return       The default scaling factor used if omitted in an AP file.
  */
 /*! \function     const std::string& Environment::getSYMBOLIC_TECHNOLOGY() const;
  *  \Return       The path toward the file holding the symbolic technology datas.
  */
 /*! \function     const std::string& Environment::getREAL_TECHNOLOGY() const;
  *  \Return       The path toward the file holding the real technology datas (GDS).
  */
 /*! \function     const std::string& Environment::getDISPLAY() const;
  *  \Return       The path toward the file holding the display datas.
  *                Data to initialize the various Hurricane::DrawingStyle.
  */
 /*! \function     const std::string& Environment::getIN_LO() const;
  *  \Return       The input format for logical (netlist) files.
  */
 /*! \function     const std::string& Environment::getIN_PH() const;
  *  \Return       The input format for physical (layout) files.
  */
 /*! \function     const std::string& Environment::getOUT_LO() const;
  *  \Return       The output format for logical (netlist) files.
  */
 /*! \function     const std::string& Environment::getOUT_PH() const;
  *  \Return       The output format for physical (layout) files.
  */
 /*! \function     const std::string& Environment::getPOWER() const;
  *  \Return       The pattern (regular expression) used to match for power nets names.
  */
 /*! \function     const std::string& Environment::getGROUND() const;
  *  \Return       The pattern (regular expression) used to match for ground nets names.
  */
 /*! \function     const std::string& Environment::getCLOCK() const;
  *  \Return       The pattern (regular expression) used to match for clock nets names.
  */
 /*! \function     const std::string& Environment::getBLOCKAGE() const;
  *  \Return       With the Hurricane database you cannot create physical components
  *                whithout a net. All segments used for signaling blockage area are
  *                grouped inside a unique net, which name is given by this variable.
  *
  *  \remark       Be sure to use a significant name which is not likely to collide
  *                with true nets.
  */
 /*! \function     const std::string& Environment::getPad() const;
  *  \Return       The pattern (regular expression) used to match for pad cell names.
  */
 /*! \function     const std::string& Environment::getCATALOG() const;
  *  \Return       The name of the auxiliary file in library directories holding the
  *                meta-informations about the cells.
  */
 /*! \function     SearchPath& Environment::getLIBRARIES();
  *  \Return       The ordered list of libraries, under the form of a serch path.
  */
 /*! \function     string  Environment::getLIBRARYPath(size_t i);
  *  \Return       The path of library at index \c i in the search path.
  */
 /*! \function     std::string  Environment::getPrint() const;
  *  \Return       A nicely formatted string to resume the current environements
  *                settings. Mainly for verbose outputs on ttys.
  */


 /*! \function     void  Environment::validate() const;
  *                Check for the coherency of the various environement variables.
  *                Throw an exception if something incoherent is found.
  */
 /*! \function     void  Environment::loadFromXml(const std::string& path="", bool warnNotFound=true);
  *                Load the environment from the XML file \c path. Fails silently if
  *                \c warnNotFound is set to \true.
  *
  *  \remark       This method is kept for backward compatibility. Initialisation
  *                is now done through Python helpers.
  */
 /*! \function     void  Environment::loadFromShell();
  *                Load the environment from UNIX environement.
  */
 /*! \function     void  Environment::setDisplayStyle(const char* name);
  *                Sets the current display style to \c name.
  */
 /*! \function     void Environment::setSCALE_X(long value);
  *                Sets the default scaling factor used if omitted in an AP file.
  */
 /*! \function     void Environment::setSYMBOLIC_TECHNOLOGY(const char* value);
  *                Sets the path toward the file holding the symbolic technology datas.
  */
 /*! \function     void Environment::setREAL_TECHNOLOGY(const char* value);
  *                Sets the path toward the file holding the real technology datas (GDS).
  */
 /*! \function     void Environment::setDISPLAY(const char* value);
  *                Sets the path toward the file holding the display datas.
  *                Data to initialize the various Hurricane::DrawingStyle.
  */
 /*! \function     void Environment::setIN_LO(const char* value);
  *                Sets the input format for logical (netlist) files.
  */
 /*! \function     void Environment::setIN_PH(const char* value);
  *                Sets the input format for physical (layout) files.
  */
 /*! \function     void Environment::setOUT_LO(const char* value);
  *                Sets the output format for logical (netlist) files.
  */
 /*! \function     void Environment::setOUT_PH(const char* value);
  *                Sets the output format for physical (layout) files.
  */
 /*! \function     void Environment::setPOWER(const char* value);
  *                Sets the pattern (regular expression) used to match for power nets names.
  */
 /*! \function     void Environment::setGROUND(const char* value);
  *                Sets the pattern (regular expression) used to match for ground nets names.
  */
 /*! \function     void Environment::setCLOCK(const char* value);
  *                Sets the pattern (regular expression) used to match for clock nets names.
  */
 /*! \function     void Environment::setBLOCKAGE(const char* value);
  *                With the Hurricane database you cannot create physical components
  *                whithout a net. All segments used for signaling blockage area are
  *                grouped inside a unique net, which name is given by this variable.
  *
  *  \remark       Be sure to use a significant name which is not likely to collide
  *                with true nets.
  */
 /*! \function     void Environment::setPad(const char* value);
  *                Sets the pattern (regular expression) used to match for pad cell names.
  */
 /*! \function     void Environment::setCATALOG(const char* value);
  *                Sets the name of the auxiliary file in library directories holding the
  *                meta-informations about the cells.
  */
 /*! \function     void Environment::setWORKING_LIBRARY(const char* value);
  *                Sets the directory in which create cells will be saved.
  */
 /*! \function     void Environment::addSYSTEM_LIBRARY(const char* value, const char* libName, unsigned int mode=Append);
  *  \param        value    the path (directory) in which the library is located.
  *  \param        libName  the name under which to register the library.
  *  \param        mode     the insertion mode.
  *                Adds a Cell library to the search path.
  */


 /*! \enum         Environment::AddMode
  *                This enumeration defines the way libraries are added to the
  *                already existing table.
  */
 /*! \var          Environment::AddMode  Environment::Append;
  *                The library is appended to the search list.
  */
 /*! \var          Environment::AddMode  Environment::Prepend;
  *                The library is prepended to the search list.
  */
 /*! \var          Environment::AddMode  Environment::Replace;
  *                If a library of same name already exists, it's discarted
  *                and this one is put in it's place in the search order.
  *                Otherwise it is appended.
  */

 }
