Coverage Report

Created: 2026-03-31 06:40

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/postgis/liblwgeom/lwinline.h
Line
Count
Source
1
/**********************************************************************
2
 *
3
 * PostGIS - Spatial Types for PostgreSQL
4
 * http://postgis.net
5
 *
6
 * PostGIS is free software: you can redistribute it and/or modify
7
 * it under the terms of the GNU General Public License as published by
8
 * the Free Software Foundation, either version 2 of the License, or
9
 * (at your option) any later version.
10
 *
11
 * PostGIS is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with PostGIS.  If not, see <http://www.gnu.org/licenses/>.
18
 *
19
 **********************************************************************
20
 *
21
 * Copyright 2018 Darafei Praliaskouski <me@komzpa.net>
22
 * Copyright 2017-2018 Daniel Baston <dbaston@gmail.com>
23
 * Copyright 2011 Sandro Santilli <strk@kbt.io>
24
 * Copyright 2011 Paul Ramsey <pramsey@cleverelephant.ca>
25
 * Copyright 2007-2008 Mark Cave-Ayland
26
 * Copyright 2001-2006 Refractions Research Inc.
27
 *
28
 **********************************************************************/
29
30
#include <assert.h>
31
32
inline static double
33
distance2d_sqr_pt_pt(const POINT2D *p1, const POINT2D *p2)
34
0
{
35
0
  double hside = p2->x - p1->x;
36
0
  double vside = p2->y - p1->y;
37
38
0
  return hside * hside + vside * vside;
39
0
}
Unexecuted instantiation: wkt_import_fuzzer.cpp:distance2d_sqr_pt_pt(POINT2D const*, POINT2D const*)
Unexecuted instantiation: lwgeom.c:distance2d_sqr_pt_pt
Unexecuted instantiation: lwpoint.c:distance2d_sqr_pt_pt
Unexecuted instantiation: lwline.c:distance2d_sqr_pt_pt
Unexecuted instantiation: lwpoly.c:distance2d_sqr_pt_pt
Unexecuted instantiation: lwtriangle.c:distance2d_sqr_pt_pt
Unexecuted instantiation: lwmpoint.c:distance2d_sqr_pt_pt
Unexecuted instantiation: lwmline.c:distance2d_sqr_pt_pt
Unexecuted instantiation: lwmpoly.c:distance2d_sqr_pt_pt
Unexecuted instantiation: lwcollection.c:distance2d_sqr_pt_pt
Unexecuted instantiation: lwcircstring.c:distance2d_sqr_pt_pt
Unexecuted instantiation: lwcompound.c:distance2d_sqr_pt_pt
Unexecuted instantiation: lwcurvepoly.c:distance2d_sqr_pt_pt
Unexecuted instantiation: lwpsurface.c:distance2d_sqr_pt_pt
Unexecuted instantiation: lwtin.c:distance2d_sqr_pt_pt
Unexecuted instantiation: lwiterator.c:distance2d_sqr_pt_pt
Unexecuted instantiation: lwout_wkt.c:distance2d_sqr_pt_pt
Unexecuted instantiation: lwin_wkt.c:distance2d_sqr_pt_pt
Unexecuted instantiation: lwutil.c:distance2d_sqr_pt_pt
Unexecuted instantiation: lwhomogenize.c:distance2d_sqr_pt_pt
Unexecuted instantiation: lwalgorithm.c:distance2d_sqr_pt_pt
Unexecuted instantiation: lwstroke.c:distance2d_sqr_pt_pt
Unexecuted instantiation: lwprint.c:distance2d_sqr_pt_pt
Unexecuted instantiation: gbox.c:distance2d_sqr_pt_pt
Unexecuted instantiation: lwgeodetic.c:distance2d_sqr_pt_pt
Unexecuted instantiation: lwgeom_geos.c:distance2d_sqr_pt_pt
Unexecuted instantiation: lwgeom_geos_node.c:distance2d_sqr_pt_pt
Unexecuted instantiation: lwgeom_geos_split.c:distance2d_sqr_pt_pt
Unexecuted instantiation: lwspheroid.c:distance2d_sqr_pt_pt
Unexecuted instantiation: stringbuffer.c:distance2d_sqr_pt_pt
Unexecuted instantiation: measures.c:distance2d_sqr_pt_pt
Unexecuted instantiation: measures3d.c:distance2d_sqr_pt_pt
Unexecuted instantiation: ptarray.c:distance2d_sqr_pt_pt
Unexecuted instantiation: lwgeom_api.c:distance2d_sqr_pt_pt
Unexecuted instantiation: lwin_wkt_parse.c:distance2d_sqr_pt_pt
Unexecuted instantiation: lwin_wkt_lex.c:distance2d_sqr_pt_pt
Unexecuted instantiation: lwlinearreferencing.c:distance2d_sqr_pt_pt
Unexecuted instantiation: geojson_import_fuzzer.cpp:distance2d_sqr_pt_pt(POINT2D const*, POINT2D const*)
Unexecuted instantiation: lwin_geojson.c:distance2d_sqr_pt_pt
Unexecuted instantiation: wkb_import_fuzzer.cpp:distance2d_sqr_pt_pt(POINT2D const*, POINT2D const*)
Unexecuted instantiation: lwin_wkb.c:distance2d_sqr_pt_pt
40
41
inline static double
42
distance3d_sqr_pt_pt(const POINT3D *p1, const POINT3D *p2)
43
0
{
44
0
  double hside = p2->x - p1->x;
45
0
  double vside = p2->y - p1->y;
46
0
  double zside = p2->z - p1->z;
47
0
48
0
  return hside * hside + vside * vside + zside * zside;
49
0
}
Unexecuted instantiation: wkt_import_fuzzer.cpp:distance3d_sqr_pt_pt(POINT3D const*, POINT3D const*)
Unexecuted instantiation: lwgeom.c:distance3d_sqr_pt_pt
Unexecuted instantiation: lwpoint.c:distance3d_sqr_pt_pt
Unexecuted instantiation: lwline.c:distance3d_sqr_pt_pt
Unexecuted instantiation: lwpoly.c:distance3d_sqr_pt_pt
Unexecuted instantiation: lwtriangle.c:distance3d_sqr_pt_pt
Unexecuted instantiation: lwmpoint.c:distance3d_sqr_pt_pt
Unexecuted instantiation: lwmline.c:distance3d_sqr_pt_pt
Unexecuted instantiation: lwmpoly.c:distance3d_sqr_pt_pt
Unexecuted instantiation: lwcollection.c:distance3d_sqr_pt_pt
Unexecuted instantiation: lwcircstring.c:distance3d_sqr_pt_pt
Unexecuted instantiation: lwcompound.c:distance3d_sqr_pt_pt
Unexecuted instantiation: lwcurvepoly.c:distance3d_sqr_pt_pt
Unexecuted instantiation: lwpsurface.c:distance3d_sqr_pt_pt
Unexecuted instantiation: lwtin.c:distance3d_sqr_pt_pt
Unexecuted instantiation: lwiterator.c:distance3d_sqr_pt_pt
Unexecuted instantiation: lwout_wkt.c:distance3d_sqr_pt_pt
Unexecuted instantiation: lwin_wkt.c:distance3d_sqr_pt_pt
Unexecuted instantiation: lwutil.c:distance3d_sqr_pt_pt
Unexecuted instantiation: lwhomogenize.c:distance3d_sqr_pt_pt
Unexecuted instantiation: lwalgorithm.c:distance3d_sqr_pt_pt
Unexecuted instantiation: lwstroke.c:distance3d_sqr_pt_pt
Unexecuted instantiation: lwprint.c:distance3d_sqr_pt_pt
Unexecuted instantiation: gbox.c:distance3d_sqr_pt_pt
Unexecuted instantiation: lwgeodetic.c:distance3d_sqr_pt_pt
Unexecuted instantiation: lwgeom_geos.c:distance3d_sqr_pt_pt
Unexecuted instantiation: lwgeom_geos_node.c:distance3d_sqr_pt_pt
Unexecuted instantiation: lwgeom_geos_split.c:distance3d_sqr_pt_pt
Unexecuted instantiation: lwspheroid.c:distance3d_sqr_pt_pt
Unexecuted instantiation: stringbuffer.c:distance3d_sqr_pt_pt
Unexecuted instantiation: measures.c:distance3d_sqr_pt_pt
Unexecuted instantiation: measures3d.c:distance3d_sqr_pt_pt
Unexecuted instantiation: ptarray.c:distance3d_sqr_pt_pt
Unexecuted instantiation: lwgeom_api.c:distance3d_sqr_pt_pt
Unexecuted instantiation: lwin_wkt_parse.c:distance3d_sqr_pt_pt
Unexecuted instantiation: lwin_wkt_lex.c:distance3d_sqr_pt_pt
Unexecuted instantiation: lwlinearreferencing.c:distance3d_sqr_pt_pt
Unexecuted instantiation: geojson_import_fuzzer.cpp:distance3d_sqr_pt_pt(POINT3D const*, POINT3D const*)
Unexecuted instantiation: lwin_geojson.c:distance3d_sqr_pt_pt
Unexecuted instantiation: wkb_import_fuzzer.cpp:distance3d_sqr_pt_pt(POINT3D const*, POINT3D const*)
Unexecuted instantiation: lwin_wkb.c:distance3d_sqr_pt_pt
50
51
/*
52
 * Size of point represeneted in the POINTARRAY
53
 * 16 for 2d, 24 for 3d, 32 for 4d
54
 */
