Improve comments and documentation.
[genetic.git] / src / chromosome.h
1 #ifndef __CHROMOSOME_H
2 #define __CHROMOSOME_H
3
4 #include <vector>
5
6 #include "gene.h"
7
8 using namespace std;
9
10 namespace genetic {
11     /**
12      * Chromosome of given Genes.
13      */
14     template < typename _Gene >
15     class Chromosome {
16     public:
17         /**
18          * Type representing Chromosome Gene
19          */
20         typedef _Gene GeneType;
21     protected:
22         /**
23          * Genes of the chromosome
24          */
25         vector<_Gene> genes;
26
27     public:
28         /**
29          * Default constructor
30          */
31         Chromosome() {}
32
33         /**
34          * Class constructor. Initializes Chromosome with the given Gene's
35          *
36          * @param genes vector containing Genes to use in Chromosome
37          */
38         Chromosome(vector<_Gene> genes) {
39             this->genes = genes;
40         }
41
42         /** Copy constructor */
43         Chromosome(const Chromosome& chromosome)
44             : genes(chromosome.get()) {
45         }
46
47         /**
48          * Copy operator.
49          *
50          * @param chromosome Chromosome from which the Genes should be copied.
51          * @return Chromosome instance containing copied Genes
52          */
53         Chromosome& operator=(const Chromosome& chromosome) {
54             this->genes = chromosome.get();
55             return *this;
56         }
57
58         /**
59          * Allows read-only access to Chromosome Genes
60          */
61         vector<_Gene> get() const {
62             return this->genes;
63         }
64     };
65 }
66
67 #endif /* __CHROMOSOME_H */