001    /*
002    NGramJ - n-gram based text classification
003    Copyright (C) 2001 Frank S. Nestel (frank at spieleck.de)
004    
005    This program is free software; you can redistribute it and/or modify
006    it under the terms of the GNU Lesser General Public License as published 
007    by the Free Software Foundation; either version 2.1 of the License, or
008    (at your option) any later version.
009    
010    This program is distributed in the hope that it will be useful,
011    but WITHOUT ANY WARRANTY; without even the implied warranty of
012    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
013    GNU General Public License for more details.
014    
015    You should have received a copy of the GNU Lesser General Public License
016    along with this program (lesser.txt); if not, write to the Free Software
017    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
018    */
019    
020    package de.spieleck.app.ngramj;
021    
022    /**
023     * Abstraction of NGram
024     *
025     * @author Frank S. Nestel
026     * @author $Author: nestefan $
027     * @version $Revision: 2 $ $Date: 2006-03-27 23:00:21 +0200 (Mo, 27 Mrz 2006) $ $Author: nestefan $
028     */
029    public interface NGram
030    {
031        /**
032         * Returns the size of an ngram in bytes.
033         */
034        public int getSize();
035    
036        /** 
037         * Return a single byte of the NGram.
038         * @throws ArrayIndexOutOfBoundException (implicitly)
039         */
040        public int getByte(int pos);
041    
042        /**
043         * Compare a ngram to a bunch of bytes
044         */
045        public boolean equals(byte[] bytes, int start, int length);
046    
047        /**
048         * Hand out a special representation of yourself
049         */
050        public NGramImpl getNGramImpl();
051    }