// 
// Decompiled by Procyon v0.6.0
// 

package ch.randelshofer.fastdoubleparser.chr;

import java.util.Set;

public interface CharTrie
{
    default int match(final CharSequence str) {
        return this.match(str, 0, str.length());
    }
    
    default int match(final char[] str) {
        return this.match(str, 0, str.length);
    }
    
    int match(final CharSequence p0, final int p1, final int p2);
    
    int match(final char[] p0, final int p1, final int p2);
    
    default CharTrie copyOf(final Set<String> set, final boolean ignoreCase) {
        switch (set.size()) {
            case 0: {
                return new CharTrieOfNone();
            }
            case 1: {
                if (set.iterator().next().length() == 1) {
                    return ignoreCase ? new CharTrieOfFewIgnoreCase(set) : new CharTrieOfOneSingleChar(set);
                }
                return ignoreCase ? new CharTrieOfFewIgnoreCase(set) : new CharTrieOfOne(set);
            }
            default: {
                return ignoreCase ? new CharTrieOfFewIgnoreCase(set) : new CharTrieOfFew(set);
            }
        }
    }
}
