/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: raster_deserialize_fuzzer.c:distance2d_sqr_pt_pt Unexecuted instantiation: rt_pixel.c:distance2d_sqr_pt_pt Unexecuted instantiation: rt_band.c:distance2d_sqr_pt_pt Unexecuted instantiation: rt_raster.c:distance2d_sqr_pt_pt Unexecuted instantiation: rt_serialize.c:distance2d_sqr_pt_pt Unexecuted instantiation: rt_context.c:distance2d_sqr_pt_pt Unexecuted instantiation: rt_util.c:distance2d_sqr_pt_pt Unexecuted instantiation: rt_spatial_relationship.c:distance2d_sqr_pt_pt Unexecuted instantiation: rt_geometry.c:distance2d_sqr_pt_pt Unexecuted instantiation: rt_gdal.c:distance2d_sqr_pt_pt Unexecuted instantiation: stringbuffer.c:distance2d_sqr_pt_pt Unexecuted instantiation: optionlist.c:distance2d_sqr_pt_pt Unexecuted instantiation: measures.c:distance2d_sqr_pt_pt Unexecuted instantiation: ptarray.c:distance2d_sqr_pt_pt Unexecuted instantiation: lwgeom_api.c:distance2d_sqr_pt_pt 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: lwin_wkb.c:distance2d_sqr_pt_pt Unexecuted instantiation: lwiterator.c:distance2d_sqr_pt_pt Unexecuted instantiation: lwout_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: gserialized.c:distance2d_sqr_pt_pt Unexecuted instantiation: gserialized1.c:distance2d_sqr_pt_pt Unexecuted instantiation: gserialized2.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_clean.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: lwnurbscurve.c:distance2d_sqr_pt_pt Unexecuted instantiation: lwspheroid.c:distance2d_sqr_pt_pt Unexecuted instantiation: measures3d.c:distance2d_sqr_pt_pt Unexecuted instantiation: lwlinearreferencing.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: raster_deserialize_fuzzer.c:distance3d_sqr_pt_pt Unexecuted instantiation: rt_pixel.c:distance3d_sqr_pt_pt Unexecuted instantiation: rt_band.c:distance3d_sqr_pt_pt Unexecuted instantiation: rt_raster.c:distance3d_sqr_pt_pt Unexecuted instantiation: rt_serialize.c:distance3d_sqr_pt_pt Unexecuted instantiation: rt_context.c:distance3d_sqr_pt_pt Unexecuted instantiation: rt_util.c:distance3d_sqr_pt_pt Unexecuted instantiation: rt_spatial_relationship.c:distance3d_sqr_pt_pt Unexecuted instantiation: rt_geometry.c:distance3d_sqr_pt_pt Unexecuted instantiation: rt_gdal.c:distance3d_sqr_pt_pt Unexecuted instantiation: stringbuffer.c:distance3d_sqr_pt_pt Unexecuted instantiation: optionlist.c:distance3d_sqr_pt_pt Unexecuted instantiation: measures.c:distance3d_sqr_pt_pt Unexecuted instantiation: ptarray.c:distance3d_sqr_pt_pt Unexecuted instantiation: lwgeom_api.c:distance3d_sqr_pt_pt 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: lwin_wkb.c:distance3d_sqr_pt_pt Unexecuted instantiation: lwiterator.c:distance3d_sqr_pt_pt Unexecuted instantiation: lwout_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: gserialized.c:distance3d_sqr_pt_pt Unexecuted instantiation: gserialized1.c:distance3d_sqr_pt_pt Unexecuted instantiation: gserialized2.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_clean.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: lwnurbscurve.c:distance3d_sqr_pt_pt Unexecuted instantiation: lwspheroid.c:distance3d_sqr_pt_pt Unexecuted instantiation: measures3d.c:distance3d_sqr_pt_pt Unexecuted instantiation: lwlinearreferencing.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 | 0 | { |
58 | 0 | return sizeof(double) * FLAGS_NDIMS(pa->flags); |
59 | 0 | } Unexecuted instantiation: raster_deserialize_fuzzer.c:ptarray_point_size Unexecuted instantiation: rt_pixel.c:ptarray_point_size Unexecuted instantiation: rt_band.c:ptarray_point_size Unexecuted instantiation: rt_raster.c:ptarray_point_size Unexecuted instantiation: rt_serialize.c:ptarray_point_size Unexecuted instantiation: rt_context.c:ptarray_point_size Unexecuted instantiation: rt_util.c:ptarray_point_size Unexecuted instantiation: rt_spatial_relationship.c:ptarray_point_size Unexecuted instantiation: rt_geometry.c:ptarray_point_size Unexecuted instantiation: rt_gdal.c:ptarray_point_size Unexecuted instantiation: stringbuffer.c:ptarray_point_size Unexecuted instantiation: optionlist.c:ptarray_point_size Unexecuted instantiation: measures.c:ptarray_point_size Unexecuted instantiation: ptarray.c:ptarray_point_size Unexecuted instantiation: lwgeom_api.c:ptarray_point_size 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: lwin_wkb.c:ptarray_point_size Unexecuted instantiation: lwiterator.c:ptarray_point_size Unexecuted instantiation: lwout_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 Unexecuted instantiation: gbox.c:ptarray_point_size Unexecuted instantiation: gserialized.c:ptarray_point_size Unexecuted instantiation: gserialized1.c:ptarray_point_size Unexecuted instantiation: gserialized2.c:ptarray_point_size Unexecuted instantiation: lwgeodetic.c:ptarray_point_size Unexecuted instantiation: lwgeom_geos.c:ptarray_point_size Unexecuted instantiation: lwgeom_geos_clean.c:ptarray_point_size Unexecuted instantiation: lwgeom_geos_node.c:ptarray_point_size Unexecuted instantiation: lwgeom_geos_split.c:ptarray_point_size Unexecuted instantiation: lwnurbscurve.c:ptarray_point_size Unexecuted instantiation: lwspheroid.c:ptarray_point_size Unexecuted instantiation: measures3d.c:ptarray_point_size Unexecuted instantiation: lwlinearreferencing.c:ptarray_point_size |
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 | 0 | { |
77 | 0 | size_t size; |
78 | 0 | uint8_t *ptr; |
79 | |
|
80 | 0 | assert(pa); |
81 | 0 | assert(n <= pa->npoints); |
82 | 0 | assert(n <= pa->maxpoints); |
83 | |
|
84 | 0 | size = ptarray_point_size(pa); |
85 | 0 | ptr = pa->serialized_pointlist + size * n; |
86 | |
|
87 | 0 | return ptr; |
88 | 0 | } Unexecuted instantiation: raster_deserialize_fuzzer.c:getPoint_internal Unexecuted instantiation: rt_pixel.c:getPoint_internal Unexecuted instantiation: rt_band.c:getPoint_internal Unexecuted instantiation: rt_raster.c:getPoint_internal Unexecuted instantiation: rt_serialize.c:getPoint_internal Unexecuted instantiation: rt_context.c:getPoint_internal Unexecuted instantiation: rt_util.c:getPoint_internal Unexecuted instantiation: rt_spatial_relationship.c:getPoint_internal Unexecuted instantiation: rt_geometry.c:getPoint_internal Unexecuted instantiation: rt_gdal.c:getPoint_internal Unexecuted instantiation: stringbuffer.c:getPoint_internal Unexecuted instantiation: optionlist.c:getPoint_internal Unexecuted instantiation: measures.c:getPoint_internal Unexecuted instantiation: ptarray.c:getPoint_internal Unexecuted instantiation: lwgeom_api.c:getPoint_internal 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: lwin_wkb.c:getPoint_internal Unexecuted instantiation: lwiterator.c:getPoint_internal Unexecuted instantiation: lwout_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 Unexecuted instantiation: gbox.c:getPoint_internal Unexecuted instantiation: gserialized.c:getPoint_internal Unexecuted instantiation: gserialized1.c:getPoint_internal Unexecuted instantiation: gserialized2.c:getPoint_internal Unexecuted instantiation: lwgeodetic.c:getPoint_internal Unexecuted instantiation: lwgeom_geos.c:getPoint_internal Unexecuted instantiation: lwgeom_geos_clean.c:getPoint_internal Unexecuted instantiation: lwgeom_geos_node.c:getPoint_internal Unexecuted instantiation: lwgeom_geos_split.c:getPoint_internal Unexecuted instantiation: lwnurbscurve.c:getPoint_internal Unexecuted instantiation: lwspheroid.c:getPoint_internal Unexecuted instantiation: measures3d.c:getPoint_internal Unexecuted instantiation: lwlinearreferencing.c:getPoint_internal |
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 | 0 | { |
99 | 0 | return (const POINT2D *)getPoint_internal(pa, n); |
100 | 0 | } Unexecuted instantiation: raster_deserialize_fuzzer.c:getPoint2d_cp Unexecuted instantiation: rt_pixel.c:getPoint2d_cp Unexecuted instantiation: rt_band.c:getPoint2d_cp Unexecuted instantiation: rt_raster.c:getPoint2d_cp Unexecuted instantiation: rt_serialize.c:getPoint2d_cp Unexecuted instantiation: rt_context.c:getPoint2d_cp Unexecuted instantiation: rt_util.c:getPoint2d_cp Unexecuted instantiation: rt_spatial_relationship.c:getPoint2d_cp Unexecuted instantiation: rt_geometry.c:getPoint2d_cp Unexecuted instantiation: rt_gdal.c:getPoint2d_cp Unexecuted instantiation: stringbuffer.c:getPoint2d_cp Unexecuted instantiation: optionlist.c:getPoint2d_cp Unexecuted instantiation: measures.c:getPoint2d_cp Unexecuted instantiation: ptarray.c:getPoint2d_cp Unexecuted instantiation: lwgeom_api.c:getPoint2d_cp 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: lwin_wkb.c:getPoint2d_cp Unexecuted instantiation: lwiterator.c:getPoint2d_cp Unexecuted instantiation: lwout_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 Unexecuted instantiation: gbox.c:getPoint2d_cp Unexecuted instantiation: gserialized.c:getPoint2d_cp Unexecuted instantiation: gserialized1.c:getPoint2d_cp Unexecuted instantiation: gserialized2.c:getPoint2d_cp Unexecuted instantiation: lwgeodetic.c:getPoint2d_cp Unexecuted instantiation: lwgeom_geos.c:getPoint2d_cp Unexecuted instantiation: lwgeom_geos_clean.c:getPoint2d_cp Unexecuted instantiation: lwgeom_geos_node.c:getPoint2d_cp Unexecuted instantiation: lwgeom_geos_split.c:getPoint2d_cp Unexecuted instantiation: lwnurbscurve.c:getPoint2d_cp Unexecuted instantiation: lwspheroid.c:getPoint2d_cp Unexecuted instantiation: measures3d.c:getPoint2d_cp Unexecuted instantiation: lwlinearreferencing.c:getPoint2d_cp |
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 | 0 | { |
111 | 0 | return (const POINT3D *)getPoint_internal(pa, n); |
112 | 0 | } Unexecuted instantiation: raster_deserialize_fuzzer.c:getPoint3d_cp Unexecuted instantiation: rt_pixel.c:getPoint3d_cp Unexecuted instantiation: rt_band.c:getPoint3d_cp Unexecuted instantiation: rt_raster.c:getPoint3d_cp Unexecuted instantiation: rt_serialize.c:getPoint3d_cp Unexecuted instantiation: rt_context.c:getPoint3d_cp Unexecuted instantiation: rt_util.c:getPoint3d_cp Unexecuted instantiation: rt_spatial_relationship.c:getPoint3d_cp Unexecuted instantiation: rt_geometry.c:getPoint3d_cp Unexecuted instantiation: rt_gdal.c:getPoint3d_cp Unexecuted instantiation: stringbuffer.c:getPoint3d_cp Unexecuted instantiation: optionlist.c:getPoint3d_cp Unexecuted instantiation: measures.c:getPoint3d_cp Unexecuted instantiation: ptarray.c:getPoint3d_cp Unexecuted instantiation: lwgeom_api.c:getPoint3d_cp 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: lwin_wkb.c:getPoint3d_cp Unexecuted instantiation: lwiterator.c:getPoint3d_cp Unexecuted instantiation: lwout_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 Unexecuted instantiation: gbox.c:getPoint3d_cp Unexecuted instantiation: gserialized.c:getPoint3d_cp Unexecuted instantiation: gserialized1.c:getPoint3d_cp Unexecuted instantiation: gserialized2.c:getPoint3d_cp Unexecuted instantiation: lwgeodetic.c:getPoint3d_cp Unexecuted instantiation: lwgeom_geos.c:getPoint3d_cp Unexecuted instantiation: lwgeom_geos_clean.c:getPoint3d_cp Unexecuted instantiation: lwgeom_geos_node.c:getPoint3d_cp Unexecuted instantiation: lwgeom_geos_split.c:getPoint3d_cp Unexecuted instantiation: lwnurbscurve.c:getPoint3d_cp Unexecuted instantiation: lwspheroid.c:getPoint3d_cp Unexecuted instantiation: measures3d.c:getPoint3d_cp Unexecuted instantiation: lwlinearreferencing.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: raster_deserialize_fuzzer.c:getPoint4d_cp Unexecuted instantiation: rt_pixel.c:getPoint4d_cp Unexecuted instantiation: rt_band.c:getPoint4d_cp Unexecuted instantiation: rt_raster.c:getPoint4d_cp Unexecuted instantiation: rt_serialize.c:getPoint4d_cp Unexecuted instantiation: rt_context.c:getPoint4d_cp Unexecuted instantiation: rt_util.c:getPoint4d_cp Unexecuted instantiation: rt_spatial_relationship.c:getPoint4d_cp Unexecuted instantiation: rt_geometry.c:getPoint4d_cp Unexecuted instantiation: rt_gdal.c:getPoint4d_cp Unexecuted instantiation: stringbuffer.c:getPoint4d_cp Unexecuted instantiation: optionlist.c:getPoint4d_cp Unexecuted instantiation: measures.c:getPoint4d_cp Unexecuted instantiation: ptarray.c:getPoint4d_cp Unexecuted instantiation: lwgeom_api.c:getPoint4d_cp 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: lwin_wkb.c:getPoint4d_cp Unexecuted instantiation: lwiterator.c:getPoint4d_cp Unexecuted instantiation: lwout_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: gserialized.c:getPoint4d_cp Unexecuted instantiation: gserialized1.c:getPoint4d_cp Unexecuted instantiation: gserialized2.c:getPoint4d_cp Unexecuted instantiation: lwgeodetic.c:getPoint4d_cp Unexecuted instantiation: lwgeom_geos.c:getPoint4d_cp Unexecuted instantiation: lwgeom_geos_clean.c:getPoint4d_cp Unexecuted instantiation: lwgeom_geos_node.c:getPoint4d_cp Unexecuted instantiation: lwgeom_geos_split.c:getPoint4d_cp Unexecuted instantiation: lwnurbscurve.c:getPoint4d_cp Unexecuted instantiation: lwspheroid.c:getPoint4d_cp Unexecuted instantiation: measures3d.c:getPoint4d_cp Unexecuted instantiation: lwlinearreferencing.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: raster_deserialize_fuzzer.c:lwgeom_as_lwpoint Unexecuted instantiation: rt_pixel.c:lwgeom_as_lwpoint Unexecuted instantiation: rt_band.c:lwgeom_as_lwpoint Unexecuted instantiation: rt_raster.c:lwgeom_as_lwpoint Unexecuted instantiation: rt_serialize.c:lwgeom_as_lwpoint Unexecuted instantiation: rt_context.c:lwgeom_as_lwpoint Unexecuted instantiation: rt_util.c:lwgeom_as_lwpoint Unexecuted instantiation: rt_spatial_relationship.c:lwgeom_as_lwpoint Unexecuted instantiation: rt_geometry.c:lwgeom_as_lwpoint Unexecuted instantiation: rt_gdal.c:lwgeom_as_lwpoint Unexecuted instantiation: stringbuffer.c:lwgeom_as_lwpoint Unexecuted instantiation: optionlist.c:lwgeom_as_lwpoint Unexecuted instantiation: measures.c:lwgeom_as_lwpoint Unexecuted instantiation: ptarray.c:lwgeom_as_lwpoint Unexecuted instantiation: lwgeom_api.c:lwgeom_as_lwpoint 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: lwin_wkb.c:lwgeom_as_lwpoint Unexecuted instantiation: lwiterator.c:lwgeom_as_lwpoint Unexecuted instantiation: lwout_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: gserialized.c:lwgeom_as_lwpoint Unexecuted instantiation: gserialized1.c:lwgeom_as_lwpoint Unexecuted instantiation: gserialized2.c:lwgeom_as_lwpoint Unexecuted instantiation: lwgeodetic.c:lwgeom_as_lwpoint Unexecuted instantiation: lwgeom_geos.c:lwgeom_as_lwpoint Unexecuted instantiation: lwgeom_geos_clean.c:lwgeom_as_lwpoint Unexecuted instantiation: lwgeom_geos_node.c:lwgeom_as_lwpoint Unexecuted instantiation: lwgeom_geos_split.c:lwgeom_as_lwpoint Unexecuted instantiation: lwnurbscurve.c:lwgeom_as_lwpoint Unexecuted instantiation: lwspheroid.c:lwgeom_as_lwpoint Unexecuted instantiation: measures3d.c:lwgeom_as_lwpoint Unexecuted instantiation: lwlinearreferencing.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: raster_deserialize_fuzzer.c:lwgeom_get_type Unexecuted instantiation: rt_pixel.c:lwgeom_get_type Unexecuted instantiation: rt_band.c:lwgeom_get_type Unexecuted instantiation: rt_raster.c:lwgeom_get_type Unexecuted instantiation: rt_serialize.c:lwgeom_get_type Unexecuted instantiation: rt_context.c:lwgeom_get_type Unexecuted instantiation: rt_util.c:lwgeom_get_type Unexecuted instantiation: rt_spatial_relationship.c:lwgeom_get_type Unexecuted instantiation: rt_geometry.c:lwgeom_get_type Unexecuted instantiation: rt_gdal.c:lwgeom_get_type Unexecuted instantiation: stringbuffer.c:lwgeom_get_type Unexecuted instantiation: optionlist.c:lwgeom_get_type Unexecuted instantiation: measures.c:lwgeom_get_type Unexecuted instantiation: ptarray.c:lwgeom_get_type Unexecuted instantiation: lwgeom_api.c:lwgeom_get_type 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: lwin_wkb.c:lwgeom_get_type Unexecuted instantiation: lwiterator.c:lwgeom_get_type Unexecuted instantiation: lwout_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: gserialized.c:lwgeom_get_type Unexecuted instantiation: gserialized1.c:lwgeom_get_type Unexecuted instantiation: gserialized2.c:lwgeom_get_type Unexecuted instantiation: lwgeodetic.c:lwgeom_get_type Unexecuted instantiation: lwgeom_geos.c:lwgeom_get_type Unexecuted instantiation: lwgeom_geos_clean.c:lwgeom_get_type Unexecuted instantiation: lwgeom_geos_node.c:lwgeom_get_type Unexecuted instantiation: lwgeom_geos_split.c:lwgeom_get_type Unexecuted instantiation: lwnurbscurve.c:lwgeom_get_type Unexecuted instantiation: lwspheroid.c:lwgeom_get_type Unexecuted instantiation: measures3d.c:lwgeom_get_type Unexecuted instantiation: lwlinearreferencing.c:lwgeom_get_type |
147 | | |
148 | | static inline int |
149 | | lwpoint_is_empty(const LWPOINT *point) |
150 | 0 | { |
151 | 0 | return !point->point || point->point->npoints < 1; |
152 | 0 | } Unexecuted instantiation: raster_deserialize_fuzzer.c:lwpoint_is_empty Unexecuted instantiation: rt_pixel.c:lwpoint_is_empty Unexecuted instantiation: rt_band.c:lwpoint_is_empty Unexecuted instantiation: rt_raster.c:lwpoint_is_empty Unexecuted instantiation: rt_serialize.c:lwpoint_is_empty Unexecuted instantiation: rt_context.c:lwpoint_is_empty Unexecuted instantiation: rt_util.c:lwpoint_is_empty Unexecuted instantiation: rt_spatial_relationship.c:lwpoint_is_empty Unexecuted instantiation: rt_geometry.c:lwpoint_is_empty Unexecuted instantiation: rt_gdal.c:lwpoint_is_empty Unexecuted instantiation: stringbuffer.c:lwpoint_is_empty Unexecuted instantiation: optionlist.c:lwpoint_is_empty Unexecuted instantiation: measures.c:lwpoint_is_empty Unexecuted instantiation: ptarray.c:lwpoint_is_empty Unexecuted instantiation: lwgeom_api.c:lwpoint_is_empty Unexecuted instantiation: lwgeom.c:lwpoint_is_empty Unexecuted instantiation: lwpoint.c:lwpoint_is_empty 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 Unexecuted instantiation: lwcollection.c:lwpoint_is_empty 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: lwin_wkb.c:lwpoint_is_empty Unexecuted instantiation: lwiterator.c:lwpoint_is_empty Unexecuted instantiation: lwout_wkt.c:lwpoint_is_empty 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: gserialized.c:lwpoint_is_empty Unexecuted instantiation: gserialized1.c:lwpoint_is_empty Unexecuted instantiation: gserialized2.c:lwpoint_is_empty Unexecuted instantiation: lwgeodetic.c:lwpoint_is_empty Unexecuted instantiation: lwgeom_geos.c:lwpoint_is_empty Unexecuted instantiation: lwgeom_geos_clean.c:lwpoint_is_empty Unexecuted instantiation: lwgeom_geos_node.c:lwpoint_is_empty Unexecuted instantiation: lwgeom_geos_split.c:lwpoint_is_empty Unexecuted instantiation: lwnurbscurve.c:lwpoint_is_empty Unexecuted instantiation: lwspheroid.c:lwpoint_is_empty Unexecuted instantiation: measures3d.c:lwpoint_is_empty Unexecuted instantiation: lwlinearreferencing.c:lwpoint_is_empty |
153 | | |
154 | | static inline int |
155 | | lwline_is_empty(const LWLINE *line) |
156 | 0 | { |
157 | 0 | return !line->points || line->points->npoints < 1; |
158 | 0 | } Unexecuted instantiation: raster_deserialize_fuzzer.c:lwline_is_empty Unexecuted instantiation: rt_pixel.c:lwline_is_empty Unexecuted instantiation: rt_band.c:lwline_is_empty Unexecuted instantiation: rt_raster.c:lwline_is_empty Unexecuted instantiation: rt_serialize.c:lwline_is_empty Unexecuted instantiation: rt_context.c:lwline_is_empty Unexecuted instantiation: rt_util.c:lwline_is_empty Unexecuted instantiation: rt_spatial_relationship.c:lwline_is_empty Unexecuted instantiation: rt_geometry.c:lwline_is_empty Unexecuted instantiation: rt_gdal.c:lwline_is_empty Unexecuted instantiation: stringbuffer.c:lwline_is_empty Unexecuted instantiation: optionlist.c:lwline_is_empty Unexecuted instantiation: measures.c:lwline_is_empty Unexecuted instantiation: ptarray.c:lwline_is_empty Unexecuted instantiation: lwgeom_api.c:lwline_is_empty Unexecuted instantiation: lwgeom.c:lwline_is_empty Unexecuted instantiation: lwpoint.c:lwline_is_empty Unexecuted instantiation: lwline.c:lwline_is_empty 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 Unexecuted instantiation: lwcollection.c:lwline_is_empty Unexecuted instantiation: lwcircstring.c:lwline_is_empty Unexecuted instantiation: lwcompound.c:lwline_is_empty Unexecuted instantiation: lwcurvepoly.c:lwline_is_empty Unexecuted instantiation: lwpsurface.c:lwline_is_empty Unexecuted instantiation: lwtin.c:lwline_is_empty Unexecuted instantiation: lwin_wkb.c:lwline_is_empty Unexecuted instantiation: lwiterator.c:lwline_is_empty Unexecuted instantiation: lwout_wkt.c:lwline_is_empty 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: gserialized.c:lwline_is_empty Unexecuted instantiation: gserialized1.c:lwline_is_empty Unexecuted instantiation: gserialized2.c:lwline_is_empty Unexecuted instantiation: lwgeodetic.c:lwline_is_empty Unexecuted instantiation: lwgeom_geos.c:lwline_is_empty Unexecuted instantiation: lwgeom_geos_clean.c:lwline_is_empty Unexecuted instantiation: lwgeom_geos_node.c:lwline_is_empty Unexecuted instantiation: lwgeom_geos_split.c:lwline_is_empty Unexecuted instantiation: lwnurbscurve.c:lwline_is_empty Unexecuted instantiation: lwspheroid.c:lwline_is_empty Unexecuted instantiation: measures3d.c:lwline_is_empty Unexecuted instantiation: lwlinearreferencing.c:lwline_is_empty |
159 | | |
160 | | static inline int |
161 | | lwcircstring_is_empty(const LWCIRCSTRING *circ) |
162 | 0 | { |
163 | 0 | return !circ->points || circ->points->npoints < 1; |
164 | 0 | } Unexecuted instantiation: raster_deserialize_fuzzer.c:lwcircstring_is_empty Unexecuted instantiation: rt_pixel.c:lwcircstring_is_empty Unexecuted instantiation: rt_band.c:lwcircstring_is_empty Unexecuted instantiation: rt_raster.c:lwcircstring_is_empty Unexecuted instantiation: rt_serialize.c:lwcircstring_is_empty Unexecuted instantiation: rt_context.c:lwcircstring_is_empty Unexecuted instantiation: rt_util.c:lwcircstring_is_empty Unexecuted instantiation: rt_spatial_relationship.c:lwcircstring_is_empty Unexecuted instantiation: rt_geometry.c:lwcircstring_is_empty Unexecuted instantiation: rt_gdal.c:lwcircstring_is_empty Unexecuted instantiation: stringbuffer.c:lwcircstring_is_empty Unexecuted instantiation: optionlist.c:lwcircstring_is_empty Unexecuted instantiation: measures.c:lwcircstring_is_empty Unexecuted instantiation: ptarray.c:lwcircstring_is_empty Unexecuted instantiation: lwgeom_api.c:lwcircstring_is_empty 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 Unexecuted instantiation: lwcompound.c:lwcircstring_is_empty Unexecuted instantiation: lwcurvepoly.c:lwcircstring_is_empty Unexecuted instantiation: lwpsurface.c:lwcircstring_is_empty Unexecuted instantiation: lwtin.c:lwcircstring_is_empty Unexecuted instantiation: lwin_wkb.c:lwcircstring_is_empty Unexecuted instantiation: lwiterator.c:lwcircstring_is_empty Unexecuted instantiation: lwout_wkt.c:lwcircstring_is_empty 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: gserialized.c:lwcircstring_is_empty Unexecuted instantiation: gserialized1.c:lwcircstring_is_empty Unexecuted instantiation: gserialized2.c:lwcircstring_is_empty Unexecuted instantiation: lwgeodetic.c:lwcircstring_is_empty Unexecuted instantiation: lwgeom_geos.c:lwcircstring_is_empty Unexecuted instantiation: lwgeom_geos_clean.c:lwcircstring_is_empty Unexecuted instantiation: lwgeom_geos_node.c:lwcircstring_is_empty Unexecuted instantiation: lwgeom_geos_split.c:lwcircstring_is_empty Unexecuted instantiation: lwnurbscurve.c:lwcircstring_is_empty Unexecuted instantiation: lwspheroid.c:lwcircstring_is_empty Unexecuted instantiation: measures3d.c:lwcircstring_is_empty Unexecuted instantiation: lwlinearreferencing.c:lwcircstring_is_empty |
165 | | |
166 | | static inline int |
167 | | lwpoly_is_empty(const LWPOLY *poly) |
168 | 0 | { |
169 | 0 | return poly->nrings < 1 || !poly->rings || !poly->rings[0] || poly->rings[0]->npoints < 1; |
170 | 0 | } Unexecuted instantiation: raster_deserialize_fuzzer.c:lwpoly_is_empty Unexecuted instantiation: rt_pixel.c:lwpoly_is_empty Unexecuted instantiation: rt_band.c:lwpoly_is_empty Unexecuted instantiation: rt_raster.c:lwpoly_is_empty Unexecuted instantiation: rt_serialize.c:lwpoly_is_empty Unexecuted instantiation: rt_context.c:lwpoly_is_empty Unexecuted instantiation: rt_util.c:lwpoly_is_empty Unexecuted instantiation: rt_spatial_relationship.c:lwpoly_is_empty Unexecuted instantiation: rt_geometry.c:lwpoly_is_empty Unexecuted instantiation: rt_gdal.c:lwpoly_is_empty Unexecuted instantiation: stringbuffer.c:lwpoly_is_empty Unexecuted instantiation: optionlist.c:lwpoly_is_empty Unexecuted instantiation: measures.c:lwpoly_is_empty Unexecuted instantiation: ptarray.c:lwpoly_is_empty Unexecuted instantiation: lwgeom_api.c:lwpoly_is_empty Unexecuted instantiation: lwgeom.c:lwpoly_is_empty Unexecuted instantiation: lwpoint.c:lwpoly_is_empty Unexecuted instantiation: lwline.c:lwpoly_is_empty Unexecuted instantiation: lwpoly.c:lwpoly_is_empty 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 Unexecuted instantiation: lwcollection.c:lwpoly_is_empty 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: lwin_wkb.c:lwpoly_is_empty Unexecuted instantiation: lwiterator.c:lwpoly_is_empty Unexecuted instantiation: lwout_wkt.c:lwpoly_is_empty 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: gserialized.c:lwpoly_is_empty Unexecuted instantiation: gserialized1.c:lwpoly_is_empty Unexecuted instantiation: gserialized2.c:lwpoly_is_empty Unexecuted instantiation: lwgeodetic.c:lwpoly_is_empty Unexecuted instantiation: lwgeom_geos.c:lwpoly_is_empty Unexecuted instantiation: lwgeom_geos_clean.c:lwpoly_is_empty Unexecuted instantiation: lwgeom_geos_node.c:lwpoly_is_empty Unexecuted instantiation: lwgeom_geos_split.c:lwpoly_is_empty Unexecuted instantiation: lwnurbscurve.c:lwpoly_is_empty Unexecuted instantiation: lwspheroid.c:lwpoly_is_empty Unexecuted instantiation: measures3d.c:lwpoly_is_empty Unexecuted instantiation: lwlinearreferencing.c:lwpoly_is_empty |
171 | | |
172 | | static inline int |
173 | | lwtriangle_is_empty(const LWTRIANGLE *triangle) |
174 | 0 | { |
175 | 0 | return !triangle->points || triangle->points->npoints < 1; |
176 | 0 | } Unexecuted instantiation: raster_deserialize_fuzzer.c:lwtriangle_is_empty Unexecuted instantiation: rt_pixel.c:lwtriangle_is_empty Unexecuted instantiation: rt_band.c:lwtriangle_is_empty Unexecuted instantiation: rt_raster.c:lwtriangle_is_empty Unexecuted instantiation: rt_serialize.c:lwtriangle_is_empty Unexecuted instantiation: rt_context.c:lwtriangle_is_empty Unexecuted instantiation: rt_util.c:lwtriangle_is_empty Unexecuted instantiation: rt_spatial_relationship.c:lwtriangle_is_empty Unexecuted instantiation: rt_geometry.c:lwtriangle_is_empty Unexecuted instantiation: rt_gdal.c:lwtriangle_is_empty Unexecuted instantiation: stringbuffer.c:lwtriangle_is_empty Unexecuted instantiation: optionlist.c:lwtriangle_is_empty Unexecuted instantiation: measures.c:lwtriangle_is_empty Unexecuted instantiation: ptarray.c:lwtriangle_is_empty Unexecuted instantiation: lwgeom_api.c:lwtriangle_is_empty 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: lwin_wkb.c:lwtriangle_is_empty Unexecuted instantiation: lwiterator.c:lwtriangle_is_empty Unexecuted instantiation: lwout_wkt.c:lwtriangle_is_empty 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: gserialized.c:lwtriangle_is_empty Unexecuted instantiation: gserialized1.c:lwtriangle_is_empty Unexecuted instantiation: gserialized2.c:lwtriangle_is_empty Unexecuted instantiation: lwgeodetic.c:lwtriangle_is_empty Unexecuted instantiation: lwgeom_geos.c:lwtriangle_is_empty Unexecuted instantiation: lwgeom_geos_clean.c:lwtriangle_is_empty Unexecuted instantiation: lwgeom_geos_node.c:lwtriangle_is_empty Unexecuted instantiation: lwgeom_geos_split.c:lwtriangle_is_empty Unexecuted instantiation: lwnurbscurve.c:lwtriangle_is_empty Unexecuted instantiation: lwspheroid.c:lwtriangle_is_empty Unexecuted instantiation: measures3d.c:lwtriangle_is_empty Unexecuted instantiation: lwlinearreferencing.c:lwtriangle_is_empty |
177 | | |
178 | | static inline int lwgeom_is_empty(const LWGEOM *geom); |
179 | | |
180 | | /** |
181 | | * Determine whether a collection geometry contains no non-empty geometries. |
182 | | * |
183 | | * Returns true if the collection has zero geometries, its geometry array is NULL, |
184 | | * or every contained geometry is empty according to lwgeom_is_empty(). Returns |
185 | | * false as soon as any contained geometry is found to be non-empty. |
186 | | * |
187 | | * @param col Collection to check; must be a valid LWCOLLECTION pointer. |
188 | | * @return LW_TRUE if the collection is empty, LW_FALSE otherwise. |
189 | | */ |
190 | | static inline int |
191 | | lwcollection_is_empty(const LWCOLLECTION *col) |
192 | 0 | { |
193 | 0 | uint32_t i; |
194 | 0 | if (col->ngeoms == 0 || !col->geoms) |
195 | 0 | return LW_TRUE; |
196 | 0 | for (i = 0; i < col->ngeoms; i++) |
197 | 0 | { |
198 | 0 | if (!lwgeom_is_empty(col->geoms[i])) |
199 | 0 | return LW_FALSE; |
200 | 0 | } |
201 | 0 | return LW_TRUE; |
202 | 0 | } Unexecuted instantiation: raster_deserialize_fuzzer.c:lwcollection_is_empty Unexecuted instantiation: rt_pixel.c:lwcollection_is_empty Unexecuted instantiation: rt_band.c:lwcollection_is_empty Unexecuted instantiation: rt_raster.c:lwcollection_is_empty Unexecuted instantiation: rt_serialize.c:lwcollection_is_empty Unexecuted instantiation: rt_context.c:lwcollection_is_empty Unexecuted instantiation: rt_util.c:lwcollection_is_empty Unexecuted instantiation: rt_spatial_relationship.c:lwcollection_is_empty Unexecuted instantiation: rt_geometry.c:lwcollection_is_empty Unexecuted instantiation: rt_gdal.c:lwcollection_is_empty Unexecuted instantiation: stringbuffer.c:lwcollection_is_empty Unexecuted instantiation: optionlist.c:lwcollection_is_empty Unexecuted instantiation: measures.c:lwcollection_is_empty Unexecuted instantiation: ptarray.c:lwcollection_is_empty Unexecuted instantiation: lwgeom_api.c:lwcollection_is_empty Unexecuted instantiation: lwgeom.c:lwcollection_is_empty 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 Unexecuted instantiation: lwcollection.c:lwcollection_is_empty 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: lwin_wkb.c:lwcollection_is_empty Unexecuted instantiation: lwiterator.c:lwcollection_is_empty Unexecuted instantiation: lwout_wkt.c:lwcollection_is_empty 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: gserialized.c:lwcollection_is_empty Unexecuted instantiation: gserialized1.c:lwcollection_is_empty Unexecuted instantiation: gserialized2.c:lwcollection_is_empty Unexecuted instantiation: lwgeodetic.c:lwcollection_is_empty Unexecuted instantiation: lwgeom_geos.c:lwcollection_is_empty Unexecuted instantiation: lwgeom_geos_clean.c:lwcollection_is_empty Unexecuted instantiation: lwgeom_geos_node.c:lwcollection_is_empty Unexecuted instantiation: lwgeom_geos_split.c:lwcollection_is_empty Unexecuted instantiation: lwnurbscurve.c:lwcollection_is_empty Unexecuted instantiation: lwspheroid.c:lwcollection_is_empty Unexecuted instantiation: measures3d.c:lwcollection_is_empty Unexecuted instantiation: lwlinearreferencing.c:lwcollection_is_empty |
203 | | |
204 | | /** |
205 | | * Determine whether a NURBS curve is empty. |
206 | | * |
207 | | * A NURBS curve is considered empty if the curve pointer is NULL, its |
208 | | * associated points array is NULL, or the points array reports zero control |
209 | | * points. |
210 | | * |
211 | | * @param curve NURBS curve to test. |
212 | | * @return LW_TRUE if the curve is empty, otherwise LW_FALSE. |
213 | | */ |
214 | | static inline int |
215 | | lwnurbscurve_is_empty(const LWNURBSCURVE *curve) |
216 | 0 | { |
217 | 0 | if (!curve) |
218 | 0 | return LW_TRUE; |
219 | | |
220 | 0 | if (!curve->points) |
221 | 0 | return LW_TRUE; |
222 | | |
223 | 0 | if (curve->points->npoints == 0) |
224 | 0 | return LW_TRUE; |
225 | | |
226 | 0 | return LW_FALSE; |
227 | 0 | } Unexecuted instantiation: raster_deserialize_fuzzer.c:lwnurbscurve_is_empty Unexecuted instantiation: rt_pixel.c:lwnurbscurve_is_empty Unexecuted instantiation: rt_band.c:lwnurbscurve_is_empty Unexecuted instantiation: rt_raster.c:lwnurbscurve_is_empty Unexecuted instantiation: rt_serialize.c:lwnurbscurve_is_empty Unexecuted instantiation: rt_context.c:lwnurbscurve_is_empty Unexecuted instantiation: rt_util.c:lwnurbscurve_is_empty Unexecuted instantiation: rt_spatial_relationship.c:lwnurbscurve_is_empty Unexecuted instantiation: rt_geometry.c:lwnurbscurve_is_empty Unexecuted instantiation: rt_gdal.c:lwnurbscurve_is_empty Unexecuted instantiation: stringbuffer.c:lwnurbscurve_is_empty Unexecuted instantiation: optionlist.c:lwnurbscurve_is_empty Unexecuted instantiation: measures.c:lwnurbscurve_is_empty Unexecuted instantiation: ptarray.c:lwnurbscurve_is_empty Unexecuted instantiation: lwgeom_api.c:lwnurbscurve_is_empty Unexecuted instantiation: lwgeom.c:lwnurbscurve_is_empty Unexecuted instantiation: lwpoint.c:lwnurbscurve_is_empty Unexecuted instantiation: lwline.c:lwnurbscurve_is_empty Unexecuted instantiation: lwpoly.c:lwnurbscurve_is_empty Unexecuted instantiation: lwtriangle.c:lwnurbscurve_is_empty Unexecuted instantiation: lwmpoint.c:lwnurbscurve_is_empty Unexecuted instantiation: lwmline.c:lwnurbscurve_is_empty Unexecuted instantiation: lwmpoly.c:lwnurbscurve_is_empty Unexecuted instantiation: lwcollection.c:lwnurbscurve_is_empty Unexecuted instantiation: lwcircstring.c:lwnurbscurve_is_empty Unexecuted instantiation: lwcompound.c:lwnurbscurve_is_empty Unexecuted instantiation: lwcurvepoly.c:lwnurbscurve_is_empty Unexecuted instantiation: lwpsurface.c:lwnurbscurve_is_empty Unexecuted instantiation: lwtin.c:lwnurbscurve_is_empty Unexecuted instantiation: lwin_wkb.c:lwnurbscurve_is_empty Unexecuted instantiation: lwiterator.c:lwnurbscurve_is_empty Unexecuted instantiation: lwout_wkt.c:lwnurbscurve_is_empty Unexecuted instantiation: lwutil.c:lwnurbscurve_is_empty Unexecuted instantiation: lwhomogenize.c:lwnurbscurve_is_empty Unexecuted instantiation: lwalgorithm.c:lwnurbscurve_is_empty Unexecuted instantiation: lwstroke.c:lwnurbscurve_is_empty Unexecuted instantiation: lwprint.c:lwnurbscurve_is_empty Unexecuted instantiation: gbox.c:lwnurbscurve_is_empty Unexecuted instantiation: gserialized.c:lwnurbscurve_is_empty Unexecuted instantiation: gserialized1.c:lwnurbscurve_is_empty Unexecuted instantiation: gserialized2.c:lwnurbscurve_is_empty Unexecuted instantiation: lwgeodetic.c:lwnurbscurve_is_empty Unexecuted instantiation: lwgeom_geos.c:lwnurbscurve_is_empty Unexecuted instantiation: lwgeom_geos_clean.c:lwnurbscurve_is_empty Unexecuted instantiation: lwgeom_geos_node.c:lwnurbscurve_is_empty Unexecuted instantiation: lwgeom_geos_split.c:lwnurbscurve_is_empty Unexecuted instantiation: lwnurbscurve.c:lwnurbscurve_is_empty Unexecuted instantiation: lwspheroid.c:lwnurbscurve_is_empty Unexecuted instantiation: measures3d.c:lwnurbscurve_is_empty Unexecuted instantiation: lwlinearreferencing.c:lwnurbscurve_is_empty |
228 | | |
229 | | /** |
230 | | * Determine whether a geometry contains no vertices. |
231 | | * |
232 | | * Returns LW_TRUE if the provided LWGEOM has no coordinate vertices according to |
233 | | * its concrete type (points, lines, rings, polygons, collections, NURBS curves, etc.). |
234 | | * The check is delegated to type-specific emptiness helpers; unrecognized geometry |
235 | | * types are treated as non-empty (returns LW_FALSE). |
236 | | * |
237 | | * The caller must pass a non-NULL geom pointer whose ->type field is valid. |
238 | | * |
239 | | * @param geom Geometry to test for emptiness. |
240 | | * @return LW_TRUE if the geometry is empty, otherwise LW_FALSE. |
241 | | */ |
242 | | static inline int |
243 | | lwgeom_is_empty(const LWGEOM *geom) |
244 | 0 | { |
245 | 0 | switch (geom->type) |
246 | 0 | { |
247 | 0 | case POINTTYPE: |
248 | 0 | return lwpoint_is_empty((LWPOINT *)geom); |
249 | 0 | break; |
250 | 0 | case LINETYPE: |
251 | 0 | return lwline_is_empty((LWLINE *)geom); |
252 | 0 | break; |
253 | 0 | case CIRCSTRINGTYPE: |
254 | 0 | return lwcircstring_is_empty((LWCIRCSTRING *)geom); |
255 | 0 | break; |
256 | 0 | case POLYGONTYPE: |
257 | 0 | return lwpoly_is_empty((LWPOLY *)geom); |
258 | 0 | break; |
259 | 0 | case TRIANGLETYPE: |
260 | 0 | return lwtriangle_is_empty((LWTRIANGLE *)geom); |
261 | 0 | break; |
262 | 0 | case MULTIPOINTTYPE: |
263 | 0 | case MULTILINETYPE: |
264 | 0 | case MULTIPOLYGONTYPE: |
265 | 0 | case COMPOUNDTYPE: |
266 | 0 | case CURVEPOLYTYPE: |
267 | 0 | case MULTICURVETYPE: |
268 | 0 | case MULTISURFACETYPE: |
269 | 0 | case POLYHEDRALSURFACETYPE: |
270 | 0 | case TINTYPE: |
271 | 0 | case COLLECTIONTYPE: |
272 | 0 | return lwcollection_is_empty((LWCOLLECTION *)geom); |
273 | 0 | break; |
274 | 0 | case NURBSCURVETYPE: |
275 | 0 | return lwnurbscurve_is_empty((LWNURBSCURVE*)geom); |
276 | 0 | break; |
277 | 0 | default: |
278 | 0 | return LW_FALSE; |
279 | 0 | break; |
280 | 0 | } |
281 | 0 | } Unexecuted instantiation: raster_deserialize_fuzzer.c:lwgeom_is_empty Unexecuted instantiation: rt_pixel.c:lwgeom_is_empty Unexecuted instantiation: rt_band.c:lwgeom_is_empty Unexecuted instantiation: rt_raster.c:lwgeom_is_empty Unexecuted instantiation: rt_serialize.c:lwgeom_is_empty Unexecuted instantiation: rt_context.c:lwgeom_is_empty Unexecuted instantiation: rt_util.c:lwgeom_is_empty Unexecuted instantiation: rt_spatial_relationship.c:lwgeom_is_empty Unexecuted instantiation: rt_geometry.c:lwgeom_is_empty Unexecuted instantiation: rt_gdal.c:lwgeom_is_empty Unexecuted instantiation: stringbuffer.c:lwgeom_is_empty Unexecuted instantiation: optionlist.c:lwgeom_is_empty Unexecuted instantiation: measures.c:lwgeom_is_empty Unexecuted instantiation: ptarray.c:lwgeom_is_empty Unexecuted instantiation: lwgeom_api.c:lwgeom_is_empty Unexecuted instantiation: lwgeom.c:lwgeom_is_empty 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 Unexecuted instantiation: lwcollection.c:lwgeom_is_empty Unexecuted instantiation: lwcircstring.c:lwgeom_is_empty Unexecuted instantiation: lwcompound.c:lwgeom_is_empty Unexecuted instantiation: lwcurvepoly.c:lwgeom_is_empty Unexecuted instantiation: lwpsurface.c:lwgeom_is_empty Unexecuted instantiation: lwtin.c:lwgeom_is_empty Unexecuted instantiation: lwin_wkb.c:lwgeom_is_empty Unexecuted instantiation: lwiterator.c:lwgeom_is_empty Unexecuted instantiation: lwout_wkt.c:lwgeom_is_empty 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: gserialized.c:lwgeom_is_empty Unexecuted instantiation: gserialized1.c:lwgeom_is_empty Unexecuted instantiation: gserialized2.c:lwgeom_is_empty Unexecuted instantiation: lwgeodetic.c:lwgeom_is_empty Unexecuted instantiation: lwgeom_geos.c:lwgeom_is_empty Unexecuted instantiation: lwgeom_geos_clean.c:lwgeom_is_empty Unexecuted instantiation: lwgeom_geos_node.c:lwgeom_is_empty Unexecuted instantiation: lwgeom_geos_split.c:lwgeom_is_empty Unexecuted instantiation: lwnurbscurve.c:lwgeom_is_empty Unexecuted instantiation: lwspheroid.c:lwgeom_is_empty Unexecuted instantiation: measures3d.c:lwgeom_is_empty Unexecuted instantiation: lwlinearreferencing.c:lwgeom_is_empty |
282 | | |
283 | | inline static uint64_t |
284 | | uint64_interleave_2(uint64_t x, uint64_t y) |
285 | 0 | { |
286 | 0 | x = (x | (x << 16)) & 0x0000FFFF0000FFFFULL; |
287 | 0 | x = (x | (x << 8)) & 0x00FF00FF00FF00FFULL; |
288 | 0 | x = (x | (x << 4)) & 0x0F0F0F0F0F0F0F0FULL; |
289 | 0 | x = (x | (x << 2)) & 0x3333333333333333ULL; |
290 | 0 | x = (x | (x << 1)) & 0x5555555555555555ULL; |
291 | |
|
292 | 0 | y = (y | (y << 16)) & 0x0000FFFF0000FFFFULL; |
293 | 0 | y = (y | (y << 8)) & 0x00FF00FF00FF00FFULL; |
294 | 0 | y = (y | (y << 4)) & 0x0F0F0F0F0F0F0F0FULL; |
295 | 0 | y = (y | (y << 2)) & 0x3333333333333333ULL; |
296 | 0 | y = (y | (y << 1)) & 0x5555555555555555ULL; |
297 | |
|
298 | 0 | return x | (y << 1); |
299 | 0 | } Unexecuted instantiation: raster_deserialize_fuzzer.c:uint64_interleave_2 Unexecuted instantiation: rt_pixel.c:uint64_interleave_2 Unexecuted instantiation: rt_band.c:uint64_interleave_2 Unexecuted instantiation: rt_raster.c:uint64_interleave_2 Unexecuted instantiation: rt_serialize.c:uint64_interleave_2 Unexecuted instantiation: rt_context.c:uint64_interleave_2 Unexecuted instantiation: rt_util.c:uint64_interleave_2 Unexecuted instantiation: rt_spatial_relationship.c:uint64_interleave_2 Unexecuted instantiation: rt_geometry.c:uint64_interleave_2 Unexecuted instantiation: rt_gdal.c:uint64_interleave_2 Unexecuted instantiation: stringbuffer.c:uint64_interleave_2 Unexecuted instantiation: optionlist.c:uint64_interleave_2 Unexecuted instantiation: measures.c:uint64_interleave_2 Unexecuted instantiation: ptarray.c:uint64_interleave_2 Unexecuted instantiation: lwgeom_api.c:uint64_interleave_2 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: lwin_wkb.c:uint64_interleave_2 Unexecuted instantiation: lwiterator.c:uint64_interleave_2 Unexecuted instantiation: lwout_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: gserialized.c:uint64_interleave_2 Unexecuted instantiation: gserialized1.c:uint64_interleave_2 Unexecuted instantiation: gserialized2.c:uint64_interleave_2 Unexecuted instantiation: lwgeodetic.c:uint64_interleave_2 Unexecuted instantiation: lwgeom_geos.c:uint64_interleave_2 Unexecuted instantiation: lwgeom_geos_clean.c:uint64_interleave_2 Unexecuted instantiation: lwgeom_geos_node.c:uint64_interleave_2 Unexecuted instantiation: lwgeom_geos_split.c:uint64_interleave_2 Unexecuted instantiation: lwnurbscurve.c:uint64_interleave_2 Unexecuted instantiation: lwspheroid.c:uint64_interleave_2 Unexecuted instantiation: measures3d.c:uint64_interleave_2 Unexecuted instantiation: lwlinearreferencing.c:uint64_interleave_2 |
300 | | |
301 | | /* Based on https://github.com/rawrunprotected/hilbert_curves Public Domain code */ |
302 | | inline static uint64_t |
303 | | uint32_hilbert(uint32_t px, uint32_t py) |
304 | 0 | { |
305 | 0 | uint64_t x = px; |
306 | 0 | uint64_t y = py; |
307 | |
|
308 | 0 | uint64_t A, B, C, D; |
309 | 0 | uint64_t a, b, c, d; |
310 | 0 | uint64_t i0, i1; |
311 | | |
312 | | // Initial prefix scan round, prime with x and y |
313 | 0 | { |
314 | 0 | a = x ^ y; |
315 | 0 | b = 0xFFFFFFFFULL ^ a; |
316 | 0 | c = 0xFFFFFFFFULL ^ (x | y); |
317 | 0 | d = x & (y ^ 0xFFFFFFFFULL); |
318 | |
|
319 | 0 | A = a | (b >> 1); |
320 | 0 | B = (a >> 1) ^ a; |
321 | 0 | C = ((c >> 1) ^ (b & (d >> 1))) ^ c; |
322 | 0 | D = ((a & (c >> 1)) ^ (d >> 1)) ^ d; |
323 | 0 | } |
324 | |
|
325 | 0 | { |
326 | 0 | a = A; |
327 | 0 | b = B; |
328 | 0 | c = C; |
329 | 0 | d = D; |
330 | |
|
331 | 0 | A = ((a & (a >> 2)) ^ (b & (b >> 2))); |
332 | 0 | B = ((a & (b >> 2)) ^ (b & ((a ^ b) >> 2))); |
333 | 0 | C ^= ((a & (c >> 2)) ^ (b & (d >> 2))); |
334 | 0 | D ^= ((b & (c >> 2)) ^ ((a ^ b) & (d >> 2))); |
335 | 0 | } |
336 | |
|
337 | 0 | { |
338 | 0 | a = A; |
339 | 0 | b = B; |
340 | 0 | c = C; |
341 | 0 | d = D; |
342 | |
|
343 | 0 | A = ((a & (a >> 4)) ^ (b & (b >> 4))); |
344 | 0 | B = ((a & (b >> 4)) ^ (b & ((a ^ b) >> 4))); |
345 | 0 | C ^= ((a & (c >> 4)) ^ (b & (d >> 4))); |
346 | 0 | D ^= ((b & (c >> 4)) ^ ((a ^ b) & (d >> 4))); |
347 | 0 | } |
348 | |
|
349 | 0 | { |
350 | 0 | a = A; |
351 | 0 | b = B; |
352 | 0 | c = C; |
353 | 0 | d = D; |
354 | |
|
355 | 0 | A = ((a & (a >> 8)) ^ (b & (b >> 8))); |
356 | 0 | B = ((a & (b >> 8)) ^ (b & ((a ^ b) >> 8))); |
357 | 0 | C ^= ((a & (c >> 8)) ^ (b & (d >> 8))); |
358 | 0 | D ^= ((b & (c >> 8)) ^ ((a ^ b) & (d >> 8))); |
359 | 0 | } |
360 | |
|
361 | 0 | { |
362 | 0 | a = A; |
363 | 0 | b = B; |
364 | 0 | c = C; |
365 | 0 | d = D; |
366 | |
|
367 | 0 | C ^= ((a & (c >> 16)) ^ (b & (d >> 16))); |
368 | 0 | D ^= ((b & (c >> 16)) ^ ((a ^ b) & (d >> 16))); |
369 | 0 | } |
370 | | |
371 | | // Undo transformation prefix scan |
372 | 0 | a = C ^ (C >> 1); |
373 | 0 | b = D ^ (D >> 1); |
374 | | |
375 | | // Recover index bits |
376 | 0 | i0 = x ^ y; |
377 | 0 | i1 = b | (0xFFFFFFFFULL ^ (i0 | a)); |
378 | |
|
379 | 0 | return uint64_interleave_2(i0, i1); |
380 | 0 | } Unexecuted instantiation: raster_deserialize_fuzzer.c:uint32_hilbert Unexecuted instantiation: rt_pixel.c:uint32_hilbert Unexecuted instantiation: rt_band.c:uint32_hilbert Unexecuted instantiation: rt_raster.c:uint32_hilbert Unexecuted instantiation: rt_serialize.c:uint32_hilbert Unexecuted instantiation: rt_context.c:uint32_hilbert Unexecuted instantiation: rt_util.c:uint32_hilbert Unexecuted instantiation: rt_spatial_relationship.c:uint32_hilbert Unexecuted instantiation: rt_geometry.c:uint32_hilbert Unexecuted instantiation: rt_gdal.c:uint32_hilbert Unexecuted instantiation: stringbuffer.c:uint32_hilbert Unexecuted instantiation: optionlist.c:uint32_hilbert Unexecuted instantiation: measures.c:uint32_hilbert Unexecuted instantiation: ptarray.c:uint32_hilbert Unexecuted instantiation: lwgeom_api.c:uint32_hilbert 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: lwin_wkb.c:uint32_hilbert Unexecuted instantiation: lwiterator.c:uint32_hilbert Unexecuted instantiation: lwout_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: gserialized.c:uint32_hilbert Unexecuted instantiation: gserialized1.c:uint32_hilbert Unexecuted instantiation: gserialized2.c:uint32_hilbert Unexecuted instantiation: lwgeodetic.c:uint32_hilbert Unexecuted instantiation: lwgeom_geos.c:uint32_hilbert Unexecuted instantiation: lwgeom_geos_clean.c:uint32_hilbert Unexecuted instantiation: lwgeom_geos_node.c:uint32_hilbert Unexecuted instantiation: lwgeom_geos_split.c:uint32_hilbert Unexecuted instantiation: lwnurbscurve.c:uint32_hilbert Unexecuted instantiation: lwspheroid.c:uint32_hilbert Unexecuted instantiation: measures3d.c:uint32_hilbert Unexecuted instantiation: lwlinearreferencing.c:uint32_hilbert |
381 | | |
382 | | /* |
383 | | * This macro is based on PG_FREE_IF_COPY, except that it accepts two pointers. |
384 | | * See PG_FREE_IF_COPY comment in src/include/fmgr.h in postgres source code |
385 | | * for more details. |
386 | | */ |
387 | | #define POSTGIS_FREE_IF_COPY_P(ptrsrc, ptrori) \ |
388 | | do \ |
389 | | { \ |
390 | | if ((Pointer)(ptrsrc) != (Pointer)(ptrori)) \ |
391 | | pfree(ptrsrc); \ |
392 | | } while (0) |