55
static inline size_t
56
ptarray_point_size(const POINTARRAY *pa)
57
2.90M
{
58
2.90M
  return sizeof(double) * FLAGS_NDIMS(pa->flags);
59
2.90M
}
Unexecuted instantiation: wkt_import_fuzzer.cpp:ptarray_point_size(POINTARRAY const*)
Unexecuted instantiation: lwgeom.c:ptarray_point_size
Unexecuted instantiation: lwpoint.c:ptarray_point_size
Unexecuted instantiation: lwline.c:ptarray_point_size
Unexecuted instantiation: lwpoly.c:ptarray_point_size
Unexecuted instantiation: lwtriangle.c:ptarray_point_size
Unexecuted instantiation: lwmpoint.c:ptarray_point_size
Unexecuted instantiation: lwmline.c:ptarray_point_size
Unexecuted instantiation: lwmpoly.c:ptarray_point_size
Unexecuted instantiation: lwcollection.c:ptarray_point_size
Unexecuted instantiation: lwcircstring.c:ptarray_point_size
Unexecuted instantiation: lwcompound.c:ptarray_point_size
Unexecuted instantiation: lwcurvepoly.c:ptarray_point_size
Unexecuted instantiation: lwpsurface.c:ptarray_point_size
Unexecuted instantiation: lwtin.c:ptarray_point_size
Unexecuted instantiation: lwiterator.c:ptarray_point_size
Unexecuted instantiation: lwout_wkt.c:ptarray_point_size
Unexecuted instantiation: lwin_wkt.c:ptarray_point_size
Unexecuted instantiation: lwutil.c:ptarray_point_size
Unexecuted instantiation: lwhomogenize.c:ptarray_point_size
Unexecuted instantiation: lwalgorithm.c:ptarray_point_size
Unexecuted instantiation: lwstroke.c:ptarray_point_size
Unexecuted instantiation: lwprint.c:ptarray_point_size
gbox.c:ptarray_point_size
Line
Count
Source
57
142k
{
58
142k
  return sizeof(double) * FLAGS_NDIMS(pa->flags);
59
142k
}
Unexecuted instantiation: lwgeodetic.c:ptarray_point_size
Unexecuted instantiation: lwgeom_geos.c:ptarray_point_size
Unexecuted instantiation: lwgeom_geos_node.c:ptarray_point_size
Unexecuted instantiation: lwgeom_geos_split.c:ptarray_point_size
Unexecuted instantiation: lwspheroid.c:ptarray_point_size
Unexecuted instantiation: stringbuffer.c:ptarray_point_size
Unexecuted instantiation: measures.c:ptarray_point_size
Unexecuted instantiation: measures3d.c:ptarray_point_size
ptarray.c:ptarray_point_size
Line
Count
Source
57
1.76M
{
58
1.76M
  return sizeof(double) * FLAGS_NDIMS(pa->flags);
59
1.76M
}
lwgeom_api.c:ptarray_point_size
Line
Count
Source
57
993k
{
58
993k
  return sizeof(double) * FLAGS_NDIMS(pa->flags);
59
993k
}
Unexecuted instantiation: lwin_wkt_parse.c:ptarray_point_size
Unexecuted instantiation: lwin_wkt_lex.c:ptarray_point_size
Unexecuted instantiation: lwlinearreferencing.c:ptarray_point_size
Unexecuted instantiation: geojson_import_fuzzer.cpp:ptarray_point_size(POINTARRAY const*)
Unexecuted instantiation: lwin_geojson.c:ptarray_point_size
Unexecuted instantiation: wkb_import_fuzzer.cpp:ptarray_point_size(POINTARRAY const*)
lwin_wkb.c:ptarray_point_size
Line
Count
Source
57
10.7k
{
58
10.7k
  return sizeof(double) * FLAGS_NDIMS(pa->flags);
59
10.7k
}
60
61
/*
62
 * Get a pointer to Nth point of a POINTARRAY
63
 * You'll need to cast it to appropriate dimensioned point.
64
 * Note that if you cast to a higher dimensional point you'll
65
 * possibly corrupt the POINTARRAY.
66
 *
67
 * Casting to returned pointer to POINT2D* should be safe,
68
 * as gserialized format always keeps the POINTARRAY pointer
69
 * aligned to double boundary.
70
 *
71
 * WARNING: Don't cast this to a POINT!
72
 * it would not be reliable due to memory alignment constraints
73
 */
74
static inline uint8_t *
75
getPoint_internal(const POINTARRAY *pa, uint32_t n)
76
1.15M
{
77
1.15M
  size_t size;
78
1.15M
  uint8_t *ptr;
79
80
1.15M
  assert(pa);
81
1.15M
  assert(n <= pa->npoints);
82
1.15M
  assert(n <= pa->maxpoints);
83
84
1.15M
  size = ptarray_point_size(pa);
85
1.15M
  ptr = pa->serialized_pointlist + size * n;
86
87
1.15M
  return ptr;
88
1.15M
}
Unexecuted instantiation: wkt_import_fuzzer.cpp:getPoint_internal(POINTARRAY const*, unsigned int)
Unexecuted instantiation: lwgeom.c:getPoint_internal
Unexecuted instantiation: lwpoint.c:getPoint_internal
Unexecuted instantiation: lwline.c:getPoint_internal
Unexecuted instantiation: lwpoly.c:getPoint_internal
Unexecuted instantiation: lwtriangle.c:getPoint_internal
Unexecuted instantiation: lwmpoint.c:getPoint_internal
Unexecuted instantiation: lwmline.c:getPoint_internal
Unexecuted instantiation: lwmpoly.c:getPoint_internal
Unexecuted instantiation: lwcollection.c:getPoint_internal
Unexecuted instantiation: lwcircstring.c:getPoint_internal
Unexecuted instantiation: lwcompound.c:getPoint_internal
Unexecuted instantiation: lwcurvepoly.c:getPoint_internal
Unexecuted instantiation: lwpsurface.c:getPoint_internal
Unexecuted instantiation: lwtin.c:getPoint_internal
Unexecuted instantiation: lwiterator.c:getPoint_internal
Unexecuted instantiation: lwout_wkt.c:getPoint_internal
Unexecuted instantiation: lwin_wkt.c:getPoint_internal
Unexecuted instantiation: lwutil.c:getPoint_internal
Unexecuted instantiation: lwhomogenize.c:getPoint_internal
Unexecuted instantiation: lwalgorithm.c:getPoint_internal
Unexecuted instantiation: lwstroke.c:getPoint_internal
Unexecuted instantiation: lwprint.c:getPoint_internal
gbox.c:getPoint_internal
Line
Count
Source
76
142k
{
77
142k
  size_t size;
78
142k
  uint8_t *ptr;
79
80
142k
  assert(pa);
81
142k
  assert(n <= pa->npoints);
82
142k
  assert(n <= pa->maxpoints);
83
84
142k
  size = ptarray_point_size(pa);
85
142k
  ptr = pa->serialized_pointlist + size * n;
86
87
142k
  return ptr;
88
142k
}
Unexecuted instantiation: lwgeodetic.c:getPoint_internal
Unexecuted instantiation: lwgeom_geos.c:getPoint_internal
Unexecuted instantiation: lwgeom_geos_node.c:getPoint_internal
Unexecuted instantiation: lwgeom_geos_split.c:getPoint_internal
Unexecuted instantiation: lwspheroid.c:getPoint_internal
Unexecuted instantiation: stringbuffer.c:getPoint_internal
Unexecuted instantiation: measures.c:getPoint_internal
Unexecuted instantiation: measures3d.c:getPoint_internal
ptarray.c:getPoint_internal
Line
Count
Source
76
5.98k
{
77
5.98k
  size_t size;
78
5.98k
  uint8_t *ptr;
79
80
5.98k
  assert(pa);
81
5.98k
  assert(n <= pa->npoints);
82
5.98k
  assert(n <= pa->maxpoints);
83
84
5.98k
  size = ptarray_point_size(pa);
85
5.98k
  ptr = pa->serialized_pointlist + size * n;
86
87
5.98k
  return ptr;
88
5.98k
}
lwgeom_api.c:getPoint_internal
Line
Count
Source
76
993k
{
77
993k
  size_t size;
78
993k
  uint8_t *ptr;
79
80
993k
  assert(pa);
81
993k
  assert(n <= pa->npoints);
82
993k
  assert(n <= pa->maxpoints);
83
84
993k
  size = ptarray_point_size(pa);
85
993k
  ptr = pa->serialized_pointlist + size * n;
86
87
993k
  return ptr;
88
993k
}
Unexecuted instantiation: lwin_wkt_parse.c:getPoint_internal
Unexecuted instantiation: lwin_wkt_lex.c:getPoint_internal
Unexecuted instantiation: lwlinearreferencing.c:getPoint_internal
Unexecuted instantiation: geojson_import_fuzzer.cpp:getPoint_internal(POINTARRAY const*, unsigned int)
Unexecuted instantiation: lwin_geojson.c:getPoint_internal
Unexecuted instantiation: wkb_import_fuzzer.cpp:getPoint_internal(POINTARRAY const*, unsigned int)
lwin_wkb.c:getPoint_internal
Line
Count
Source
76
10.7k
{
77
10.7k
  size_t size;
78
10.7k
  uint8_t *ptr;
79
80
10.7k
  assert(pa);
81
10.7k
  assert(n <= pa->npoints);
82
10.7k
  assert(n <= pa->maxpoints);
83
84
10.7k
  size = ptarray_point_size(pa);
85
10.7k
  ptr = pa->serialized_pointlist + size * n;
86
87
10.7k
  return ptr;
88
10.7k
}
89
90
/**
91
 * Returns a POINT2D pointer into the POINTARRAY serialized_ptlist,
92
 * suitable for reading from. This is very high performance
93
 * and declared const because you aren't allowed to muck with the
94
 * values, only read them.
95
 */
