| 409 | } |
| 410 | |
| 411 | int GenomeDescriptionService::getNumNodesRecursively(std::vector<uint8_t> const& data, bool includeRepetitions, GenomeEncodingSpecification const& spec) |
| 412 | { |
| 413 | auto genome = convertBytesToDescriptionIntern(data, data.size(), data.size(), spec).genome; |
| 414 | auto result = toInt(genome.cells.size()); |
| 415 | for (auto const& node : genome.cells) { |
| 416 | if (auto subgenome = node.getGenome()) { |
| 417 | result += getNumNodesRecursively(*subgenome, includeRepetitions, spec); |
| 418 | } |
| 419 | } |
| 420 | |
| 421 | auto numRepetitions = genome.header.numRepetitions == std::numeric_limits<int>::max() ? 1 : genome.header.numRepetitions; |
| 422 | return includeRepetitions ? result * numRepetitions * genome.header.getNumBranches() : result; |
| 423 | } |
| 424 | |
| 425 | int GenomeDescriptionService::getNumRepetitions(std::vector<uint8_t> const& data) |
| 426 | { |