public class DurableEncodings extends Object
IDurableEncoding
s.Modifier and Type | Class and Description |
---|---|
static interface |
DurableEncodings.Codec
A convenience interface capturing the codec behavior for a primitive encoding.
|
Modifier and Type | Field and Description |
---|---|
static IDurableEncoding.Primitive |
INTEGERS
A delta encoding for 64-bit integer values
|
static IDurableEncoding.Primitive |
VOID
An encoding which encodes nothing and yields
null . |
Constructor and Description |
---|
DurableEncodings() |
Modifier and Type | Method and Description |
---|---|
static int |
blockSize(IDurableEncoding encoding) |
static IDurableEncoding.List |
list(IDurableEncoding elementEncoding) |
static IDurableEncoding.Map |
map(IDurableEncoding keyEncoding,
IDurableEncoding valueEncoding) |
static IDurableEncoding.Primitive |
primitive(String description,
int blockSize,
DurableEncodings.Codec codec) |
static IDurableEncoding.Primitive |
primitive(String description,
int blockSize,
ToLongFunction<Object> valueHash,
BiPredicate<Object,Object> valueEquality,
Comparator<Object> comparator,
Predicate<Object> isSingleton,
DurableEncodings.Codec codec) |
static IDurableEncoding.Set |
set(IDurableEncoding elementEncoding) |
static IDurableEncoding.Primitive |
tuple(Function<Object,Object[]> preEncode,
Function<Object[],Object> postDecode,
IDurableEncoding... encodings)
Creates a tuple encoding, which allows us to decompose a compound object into individual values we know how to
encode.
|
static IDurableEncoding.Primitive |
tuple(Function<Object,Object[]> preEncode,
Function<Object[],Object> postDecode,
int blockSize,
IDurableEncoding... encodings)
Same as
tuple(Function, Function, IDurableEncoding...) , except that blockSize can
be explicitly specified. |
static IDurableEncoding |
unityped(IDurableEncoding.Primitive primitiveEncoding)
A unityped encoding, where all possible primitive values can be handled by
primitiveEncoding . |
public static final IDurableEncoding.Primitive VOID
null
.public static final IDurableEncoding.Primitive INTEGERS
public static int blockSize(IDurableEncoding encoding)
encoding
, which is 1
for all non-primitivespublic static IDurableEncoding.List list(IDurableEncoding elementEncoding)
List[elementEncoding]
public static IDurableEncoding.Set set(IDurableEncoding elementEncoding)
Set[elementEncoding]
public static IDurableEncoding.Map map(IDurableEncoding keyEncoding, IDurableEncoding valueEncoding)
Map[keyEncoding, valueEncoding]
public static IDurableEncoding.Primitive primitive(String description, int blockSize, DurableEncodings.Codec codec)
public static IDurableEncoding.Primitive primitive(String description, int blockSize, ToLongFunction<Object> valueHash, BiPredicate<Object,Object> valueEquality, Comparator<Object> comparator, Predicate<Object> isSingleton, DurableEncodings.Codec codec)
public static IDurableEncoding.Primitive tuple(Function<Object,Object[]> preEncode, Function<Object[],Object> postDecode, IDurableEncoding... encodings)
To deconstruct the value, we use preEncode
, which yields an array of individual values, which by convention
have the same order as encodings
.
To reconstruct the value, we use postDecode
, which takes an array of individual values an yields a
compound value.
The block size of this encoding is equal to the smallest block size of its sub-encodings.
public static IDurableEncoding.Primitive tuple(Function<Object,Object[]> preEncode, Function<Object[],Object> postDecode, int blockSize, IDurableEncoding... encodings)
tuple(Function, Function, IDurableEncoding...)
, except that blockSize
can
be explicitly specified.public static IDurableEncoding unityped(IDurableEncoding.Primitive primitiveEncoding)
primitiveEncoding
.