package com.github.davidmoten.rtree.internal;
import java.util.List;
import com.github.davidmoten.rtree.Context;
import com.github.davidmoten.rtree.Entries;
import com.github.davidmoten.rtree.Entry;
import com.github.davidmoten.rtree.Factory;
import com.github.davidmoten.rtree.Leaf;
import com.github.davidmoten.rtree.Node;
import com.github.davidmoten.rtree.NonLeaf;
import com.github.davidmoten.rtree.geometry.Geometry;
public final class FactoryDefault<T, S extends Geometry> implements Factory<T, S> {
private static class Holder {
private static final Factory<Object, Geometry> INSTANCE = new FactoryDefault<Object, Geometry>();
}
@SuppressWarnings("unchecked")
public static <T, S extends Geometry> Factory<T, S> instance() {
return (Factory<T, S>) Holder.INSTANCE;
}
@Override
public Leaf<T, S> createLeaf(List<Entry<T, S>> entries, Context<T, S> context) {
return new LeafDefault<T, S>(entries, context);
}
@Override
public NonLeaf<T, S> createNonLeaf(List<? extends Node<T, S>> children, Context<T, S> context) {
return new NonLeafDefault<T, S>(children, context);
}
@Override
public Entry<T, S> createEntry(T value, S geometry) {
return Entries.entry(value, geometry);
}
}