~ubuntu-branches/ubuntu/oneiric/libbpp-seq/oneiric

« back to all changes in this revision

Viewing changes to src/Bpp/Seq/Alphabet/AlphabetState.h

  • Committer: Bazaar Package Importer
  • Author(s): Julien Dutheil
  • Date: 2011-06-09 11:00:00 UTC
  • Revision ID: james.westby@ubuntu.com-20110609110000-hnfrd9it0np58l54
Tags: upstream-2.0.2
Import upstream version 2.0.2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// 
 
2
// File:    AlphabetState.h
 
3
// Author:  Sylvain Gaillard
 
4
// Created: 29/07/2009 13:56:01
 
5
// 
 
6
 
 
7
/*
 
8
Copyright or © or Copr. CNRS, (July 29, 2009)
 
9
 
 
10
This software is a computer program whose purpose is to provide classes
 
11
for sequences analysis.
 
12
 
 
13
This software is governed by the CeCILL  license under French law and
 
14
abiding by the rules of distribution of free software.  You can  use, 
 
15
modify and/ or redistribute the software under the terms of the CeCILL
 
16
license as circulated by CEA, CNRS and INRIA at the following URL
 
17
"http://www.cecill.info". 
 
18
 
 
19
As a counterpart to the access to the source code and  rights to copy,
 
20
modify and redistribute granted by the license, users are provided only
 
21
with a limited warranty  and the software's author,  the holder of the
 
22
economic rights,  and the successive licensors  have only  limited
 
23
liability. 
 
24
 
 
25
In this respect, the user's attention is drawn to the risks associated
 
26
with loading,  using,  modifying and/or developing or reproducing the
 
27
software by the user in light of its specific status of free software,
 
28
that may mean  that it is complicated to manipulate,  and  that  also
 
29
therefore means  that it is reserved for developers  and  experienced
 
30
professionals having in-depth computer knowledge. Users are therefore
 
31
encouraged to load and test the software's suitability as regards their
 
32
requirements in conditions enabling the security of their systems and/or 
 
33
data to be ensured and,  more generally, to use and operate it in the 
 
34
same conditions as regards security. 
 
35
 
 
36
The fact that you are presently reading this means that you have had
 
37
knowledge of the CeCILL license and that you accept its terms.
 
38
*/
 
39
 
 
40
#ifndef _ALPHABETSTATE_H_
 
41
#define _ALPHABETSTATE_H_
 
42
 
 
43
#include <Bpp/Clonable.h>
 
44
 
 
45
// From the STL
 
46
#include <string>
 
47
 
 
48
namespace bpp {
 
49
  /**
 
50
   * @brief This is the base class to describe states in an Alphabet.
 
51
   *
 
52
   * @author Sylvain Gaillard
 
53
   */
 
54
  class AlphabetState: public virtual Clonable {
 
55
    private:
 
56
      int num_;
 
57
      std::string letter_;
 
58
      std::string name_;
 
59
 
 
60
    public:
 
61
      AlphabetState(int num, const std::string& letter, const std::string& name): num_(num), letter_(letter), name_(name) {}
 
62
 
 
63
      // Class destructor
 
64
      virtual ~AlphabetState() {}
 
65
 
 
66
    public:
 
67
      /**
 
68
       * @name The Clonable interface.
 
69
       * @{
 
70
       */
 
71
#ifdef NO_VIRTUAL_COV
 
72
      Clonable*
 
73
#else
 
74
      AlphabetState*
 
75
#endif
 
76
      clone() const { return new AlphabetState(* this); }
 
77
      /** @} */
 
78
      /**
 
79
       * @brief Get the state's number.
 
80
       *
 
81
       * @return The state's number (i.e. -1 for gap (-)).
 
82
       */
 
83
      int getNum() const { return num_; }
 
84
      /**
 
85
       * @brief Set the state's number.
 
86
       *
 
87
       * @param num The state's number.
 
88
       */
 
89
      void setNum(int num) { num_ = num; }
 
90
 
 
91
      /** 
 
92
       * @brief Get the letter(s) corresponding to the state.
 
93
       *
 
94
       * The letter is a string because it may more than one char
 
95
       * (for instance: codon).
 
96
       *
 
97
       * @return The state's letter.
 
98
       */
 
99
      const std::string& getLetter() const { return letter_; }
 
100
      /**
 
101
       * @brief Set the letter(s) of the state.
 
102
       *
 
103
       * @param letter The state's letter.
 
104
       */
 
105
      void setLetter(const std::string& letter) { letter_ = letter; }
 
106
 
 
107
      /**
 
108
       * @brief Get the name of the state.
 
109
       *
 
110
       * @return The full name of the state (i.e. Adenine).
 
111
       */
 
112
      const std::string& getName() const { return name_; }
 
113
      /**
 
114
       * @brief Set the name of the state.
 
115
       *
 
116
       * @param name The state's name
 
117
       */
 
118
      void setName(const std::string& name) { name_ = name; }
 
119
 
 
120
      /**
 
121
       * @brief operator ==
 
122
       *
 
123
       * Comparison is done on state num
 
124
       */
 
125
      bool operator == (AlphabetState& l2) {
 
126
        return getNum() == l2.getNum();
 
127
      }
 
128
  };
 
129
}
 
130
 
 
131
#endif // _ALPHABETSTATE_H_
 
132