20 auto [ptr, ec] = std::to_chars(buffer,buffer+
sizeof(buffer),value);
21 if (ec == std::errc()) {
22 return string_t(buffer,ptr);
24 err(
"error in %s",__func__);
32(
const slate_t &t,
bool showdeme)
const
35 string_t o =
"[&&PhyloPOMP type=extant";
37 o +=
" deme=" + std::to_string(
deme());
39 + std::to_string(
uniq) +
49 bool showdeme,
bool extended)
const
51 string_t o1 =
"", o2 =
"", o3 =
"";
57 o3 +=
"[&&PhyloPOMP ";
65 o3 +=
" deme=" + std::to_string(
deme());
75 if (
n++ > 0) o2 +=
",";
81 if (
n++ > 0) o2 +=
",";
89 + std::to_string(
uniq)
101 o += p->
newick(t,te,showdeme,extended) +
";";
118 SEXP
newick (SEXP State, SEXP Extended) {
119 PROTECT(Extended = AS_LOGICAL(Extended));
120 bool extended = *LOGICAL(Extended);
123 return mkString(A.
newick(extended).c_str());
static const name_t undeme
Balls function as pointers.
name_t deme(void) const
view deme
string_t newick(const slate_t &t, bool showdeme) const
node_t * child(void) const
a child is the owner of a green ball
size_t ndeme(void) const
number of demes
slate_t & timezero(void)
view/set zero time.
slate_t & time(void)
view/set current time.
string_t newick(bool extended=true) const
put genealogy at current time into Newick format.
Encodes a genealogical node.
node_t(name_t u=0, slate_t t=R_NaReal)
basic constructor for node class
name_t deme(void) const
view deme
string_t newick(const slate_t &tnow, const slate_t &tpar, bool showdeme, bool extended) const
Newick-format output.
bool holds_own(void) const
int nchildren(void) const
number of descendants
string_t newick(slate_t t, slate_t te, bool showdeme, bool extended) const
put genealogy at time t into Newick format.
bool holds(ball_t *b) const
does this node hold the given ball?
SEXP newick(SEXP State, SEXP Extended)
tree in newick format
std::string double2string(double value)