96
static inline const POINT2D *
97
getPoint2d_cp(const POINTARRAY *pa, uint32_t n)
98
123k
{
99
123k
  return (const POINT2D *)getPoint_internal(pa, n);
100
123k
}
Unexecuted instantiation: wkt_import_fuzzer.cpp:getPoint2d_cp(POINTARRAY const*, unsigned int)
Unexecuted instantiation: lwgeom.c:getPoint2d_cp
Unexecuted instantiation: lwpoint.c:getPoint2d_cp
Unexecuted instantiation: lwline.c:getPoint2d_cp
Unexecuted instantiation: lwpoly.c:getPoint2d_cp
Unexecuted instantiation: lwtriangle.c:getPoint2d_cp
Unexecuted instantiation: lwmpoint.c:getPoint2d_cp
Unexecuted instantiation: lwmline.c:getPoint2d_cp
Unexecuted instantiation: lwmpoly.c:getPoint2d_cp
Unexecuted instantiation: lwcollection.c:getPoint2d_cp
Unexecuted instantiation: lwcircstring.c:getPoint2d_cp
Unexecuted instantiation: lwcompound.c:getPoint2d_cp
Unexecuted instantiation: lwcurvepoly.c:getPoint2d_cp
Unexecuted instantiation: lwpsurface.c:getPoint2d_cp
Unexecuted instantiation: lwtin.c:getPoint2d_cp
Unexecuted instantiation: lwiterator.c:getPoint2d_cp
Unexecuted instantiation: lwout_wkt.c:getPoint2d_cp
Unexecuted instantiation: lwin_wkt.c:getPoint2d_cp
Unexecuted instantiation: lwutil.c:getPoint2d_cp
Unexecuted instantiation: lwhomogenize.c:getPoint2d_cp
Unexecuted instantiation: lwalgorithm.c:getPoint2d_cp
Unexecuted instantiation: lwstroke.c:getPoint2d_cp
Unexecuted instantiation: lwprint.c:getPoint2d_cp
gbox.c:getPoint2d_cp
Line
Count
Source
98
112k
{
99
112k
  return (const POINT2D *)getPoint_internal(pa, n);
100
112k
}
Unexecuted instantiation: lwgeodetic.c:getPoint2d_cp
Unexecuted instantiation: lwgeom_geos.c:getPoint2d_cp
Unexecuted instantiation: lwgeom_geos_node.c:getPoint2d_cp
Unexecuted instantiation: lwgeom_geos_split.c:getPoint2d_cp
Unexecuted instantiation: lwspheroid.c:getPoint2d_cp
Unexecuted instantiation: stringbuffer.c:getPoint2d_cp
Unexecuted instantiation: measures.c:getPoint2d_cp
Unexecuted instantiation: measures3d.c:getPoint2d_cp
Unexecuted instantiation: ptarray.c:getPoint2d_cp
Unexecuted instantiation: lwgeom_api.c:getPoint2d_cp
Unexecuted instantiation: lwin_wkt_parse.c:getPoint2d_cp
Unexecuted instantiation: lwin_wkt_lex.c:getPoint2d_cp
Unexecuted instantiation: lwlinearreferencing.c:getPoint2d_cp
Unexecuted instantiation: geojson_import_fuzzer.cpp:getPoint2d_cp(POINTARRAY const*, unsigned int)
Unexecuted instantiation: lwin_geojson.c:getPoint2d_cp
Unexecuted instantiation: wkb_import_fuzzer.cpp:getPoint2d_cp(POINTARRAY const*, unsigned int)
lwin_wkb.c:getPoint2d_cp
Line
Count
Source
98
10.7k
{
99
10.7k
  return (const POINT2D *)getPoint_internal(pa, n);
100
10.7k
}
101
102
/**
103
 * Returns a POINT3D pointer into the POINTARRAY serialized_ptlist,
104
 * suitable for reading from. This is very high performance
105
 * and declared const because you aren't allowed to muck with the
106
 * values, only read them.
107
 */
108
static inline const POINT3D *
109
getPoint3d_cp(const POINTARRAY *pa, uint32_t n)
110
29.6k
{
111
29.6k
  return (const POINT3D *)getPoint_internal(pa, n);
112
29.6k
}
Unexecuted instantiation: wkt_import_fuzzer.cpp:getPoint3d_cp(POINTARRAY const*, unsigned int)
Unexecuted instantiation: lwgeom.c:getPoint3d_cp
Unexecuted instantiation: lwpoint.c:getPoint3d_cp
Unexecuted instantiation: lwline.c:getPoint3d_cp
Unexecuted instantiation: lwpoly.c:getPoint3d_cp
Unexecuted instantiation: lwtriangle.c:getPoint3d_cp
Unexecuted instantiation: lwmpoint.c:getPoint3d_cp
Unexecuted instantiation: lwmline.c:getPoint3d_cp
Unexecuted instantiation: lwmpoly.c:getPoint3d_cp
Unexecuted instantiation: lwcollection.c:getPoint3d_cp
Unexecuted instantiation: lwcircstring.c:getPoint3d_cp
Unexecuted instantiation: lwcompound.c:getPoint3d_cp
Unexecuted instantiation: lwcurvepoly.c:getPoint3d_cp
Unexecuted instantiation: lwpsurface.c:getPoint3d_cp
Unexecuted instantiation: lwtin.c:getPoint3d_cp
Unexecuted instantiation: lwiterator.c:getPoint3d_cp
Unexecuted instantiation: lwout_wkt.c:getPoint3d_cp
Unexecuted instantiation: lwin_wkt.c:getPoint3d_cp
Unexecuted instantiation: lwutil.c:getPoint3d_cp
Unexecuted instantiation: lwhomogenize.c:getPoint3d_cp
Unexecuted instantiation: lwalgorithm.c:getPoint3d_cp
Unexecuted instantiation: lwstroke.c:getPoint3d_cp
Unexecuted instantiation: lwprint.c:getPoint3d_cp
gbox.c:getPoint3d_cp
Line
Count
Source
110
29.6k
{
111
29.6k
  return (const POINT3D *)getPoint_internal(pa, n);
112
29.6k
}
Unexecuted instantiation: lwgeodetic.c:getPoint3d_cp
Unexecuted instantiation: lwgeom_geos.c:getPoint3d_cp
Unexecuted instantiation: lwgeom_geos_node.c:getPoint3d_cp
Unexecuted instantiation: lwgeom_geos_split.c:getPoint3d_cp
Unexecuted instantiation: lwspheroid.c:getPoint3d_cp
Unexecuted instantiation: stringbuffer.c:getPoint3d_cp
Unexecuted instantiation: measures.c:getPoint3d_cp
Unexecuted instantiation: measures3d.c:getPoint3d_cp
Unexecuted instantiation: ptarray.c:getPoint3d_cp
Unexecuted instantiation: lwgeom_api.c:getPoint3d_cp
Unexecuted instantiation: lwin_wkt_parse.c:getPoint3d_cp
Unexecuted instantiation: lwin_wkt_lex.c:getPoint3d_cp
Unexecuted instantiation: lwlinearreferencing.c:getPoint3d_cp
Unexecuted instantiation: geojson_import_fuzzer.cpp:getPoint3d_cp(POINTARRAY const*, unsigned int)
Unexecuted instantiation: lwin_geojson.c:getPoint3d_cp
Unexecuted instantiation: wkb_import_fuzzer.cpp:getPoint3d_cp(POINTARRAY const*, unsigned int)
Unexecuted instantiation: lwin_wkb.c:getPoint3d_cp
113
114
/**
115
 * Returns a POINT4D pointer into the POINTARRAY serialized_ptlist,
116
 * suitable for reading from. This is very high performance
117
 * and declared const because you aren't allowed to muck with the
118
 * values, only read them.
119
 */
120
static inline const POINT4D *
121
getPoint4d_cp(const POINTARRAY *pa, uint32_t n)
122
0
{
123
0
  return (const POINT4D *)getPoint_internal(pa, n);
124
0
}
Unexecuted instantiation: wkt_import_fuzzer.cpp:getPoint4d_cp(POINTARRAY const*, unsigned int)
Unexecuted instantiation: lwgeom.c:getPoint4d_cp
Unexecuted instantiation: lwpoint.c:getPoint4d_cp
Unexecuted instantiation: lwline.c:getPoint4d_cp
Unexecuted instantiation: lwpoly.c:getPoint4d_cp
Unexecuted instantiation: lwtriangle.c:getPoint4d_cp
Unexecuted instantiation: lwmpoint.c:getPoint4d_cp
Unexecuted instantiation: lwmline.c:getPoint4d_cp
Unexecuted instantiation: lwmpoly.c:getPoint4d_cp
Unexecuted instantiation: lwcollection.c:getPoint4d_cp
Unexecuted instantiation: lwcircstring.c:getPoint4d_cp
Unexecuted instantiation: lwcompound.c:getPoint4d_cp
Unexecuted instantiation: lwcurvepoly.c:getPoint4d_cp
Unexecuted instantiation: lwpsurface.c:getPoint4d_cp
Unexecuted instantiation: lwtin.c:getPoint4d_cp
Unexecuted instantiation: lwiterator.c:getPoint4d_cp
Unexecuted instantiation: lwout_wkt.c:getPoint4d_cp
Unexecuted instantiation: lwin_wkt.c:getPoint4d_cp
Unexecuted instantiation: lwutil.c:getPoint4d_cp
Unexecuted instantiation: lwhomogenize.c:getPoint4d_cp
Unexecuted instantiation: lwalgorithm.c:getPoint4d_cp
Unexecuted instantiation: lwstroke.c:getPoint4d_cp
Unexecuted instantiation: lwprint.c:getPoint4d_cp
Unexecuted instantiation: gbox.c:getPoint4d_cp
Unexecuted instantiation: lwgeodetic.c:getPoint4d_cp
Unexecuted instantiation: lwgeom_geos.c:getPoint4d_cp
Unexecuted instantiation: lwgeom_geos_node.c:getPoint4d_cp
Unexecuted instantiation: lwgeom_geos_split.c:getPoint4d_cp
Unexecuted instantiation: lwspheroid.c:getPoint4d_cp
Unexecuted instantiation: stringbuffer.c:getPoint4d_cp
Unexecuted instantiation: measures.c:getPoint4d_cp
Unexecuted instantiation: measures3d.c:getPoint4d_cp
Unexecuted instantiation: ptarray.c:getPoint4d_cp
Unexecuted instantiation: lwgeom_api.c:getPoint4d_cp
Unexecuted instantiation: lwin_wkt_parse.c:getPoint4d_cp
Unexecuted instantiation: lwin_wkt_lex.c:getPoint4d_cp
Unexecuted instantiation: lwlinearreferencing.c:getPoint4d_cp
Unexecuted instantiation: geojson_import_fuzzer.cpp:getPoint4d_cp(POINTARRAY const*, unsigned int)
Unexecuted instantiation: lwin_geojson.c:getPoint4d_cp
Unexecuted instantiation: wkb_import_fuzzer.cpp:getPoint4d_cp(POINTARRAY const*, unsigned int)
Unexecuted instantiation: lwin_wkb.c:getPoint4d_cp
125
126
static inline LWPOINT *
127
lwgeom_as_lwpoint(const LWGEOM *lwgeom)
128
0
{
129
0
  if (!lwgeom)
130
0
    return NULL;
131
0
  if (lwgeom->type == POINTTYPE)
132
0
    return (LWPOINT *)lwgeom;
133
0
  else
134
0
    return NULL;
135
0
}
Unexecuted instantiation: wkt_import_fuzzer.cpp:lwgeom_as_lwpoint(LWGEOM const*)
Unexecuted instantiation: lwgeom.c:lwgeom_as_lwpoint
Unexecuted instantiation: lwpoint.c:lwgeom_as_lwpoint
Unexecuted instantiation: lwline.c:lwgeom_as_lwpoint
Unexecuted instantiation: lwpoly.c:lwgeom_as_lwpoint
Unexecuted instantiation: lwtriangle.c:lwgeom_as_lwpoint
Unexecuted instantiation: lwmpoint.c:lwgeom_as_lwpoint
Unexecuted instantiation: lwmline.c:lwgeom_as_lwpoint
Unexecuted instantiation: lwmpoly.c:lwgeom_as_lwpoint
Unexecuted instantiation: lwcollection.c:lwgeom_as_lwpoint
Unexecuted instantiation: lwcircstring.c:lwgeom_as_lwpoint
Unexecuted instantiation: lwcompound.c:lwgeom_as_lwpoint
Unexecuted instantiation: lwcurvepoly.c:lwgeom_as_lwpoint
Unexecuted instantiation: lwpsurface.c:lwgeom_as_lwpoint
Unexecuted instantiation: lwtin.c:lwgeom_as_lwpoint
Unexecuted instantiation: lwiterator.c:lwgeom_as_lwpoint
Unexecuted instantiation: lwout_wkt.c:lwgeom_as_lwpoint
Unexecuted instantiation: lwin_wkt.c:lwgeom_as_lwpoint
Unexecuted instantiation: lwutil.c:lwgeom_as_lwpoint
Unexecuted instantiation: lwhomogenize.c:lwgeom_as_lwpoint
Unexecuted instantiation: lwalgorithm.c:lwgeom_as_lwpoint
Unexecuted instantiation: lwstroke.c:lwgeom_as_lwpoint
Unexecuted instantiation: lwprint.c:lwgeom_as_lwpoint
Unexecuted instantiation: gbox.c:lwgeom_as_lwpoint
Unexecuted instantiation: lwgeodetic.c:lwgeom_as_lwpoint
Unexecuted instantiation: lwgeom_geos.c:lwgeom_as_lwpoint
Unexecuted instantiation: lwgeom_geos_node.c:lwgeom_as_lwpoint
Unexecuted instantiation: lwgeom_geos_split.c:lwgeom_as_lwpoint
Unexecuted instantiation: lwspheroid.c:lwgeom_as_lwpoint
Unexecuted instantiation: stringbuffer.c:lwgeom_as_lwpoint
Unexecuted instantiation: measures.c:lwgeom_as_lwpoint
Unexecuted instantiation: measures3d.c:lwgeom_as_lwpoint
Unexecuted instantiation: ptarray.c:lwgeom_as_lwpoint
Unexecuted instantiation: lwgeom_api.c:lwgeom_as_lwpoint
Unexecuted instantiation: lwin_wkt_parse.c:lwgeom_as_lwpoint
Unexecuted instantiation: lwin_wkt_lex.c:lwgeom_as_lwpoint
Unexecuted instantiation: lwlinearreferencing.c:lwgeom_as_lwpoint
Unexecuted instantiation: geojson_import_fuzzer.cpp:lwgeom_as_lwpoint(LWGEOM const*)
Unexecuted instantiation: lwin_geojson.c:lwgeom_as_lwpoint
Unexecuted instantiation: wkb_import_fuzzer.cpp:lwgeom_as_lwpoint(LWGEOM const*)
Unexecuted instantiation: lwin_wkb.c:lwgeom_as_lwpoint
136
137
/**
138
 * Return LWTYPE number
139
 */
