/* $RCSfile$
* $Author$
* $Date$
* $Revision$
*
* Copyright (C) 2007 Miguel Rojasch <miguelrojasch@users.sf.net>
*
* Contact: cdk-devel@lists.sourceforge.net
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package org.openscience.cdk.interfaces;
/**
* Class defining a molecular formula object. It maintains
* a list of list IMoleculaFormula.<p>
*
* Examples:
* <ul>
* <li><code>[C5H5]-</code></li>
* <li><code>C6H6</code></li>
* <li><code><sup>12</sup>C5</sup><sup>13</sup>CH6</code></li>
* </ul>
*
* @cdk.module interfaces
* @author miguelrojasch
* @cdk.created 2007-11-20
* @cdk.keyword molecular formula
*/
public interface IMolecularFormulaSet {
/**
* Adds all molecularFormulas in the MolecularFormulaSet to this chemObject.
*
* @param formulaSet The MolecularFormulaSet
*/
public void add(IMolecularFormulaSet formulaSet);
/**
* Adds an IMolecularFormula to this chemObject.
*
* @param formula The IMolecularFormula to be added to this chemObject
*/
public void addMolecularFormula(IMolecularFormula formula);
/**
*
* Returns the IMolecularFormula at position <code>number</code> in the
* chemObject.
*
* @param position The position of the MolecularFormula to be returned.
* @return The IMolecularFormula at position <code>number</code> .
*/
public IMolecularFormula getMolecularFormula(int position);
/**
* Returns the array of IMolecularFormula of this chemObject.
*
* @return The array of IMolecularFormulas of this chemObject
*
* @see #addMolecularFormula(IMolecularFormula)
*/
public Iterable<IMolecularFormula> molecularFormulas();
/**
* Returns the number of MolecularFormulas in this IMolecularFormulaSet.
*
* @return The number of MolecularFormulas in this IMolecularFormulaSet
*/
public int size();
/**
* True, if the IMolecularFormulaSet contains the given IMolecularFormula object.
*
* @param formula The IMolecularFormula this IMolecularFormulaSet is searched for
* @return True, if the IMolecularFormulaSet contains the given formula object
*/
public boolean contains(IMolecularFormula formula);
/**
* Removes the given IMolecularFormula from the IMolecularFormulaSet.
*
* @param formula The IMolecularFormula to be removed
*/
public void removeMolecularFormula(IMolecularFormula formula);
/**
* Removes the IMolecularFormula at the given position from the IMolecularFormulaSet.
*
* @param position The position of the IMolecularFormula to be removed.
*/
public void removeMolecularFormula(int position);
/**
* Removes all IMolecularFormula of this IMolecularFormulaSet.
*/
public void removeAllMolecularFormulas();
/**
* Clones this IMolecularFormulaSet object and its content.
*
* @return The cloned object
*/
public Object clone() throws CloneNotSupportedException ;
/**
* Returns a ChemObjectBuilder for the data classes that extend
* this class.
*
* @return The IChemObjectBuilder matching this IChemObject
*/
public IChemObjectBuilder getBuilder();
}