/*
 *  @author Ranides Atterwim <ranides@gmail.com>
 *  @copyright Ranides Atterwim
 *  @license WTFPL
 *  @url http://ranides.net/projects/assira
 */

package net.ranides.assira.lexer;

/**
 * Konsument odbierający dane ze strumienia. Każde wyodrębnienie fragmentu przez 
 * {@link CharStreamer} powoduje wywołanie metody {@link #consume}.
 * @param <UserType> 
 * @author ranides
 */
public interface CharConsumer<UserType> {
    
    /**
     * Metoda wywoływana po każdym wyodrębnieniu fragmentu przez {@link CharStreamer}.
     * Strumień przetwarzający przekazuje do metody typ fragmentu oraz surowe dane.
     * @param type
     * @param data
     */
    void consume(UserType type, char[] data);
    
}
