Package it.unimi.dsi.sux4j.mph
Class GOV4Function.Builder<T>
- java.lang.Object
-
- it.unimi.dsi.sux4j.mph.GOV4Function.Builder<T>
-
- Enclosing class:
- GOV4Function<T>
public static class GOV4Function.Builder<T> extends java.lang.Object
A builder class forGOV4Function
.
-
-
Field Summary
Fields Modifier and Type Field Description protected BucketedHashStore<T>
bucketedHashStore
protected boolean
built
Whetherbuild()
has already been called.protected boolean
indirect
protected java.lang.Iterable<? extends T>
keys
protected int
outputWidth
protected int
signatureWidth
protected java.io.File
tempDir
protected it.unimi.dsi.bits.TransformationStrategy<? super T>
transform
protected it.unimi.dsi.fastutil.longs.LongIterable
values
-
Constructor Summary
Constructors Constructor Description Builder()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description GOV4Function<T>
build()
Builds a new function.GOV4Function.Builder<T>
dictionary(int signatureWidth)
Specifies that the resultingGOV4Function
should be an approximate dictionary: the output value will be a signature, andGOV4Function.getLong(Object)
will return 1 or 0 depending on whether the argument was in the key set or not; in this case, you cannot specify values.GOV4Function.Builder<T>
indirect()
GOV4Function.Builder<T>
keys(java.lang.Iterable<? extends T> keys)
Specifies the keys of the function; if you have specified aBucketedHashStore
, it can benull
.GOV4Function.Builder<T>
signed(int signatureWidth)
Specifies that the resultingGOV4Function
should be signed using a given number of bits per element; in this case, you cannot specify values.GOV4Function.Builder<T>
store(BucketedHashStore<T> bucketedHashStore)
Specifies a bucketed hash store containing the keys.GOV4Function.Builder<T>
store(BucketedHashStore<T> bucketedHashStore, int outputWidth)
Specifies a bucketed hash store containing keys and values, and an output width.GOV4Function.Builder<T>
tempDir(java.io.File tempDir)
Specifies a temporary directory for theBucketedHashStore
.GOV4Function.Builder<T>
transform(it.unimi.dsi.bits.TransformationStrategy<? super T> transform)
Specifies the transformation strategy for the keys of the function.GOV4Function.Builder<T>
values(it.unimi.dsi.fastutil.longs.LongIterable values)
Specifies the values assigned to the keys; the output width of the function will be the minimum width needed to represent all values.GOV4Function.Builder<T>
values(it.unimi.dsi.fastutil.longs.LongIterable values, int outputWidth)
Specifies the values assigned to the keys.
-
-
-
Field Detail
-
keys
protected java.lang.Iterable<? extends T> keys
-
transform
protected it.unimi.dsi.bits.TransformationStrategy<? super T> transform
-
signatureWidth
protected int signatureWidth
-
tempDir
protected java.io.File tempDir
-
bucketedHashStore
protected BucketedHashStore<T> bucketedHashStore
-
values
protected it.unimi.dsi.fastutil.longs.LongIterable values
-
outputWidth
protected int outputWidth
-
indirect
protected boolean indirect
-
built
protected boolean built
Whetherbuild()
has already been called.
-
-
Method Detail
-
keys
public GOV4Function.Builder<T> keys(java.lang.Iterable<? extends T> keys)
Specifies the keys of the function; if you have specified aBucketedHashStore
, it can benull
.- Parameters:
keys
- the keys of the function.- Returns:
- this builder.
-
transform
public GOV4Function.Builder<T> transform(it.unimi.dsi.bits.TransformationStrategy<? super T> transform)
Specifies the transformation strategy for the keys of the function.- Parameters:
transform
- a transformation strategy for the keys of the function.- Returns:
- this builder.
-
signed
public GOV4Function.Builder<T> signed(int signatureWidth)
Specifies that the resultingGOV4Function
should be signed using a given number of bits per element; in this case, you cannot specify values.- Parameters:
signatureWidth
- a signature width, or 0 for no signature (a negative value will have the same effect ofdictionary(int)
with the opposite argument).- Returns:
- this builder.
-
dictionary
public GOV4Function.Builder<T> dictionary(int signatureWidth)
Specifies that the resultingGOV4Function
should be an approximate dictionary: the output value will be a signature, andGOV4Function.getLong(Object)
will return 1 or 0 depending on whether the argument was in the key set or not; in this case, you cannot specify values.Note that checking against a signature has the usual probability of a false positive.
- Parameters:
signatureWidth
- a signature width, or 0 for no signature (a negative value will have the same effect ofsigned(int)
with the opposite argument).- Returns:
- this builder.
-
tempDir
public GOV4Function.Builder<T> tempDir(java.io.File tempDir)
Specifies a temporary directory for theBucketedHashStore
.- Parameters:
tempDir
- a temporary directory for theBucketedHashStore
files, ornull
for the standard temporary directory.- Returns:
- this builder.
-
store
public GOV4Function.Builder<T> store(BucketedHashStore<T> bucketedHashStore)
-
store
public GOV4Function.Builder<T> store(BucketedHashStore<T> bucketedHashStore, int outputWidth)
Specifies a bucketed hash store containing keys and values, and an output width.Note that if you specify a store, it is your responsibility that it conforms to the rest of the data: it must contain ranks if you use the indirect feature, values representable in at most the specified number of bits otherwise.
- Parameters:
bucketedHashStore
- a bucketed hash store containing the keys, ornull
; the store can be unchecked, but in this case you must specify keys and a transform (otherwise, in case of a hash collision in the store anIllegalStateException
will be thrown).outputWidth
- the bit width of the output of the function, which must be enough to represent all values contained in the store.- Returns:
- this builder.
-
values
public GOV4Function.Builder<T> values(it.unimi.dsi.fastutil.longs.LongIterable values, int outputWidth)
Specifies the values assigned to the keys.Contrarily to
values(LongIterable)
, this method does not require a complete scan of the value to determine the output width.- Parameters:
values
- values to be assigned to each element, in the same order of the keys.outputWidth
- the bit width of the output of the function, which must be enough to represent allvalues
.- Returns:
- this builder.
- See Also:
values(LongIterable)
-
values
public GOV4Function.Builder<T> values(it.unimi.dsi.fastutil.longs.LongIterable values)
Specifies the values assigned to the keys; the output width of the function will be the minimum width needed to represent all values.Contrarily to
values(LongIterable, int)
, this method requires a complete scan of the value to determine the output width.- Parameters:
values
- values to be assigned to each element, in the same order of the keys.- Returns:
- this builder.
- See Also:
values(LongIterable,int)
-
indirect
public GOV4Function.Builder<T> indirect()
Specifies that the function construction must be indirect: a provided store contains indices that must be used to access the values.If you specify this option, the provided values must be a
LongList
or aLongBigList
.- Returns:
- this builder.
-
build
public GOV4Function<T> build() throws java.io.IOException
Builds a new function.- Returns:
- a
GOV4Function
instance with the specified parameters. - Throws:
java.lang.IllegalStateException
- if called more than once.java.io.IOException
-
-