/** FeatureGenSelectiveCache.java * Created on Jul 19, 2005 * * @author Sunita Sarawagi * @since 1.2 * @version 1.3 */ package iitb.Model; import gnu.trove.map.hash.TIntIntHashMap; import iitb.CRF.DataSequence; import iitb.CRF.Feature; import iitb.CRF.FeatureGenCache; /** * @author sunita * */ public class FeatureGenSelectiveCache extends FeatureGenCache { FeatureGenImpl fgenImpl; /** * @param fgen */ public FeatureGenSelectiveCache(FeatureGenImpl fgen, boolean edgeFeaturesXInd) { super(fgen,edgeFeaturesXInd); fgenImpl = fgen; } public boolean hasNext() { return super.hasNext()?true:fgenImpl.hasNext(); } /* (non-Javadoc) * @see iitb.CRF.FeatureGenerator#next() */ public Feature next() { if (firstScan) { boolean needsCaching = fgenImpl.currentFeatureType.needsCaching(); Feature f = fgenImpl.next(); if (needsCaching) cacheFeature(f); return f; } else { if (super.hasNext()) return super.next(); return fgenImpl.next(); } } TIntIntHashMap idIndexMap = new TIntIntHashMap(); int prevId=-1; /* (non-Javadoc) * @see iitb.CRF.FeatureGeneratorNested#startScanFeaturesAt(iitb.CRF.DataSequence, int, int) */ protected void startScanFeaturesAt(DataSequence data, int prevPos, int pos, boolean nested) { super.startScanFeaturesAt(data,prevPos,pos,nested); if (firstScan) { ; } else { if (nested) fgenImpl.startScanFeaturesAtOnlyNonCached(data,prevPos,pos); else fgenImpl.startScanFeaturesAtOnlyNonCached(data,pos); } } }