public synchronized Object2ObjectFunction<Interval, S> prefixMap() { if ( prefixMap == null ) { prefixMap = map.prefixMap(); if ( prefixMap != null ) prefixMap = Object2ObjectFunctions.synchronize( prefixMap, this ); } return prefixMap; }
public PrefixMapWrapper(final it.unimi.dsi.util.PrefixMap<T> prefixMap) { super(prefixMap); rangeMap = new AbstractObject2ObjectFunction<CharSequence, LongInterval>() { private static final long serialVersionUID = 1L; private final Object2ObjectFunction<CharSequence, Interval> prefixMapRangeMap = prefixMap.rangeMap(); @Override public LongInterval get(final Object key) { final Interval interval = prefixMapRangeMap.get(key); return LongInterval.valueOf(interval.left, interval.right); } @Override public boolean containsKey(final Object key) { return prefixMapRangeMap.containsKey(key); } @Override public int size() { return prefixMapRangeMap.size(); } }; }
outputStream.writeLong( prefixMap.getLong( s.readSelfDelimUTF8( (InputStream)inputStream ) ) ); outputStream.flush(); break; new MutableString( prefixMap.list().get( inputStream.readInt() ) ).writeSelfDelimUTF8( (OutputStream)outputStream ); outputStream.flush(); break; outputStream.writeBoolean( prefixMap.list() != null ); outputStream.flush(); break; interval = prefixMap.rangeMap().get( s.readSelfDelimUTF8( (InputStream)inputStream ) ); outputStream.writeInt( interval.left ); outputStream.writeInt( interval.right ); new MutableString( prefixMap.prefixMap().get( Interval.valueOf( inputStream.readInt(), inputStream.readInt() ) ) ).writeSelfDelimUTF8( (OutputStream)outputStream ); outputStream.flush(); break; outputStream.writeBoolean( prefixMap.prefixMap() != null ); outputStream.flush(); break;
outputStream.writeLong( prefixMap.getLong( s.readSelfDelimUTF8( (InputStream)inputStream ) ) ); outputStream.flush(); break; new MutableString( prefixMap.list().get( inputStream.readInt() ) ).writeSelfDelimUTF8( (OutputStream)outputStream ); outputStream.flush(); break; outputStream.writeBoolean( prefixMap.list() != null ); outputStream.flush(); break; interval = prefixMap.rangeMap().get( s.readSelfDelimUTF8( (InputStream)inputStream ) ); outputStream.writeInt( interval.left ); outputStream.writeInt( interval.right ); new MutableString( prefixMap.prefixMap().get( Interval.valueOf( inputStream.readInt(), inputStream.readInt() ) ) ).writeSelfDelimUTF8( (OutputStream)outputStream ); outputStream.flush(); break; outputStream.writeBoolean( prefixMap.prefixMap() != null ); outputStream.flush(); break;
@Override public synchronized Object2ObjectFunction<CharSequence, Interval> rangeMap() { if (rangeMap == null) { rangeMap = map.rangeMap(); if (rangeMap != null) rangeMap = Object2ObjectFunctions.synchronize(rangeMap, this); } return rangeMap; }
public synchronized Object2ObjectFunction<Interval, S> prefixMap() { if ( prefixMap == null ) { prefixMap = map.prefixMap(); if ( prefixMap != null ) prefixMap = Object2ObjectFunctions.synchronize( prefixMap, this ); } return prefixMap; }
public synchronized Object2ObjectFunction<CharSequence, Interval> rangeMap() { if ( rangeMap == null ) { rangeMap = map.rangeMap(); if ( rangeMap != null ) rangeMap = Object2ObjectFunctions.synchronize( rangeMap, this ); } return rangeMap; }
@Override public synchronized Object2ObjectFunction<Interval, S> prefixMap() { if (prefixMap == null) { prefixMap = map.prefixMap(); if (prefixMap != null) prefixMap = Object2ObjectFunctions.synchronize(prefixMap, this); } return prefixMap; }
public synchronized Object2ObjectFunction<CharSequence, Interval> rangeMap() { if ( rangeMap == null ) { rangeMap = map.rangeMap(); if ( rangeMap != null ) rangeMap = Object2ObjectFunctions.synchronize( rangeMap, this ); } return rangeMap; }
/** Returns a {@link MultiTermIndexIterator} over all terms starting with the given prefix, * provided their number does not exceed the given limit and that this index has a {@link #prefixMap}. */ public IndexIterator documents( final CharSequence prefix, final int limit ) throws IOException, TooManyTermsException { if ( prefixMap != null ) { final Interval interval = prefixMap.rangeMap().get( prefix ); if ( interval == Intervals.EMPTY_INTERVAL ) return new Index.EmptyIndexIterator(); final IndexIterator result; if ( interval.length() > limit ) throw new TooManyTermsException( interval.length() ); if ( interval.length() == 1 ) result = documents( interval.left ); else { IndexIterator[] baseIterator = new IndexIterator[ interval.length()]; int k = 0; for( IntIterator i = interval.iterator(); i.hasNext(); ) baseIterator[ k++ ] = documents( i.nextInt() ); result = MultiTermIndexIterator.getInstance( this, baseIterator ); } result.term( prefix + "*" ); return result; } else throw new UnsupportedOperationException( "Index " + this + " has no prefix map" ); }
final Interval interval = prefixMap.rangeMap().get( prefix ); if ( interval == Intervals.EMPTY_INTERVAL ) return new Index.EmptyIndexIterator(); final IndexIterator result;