void operator()(output_type& _out, const segment_type& _a, JUNCTION _j) { if (_out.empty()) { _out.push_back(_a.front()); _out.push_back(_a.back()); return; } _j(_out,_a,_out); _out.push_back(_a.back()); }
void operator()(const segment_type& _a, const linestring_type& _b, output_type& _out, JUNCTION _j) { if (_b.empty()) { _out.push_back(_a.front()); _out.push_back(_a.back()); return; } _out.push_back(_a.front()); _j(_a,_b,_out); _out.insert(_out.end(),_a.begin()+1,_a.end()); }
void operator()(const segment_type& _a, const segment_type& _b, output_type& _output, JUNCTION _j) { JUNCTION(_a,_b,_output); _output.push_back(_b.back()); }