13#if !defined(ULTRA_INDIVIDUAL_H)
14#define ULTRA_INDIVIDUAL_H
30 dump_f, graphviz_f, in_line_f, tree_f,
32 c_language_f = language_f + symbol::c_format,
33 cpp_language_f = language_f + symbol::cpp_format,
34 python_language_f = language_f + symbol::python_format};
57 using age_t = unsigned;
60 [[nodiscard]] age_t
age()
const noexcept;
61 void inc_age(
unsigned = 1)
noexcept;
65 [[nodiscard]]
bool save(std::ostream &)
const;
83 [[nodiscard]]
virtual bool load_impl(std::istream &,
const symbol_set &) = 0;
84 [[nodiscard]]
virtual bool save_impl(std::ostream &)
const = 0;
85 [[nodiscard]]
virtual hash_t hash()
const = 0;
94 std::default_initializable<I>
95 &&
requires(
const I &ci, I &i)
97 { ci.empty() } -> std::convertible_to<bool>;
98 { ci.signature() } -> std::same_as<hash_t>;
99 { ci.age() } -> std::convertible_to<individual::age_t>;
100 { i.inc_age() } -> std::same_as<void>;
Definition individual.h:54
void set_if_older_age(age_t) noexcept
Definition individual.cc:121
age_t age() const noexcept
Definition individual.cc:66
bool save(std::ostream &) const
Definition individual.cc:108
bool load(std::istream &, const symbol_set &={})
Definition individual.cc:89
std::string format(out::print_format_t) const
Definition individual.cc:140
hash_t signature() const noexcept
Definition individual.cc:44
void inc_age(unsigned=1) noexcept
Definition individual.cc:76
Definition symbol_set.h:115
Definition individual.h:93
print_format_t
Rendering format used to print an individual.
Definition individual.h:29