| 1 | 1 /* | 
|  | 2     Copyright 2009 Stéphane De Mita, Mathieu Siol | 
|  | 3 | 
|  | 4     This file is part of the EggLib library. | 
|  | 5 | 
|  | 6     EggLib is free software: you can redistribute it and/or modify | 
|  | 7     it under the terms of the GNU General Public License as published by | 
|  | 8     the Free Software Foundation, either version 3 of the License, or | 
|  | 9     (at your option) any later version. | 
|  | 10 | 
|  | 11     EggLib is distributed in the hope that it will be useful, | 
|  | 12     but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|  | 13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
|  | 14     GNU General Public License for more details. | 
|  | 15 | 
|  | 16     You should have received a copy of the GNU General Public License | 
|  | 17     along with EggLib.  If not, see <http://www.gnu.org/licenses/>. | 
|  | 18 */ | 
|  | 19 | 
|  | 20 #ifndef EGGLIB_CHARMATRIX_HPP | 
|  | 21 #define EGGLIB_CHARMATRIX_HPP | 
|  | 22 | 
|  | 23 | 
|  | 24 namespace egglib { | 
|  | 25 | 
|  | 26     /** \brief Interface for classes usable as a square matrix of characters | 
|  | 27     * | 
|  | 28     * \ingroup core | 
|  | 29     * | 
|  | 30     */ | 
|  | 31     class CharMatrix { | 
|  | 32 | 
|  | 33     public: | 
|  | 34 | 
|  | 35         /** \brief Gets number of rows or sequences | 
|  | 36          * | 
|  | 37          */ | 
|  | 38         virtual unsigned int numberOfSequences() const = 0; | 
|  | 39 | 
|  | 40 | 
|  | 41         /** \brief Gets number of columns or sites | 
|  | 42          * | 
|  | 43          */ | 
|  | 44         virtual unsigned int numberOfSites() const = 0; | 
|  | 45 | 
|  | 46 | 
|  | 47         /** \brief Gets the character at a given position | 
|  | 48          * | 
|  | 49          * The accessor should be "fast" and does not guarantee to | 
|  | 50          * perform out-of-bounds checks | 
|  | 51          * | 
|  | 52          */ | 
|  | 53         virtual char character(unsigned int sequence, unsigned int site) const = 0; | 
|  | 54 | 
|  | 55 | 
|  | 56        /** \brief Gets population index | 
|  | 57         * | 
|  | 58         */ | 
|  | 59         virtual unsigned int populationLabel(unsigned int row) const = 0; | 
|  | 60 | 
|  | 61 | 
|  | 62        /** \brief Get site position | 
|  | 63         * | 
|  | 64         */ | 
|  | 65         virtual double sitePosition(unsigned int column) const = 0; | 
|  | 66 | 
|  | 67     }; | 
|  | 68 } | 
|  | 69 | 
|  | 70 #endif |