There's some redundancy writing multi-format edges:
creating/writing segment name (as needed), between all 3 formats
iterating intermediate points & formatting strings, between collapsed & traveled
Combine into a single function that sets up the data once, then checks the format mask and writes to one or more files.
Either use 1 function (or inline it) and use some ifs, or
Use a function array or switch for formats 1-7, and write what we need where we need it.
If using a function array, declare the ofstreams an an array & pass a pointer to keep the signature the same.
There's some redundancy writing multi-format edges:
Combine into a single function that sets up the data once, then checks the format mask and writes to one or more files.
if
s, or