    001    /*
    002     * Matrix.java
    003     *
    004     * Copyright 2003 Sergio Anibal de Carvalho Junior
    005     *
    006     * This file is part of NeoBio.
    007     *
    008     * NeoBio is free software; you can redistribute it and/or modify it under the terms of
    009     * the GNU General Public License as published by the Free Software Foundation; either
    010     * version 2 of the License, or (at your option) any later version.
    011     *
    012     * NeoBio is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
    013     * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
    014     * PURPOSE. See the GNU General Public License for more details.
    015     *
    016     * You should have received a copy of the GNU General Public License along with NeoBio;
    017     * if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
    018     * Boston, MA 02111-1307, USA.
    019     *
    020     * Proper attribution of the author as the source of the software would be appreciated.
    021     *
    022     * Sergio Anibal de Carvalho Junior             mailto:sergioanibaljr@users.sourceforge.net
    023     * Department of Computer Science               http://www.dcs.kcl.ac.uk
    024     * King's College London, UK                    http://www.kcl.ac.uk
    025     *
    026     * Please visit http://neobio.sourceforge.net
    027     *
    028     * This project was supervised by Professor Maxime Crochemore.
    029     *
    030     */
    031
    032    package neobio.alignment;
    033
    034    /**
    035     * This interface defines a minimal set of operations that a matrix must implement. This
    036     * interface is used by the {@linkplain Smawk} class to provide a general services
    037     * regardless of how the matrix is actually stored.
    038     *
    039     * @author Sergio A. de Carvalho Jr.
    040     * @see Smawk
    041     */
    042    public interface Matrix
    043    {
    044            /**
    045             * Returns the value at an specified row and column.
    046             *
    047             * @param row row number of element to be retrieved
    048             * @param col column number of element to be retrieved
    049             * @return value at row <CODE>row</CODE> column <CODE>col</CODE>
    050             */
    051            public int valueAt (int row, int col);
    052
    053            /**
    054             * Returns the number of rows that this matrix has.
    055             *
    056             * @return number of rows
    057             */
    058            public int numRows ();
    059
    060            /**
    061             * Returns the number of columns that this matrix has.
    062             *
    063             * @return number of columns
    064             */
    065            public int numColumns ();
    066    }