// -*- C++ -*-

namespace OpenChams {
/*! \class Circuit
 *
 *  This class is the root class whihch means that having this object in hand allows to get/set any information contained in the OpenChams file parsed/drived.
 */

/*! \fn Circuit::Circuit(Name name, Name techno)
 *   \brief creates a new technology
 *
 *   \param  name   the name of the circuit.
 *   \param  techno the technology used to descibe the circuit.
 */

/*! \fn inline Name Circuit::getName()
 *   \brief returns the name of the circuit.
 */

/*! \fn inline Name Circuit::getTechno()
 *   \brief returns the technology.
 */

/*! \fn inline Netlist* Circuit::getNetlist()
 *   \brief returns the Netlist object associated to the circuit or NULL if it does not exist.
 */

/*! \fn inline Schematic* Circuit::getSchematic()
 *   \brief returns the Schematic object associated to the circuit or NULL if it does not exist.
 */

/*! \fn inline Sizing* Circuit::getSizing()
 *   \brief returns the Sizing object associated to the circuit or NULL if it does not exist.
 */

/*! \fn inline Layout* Circuit::getLayout()
 *   \brief returns the Layout object associated to the circuit or NULL if it does not exist.
 */

/*! \fn inline double Circuit::getValue(Name name)
 *   \brief returns the value of the circuit's parameter named \c name.
 *
 *   \param name the name of the parameter.
 */

/*! \fn inline void Circuit::addParameter(Name name, double value)
 *   \brief adds a parameter to the circuit.
 *
 *   \param name  the name of the parameter.
 *   \param value the value of the parameter.
 */

/*! \fn inline void Circuit::addParameter(Name name, std::string equation)
 *   \brief adds an equation parameter to the circuit.
 *
 *   \param name     the name of the parameter.
 *   \param equation the equation string of the parameter.
 */

/*! \fn inline Parameters Circuit::getParameters()
 *   \brief returns all circuit's parameters.
 */

/*! \fn inline void Circuit::addSubCircuitPath(std::string path)
 *   \brief adds a path to circuit's subcircuit paths list.
 *
 *   SubCircuitPaths are used to define where to search the xml file describing subcircuits used in current circuit.
 */

/*! \fn void Circuit::addSimulModel(unsigned id, SimulModel::Base base, SimulModel::Version version, std::string filePath)
 *   \brief adds a SimulModel to the circuit.
 *
 *   \param id       the simulation model id.
 *   \param base     the simulation model base.
 *   \param version  the simulation model version.
 *   \param filePath the path to the netlist used by simulation model.
 */

/*! \fn inline void Circuit::setSizing(Sizing* sizing)
 *   \brief sets the circuit's sizing.
 *
 *   \param sizing the sizing of the circuit.
 */

/*! \fn inline void Circuit::setLayout(Layout* layout)
 *   \brief sets the circuit's layout.
 *
 *   \param layout the layout of the circuit.
 */

/*! \fn Netlist* Circuit::createNetlist()
 *   \brief creates a new empty netlist and associates it to the circuit.
 *
 *   \return the newly created netlist.
 */

/*! \fn Schematic* Circuit::createSchematic()
 *   \brief creates a new empty schematic and associates it to the circuit.
 *
 *   \return the newly created schematic.
 */

/*! \fn Sizing* Circuit::createSizing(;
 *   \brief creates a new empty sizing and associates it to the circuit.
 *
 *   \return the newly created sizing.
 */

/*! \fn Layout* Circuit::createLayout()
 *   \brief creates a new empty layout and associates it to the circuit.
 *
 *   \return the newly created layout.
 */

/*! \fn bool Circuit::writeToFile(std::string filePath)
 *   \brief writes the database to file.
 *
 *   \param filePath the destination file.
 */

/*! \fn static Circuit* Circuit::readFromFile(const std::string filePath)
 *   \brief creates and returns a Circuit object based on a database source file.
 *
 *   \param filePath the source file name.
 *
 *   \return the newly created Circuit.
 */
 
}