/*
 *******************************************************************************
 * Copyright (C) 2012, International Business Machines Corporation and         *
 * others. All Rights Reserved.                                                *
 *******************************************************************************
 */
package com.ibm.icu.text;

import java.text.CharacterIterator;

/**
 * The DictionaryMatcher interface is used to allow arbitrary "types" of
 * back-end data structures to be used with the break iteration code.
 */
abstract class DictionaryMatcher {
    /**
     * Find dictionary words that match the text.
     * 
     * @param text A CharacterIterator representing the text. The iterator is
     *            left after the longest prefix match in the dictionary.
     * @param maxLength The maximum number of code units to match.
     * @param lengths An array that is filled with the lengths of words that matched.
     * @param count Filled with the number of elements output in lengths.
     * @param limit The maximum amount of words to output. Must be less than or equal to lengths.length.
     * @param values Filled with the weight values associated with the various words.
     * @return The number of characters in text that were matched.
     */
    public abstract int matches(CharacterIterator text, int maxLength, int[] lengths,
            int[] count, int limit, int[] values);
    
    public int matches(CharacterIterator text, int maxLength, int[] lengths, 
            int[] count, int limit) {
        return matches(text, maxLength, lengths, count, limit, null);
    }

    /**
     * @return the kind of dictionary that this matcher is using
     */
    public abstract int getType();
}
