/* Copyright 2008, 2009, 2010 by the Oxford University Computing Laboratory
This file is part of HermiT.
HermiT 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 3 of the License, or
(at your option) any later version.
HermiT 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 HermiT. If not, see <http://www.gnu.org/licenses/>.
*/
package org.semanticweb.HermiT.tableau;
import java.io.Serializable;
import java.util.Arrays;
public final class UnionDependencySet implements DependencySet,Serializable{
private static final long serialVersionUID=8296150535316233960L;
protected int m_numberOfConstituents;
protected DependencySet[] m_dependencySets;
public UnionDependencySet(int numberOfConstituents) {
m_dependencySets=new DependencySet[numberOfConstituents];
m_numberOfConstituents=numberOfConstituents;
}
public boolean containsBranchingPoint(int branchingPoint) {
for (int index=m_numberOfConstituents-1;index>=0;--index)
if (m_dependencySets[index].containsBranchingPoint(branchingPoint))
return true;
return false;
}
public int getMaximumBranchingPoint() {
int maximumSoFar=m_dependencySets[0].getMaximumBranchingPoint();
for (int index=m_numberOfConstituents-1;index>=1;--index)
maximumSoFar=Math.max(maximumSoFar,m_dependencySets[index].getMaximumBranchingPoint());
return maximumSoFar;
}
public boolean isEmpty() {
for (int index=m_numberOfConstituents-1;index>=0;--index)
if (!m_dependencySets[index].isEmpty())
return false;
return true;
}
public void clearConstituents() {
Arrays.fill(m_dependencySets,null);
m_numberOfConstituents=0;
}
public void addConstituent(DependencySet constituent) {
if (m_numberOfConstituents==m_dependencySets.length) {
DependencySet[] newDependencySets=new DependencySet[m_numberOfConstituents*3/2];
System.arraycopy(m_dependencySets,0,newDependencySets,0,m_dependencySets.length);
m_dependencySets=newDependencySets;
}
m_dependencySets[m_numberOfConstituents++]=constituent;
}
}