void operator()(linestring_type& _a, const linestring_type& _b, JUNCTION _j) { if (_b.empty()) { return; } if (_a.empty()) { _a = _b; return; } _j(_a,_b,_a); _a.insert(_a.end(),_b.begin()+1,_b.end()); }
void operator()(const linestring_type& _a, const linestring_type& _b, output_type& _output, JUNCTION _j) { if (_a.empty()) { _output = _b; return; } if (_b.empty()) { _output = _a; return; } _output.insert(_output.end(),_a.begin(),_a.end()-1); _j(_a,_b,_output); _output.insert(_output.end(),_b.begin()+1,_b.end()); }
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()); }