line |
true |
false |
branch |
5
|
2 |
1 |
int vQuadrantSegments = quadrantSegments ? SvIV(quadrantSegments) : (int)BufferParameters::DEFAULT_QUADRANT_SEGMENTS; |
|
2 |
0 |
int vQuadrantSegments = quadrantSegments ? SvIV(quadrantSegments) : (int)BufferParameters::DEFAULT_QUADRANT_SEGMENTS; |
|
0 |
0 |
int vQuadrantSegments = quadrantSegments ? SvIV(quadrantSegments) : (int)BufferParameters::DEFAULT_QUADRANT_SEGMENTS; |
6
|
1 |
2 |
int vEndCapStyle = endCapStyle? SvIV(endCapStyle) : (int)BufferParameters::CAP_ROUND; |
|
1 |
0 |
int vEndCapStyle = endCapStyle? SvIV(endCapStyle) : (int)BufferParameters::CAP_ROUND; |
|
0 |
0 |
int vEndCapStyle = endCapStyle? SvIV(endCapStyle) : (int)BufferParameters::CAP_ROUND; |
7
|
3 |
0 |
Geometry* r = BufferOp::bufferOp(&g, distance, vQuadrantSegments, vEndCapStyle); |
8
|
3 |
0 |
RETVAL = Helper::uplift(r); |
12
|
1 |
0 |
RETVAL = DistanceOp::distance(&g0, &g1); |
16
|
1 |
0 |
Array r; |
17
|
1 |
0 |
auto seq = DistanceOp::nearestPoints(&g0, &g1); |
18
|
1 |
0 |
if(seq) { |
20
|
1 |
0 |
r = Helper::convert_copy(seq); |
22
|
1 |
0 |
RETVAL = r; |
26
|
1 |
0 |
Array r; |
27
|
1 |
0 |
auto seq = DistanceOp::closestPoints(&g0, &g1); |
28
|
1 |
0 |
if(seq) { |
30
|
1 |
0 |
r = Helper::convert_copy(seq); |
32
|
1 |
0 |
RETVAL = r; |
36
|
0 |
1 |
if (opCode > 4) throw "wrong opCode"; |
38
|
1 |
0 |
Geometry* g = OverlayOp::overlayOp(&g0, &g1, code); |
39
|
1 |
0 |
RETVAL = Helper::uplift(g); |
43
|
2 |
0 |
if (obj.stash().name() == "Geo::Geos::Coordinate") { |
|
2 |
0 |
if (obj.stash().name() == "Geo::Geos::Coordinate") { |
|
1 |
1 |
if (obj.stash().name() == "Geo::Geos::Coordinate") { |
44
|
1 |
0 |
auto& c = xs::in(obj); |
45
|
1 |
0 |
RETVAL = IsValidOp::isValid(c); |
48
|
1 |
0 |
auto& g = xs::in(obj); |
49
|
1 |
0 |
RETVAL = IsValidOp::isValid(g); |
55
|
1 |
1 |
else { |
|
1 |
0 |
else { |
58
|
1 |
0 |
switch(rule_id) { |
|
0 |
0 |
switch(rule_id) { |
60
|
0 |
0 |
case 1: rule = &BoundaryNodeRule::getBoundaryEndPoint(); break; |
61
|
0 |
0 |
case 2: rule = &BoundaryNodeRule::getBoundaryMultivalentEndPoint(); break; |
62
|
0 |
0 |
case 3: rule = &BoundaryNodeRule::getBoundaryMonovalentEndPoint(); break; |
63
|
0 |
0 |
case 4: rule = &BoundaryNodeRule::getBoundaryOGCSFS(); break; |
64
|
1 |
0 |
default: throw("Wrong boundaryNodeRule"); |
67
|
1 |
0 |
} |
71
|
1 |
0 |
LineMerger lm; |
|
1 |
0 |
LineMerger lm; |
73
|
1 |
0 |
for(auto it: in) { |
|
1 |
0 |
for(auto it: in) { |
|
2 |
1 |
for(auto it: in) { |
|
2 |
0 |
for(auto it: in) { |
74
|
2 |
0 |
lm.add(&xs::in(it)); |
|
2 |
0 |
lm.add(&xs::in(it)); |
77
|
1 |
0 |
auto v = lm.getMergedLineStrings(); |
78
|
1 |
0 |
Array out = Array::create(v->size()); |
|
1 |
0 |
Array out = Array::create(v->size()); |
79
|
1 |
1 |
for(LineString* it: *v) { |
80
|
1 |
0 |
auto wrapped = xs::out(it); |
81
|
1 |
0 |
out.push(wrapped); |
83
|
1 |
0 |
RETVAL = out; |
84
|
1 |
0 |
delete v; |
88
|
1 |
0 |
RETVAL = LineSequencer::isSequenced(&g); |
92
|
1 |
0 |
RETVAL = Helper::uplift(LineSequencer::sequence(g)); |
|
1 |
0 |
RETVAL = Helper::uplift(LineSequencer::sequence(g)); |
96
|
46 |
0 |
auto this_stash = Stash(__PACKAGE__); |
97
|
46 |
0 |
xs::exp::create_constants(this_stash, { |
|
46 |
0 |
xs::exp::create_constants(this_stash, { |
|
46 |
0 |
xs::exp::create_constants(this_stash, { |
|
46 |
0 |
xs::exp::create_constants(this_stash, { |
|
46 |
0 |
xs::exp::create_constants(this_stash, { |
|
46 |
0 |
xs::exp::create_constants(this_stash, { |
|
46 |
0 |
xs::exp::create_constants(this_stash, { |
|
46 |
0 |
xs::exp::create_constants(this_stash, { |
|
46 |
0 |
xs::exp::create_constants(this_stash, { |
|
46 |
0 |
xs::exp::create_constants(this_stash, { |
|
414 |
46 |
xs::exp::create_constants(this_stash, { |
|
0 |
0 |
xs::exp::create_constants(this_stash, { |
108
|
46 |
0 |
}); |
109
|
46 |
0 |
xs::exp::autoexport(this_stash); |
|
46 |
0 |
xs::exp::autoexport(this_stash); |