140
static inline uint32_t
141
lwgeom_get_type(const LWGEOM *geom)
142
0
{
143
0
  if (!geom)
144
0
    return 0;
145
0
  return geom->type;
146
0
}
Unexecuted instantiation: wkt_import_fuzzer.cpp:lwgeom_get_type(LWGEOM const*)
Unexecuted instantiation: lwgeom.c:lwgeom_get_type
Unexecuted instantiation: lwpoint.c:lwgeom_get_type
Unexecuted instantiation: lwline.c:lwgeom_get_type
Unexecuted instantiation: lwpoly.c:lwgeom_get_type
Unexecuted instantiation: lwtriangle.c:lwgeom_get_type
Unexecuted instantiation: lwmpoint.c:lwgeom_get_type
Unexecuted instantiation: lwmline.c:lwgeom_get_type
Unexecuted instantiation: lwmpoly.c:lwgeom_get_type
Unexecuted instantiation: lwcollection.c:lwgeom_get_type
Unexecuted instantiation: lwcircstring.c:lwgeom_get_type
Unexecuted instantiation: lwcompound.c:lwgeom_get_type
Unexecuted instantiation: lwcurvepoly.c:lwgeom_get_type
Unexecuted instantiation: lwpsurface.c:lwgeom_get_type
Unexecuted instantiation: lwtin.c:lwgeom_get_type
Unexecuted instantiation: lwiterator.c:lwgeom_get_type
Unexecuted instantiation: lwout_wkt.c:lwgeom_get_type
Unexecuted instantiation: lwin_wkt.c:lwgeom_get_type
Unexecuted instantiation: lwutil.c:lwgeom_get_type
Unexecuted instantiation: lwhomogenize.c:lwgeom_get_type
Unexecuted instantiation: lwalgorithm.c:lwgeom_get_type
Unexecuted instantiation: lwstroke.c:lwgeom_get_type
Unexecuted instantiation: lwprint.c:lwgeom_get_type
Unexecuted instantiation: gbox.c:lwgeom_get_type
Unexecuted instantiation: lwgeodetic.c:lwgeom_get_type
Unexecuted instantiation: lwgeom_geos.c:lwgeom_get_type
Unexecuted instantiation: lwgeom_geos_node.c:lwgeom_get_type
Unexecuted instantiation: lwgeom_geos_split.c:lwgeom_get_type
Unexecuted instantiation: lwspheroid.c:lwgeom_get_type
Unexecuted instantiation: stringbuffer.c:lwgeom_get_type
Unexecuted instantiation: measures.c:lwgeom_get_type
Unexecuted instantiation: measures3d.c:lwgeom_get_type
Unexecuted instantiation: ptarray.c:lwgeom_get_type
Unexecuted instantiation: lwgeom_api.c:lwgeom_get_type
Unexecuted instantiation: lwin_wkt_parse.c:lwgeom_get_type
Unexecuted instantiation: lwin_wkt_lex.c:lwgeom_get_type
Unexecuted instantiation: lwlinearreferencing.c:lwgeom_get_type
Unexecuted instantiation: geojson_import_fuzzer.cpp:lwgeom_get_type(LWGEOM const*)
Unexecuted instantiation: lwin_geojson.c:lwgeom_get_type
Unexecuted instantiation: wkb_import_fuzzer.cpp:lwgeom_get_type(LWGEOM const*)
Unexecuted instantiation: lwin_wkb.c:lwgeom_get_type
147
148
static inline int
149
lwpoint_is_empty(const LWPOINT *point)
150
495k
{
151
495k
  return !point->point || point->point->npoints < 1;
152
495k
}
Unexecuted instantiation: wkt_import_fuzzer.cpp:lwpoint_is_empty(LWPOINT const*)
lwgeom.c:lwpoint_is_empty
Line
Count
Source
150
132k
{
151
132k
  return !point->point || point->point->npoints < 1;
152
132k
}
lwpoint.c:lwpoint_is_empty
Line
Count
Source
150
134k
{
151
134k
  return !point->point || point->point->npoints < 1;
152
134k
}
Unexecuted instantiation: lwline.c:lwpoint_is_empty
Unexecuted instantiation: lwpoly.c:lwpoint_is_empty
Unexecuted instantiation: lwtriangle.c:lwpoint_is_empty
Unexecuted instantiation: lwmpoint.c:lwpoint_is_empty
Unexecuted instantiation: lwmline.c:lwpoint_is_empty
Unexecuted instantiation: lwmpoly.c:lwpoint_is_empty
lwcollection.c:lwpoint_is_empty
Line
Count
Source
150
227k
{
151
227k
  return !point->point || point->point->npoints < 1;
152
227k
}
Unexecuted instantiation: lwcircstring.c:lwpoint_is_empty
Unexecuted instantiation: lwcompound.c:lwpoint_is_empty
Unexecuted instantiation: lwcurvepoly.c:lwpoint_is_empty
Unexecuted instantiation: lwpsurface.c:lwpoint_is_empty
Unexecuted instantiation: lwtin.c:lwpoint_is_empty
Unexecuted instantiation: lwiterator.c:lwpoint_is_empty
Unexecuted instantiation: lwout_wkt.c:lwpoint_is_empty
lwin_wkt.c:lwpoint_is_empty
Line
Count
Source
150
1.15k
{
151
1.15k
  return !point->point || point->point->npoints < 1;
152
1.15k
}
Unexecuted instantiation: lwutil.c:lwpoint_is_empty
Unexecuted instantiation: lwhomogenize.c:lwpoint_is_empty
Unexecuted instantiation: lwalgorithm.c:lwpoint_is_empty
Unexecuted instantiation: lwstroke.c:lwpoint_is_empty
Unexecuted instantiation: lwprint.c:lwpoint_is_empty
Unexecuted instantiation: gbox.c:lwpoint_is_empty
Unexecuted instantiation: lwgeodetic.c:lwpoint_is_empty
Unexecuted instantiation: lwgeom_geos.c:lwpoint_is_empty
Unexecuted instantiation: lwgeom_geos_node.c:lwpoint_is_empty
Unexecuted instantiation: lwgeom_geos_split.c:lwpoint_is_empty
Unexecuted instantiation: lwspheroid.c:lwpoint_is_empty
Unexecuted instantiation: stringbuffer.c:lwpoint_is_empty
Unexecuted instantiation: measures.c:lwpoint_is_empty
Unexecuted instantiation: measures3d.c:lwpoint_is_empty
Unexecuted instantiation: ptarray.c:lwpoint_is_empty
Unexecuted instantiation: lwgeom_api.c:lwpoint_is_empty
Unexecuted instantiation: lwin_wkt_parse.c:lwpoint_is_empty
Unexecuted instantiation: lwin_wkt_lex.c:lwpoint_is_empty
Unexecuted instantiation: lwlinearreferencing.c:lwpoint_is_empty
Unexecuted instantiation: geojson_import_fuzzer.cpp:lwpoint_is_empty(LWPOINT const*)
Unexecuted instantiation: lwin_geojson.c:lwpoint_is_empty
Unexecuted instantiation: wkb_import_fuzzer.cpp:lwpoint_is_empty(LWPOINT const*)
Unexecuted instantiation: lwin_wkb.c:lwpoint_is_empty
153
154
static inline int
155
lwline_is_empty(const LWLINE *line)
156
138k
{
157
138k
  return !line->points || line->points->npoints < 1;
158
138k
}
Unexecuted instantiation: wkt_import_fuzzer.cpp:lwline_is_empty(LWLINE const*)
lwgeom.c:lwline_is_empty
Line
Count
Source
156
17.0k
{
157
17.0k
  return !line->points || line->points->npoints < 1;
158
17.0k
}
Unexecuted instantiation: lwpoint.c:lwline_is_empty
lwline.c:lwline_is_empty
Line
Count
Source
156
17.7k
{
157
17.7k
  return !line->points || line->points->npoints < 1;
158
17.7k
}
Unexecuted instantiation: lwpoly.c:lwline_is_empty
Unexecuted instantiation: lwtriangle.c:lwline_is_empty
Unexecuted instantiation: lwmpoint.c:lwline_is_empty
Unexecuted instantiation: lwmline.c:lwline_is_empty
Unexecuted instantiation: lwmpoly.c:lwline_is_empty
lwcollection.c:lwline_is_empty
Line
Count
Source
156
26.3k
{
157
26.3k
  return !line->points || line->points->npoints < 1;
158
26.3k
}
Unexecuted instantiation: lwcircstring.c:lwline_is_empty
lwcompound.c:lwline_is_empty
Line
Count
Source
156
33.8k
{
157
33.8k
  return !line->points || line->points->npoints < 1;
158
33.8k
}
Unexecuted instantiation: lwcurvepoly.c:lwline_is_empty
Unexecuted instantiation: lwpsurface.c:lwline_is_empty
Unexecuted instantiation: lwtin.c:lwline_is_empty
Unexecuted instantiation: lwiterator.c:lwline_is_empty
Unexecuted instantiation: lwout_wkt.c:lwline_is_empty
lwin_wkt.c:lwline_is_empty
Line
Count
Source
156
43.0k
{
157
43.0k
  return !line->points || line->points->npoints < 1;
158
43.0k
}
Unexecuted instantiation: lwutil.c:lwline_is_empty
Unexecuted instantiation: lwhomogenize.c:lwline_is_empty
Unexecuted instantiation: lwalgorithm.c:lwline_is_empty
Unexecuted instantiation: lwstroke.c:lwline_is_empty
Unexecuted instantiation: lwprint.c:lwline_is_empty
Unexecuted instantiation: gbox.c:lwline_is_empty
Unexecuted instantiation: lwgeodetic.c:lwline_is_empty
Unexecuted instantiation: lwgeom_geos.c:lwline_is_empty
Unexecuted instantiation: lwgeom_geos_node.c:lwline_is_empty
Unexecuted instantiation: lwgeom_geos_split.c:lwline_is_empty
Unexecuted instantiation: lwspheroid.c:lwline_is_empty
Unexecuted instantiation: stringbuffer.c:lwline_is_empty
Unexecuted instantiation: measures.c:lwline_is_empty
Unexecuted instantiation: measures3d.c:lwline_is_empty
Unexecuted instantiation: ptarray.c:lwline_is_empty
Unexecuted instantiation: lwgeom_api.c:lwline_is_empty
Unexecuted instantiation: lwin_wkt_parse.c:lwline_is_empty
Unexecuted instantiation: lwin_wkt_lex.c:lwline_is_empty
Unexecuted instantiation: lwlinearreferencing.c:lwline_is_empty
Unexecuted instantiation: geojson_import_fuzzer.cpp:lwline_is_empty(LWLINE const*)
Unexecuted instantiation: lwin_geojson.c:lwline_is_empty
Unexecuted instantiation: wkb_import_fuzzer.cpp:lwline_is_empty(LWLINE const*)
Unexecuted instantiation: lwin_wkb.c:lwline_is_empty
159
160
static inline int
161
lwcircstring_is_empty(const LWCIRCSTRING *circ)
162
1.63k
{
163
1.63k
  return !circ->points || circ->points->npoints < 1;
164
1.63k
}
Unexecuted instantiation: wkt_import_fuzzer.cpp:lwcircstring_is_empty(LWCIRCSTRING const*)
Unexecuted instantiation: lwgeom.c:lwcircstring_is_empty
Unexecuted instantiation: lwpoint.c:lwcircstring_is_empty
Unexecuted instantiation: lwline.c:lwcircstring_is_empty
Unexecuted instantiation: lwpoly.c:lwcircstring_is_empty
Unexecuted instantiation: lwtriangle.c:lwcircstring_is_empty
Unexecuted instantiation: lwmpoint.c:lwcircstring_is_empty
Unexecuted instantiation: lwmline.c:lwcircstring_is_empty
Unexecuted instantiation: lwmpoly.c:lwcircstring_is_empty
Unexecuted instantiation: lwcollection.c:lwcircstring_is_empty
Unexecuted instantiation: lwcircstring.c:lwcircstring_is_empty
lwcompound.c:lwcircstring_is_empty
Line
Count
Source
162
1.00k
{
163
1.00k
  return !circ->points || circ->points->npoints < 1;
164
1.00k
}
Unexecuted instantiation: lwcurvepoly.c:lwcircstring_is_empty
Unexecuted instantiation: lwpsurface.c:lwcircstring_is_empty
Unexecuted instantiation: lwtin.c:lwcircstring_is_empty
Unexecuted instantiation: lwiterator.c:lwcircstring_is_empty
Unexecuted instantiation: lwout_wkt.c:lwcircstring_is_empty
lwin_wkt.c:lwcircstring_is_empty
Line
Count
Source
162
627
{
163
627
  return !circ->points || circ->points->npoints < 1;
164
627
}
Unexecuted instantiation: lwutil.c:lwcircstring_is_empty
Unexecuted instantiation: lwhomogenize.c:lwcircstring_is_empty
Unexecuted instantiation: lwalgorithm.c:lwcircstring_is_empty
Unexecuted instantiation: lwstroke.c:lwcircstring_is_empty
Unexecuted instantiation: lwprint.c:lwcircstring_is_empty
Unexecuted instantiation: gbox.c:lwcircstring_is_empty
Unexecuted instantiation: lwgeodetic.c:lwcircstring_is_empty
Unexecuted instantiation: lwgeom_geos.c:lwcircstring_is_empty
Unexecuted instantiation: lwgeom_geos_node.c:lwcircstring_is_empty
Unexecuted instantiation: lwgeom_geos_split.c:lwcircstring_is_empty
Unexecuted instantiation: lwspheroid.c:lwcircstring_is_empty
Unexecuted instantiation: stringbuffer.c:lwcircstring_is_empty
Unexecuted instantiation: measures.c:lwcircstring_is_empty
Unexecuted instantiation: measures3d.c:lwcircstring_is_empty
Unexecuted instantiation: ptarray.c:lwcircstring_is_empty
Unexecuted instantiation: lwgeom_api.c:lwcircstring_is_empty
Unexecuted instantiation: lwin_wkt_parse.c:lwcircstring_is_empty
Unexecuted instantiation: lwin_wkt_lex.c:lwcircstring_is_empty
Unexecuted instantiation: lwlinearreferencing.c:lwcircstring_is_empty
Unexecuted instantiation: geojson_import_fuzzer.cpp:lwcircstring_is_empty(LWCIRCSTRING const*)
Unexecuted instantiation: lwin_geojson.c:lwcircstring_is_empty
Unexecuted instantiation: wkb_import_fuzzer.cpp:lwcircstring_is_empty(LWCIRCSTRING const*)
Unexecuted instantiation: lwin_wkb.c:lwcircstring_is_empty
165
166
static inline int
167
lwpoly_is_empty(const LWPOLY *poly)
168
85.5k
{
169
85.5k
  return poly->nrings < 1 || !poly->rings || !poly->rings[0] || poly->rings[0]->npoints < 1;
170
85.5k
}
Unexecuted instantiation: wkt_import_fuzzer.cpp:lwpoly_is_empty(LWPOLY const*)
lwgeom.c:lwpoly_is_empty
Line
Count
Source
168
1.33k
{
169
1.33k
  return poly->nrings < 1 || !poly->rings || !poly->rings[0] || poly->rings[0]->npoints < 1;
170
1.33k
}
Unexecuted instantiation: lwpoint.c:lwpoly_is_empty
Unexecuted instantiation: lwline.c:lwpoly_is_empty
lwpoly.c:lwpoly_is_empty
Line
Count
Source
168
1.54k
{
169
1.54k
  return poly->nrings < 1 || !poly->rings || !poly->rings[0] || poly->rings[0]->npoints < 1;
170
1.54k
}
Unexecuted instantiation: lwtriangle.c:lwpoly_is_empty
Unexecuted instantiation: lwmpoint.c:lwpoly_is_empty
Unexecuted instantiation: lwmline.c:lwpoly_is_empty
Unexecuted instantiation: lwmpoly.c:lwpoly_is_empty
lwcollection.c:lwpoly_is_empty
Line
Count
Source
168
67.6k
{
169
67.6k
  return poly->nrings < 1 || !poly->rings || !poly->rings[0] || poly->rings[0]->npoints < 1;
170
67.6k
}
Unexecuted instantiation: lwcircstring.c:lwpoly_is_empty
Unexecuted instantiation: lwcompound.c:lwpoly_is_empty
Unexecuted instantiation: lwcurvepoly.c:lwpoly_is_empty
Unexecuted instantiation: lwpsurface.c:lwpoly_is_empty
Unexecuted instantiation: lwtin.c:lwpoly_is_empty
Unexecuted instantiation: lwiterator.c:lwpoly_is_empty
Unexecuted instantiation: lwout_wkt.c:lwpoly_is_empty
lwin_wkt.c:lwpoly_is_empty
Line
Count
Source
168
15.0k
{
169
15.0k
  return poly->nrings < 1 || !poly->rings || !poly->rings[0] || poly->rings[0]->npoints < 1;
170
15.0k
}
Unexecuted instantiation: lwutil.c:lwpoly_is_empty
Unexecuted instantiation: lwhomogenize.c:lwpoly_is_empty
Unexecuted instantiation: lwalgorithm.c:lwpoly_is_empty
Unexecuted instantiation: lwstroke.c:lwpoly_is_empty
Unexecuted instantiation: lwprint.c:lwpoly_is_empty
Unexecuted instantiation: gbox.c:lwpoly_is_empty
Unexecuted instantiation: lwgeodetic.c:lwpoly_is_empty
Unexecuted instantiation: lwgeom_geos.c:lwpoly_is_empty
Unexecuted instantiation: lwgeom_geos_node.c:lwpoly_is_empty
Unexecuted instantiation: lwgeom_geos_split.c:lwpoly_is_empty
Unexecuted instantiation: lwspheroid.c:lwpoly_is_empty
Unexecuted instantiation: stringbuffer.c:lwpoly_is_empty
Unexecuted instantiation: measures.c:lwpoly_is_empty
Unexecuted instantiation: measures3d.c:lwpoly_is_empty
Unexecuted instantiation: ptarray.c:lwpoly_is_empty
Unexecuted instantiation: lwgeom_api.c:lwpoly_is_empty
Unexecuted instantiation: lwin_wkt_parse.c:lwpoly_is_empty
Unexecuted instantiation: lwin_wkt_lex.c:lwpoly_is_empty
Unexecuted instantiation: lwlinearreferencing.c:lwpoly_is_empty
Unexecuted instantiation: geojson_import_fuzzer.cpp:lwpoly_is_empty(LWPOLY const*)
Unexecuted instantiation: lwin_geojson.c:lwpoly_is_empty
Unexecuted instantiation: wkb_import_fuzzer.cpp:lwpoly_is_empty(LWPOLY const*)
Unexecuted instantiation: lwin_wkb.c:lwpoly_is_empty
171
172
static inline int
173
lwtriangle_is_empty(const LWTRIANGLE *triangle)
174
348
{
175
348
  return !triangle->points || triangle->points->npoints < 1;
176
348
}
Unexecuted instantiation: wkt_import_fuzzer.cpp:lwtriangle_is_empty(LWTRIANGLE const*)
Unexecuted instantiation: lwgeom.c:lwtriangle_is_empty
Unexecuted instantiation: lwpoint.c:lwtriangle_is_empty
Unexecuted instantiation: lwline.c:lwtriangle_is_empty
Unexecuted instantiation: lwpoly.c:lwtriangle_is_empty
Unexecuted instantiation: lwtriangle.c:lwtriangle_is_empty
Unexecuted instantiation: lwmpoint.c:lwtriangle_is_empty
Unexecuted instantiation: lwmline.c:lwtriangle_is_empty
Unexecuted instantiation: lwmpoly.c:lwtriangle_is_empty
Unexecuted instantiation: lwcollection.c:lwtriangle_is_empty
Unexecuted instantiation: lwcircstring.c:lwtriangle_is_empty
Unexecuted instantiation: lwcompound.c:lwtriangle_is_empty
Unexecuted instantiation: lwcurvepoly.c:lwtriangle_is_empty
Unexecuted instantiation: lwpsurface.c:lwtriangle_is_empty
Unexecuted instantiation: lwtin.c:lwtriangle_is_empty
Unexecuted instantiation: lwiterator.c:lwtriangle_is_empty
Unexecuted instantiation: lwout_wkt.c:lwtriangle_is_empty
lwin_wkt.c:lwtriangle_is_empty
Line
Count
Source
174
348
{
175
348
  return !triangle->points || triangle->points->npoints < 1;
176
348
}
Unexecuted instantiation: lwutil.c:lwtriangle_is_empty
Unexecuted instantiation: lwhomogenize.c:lwtriangle_is_empty
Unexecuted instantiation: lwalgorithm.c:lwtriangle_is_empty
Unexecuted instantiation: lwstroke.c:lwtriangle_is_empty
Unexecuted instantiation: lwprint.c:lwtriangle_is_empty
Unexecuted instantiation: gbox.c:lwtriangle_is_empty
Unexecuted instantiation: lwgeodetic.c:lwtriangle_is_empty
Unexecuted instantiation: lwgeom_geos.c:lwtriangle_is_empty
Unexecuted instantiation: lwgeom_geos_node.c:lwtriangle_is_empty
Unexecuted instantiation: lwgeom_geos_split.c:lwtriangle_is_empty
Unexecuted instantiation: lwspheroid.c:lwtriangle_is_empty
Unexecuted instantiation: stringbuffer.c:lwtriangle_is_empty
Unexecuted instantiation: measures.c:lwtriangle_is_empty
Unexecuted instantiation: measures3d.c:lwtriangle_is_empty
Unexecuted instantiation: ptarray.c:lwtriangle_is_empty
Unexecuted instantiation: lwgeom_api.c:lwtriangle_is_empty
Unexecuted instantiation: lwin_wkt_parse.c:lwtriangle_is_empty
Unexecuted instantiation: lwin_wkt_lex.c:lwtriangle_is_empty
Unexecuted instantiation: lwlinearreferencing.c:lwtriangle_is_empty
Unexecuted instantiation: geojson_import_fuzzer.cpp:lwtriangle_is_empty(LWTRIANGLE const*)
Unexecuted instantiation: lwin_geojson.c:lwtriangle_is_empty
Unexecuted instantiation: wkb_import_fuzzer.cpp:lwtriangle_is_empty(LWTRIANGLE const*)
Unexecuted instantiation: lwin_wkb.c:lwtriangle_is_empty
177
178
static inline int lwgeom_is_empty(const LWGEOM *geom);
179
180
static inline int
181
lwcollection_is_empty(const LWCOLLECTION *col)
182
55.1k
{
183
55.1k
  uint32_t i;
184
55.1k
  if (col->ngeoms == 0 || !col->geoms)
185
11.0k
    return LW_TRUE;
186
565k
  for (i = 0; i < col->ngeoms; i++)
187
562k
  {
188
562k
    if (!lwgeom_is_empty(col->geoms[i]))
189
40.7k
      return LW_FALSE;
190
562k
  }
191
3.35k
  return LW_TRUE;
192
44.1k
}
Unexecuted instantiation: wkt_import_fuzzer.cpp:lwcollection_is_empty(LWCOLLECTION const*)
lwgeom.c:lwcollection_is_empty
Line
Count
Source
182
3.07k
{
183
3.07k
  uint32_t i;
184
3.07k
  if (col->ngeoms == 0 || !col->geoms)
185
2.10k
    return LW_TRUE;
186
153k
  for (i = 0; i < col->ngeoms; i++)
187
152k
  {
188
152k
    if (!lwgeom_is_empty(col->geoms[i]))
189
756
      return LW_FALSE;
190
152k
  }
191
213
  return LW_TRUE;
192
969
}
Unexecuted instantiation: lwpoint.c:lwcollection_is_empty
Unexecuted instantiation: lwline.c:lwcollection_is_empty
Unexecuted instantiation: lwpoly.c:lwcollection_is_empty
Unexecuted instantiation: lwtriangle.c:lwcollection_is_empty
Unexecuted instantiation: lwmpoint.c:lwcollection_is_empty
Unexecuted instantiation: lwmline.c:lwcollection_is_empty
Unexecuted instantiation: lwmpoly.c:lwcollection_is_empty
lwcollection.c:lwcollection_is_empty
Line
Count
Source
182
10.0k
{
183
10.0k
  uint32_t i;
184
10.0k
  if (col->ngeoms == 0 || !col->geoms)
185
5.34k
    return LW_TRUE;
186
328k
  for (i = 0; i < col->ngeoms; i++)
187
327k
  {
188
327k
    if (!lwgeom_is_empty(col->geoms[i]))
189
3.07k
      return LW_FALSE;
190
327k
  }
191
1.60k
  return LW_TRUE;
192
4.68k
}
Unexecuted instantiation: lwcircstring.c:lwcollection_is_empty
Unexecuted instantiation: lwcompound.c:lwcollection_is_empty
Unexecuted instantiation: lwcurvepoly.c:lwcollection_is_empty
Unexecuted instantiation: lwpsurface.c:lwcollection_is_empty
Unexecuted instantiation: lwtin.c:lwcollection_is_empty
Unexecuted instantiation: lwiterator.c:lwcollection_is_empty
Unexecuted instantiation: lwout_wkt.c:lwcollection_is_empty
lwin_wkt.c:lwcollection_is_empty
Line
Count
Source
182
42.0k
{
183
42.0k
  uint32_t i;
184
42.0k
  if (col->ngeoms == 0 || !col->geoms)
185
3.55k
    return LW_TRUE;
186
83.5k
  for (i = 0; i < col->ngeoms; i++)
187
81.9k
  {
188
81.9k
    if (!lwgeom_is_empty(col->geoms[i]))
189
36.9k
      return LW_FALSE;
190
81.9k
  }
191
1.53k
  return LW_TRUE;
192
38.5k
}
Unexecuted instantiation: lwutil.c:lwcollection_is_empty
Unexecuted instantiation: lwhomogenize.c:lwcollection_is_empty
Unexecuted instantiation: lwalgorithm.c:lwcollection_is_empty
Unexecuted instantiation: lwstroke.c:lwcollection_is_empty
Unexecuted instantiation: lwprint.c:lwcollection_is_empty
Unexecuted instantiation: gbox.c:lwcollection_is_empty
Unexecuted instantiation: lwgeodetic.c:lwcollection_is_empty
Unexecuted instantiation: lwgeom_geos.c:lwcollection_is_empty
Unexecuted instantiation: lwgeom_geos_node.c:lwcollection_is_empty
Unexecuted instantiation: lwgeom_geos_split.c:lwcollection_is_empty
Unexecuted instantiation: lwspheroid.c:lwcollection_is_empty
Unexecuted instantiation: stringbuffer.c:lwcollection_is_empty
Unexecuted instantiation: measures.c:lwcollection_is_empty
Unexecuted instantiation: measures3d.c:lwcollection_is_empty
Unexecuted instantiation: ptarray.c:lwcollection_is_empty
Unexecuted instantiation: lwgeom_api.c:lwcollection_is_empty
Unexecuted instantiation: lwin_wkt_parse.c:lwcollection_is_empty
Unexecuted instantiation: lwin_wkt_lex.c:lwcollection_is_empty
Unexecuted instantiation: lwlinearreferencing.c:lwcollection_is_empty
Unexecuted instantiation: geojson_import_fuzzer.cpp:lwcollection_is_empty(LWCOLLECTION const*)
Unexecuted instantiation: lwin_geojson.c:lwcollection_is_empty
Unexecuted instantiation: wkb_import_fuzzer.cpp:lwcollection_is_empty(LWCOLLECTION const*)
Unexecuted instantiation: lwin_wkb.c:lwcollection_is_empty
193
194
/**
195
 * Return true or false depending on whether a geometry is an "empty"
196
 * geometry (no vertices members)
197
 */
