panga
Genome.h
1 //-------------------------------------------------------------------------------------------------------
2 // Copyright (C) Taylor Woll and panga contributors. All rights reserved.
3 // Licensed under the MIT license. See LICENSE.txt file in the project root for
4 // full license information.
5 //-------------------------------------------------------------------------------------------------------
6 
7 #ifndef GENOME_H__
8 #define GENOME_H__
9 
10 #include <cassert>
11 #include <vector>
12 
13 namespace panga {
14 
31 class Genome {
32  protected:
33  struct Gene {
34  size_t start_bit_index_;
35  size_t bit_width_;
36  };
37 
38  public:
39  Genome() = default;
40  Genome(const Genome& rhs) = delete;
41  Genome(Genome&& rhs) = default;
42  Genome& operator=(const Genome& rhs) = delete;
43  ~Genome() = default;
44 
56  size_t AddGene(size_t bit_width, bool byte_align = false);
57 
62  void SetBooleanGeneCount(size_t boolean_gene_count);
63 
71  void AddBooleanGenes(size_t count);
72 
76  size_t GetBooleanGeneCount() const;
77 
81  size_t GetGeneStartBitIndex(size_t gene_index) const;
82 
88  size_t GetGeneBitWitdh(size_t gene_index) const;
89 
93  size_t GetFirstBooleanGeneBitIndex() const;
94 
98  size_t GetFirstBooleanGeneIndex() const;
99 
104  size_t GetGeneCount() const;
105 
109  size_t BitsRequired() const;
110 
111  private:
112  std::vector<Gene> genes_;
113  size_t first_boolean_gene_bit_index_ = 0;
114  size_t boolean_gene_count_ = 0;
115 };
116 
117 } // namespace panga
118 
119 #endif // GENOME_H__
panga::Genome::GetGeneCount
size_t GetGeneCount() const
Definition: Genome.cc:32
panga::Genome::AddBooleanGenes
void AddBooleanGenes(size_t count)
Definition: Genome.cc:24
panga::Genome::BitsRequired
size_t BitsRequired() const
Definition: Genome.cc:54
panga::Genome::Gene
Definition: Genome.h:33
panga::Genome::GetFirstBooleanGeneBitIndex
size_t GetFirstBooleanGeneBitIndex() const
Definition: Genome.cc:26
panga::Genome
Definition: Genome.h:31
panga::Genome::GetBooleanGeneCount
size_t GetBooleanGeneCount() const
Definition: Genome.cc:52
panga::Genome::GetGeneBitWitdh
size_t GetGeneBitWitdh(size_t gene_index) const
Definition: Genome.cc:44
panga::Genome::GetFirstBooleanGeneIndex
size_t GetFirstBooleanGeneIndex() const
Definition: Genome.cc:30
panga::Genome::AddGene
size_t AddGene(size_t bit_width, bool byte_align=false)
Definition: Genome.cc:63
panga::Genome::GetGeneStartBitIndex
size_t GetGeneStartBitIndex(size_t gene_index) const
Definition: Genome.cc:36
panga::Genome::SetBooleanGeneCount
void SetBooleanGeneCount(size_t boolean_gene_count)
Definition: Genome.cc:20