@@ -309,22 +309,28 @@ static void split_linestring(linestring_t const &line, double split_at,
309309 }
310310}
311311
312- geometry_t segmentize (geometry_t const &geom, double max_segment_length)
312+ void segmentize (geometry_t *output, geometry_t const &input,
313+ double max_segment_length)
313314{
314- geometry_t output{ multilinestring_t {}, geom .srid ()} ;
315- auto *multilinestring = &output. get <multilinestring_t >();
315+ output-> set_srid (input .srid ()) ;
316+ auto *multilinestring = &output-> set <multilinestring_t >();
316317
317- if (geom .is_linestring ()) {
318- split_linestring (geom .get <linestring_t >(), max_segment_length,
318+ if (input .is_linestring ()) {
319+ split_linestring (input .get <linestring_t >(), max_segment_length,
319320 multilinestring);
320- } else if (geom .is_multilinestring ()) {
321- for (auto const &line : geom .get <multilinestring_t >()) {
321+ } else if (input .is_multilinestring ()) {
322+ for (auto const &line : input .get <multilinestring_t >()) {
322323 split_linestring (line, max_segment_length, multilinestring);
323324 }
324325 } else {
325- output. reset ();
326+ output-> reset ();
326327 }
328+ }
327329
330+ geometry_t segmentize (geometry_t const &input, double max_segment_length)
331+ {
332+ geometry_t output;
333+ segmentize (&output, input, max_segment_length);
328334 return output;
329335}
330336
0 commit comments