198
static inline int
199
lwgeom_is_empty(const LWGEOM *geom)
200
618k
{
201
618k
  switch (geom->type)
202
618k
  {
203
360k
  case POINTTYPE:
204
360k
    return lwpoint_is_empty((LWPOINT *)geom);
205
0
    break;
206
120k
  case LINETYPE:
207
120k
    return lwline_is_empty((LWLINE *)geom);
208
0
    break;
209
1.63k
  case CIRCSTRINGTYPE:
210
1.63k
    return lwcircstring_is_empty((LWCIRCSTRING *)geom);
211
0
    break;
212
84.0k
  case POLYGONTYPE:
213
84.0k
    return lwpoly_is_empty((LWPOLY *)geom);
214
0
    break;
215
348
  case TRIANGLETYPE:
216
348
    return lwtriangle_is_empty((LWTRIANGLE *)geom);
217
0
    break;
218
3.61k
  case MULTIPOINTTYPE:
219
5.11k
  case MULTILINETYPE:
220
6.80k
  case MULTIPOLYGONTYPE:
221
7.00k
  case COMPOUNDTYPE:
222
7.62k
  case CURVEPOLYTYPE:
223
7.85k
  case MULTICURVETYPE:
224
8.18k
  case MULTISURFACETYPE:
225
8.63k
  case POLYHEDRALSURFACETYPE:
226
10.0k
  case TINTYPE:
227
51.2k
  case COLLECTIONTYPE:
228
51.2k
    return lwcollection_is_empty((LWCOLLECTION *)geom);
229
0
    break;
230
0
  default:
231
0
    return LW_FALSE;
232
0
    break;
233
618k
  }
234
618k
}
Unexecuted instantiation: wkt_import_fuzzer.cpp:lwgeom_is_empty(LWGEOM const*)
lwgeom.c:lwgeom_is_empty
Line
Count
Source
200
153k
{
201
153k
  switch (geom->type)
202
153k
  {
203
132k
  case POINTTYPE:
204
132k
    return lwpoint_is_empty((LWPOINT *)geom);
205
0
    break;
206
17.0k
  case LINETYPE:
207
17.0k
    return lwline_is_empty((LWLINE *)geom);
208
0
    break;
209
0
  case CIRCSTRINGTYPE:
210
0
    return lwcircstring_is_empty((LWCIRCSTRING *)geom);
211
0
    break;
212
1.33k
  case POLYGONTYPE:
213
1.33k
    return lwpoly_is_empty((LWPOLY *)geom);
214
0
    break;
215
0
  case TRIANGLETYPE:
216
0
    return lwtriangle_is_empty((LWTRIANGLE *)geom);
217
0
    break;
218
1.36k
  case MULTIPOINTTYPE:
219
1.79k
  case MULTILINETYPE:
220
2.36k
  case MULTIPOLYGONTYPE:
221
2.36k
  case COMPOUNDTYPE:
222
2.36k
  case CURVEPOLYTYPE:
223
2.36k
  case MULTICURVETYPE:
224
2.36k
  case MULTISURFACETYPE:
225
2.36k
  case POLYHEDRALSURFACETYPE:
226
2.36k
  case TINTYPE:
227
3.07k
  case COLLECTIONTYPE:
228
3.07k
    return lwcollection_is_empty((LWCOLLECTION *)geom);
229
0
    break;
230
0
  default:
231
0
    return LW_FALSE;
232
0
    break;
233
153k
  }
234
153k
}
Unexecuted instantiation: lwpoint.c:lwgeom_is_empty
Unexecuted instantiation: lwline.c:lwgeom_is_empty
Unexecuted instantiation: lwpoly.c:lwgeom_is_empty
Unexecuted instantiation: lwtriangle.c:lwgeom_is_empty
Unexecuted instantiation: lwmpoint.c:lwgeom_is_empty
Unexecuted instantiation: lwmline.c:lwgeom_is_empty
Unexecuted instantiation: lwmpoly.c:lwgeom_is_empty
lwcollection.c:lwgeom_is_empty
Line
Count
Source
200
327k
{
201
327k
  switch (geom->type)
202
327k
  {
203
227k
  case POINTTYPE:
204
227k
    return lwpoint_is_empty((LWPOINT *)geom);
205
0
    break;
206
26.3k
  case LINETYPE:
207
26.3k
    return lwline_is_empty((LWLINE *)geom);
208
0
    break;
209
0
  case CIRCSTRINGTYPE:
210
0
    return lwcircstring_is_empty((LWCIRCSTRING *)geom);
211
0
    break;
212
67.6k
  case POLYGONTYPE:
213
67.6k
    return lwpoly_is_empty((LWPOLY *)geom);
214
0
    break;
215
0
  case TRIANGLETYPE:
216
0
    return lwtriangle_is_empty((LWTRIANGLE *)geom);
217
0
    break;
218
1.97k
  case MULTIPOINTTYPE:
219
2.85k
  case MULTILINETYPE:
220
3.78k
  case MULTIPOLYGONTYPE:
221
3.78k
  case COMPOUNDTYPE:
222
3.78k
  case CURVEPOLYTYPE:
223
3.78k
  case MULTICURVETYPE:
224
3.78k
  case MULTISURFACETYPE:
225
3.78k
  case POLYHEDRALSURFACETYPE:
226
3.78k
  case TINTYPE:
227
6.08k
  case COLLECTIONTYPE:
228
6.08k
    return lwcollection_is_empty((LWCOLLECTION *)geom);
229
0
    break;
230
0
  default:
231
0
    return LW_FALSE;
232
0
    break;
233
327k
  }
234
327k
}
Unexecuted instantiation: lwcircstring.c:lwgeom_is_empty
lwcompound.c:lwgeom_is_empty
Line
Count
Source
200
34.8k
{
201
34.8k
  switch (geom->type)
202
34.8k
  {
203
0
  case POINTTYPE:
204
0
    return lwpoint_is_empty((LWPOINT *)geom);
205
0
    break;
206
33.8k
  case LINETYPE:
207
33.8k
    return lwline_is_empty((LWLINE *)geom);
208
0
    break;
209
1.00k
  case CIRCSTRINGTYPE:
210
1.00k
    return lwcircstring_is_empty((LWCIRCSTRING *)geom);
211
0
    break;
212
0
  case POLYGONTYPE:
213
0
    return lwpoly_is_empty((LWPOLY *)geom);
214
0
    break;
215
0
  case TRIANGLETYPE:
216
0
    return lwtriangle_is_empty((LWTRIANGLE *)geom);
217
0
    break;
218
0
  case MULTIPOINTTYPE:
219
0
  case MULTILINETYPE:
220
0
  case MULTIPOLYGONTYPE:
221
0
  case COMPOUNDTYPE:
222
0
  case CURVEPOLYTYPE:
223
0
  case MULTICURVETYPE:
224
0
  case MULTISURFACETYPE:
225
0
  case POLYHEDRALSURFACETYPE:
226
0
  case TINTYPE:
227
0
  case COLLECTIONTYPE:
228
0
    return lwcollection_is_empty((LWCOLLECTION *)geom);
229
0
    break;
230
0
  default:
231
0
    return LW_FALSE;
232
0
    break;
233
34.8k
  }
234
34.8k
}
Unexecuted instantiation: lwcurvepoly.c:lwgeom_is_empty
Unexecuted instantiation: lwpsurface.c:lwgeom_is_empty
Unexecuted instantiation: lwtin.c:lwgeom_is_empty
Unexecuted instantiation: lwiterator.c:lwgeom_is_empty
Unexecuted instantiation: lwout_wkt.c:lwgeom_is_empty
lwin_wkt.c:lwgeom_is_empty
Line
Count
Source
200
102k
{
201
102k
  switch (geom->type)
202
102k
  {
203
1.15k
  case POINTTYPE:
204
1.15k
    return lwpoint_is_empty((LWPOINT *)geom);
205
0
    break;
206
43.0k
  case LINETYPE:
207
43.0k
    return lwline_is_empty((LWLINE *)geom);
208
0
    break;
209
627
  case CIRCSTRINGTYPE:
210
627
    return lwcircstring_is_empty((LWCIRCSTRING *)geom);
211
0
    break;
212
15.0k
  case POLYGONTYPE:
213
15.0k
    return lwpoly_is_empty((LWPOLY *)geom);
214
0
    break;
215
348
  case TRIANGLETYPE:
216
348
    return lwtriangle_is_empty((LWTRIANGLE *)geom);
217
0
    break;
218
272
  case MULTIPOINTTYPE:
219
468
  case MULTILINETYPE:
220
662
  case MULTIPOLYGONTYPE:
221
863
  case COMPOUNDTYPE:
222
1.47k
  case CURVEPOLYTYPE:
223
1.70k
  case MULTICURVETYPE:
224
2.03k
  case MULTISURFACETYPE:
225
2.48k
  case POLYHEDRALSURFACETYPE:
226
3.89k
  case TINTYPE:
227
42.0k
  case COLLECTIONTYPE:
228
42.0k
    return lwcollection_is_empty((LWCOLLECTION *)geom);
229
0
    break;
230
0
  default:
231
0
    return LW_FALSE;
232
0
    break;
233
102k
  }
234
102k
}
Unexecuted instantiation: lwutil.c:lwgeom_is_empty
Unexecuted instantiation: lwhomogenize.c:lwgeom_is_empty
Unexecuted instantiation: lwalgorithm.c:lwgeom_is_empty
Unexecuted instantiation: lwstroke.c:lwgeom_is_empty
Unexecuted instantiation: lwprint.c:lwgeom_is_empty
Unexecuted instantiation: gbox.c:lwgeom_is_empty
Unexecuted instantiation: lwgeodetic.c:lwgeom_is_empty
Unexecuted instantiation: lwgeom_geos.c:lwgeom_is_empty
Unexecuted instantiation: lwgeom_geos_node.c:lwgeom_is_empty
Unexecuted instantiation: lwgeom_geos_split.c:lwgeom_is_empty
Unexecuted instantiation: lwspheroid.c:lwgeom_is_empty
Unexecuted instantiation: stringbuffer.c:lwgeom_is_empty
Unexecuted instantiation: measures.c:lwgeom_is_empty
Unexecuted instantiation: measures3d.c:lwgeom_is_empty
Unexecuted instantiation: ptarray.c:lwgeom_is_empty
Unexecuted instantiation: lwgeom_api.c:lwgeom_is_empty
Unexecuted instantiation: lwin_wkt_parse.c:lwgeom_is_empty
Unexecuted instantiation: lwin_wkt_lex.c:lwgeom_is_empty
Unexecuted instantiation: lwlinearreferencing.c:lwgeom_is_empty
Unexecuted instantiation: geojson_import_fuzzer.cpp:lwgeom_is_empty(LWGEOM const*)
Unexecuted instantiation: lwin_geojson.c:lwgeom_is_empty
Unexecuted instantiation: wkb_import_fuzzer.cpp:lwgeom_is_empty(LWGEOM const*)
Unexecuted instantiation: lwin_wkb.c:lwgeom_is_empty
235
236
inline static uint64_t
237
uint64_interleave_2(uint64_t x, uint64_t y)
238
0
{
239
0
  x = (x | (x << 16)) & 0x0000FFFF0000FFFFULL;
240
0
  x = (x | (x << 8)) & 0x00FF00FF00FF00FFULL;
241
0
  x = (x | (x << 4)) & 0x0F0F0F0F0F0F0F0FULL;
242
0
  x = (x | (x << 2)) & 0x3333333333333333ULL;
243
0
  x = (x | (x << 1)) & 0x5555555555555555ULL;
244
245
0
  y = (y | (y << 16)) & 0x0000FFFF0000FFFFULL;
246
0
  y = (y | (y << 8)) & 0x00FF00FF00FF00FFULL;
247
0
  y = (y | (y << 4)) & 0x0F0F0F0F0F0F0F0FULL;
248
0
  y = (y | (y << 2)) & 0x3333333333333333ULL;
249
0
  y = (y | (y << 1)) & 0x5555555555555555ULL;
250
251
0
  return x | (y << 1);
252
0
}
Unexecuted instantiation: wkt_import_fuzzer.cpp:uint64_interleave_2(unsigned long, unsigned long)
Unexecuted instantiation: lwgeom.c:uint64_interleave_2
Unexecuted instantiation: lwpoint.c:uint64_interleave_2
Unexecuted instantiation: lwline.c:uint64_interleave_2
Unexecuted instantiation: lwpoly.c:uint64_interleave_2
Unexecuted instantiation: lwtriangle.c:uint64_interleave_2
Unexecuted instantiation: lwmpoint.c:uint64_interleave_2
Unexecuted instantiation: lwmline.c:uint64_interleave_2
Unexecuted instantiation: lwmpoly.c:uint64_interleave_2
Unexecuted instantiation: lwcollection.c:uint64_interleave_2
Unexecuted instantiation: lwcircstring.c:uint64_interleave_2
Unexecuted instantiation: lwcompound.c:uint64_interleave_2
Unexecuted instantiation: lwcurvepoly.c:uint64_interleave_2
Unexecuted instantiation: lwpsurface.c:uint64_interleave_2
Unexecuted instantiation: lwtin.c:uint64_interleave_2
Unexecuted instantiation: lwiterator.c:uint64_interleave_2
Unexecuted instantiation: lwout_wkt.c:uint64_interleave_2
Unexecuted instantiation: lwin_wkt.c:uint64_interleave_2
Unexecuted instantiation: lwutil.c:uint64_interleave_2
Unexecuted instantiation: lwhomogenize.c:uint64_interleave_2
Unexecuted instantiation: lwalgorithm.c:uint64_interleave_2
Unexecuted instantiation: lwstroke.c:uint64_interleave_2
Unexecuted instantiation: lwprint.c:uint64_interleave_2
Unexecuted instantiation: gbox.c:uint64_interleave_2
Unexecuted instantiation: lwgeodetic.c:uint64_interleave_2
Unexecuted instantiation: lwgeom_geos.c:uint64_interleave_2
Unexecuted instantiation: lwgeom_geos_node.c:uint64_interleave_2
Unexecuted instantiation: lwgeom_geos_split.c:uint64_interleave_2
Unexecuted instantiation: lwspheroid.c:uint64_interleave_2
Unexecuted instantiation: stringbuffer.c:uint64_interleave_2
Unexecuted instantiation: measures.c:uint64_interleave_2
Unexecuted instantiation: measures3d.c:uint64_interleave_2
Unexecuted instantiation: ptarray.c:uint64_interleave_2
Unexecuted instantiation: lwgeom_api.c:uint64_interleave_2
Unexecuted instantiation: lwin_wkt_parse.c:uint64_interleave_2
Unexecuted instantiation: lwin_wkt_lex.c:uint64_interleave_2
Unexecuted instantiation: lwlinearreferencing.c:uint64_interleave_2
Unexecuted instantiation: geojson_import_fuzzer.cpp:uint64_interleave_2(unsigned long, unsigned long)
Unexecuted instantiation: lwin_geojson.c:uint64_interleave_2
Unexecuted instantiation: wkb_import_fuzzer.cpp:uint64_interleave_2(unsigned long, unsigned long)
Unexecuted instantiation: lwin_wkb.c:uint64_interleave_2
253
254
/* Based on https://github.com/rawrunprotected/hilbert_curves Public Domain code */
255
inline static uint64_t
256
uint32_hilbert(uint32_t px, uint32_t py)
257
0
{
258
0
  uint64_t x = px;
259
0
  uint64_t y = py;
260
261
0
  uint64_t A, B, C, D;
262
0
  uint64_t a, b, c, d;
263
0
  uint64_t i0, i1;
264
265
  // Initial prefix scan round, prime with x and y
266
0
  {
267
0
    a = x ^ y;
268
0
    b = 0xFFFFFFFFULL ^ a;
269
0
    c = 0xFFFFFFFFULL ^ (x | y);
270
0
    d = x & (y ^ 0xFFFFFFFFULL);
271
272
0
    A = a | (b >> 1);
273
0
    B = (a >> 1) ^ a;
274
0
    C = ((c >> 1) ^ (b & (d >> 1))) ^ c;
275
0
    D = ((a & (c >> 1)) ^ (d >> 1)) ^ d;
276
0
  }
277
278
0
  {
279
0
    a = A;
280
0
    b = B;
281
0
    c = C;
282
0
    d = D;
283
284
0
    A = ((a & (a >> 2)) ^ (b & (b >> 2)));
285
0
    B = ((a & (b >> 2)) ^ (b & ((a ^ b) >> 2)));
286
0
    C ^= ((a & (c >> 2)) ^ (b & (d >> 2)));
287
0
    D ^= ((b & (c >> 2)) ^ ((a ^ b) & (d >> 2)));
288
0
  }
289
290
0
  {
291
0
    a = A;
292
0
    b = B;
293
0
    c = C;
294
0
    d = D;
295
296
0
    A = ((a & (a >> 4)) ^ (b & (b >> 4)));
297
0
    B = ((a & (b >> 4)) ^ (b & ((a ^ b) >> 4)));
298
0
    C ^= ((a & (c >> 4)) ^ (b & (d >> 4)));
299
0
    D ^= ((b & (c >> 4)) ^ ((a ^ b) & (d >> 4)));
300
0
  }
301
302
0
  {
303
0
    a = A;
304
0
    b = B;
305
0
    c = C;
306
0
    d = D;
307
308
0
    A = ((a & (a >> 8)) ^ (b & (b >> 8)));
309
0
    B = ((a & (b >> 8)) ^ (b & ((a ^ b) >> 8)));
310
0
    C ^= ((a & (c >> 8)) ^ (b & (d >> 8)));
311
0
    D ^= ((b & (c >> 8)) ^ ((a ^ b) & (d >> 8)));
312
0
  }
313
314
0
  {
315
0
    a = A;
316
0
    b = B;
317
0
    c = C;
318
0
    d = D;
319
320
0
    C ^= ((a & (c >> 16)) ^ (b & (d >> 16)));
321
0
    D ^= ((b & (c >> 16)) ^ ((a ^ b) & (d >> 16)));
322
0
  }
323
324
  // Undo transformation prefix scan
325
0
  a = C ^ (C >> 1);
326
0
  b = D ^ (D >> 1);
327
328
  // Recover index bits
329
0
  i0 = x ^ y;
330
0
  i1 = b | (0xFFFFFFFFULL ^ (i0 | a));
331
332
0
  return uint64_interleave_2(i0, i1);
333
0
}
Unexecuted instantiation: wkt_import_fuzzer.cpp:uint32_hilbert(unsigned int, unsigned int)
Unexecuted instantiation: lwgeom.c:uint32_hilbert
Unexecuted instantiation: lwpoint.c:uint32_hilbert
Unexecuted instantiation: lwline.c:uint32_hilbert
Unexecuted instantiation: lwpoly.c:uint32_hilbert
Unexecuted instantiation: lwtriangle.c:uint32_hilbert
Unexecuted instantiation: lwmpoint.c:uint32_hilbert
Unexecuted instantiation: lwmline.c:uint32_hilbert
Unexecuted instantiation: lwmpoly.c:uint32_hilbert
Unexecuted instantiation: lwcollection.c:uint32_hilbert
Unexecuted instantiation: lwcircstring.c:uint32_hilbert
Unexecuted instantiation: lwcompound.c:uint32_hilbert
Unexecuted instantiation: lwcurvepoly.c:uint32_hilbert
Unexecuted instantiation: lwpsurface.c:uint32_hilbert
Unexecuted instantiation: lwtin.c:uint32_hilbert
Unexecuted instantiation: lwiterator.c:uint32_hilbert
Unexecuted instantiation: lwout_wkt.c:uint32_hilbert
Unexecuted instantiation: lwin_wkt.c:uint32_hilbert
Unexecuted instantiation: lwutil.c:uint32_hilbert
Unexecuted instantiation: lwhomogenize.c:uint32_hilbert
Unexecuted instantiation: lwalgorithm.c:uint32_hilbert
Unexecuted instantiation: lwstroke.c:uint32_hilbert
Unexecuted instantiation: lwprint.c:uint32_hilbert
Unexecuted instantiation: gbox.c:uint32_hilbert
Unexecuted instantiation: lwgeodetic.c:uint32_hilbert
Unexecuted instantiation: lwgeom_geos.c:uint32_hilbert
Unexecuted instantiation: lwgeom_geos_node.c:uint32_hilbert
Unexecuted instantiation: lwgeom_geos_split.c:uint32_hilbert
Unexecuted instantiation: lwspheroid.c:uint32_hilbert
Unexecuted instantiation: stringbuffer.c:uint32_hilbert
Unexecuted instantiation: measures.c:uint32_hilbert
Unexecuted instantiation: measures3d.c:uint32_hilbert
Unexecuted instantiation: ptarray.c:uint32_hilbert
Unexecuted instantiation: lwgeom_api.c:uint32_hilbert
Unexecuted instantiation: lwin_wkt_parse.c:uint32_hilbert
Unexecuted instantiation: lwin_wkt_lex.c:uint32_hilbert
Unexecuted instantiation: lwlinearreferencing.c:uint32_hilbert
Unexecuted instantiation: geojson_import_fuzzer.cpp:uint32_hilbert(unsigned int, unsigned int)
Unexecuted instantiation: lwin_geojson.c:uint32_hilbert
Unexecuted instantiation: wkb_import_fuzzer.cpp:uint32_hilbert(unsigned int, unsigned int)
Unexecuted instantiation: lwin_wkb.c:uint32_hilbert
334
335
/*
336
 * This macro is based on PG_FREE_IF_COPY, except that it accepts two pointers.
337
 * See PG_FREE_IF_COPY comment in src/include/fmgr.h in postgres source code
338
 * for more details.
339
 */
340
#define POSTGIS_FREE_IF_COPY_P(ptrsrc, ptrori) \
341
  do \
342
  { \
343
    if ((Pointer)(ptrsrc) != (Pointer)(ptrori)) \
344
      pfree(ptrsrc); \
345
  } while (0)