package xapi.collect.api;
import xapi.util.api.ReceivesValue;
public interface StringTrie<E> {
interface StringTrieEdge<E> {
E addValue(CharSequence key, int keyFrom, E value);
int depth();
StringTrieCursor<E> hasEdge(CharSequence key, int keyFrom);
StringTrieEdge<E> highest();
CharSequence key();
StringTrieEdge<E> lowest();
E value();
}
interface StringTrieCursor<E> {
int consumed();
StringTrieEdge<E> edge();
CharSequence key();
}
// Memory management
void clear();
StringTrie<E> compress(CharPool pool);
void destroy();
// Getters
E get(CharSequence key);
E get(CharSequence key, int start, int len);
E get(CharSequence key, StringTrieCursor<E> cursor, ReceivesValue<StringTrieCursor<E>> cursorPointer);
// Iterators
Iterable<E> findPrefixed(CharSequence key);
Iterable<E> findPrefixed(CharSequence key, int start, int len);
// Setters
E put(CharSequence key, E vaue);
E put(CharSequence key, int start, int len, E value);
StringTrieCursor<E> put(CharSequence key, E vaue, StringTrieCursor<E> cursor);
StringTrieCursor<E> put(CharSequence key, int start, int len, E value, StringTrieCursor<E> cursor);
// Metadata
int size();
}