Coverage Report

Created: 2026-08-13 07:12

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/postgres/src/include/utils/geo_decls.h
Line
Count
Source
1
/*-------------------------------------------------------------------------
2
 *
3
 * geo_decls.h - Declarations for various 2D constructs.
4
 *
5
 *
6
 * Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group
7
 * Portions Copyright (c) 1994, Regents of the University of California
8
 *
9
 * src/include/utils/geo_decls.h
10
 *
11
 *    XXX These routines were not written by a numerical analyst.
12
 *
13
 *    XXX I have made some attempt to flesh out the operators
14
 *    and data types. There are still some more to do. - tgl 97/04/19
15
 *
16
 *-------------------------------------------------------------------------
17
 */
18
#ifndef GEO_DECLS_H
19
#define GEO_DECLS_H
20
21
#include <math.h>
22
23
#include "fmgr.h"
24
25
/*--------------------------------------------------------------------
26
 * Useful floating point utilities and constants.
27
 *--------------------------------------------------------------------
28
 *
29
 * "Fuzzy" floating-point comparisons: values within EPSILON of each other
30
 * are considered equal.  Beware of normal reasoning about the behavior of
31
 * these comparisons, since for example FPeq does not behave transitively.
32
 *
33
 * Note that these functions are not NaN-aware and will give FALSE for
34
 * any case involving NaN inputs.
35
 *
36
 * Also note that these will give sane answers for infinite inputs,
37
 * where it's important to avoid computing Inf minus Inf; we do so
38
 * by eliminating equality cases before subtracting.
39
 */
40
41
0
#define EPSILON         1.0E-06
42
43
#ifdef EPSILON
44
0
#define FPzero(A)       (fabs(A) <= EPSILON)
45
46
static inline bool
47
FPeq(double A, double B)
48
0
{
49
0
  return A == B || fabs(A - B) <= EPSILON;
50
0
}
Unexecuted instantiation: reloptions.c:FPeq
Unexecuted instantiation: gistproc.c:FPeq
Unexecuted instantiation: spgdoinsert.c:FPeq
Unexecuted instantiation: spginsert.c:FPeq
Unexecuted instantiation: spgkdtreeproc.c:FPeq
Unexecuted instantiation: spgproc.c:FPeq
Unexecuted instantiation: spgquadtreeproc.c:FPeq
Unexecuted instantiation: spgscan.c:FPeq
Unexecuted instantiation: spgutils.c:FPeq
Unexecuted instantiation: spgvacuum.c:FPeq
Unexecuted instantiation: spgxlog.c:FPeq
Unexecuted instantiation: geo_ops.c:FPeq
Unexecuted instantiation: geo_spgist.c:FPeq
51
52
static inline bool
53
FPne(double A, double B)
54
0
{
55
0
  return A != B && fabs(A - B) > EPSILON;
56
0
}
Unexecuted instantiation: reloptions.c:FPne
Unexecuted instantiation: gistproc.c:FPne
Unexecuted instantiation: spgdoinsert.c:FPne
Unexecuted instantiation: spginsert.c:FPne
Unexecuted instantiation: spgkdtreeproc.c:FPne
Unexecuted instantiation: spgproc.c:FPne
Unexecuted instantiation: spgquadtreeproc.c:FPne
Unexecuted instantiation: spgscan.c:FPne
Unexecuted instantiation: spgutils.c:FPne
Unexecuted instantiation: spgvacuum.c:FPne
Unexecuted instantiation: spgxlog.c:FPne
Unexecuted instantiation: geo_ops.c:FPne
Unexecuted instantiation: geo_spgist.c:FPne
57
58
static inline bool
59
FPlt(double A, double B)
60
0
{
61
0
  return A + EPSILON < B;
62
0
}
Unexecuted instantiation: reloptions.c:FPlt
Unexecuted instantiation: gistproc.c:FPlt
Unexecuted instantiation: spgdoinsert.c:FPlt
Unexecuted instantiation: spginsert.c:FPlt
Unexecuted instantiation: spgkdtreeproc.c:FPlt
Unexecuted instantiation: spgproc.c:FPlt
Unexecuted instantiation: spgquadtreeproc.c:FPlt
Unexecuted instantiation: spgscan.c:FPlt
Unexecuted instantiation: spgutils.c:FPlt
Unexecuted instantiation: spgvacuum.c:FPlt
Unexecuted instantiation: spgxlog.c:FPlt
Unexecuted instantiation: geo_ops.c:FPlt
Unexecuted instantiation: geo_spgist.c:FPlt
63
64
static inline bool
65
FPle(double A, double B)
66
0
{
67
0
  return A <= B + EPSILON;
68
0
}
Unexecuted instantiation: reloptions.c:FPle
Unexecuted instantiation: gistproc.c:FPle
Unexecuted instantiation: spgdoinsert.c:FPle
Unexecuted instantiation: spginsert.c:FPle
Unexecuted instantiation: spgkdtreeproc.c:FPle
Unexecuted instantiation: spgproc.c:FPle
Unexecuted instantiation: spgquadtreeproc.c:FPle
Unexecuted instantiation: spgscan.c:FPle
Unexecuted instantiation: spgutils.c:FPle
Unexecuted instantiation: spgvacuum.c:FPle
Unexecuted instantiation: spgxlog.c:FPle
Unexecuted instantiation: geo_ops.c:FPle
Unexecuted instantiation: geo_spgist.c:FPle
69
70
static inline bool
71
FPgt(double A, double B)
72
0
{
73
0
  return A > B + EPSILON;
74
0
}
Unexecuted instantiation: reloptions.c:FPgt
Unexecuted instantiation: gistproc.c:FPgt
Unexecuted instantiation: spgdoinsert.c:FPgt
Unexecuted instantiation: spginsert.c:FPgt
Unexecuted instantiation: spgkdtreeproc.c:FPgt
Unexecuted instantiation: spgproc.c:FPgt
Unexecuted instantiation: spgquadtreeproc.c:FPgt
Unexecuted instantiation: spgscan.c:FPgt
Unexecuted instantiation: spgutils.c:FPgt
Unexecuted instantiation: spgvacuum.c:FPgt
Unexecuted instantiation: spgxlog.c:FPgt
Unexecuted instantiation: geo_ops.c:FPgt
Unexecuted instantiation: geo_spgist.c:FPgt
75
76
static inline bool
77
FPge(double A, double B)
78
0
{
79
0
  return A + EPSILON >= B;
80
0
}
Unexecuted instantiation: reloptions.c:FPge
Unexecuted instantiation: gistproc.c:FPge
Unexecuted instantiation: spgdoinsert.c:FPge
Unexecuted instantiation: spginsert.c:FPge
Unexecuted instantiation: spgkdtreeproc.c:FPge
Unexecuted instantiation: spgproc.c:FPge
Unexecuted instantiation: spgquadtreeproc.c:FPge
Unexecuted instantiation: spgscan.c:FPge
Unexecuted instantiation: spgutils.c:FPge
Unexecuted instantiation: spgvacuum.c:FPge
Unexecuted instantiation: spgxlog.c:FPge
Unexecuted instantiation: geo_ops.c:FPge
Unexecuted instantiation: geo_spgist.c:FPge
81
#else
82
#define FPzero(A)       ((A) == 0)
83
#define FPeq(A,B)       ((A) == (B))
84
#define FPne(A,B)       ((A) != (B))
85
#define FPlt(A,B)       ((A) < (B))
86
#define FPle(A,B)       ((A) <= (B))
87
#define FPgt(A,B)       ((A) > (B))
88
#define FPge(A,B)       ((A) >= (B))
89
#endif
90
91
92
/*---------------------------------------------------------------------
93
 * Point - (x,y)
94
 *-------------------------------------------------------------------*/
95
typedef struct
96
{
97
  float8    x,
98
        y;
99
} Point;
100
101
102
/*---------------------------------------------------------------------
103
 * LSEG - A straight line, specified by endpoints.
104
 *-------------------------------------------------------------------*/
105
typedef struct
106
{
107
  Point   p[2];
108
} LSEG;
109
110
111
/*---------------------------------------------------------------------
112
 * PATH - Specified by vertex points.
113
 *-------------------------------------------------------------------*/
114
typedef struct
115
{
116
  int32   vl_len_;    /* varlena header (do not touch directly!) */
117
  int32   npts;
118
  int32   closed;     /* is this a closed polygon? */
119
  int32   dummy;      /* padding to make it double align */
120
  Point   p[FLEXIBLE_ARRAY_MEMBER];
121
} PATH;
122
123
124
/*---------------------------------------------------------------------
125
 * LINE - Specified by its general equation (Ax+By+C=0).
126
 *-------------------------------------------------------------------*/
127
typedef struct
128
{
129
  float8    A,
130
        B,
131
        C;
132
} LINE;
133
134
135
/*---------------------------------------------------------------------
136
 * BOX  - Specified by two corner points, which are
137
 *     sorted to save calculation time later.
138
 *-------------------------------------------------------------------*/
139
typedef struct
140
{
141
  Point   high,
142
        low;      /* corner POINTs */
143
} BOX;
144
145
/*---------------------------------------------------------------------
146
 * POLYGON - Specified by an array of doubles defining the points,
147
 *    keeping the number of points and the bounding box for
148
 *    speed purposes.
149
 *-------------------------------------------------------------------*/
150
typedef struct
151
{
152
  int32   vl_len_;    /* varlena header (do not touch directly!) */
153
  int32   npts;
154
  BOX     boundbox;
155
  Point   p[FLEXIBLE_ARRAY_MEMBER];
156
} POLYGON;
157
158
/*---------------------------------------------------------------------
159
 * CIRCLE - Specified by a center point and radius.
160
 *-------------------------------------------------------------------*/
161
typedef struct
162
{
163
  Point   center;
164
  float8    radius;
165
} CIRCLE;
166
167
/*
168
 * fmgr interface functions
169
 *
170
 * Path and Polygon are toastable varlena types, the others are just
171
 * fixed-size pass-by-reference types.
172
 */
173
174
static inline Point *
175
DatumGetPointP(Datum X)
176
0
{
177
0
  return (Point *) DatumGetPointer(X);
178
0
}
Unexecuted instantiation: reloptions.c:DatumGetPointP
Unexecuted instantiation: gistproc.c:DatumGetPointP
Unexecuted instantiation: spgdoinsert.c:DatumGetPointP
Unexecuted instantiation: spginsert.c:DatumGetPointP
Unexecuted instantiation: spgkdtreeproc.c:DatumGetPointP
Unexecuted instantiation: spgproc.c:DatumGetPointP
Unexecuted instantiation: spgquadtreeproc.c:DatumGetPointP
Unexecuted instantiation: spgscan.c:DatumGetPointP
Unexecuted instantiation: spgutils.c:DatumGetPointP
Unexecuted instantiation: spgvacuum.c:DatumGetPointP
Unexecuted instantiation: spgxlog.c:DatumGetPointP
Unexecuted instantiation: geo_ops.c:DatumGetPointP
Unexecuted instantiation: geo_spgist.c:DatumGetPointP
179
static inline Datum
180
PointPGetDatum(const Point *X)
181
0
{
182
0
  return PointerGetDatum(X);
183
0
}
Unexecuted instantiation: reloptions.c:PointPGetDatum
Unexecuted instantiation: gistproc.c:PointPGetDatum
Unexecuted instantiation: spgdoinsert.c:PointPGetDatum
Unexecuted instantiation: spginsert.c:PointPGetDatum
Unexecuted instantiation: spgkdtreeproc.c:PointPGetDatum
Unexecuted instantiation: spgproc.c:PointPGetDatum
Unexecuted instantiation: spgquadtreeproc.c:PointPGetDatum
Unexecuted instantiation: spgscan.c:PointPGetDatum
Unexecuted instantiation: spgutils.c:PointPGetDatum
Unexecuted instantiation: spgvacuum.c:PointPGetDatum
Unexecuted instantiation: spgxlog.c:PointPGetDatum
Unexecuted instantiation: geo_ops.c:PointPGetDatum
Unexecuted instantiation: geo_spgist.c:PointPGetDatum
184
0
#define PG_GETARG_POINT_P(n) DatumGetPointP(PG_GETARG_DATUM(n))
185
0
#define PG_RETURN_POINT_P(x) return PointPGetDatum(x)
186
187
static inline LSEG *
188
DatumGetLsegP(Datum X)
189
0
{
190
0
  return (LSEG *) DatumGetPointer(X);
191
0
}
Unexecuted instantiation: reloptions.c:DatumGetLsegP
Unexecuted instantiation: gistproc.c:DatumGetLsegP
Unexecuted instantiation: spgdoinsert.c:DatumGetLsegP
Unexecuted instantiation: spginsert.c:DatumGetLsegP
Unexecuted instantiation: spgkdtreeproc.c:DatumGetLsegP
Unexecuted instantiation: spgproc.c:DatumGetLsegP
Unexecuted instantiation: spgquadtreeproc.c:DatumGetLsegP
Unexecuted instantiation: spgscan.c:DatumGetLsegP
Unexecuted instantiation: spgutils.c:DatumGetLsegP
Unexecuted instantiation: spgvacuum.c:DatumGetLsegP
Unexecuted instantiation: spgxlog.c:DatumGetLsegP
Unexecuted instantiation: geo_ops.c:DatumGetLsegP
Unexecuted instantiation: geo_spgist.c:DatumGetLsegP
192
static inline Datum
193
LsegPGetDatum(const LSEG *X)
194
0
{
195
0
  return PointerGetDatum(X);
196
0
}
Unexecuted instantiation: reloptions.c:LsegPGetDatum
Unexecuted instantiation: gistproc.c:LsegPGetDatum
Unexecuted instantiation: spgdoinsert.c:LsegPGetDatum
Unexecuted instantiation: spginsert.c:LsegPGetDatum
Unexecuted instantiation: spgkdtreeproc.c:LsegPGetDatum
Unexecuted instantiation: spgproc.c:LsegPGetDatum
Unexecuted instantiation: spgquadtreeproc.c:LsegPGetDatum
Unexecuted instantiation: spgscan.c:LsegPGetDatum
Unexecuted instantiation: spgutils.c:LsegPGetDatum
Unexecuted instantiation: spgvacuum.c:LsegPGetDatum
Unexecuted instantiation: spgxlog.c:LsegPGetDatum
Unexecuted instantiation: geo_ops.c:LsegPGetDatum
Unexecuted instantiation: geo_spgist.c:LsegPGetDatum
197
0
#define PG_GETARG_LSEG_P(n) DatumGetLsegP(PG_GETARG_DATUM(n))
198
0
#define PG_RETURN_LSEG_P(x) return LsegPGetDatum(x)
199
200
static inline PATH *
201
DatumGetPathP(Datum X)
202
0
{
203
0
  return (PATH *) PG_DETOAST_DATUM(X);
204
0
}
Unexecuted instantiation: reloptions.c:DatumGetPathP
Unexecuted instantiation: gistproc.c:DatumGetPathP
Unexecuted instantiation: spgdoinsert.c:DatumGetPathP
Unexecuted instantiation: spginsert.c:DatumGetPathP
Unexecuted instantiation: spgkdtreeproc.c:DatumGetPathP
Unexecuted instantiation: spgproc.c:DatumGetPathP
Unexecuted instantiation: spgquadtreeproc.c:DatumGetPathP
Unexecuted instantiation: spgscan.c:DatumGetPathP
Unexecuted instantiation: spgutils.c:DatumGetPathP
Unexecuted instantiation: spgvacuum.c:DatumGetPathP
Unexecuted instantiation: spgxlog.c:DatumGetPathP
Unexecuted instantiation: geo_ops.c:DatumGetPathP
Unexecuted instantiation: geo_spgist.c:DatumGetPathP
205
static inline PATH *
206
DatumGetPathPCopy(Datum X)
207
0
{
208
0
  return (PATH *) PG_DETOAST_DATUM_COPY(X);
209
0
}
Unexecuted instantiation: reloptions.c:DatumGetPathPCopy
Unexecuted instantiation: gistproc.c:DatumGetPathPCopy
Unexecuted instantiation: spgdoinsert.c:DatumGetPathPCopy
Unexecuted instantiation: spginsert.c:DatumGetPathPCopy
Unexecuted instantiation: spgkdtreeproc.c:DatumGetPathPCopy
Unexecuted instantiation: spgproc.c:DatumGetPathPCopy
Unexecuted instantiation: spgquadtreeproc.c:DatumGetPathPCopy
Unexecuted instantiation: spgscan.c:DatumGetPathPCopy
Unexecuted instantiation: spgutils.c:DatumGetPathPCopy
Unexecuted instantiation: spgvacuum.c:DatumGetPathPCopy
Unexecuted instantiation: spgxlog.c:DatumGetPathPCopy
Unexecuted instantiation: geo_ops.c:DatumGetPathPCopy
Unexecuted instantiation: geo_spgist.c:DatumGetPathPCopy
210
static inline Datum
211
PathPGetDatum(const PATH *X)
212
0
{
213
0
  return PointerGetDatum(X);
214
0
}
Unexecuted instantiation: reloptions.c:PathPGetDatum
Unexecuted instantiation: gistproc.c:PathPGetDatum
Unexecuted instantiation: spgdoinsert.c:PathPGetDatum
Unexecuted instantiation: spginsert.c:PathPGetDatum
Unexecuted instantiation: spgkdtreeproc.c:PathPGetDatum
Unexecuted instantiation: spgproc.c:PathPGetDatum
Unexecuted instantiation: spgquadtreeproc.c:PathPGetDatum
Unexecuted instantiation: spgscan.c:PathPGetDatum
Unexecuted instantiation: spgutils.c:PathPGetDatum
Unexecuted instantiation: spgvacuum.c:PathPGetDatum
Unexecuted instantiation: spgxlog.c:PathPGetDatum
Unexecuted instantiation: geo_ops.c:PathPGetDatum
Unexecuted instantiation: geo_spgist.c:PathPGetDatum
215
0
#define PG_GETARG_PATH_P(n)    DatumGetPathP(PG_GETARG_DATUM(n))
216
0
#define PG_GETARG_PATH_P_COPY(n) DatumGetPathPCopy(PG_GETARG_DATUM(n))
217
0
#define PG_RETURN_PATH_P(x)    return PathPGetDatum(x)
218
219
static inline LINE *
220
DatumGetLineP(Datum X)
221
0
{
222
0
  return (LINE *) DatumGetPointer(X);
223
0
}
Unexecuted instantiation: reloptions.c:DatumGetLineP
Unexecuted instantiation: gistproc.c:DatumGetLineP
Unexecuted instantiation: spgdoinsert.c:DatumGetLineP
Unexecuted instantiation: spginsert.c:DatumGetLineP
Unexecuted instantiation: spgkdtreeproc.c:DatumGetLineP
Unexecuted instantiation: spgproc.c:DatumGetLineP
Unexecuted instantiation: spgquadtreeproc.c:DatumGetLineP
Unexecuted instantiation: spgscan.c:DatumGetLineP
Unexecuted instantiation: spgutils.c:DatumGetLineP
Unexecuted instantiation: spgvacuum.c:DatumGetLineP
Unexecuted instantiation: spgxlog.c:DatumGetLineP
Unexecuted instantiation: geo_ops.c:DatumGetLineP
Unexecuted instantiation: geo_spgist.c:DatumGetLineP
224
static inline Datum
225
LinePGetDatum(const LINE *X)
226
0
{
227
0
  return PointerGetDatum(X);
228
0
}
Unexecuted instantiation: reloptions.c:LinePGetDatum
Unexecuted instantiation: gistproc.c:LinePGetDatum
Unexecuted instantiation: spgdoinsert.c:LinePGetDatum
Unexecuted instantiation: spginsert.c:LinePGetDatum
Unexecuted instantiation: spgkdtreeproc.c:LinePGetDatum
Unexecuted instantiation: spgproc.c:LinePGetDatum
Unexecuted instantiation: spgquadtreeproc.c:LinePGetDatum
Unexecuted instantiation: spgscan.c:LinePGetDatum
Unexecuted instantiation: spgutils.c:LinePGetDatum
Unexecuted instantiation: spgvacuum.c:LinePGetDatum
Unexecuted instantiation: spgxlog.c:LinePGetDatum
Unexecuted instantiation: geo_ops.c:LinePGetDatum
Unexecuted instantiation: geo_spgist.c:LinePGetDatum
229
0
#define PG_GETARG_LINE_P(n) DatumGetLineP(PG_GETARG_DATUM(n))
230
0
#define PG_RETURN_LINE_P(x) return LinePGetDatum(x)
231
232
static inline BOX *
233
DatumGetBoxP(Datum X)
234
0
{
235
0
  return (BOX *) DatumGetPointer(X);
236
0
}
Unexecuted instantiation: reloptions.c:DatumGetBoxP
Unexecuted instantiation: gistproc.c:DatumGetBoxP
Unexecuted instantiation: spgdoinsert.c:DatumGetBoxP
Unexecuted instantiation: spginsert.c:DatumGetBoxP
Unexecuted instantiation: spgkdtreeproc.c:DatumGetBoxP
Unexecuted instantiation: spgproc.c:DatumGetBoxP
Unexecuted instantiation: spgquadtreeproc.c:DatumGetBoxP
Unexecuted instantiation: spgscan.c:DatumGetBoxP
Unexecuted instantiation: spgutils.c:DatumGetBoxP
Unexecuted instantiation: spgvacuum.c:DatumGetBoxP
Unexecuted instantiation: spgxlog.c:DatumGetBoxP
Unexecuted instantiation: geo_ops.c:DatumGetBoxP
Unexecuted instantiation: geo_spgist.c:DatumGetBoxP
237
static inline Datum
238
BoxPGetDatum(const BOX *X)
239
0
{
240
0
  return PointerGetDatum(X);
241
0
}
Unexecuted instantiation: reloptions.c:BoxPGetDatum
Unexecuted instantiation: gistproc.c:BoxPGetDatum
Unexecuted instantiation: spgdoinsert.c:BoxPGetDatum
Unexecuted instantiation: spginsert.c:BoxPGetDatum
Unexecuted instantiation: spgkdtreeproc.c:BoxPGetDatum
Unexecuted instantiation: spgproc.c:BoxPGetDatum
Unexecuted instantiation: spgquadtreeproc.c:BoxPGetDatum
Unexecuted instantiation: spgscan.c:BoxPGetDatum
Unexecuted instantiation: spgutils.c:BoxPGetDatum
Unexecuted instantiation: spgvacuum.c:BoxPGetDatum
Unexecuted instantiation: spgxlog.c:BoxPGetDatum
Unexecuted instantiation: geo_ops.c:BoxPGetDatum
Unexecuted instantiation: geo_spgist.c:BoxPGetDatum
242
0
#define PG_GETARG_BOX_P(n) DatumGetBoxP(PG_GETARG_DATUM(n))
243
0
#define PG_RETURN_BOX_P(x) return BoxPGetDatum(x)
244
245
static inline POLYGON *
246
DatumGetPolygonP(Datum X)
247
0
{
248
0
  return (POLYGON *) PG_DETOAST_DATUM(X);
249
0
}
Unexecuted instantiation: reloptions.c:DatumGetPolygonP
Unexecuted instantiation: gistproc.c:DatumGetPolygonP
Unexecuted instantiation: spgdoinsert.c:DatumGetPolygonP
Unexecuted instantiation: spginsert.c:DatumGetPolygonP
Unexecuted instantiation: spgkdtreeproc.c:DatumGetPolygonP
Unexecuted instantiation: spgproc.c:DatumGetPolygonP
Unexecuted instantiation: spgquadtreeproc.c:DatumGetPolygonP
Unexecuted instantiation: spgscan.c:DatumGetPolygonP
Unexecuted instantiation: spgutils.c:DatumGetPolygonP
Unexecuted instantiation: spgvacuum.c:DatumGetPolygonP
Unexecuted instantiation: spgxlog.c:DatumGetPolygonP
Unexecuted instantiation: geo_ops.c:DatumGetPolygonP
Unexecuted instantiation: geo_spgist.c:DatumGetPolygonP
250
static inline POLYGON *
251
DatumGetPolygonPCopy(Datum X)
252
0
{
253
0
  return (POLYGON *) PG_DETOAST_DATUM_COPY(X);
254
0
}
Unexecuted instantiation: reloptions.c:DatumGetPolygonPCopy
Unexecuted instantiation: gistproc.c:DatumGetPolygonPCopy
Unexecuted instantiation: spgdoinsert.c:DatumGetPolygonPCopy
Unexecuted instantiation: spginsert.c:DatumGetPolygonPCopy
Unexecuted instantiation: spgkdtreeproc.c:DatumGetPolygonPCopy
Unexecuted instantiation: spgproc.c:DatumGetPolygonPCopy
Unexecuted instantiation: spgquadtreeproc.c:DatumGetPolygonPCopy
Unexecuted instantiation: spgscan.c:DatumGetPolygonPCopy
Unexecuted instantiation: spgutils.c:DatumGetPolygonPCopy
Unexecuted instantiation: spgvacuum.c:DatumGetPolygonPCopy
Unexecuted instantiation: spgxlog.c:DatumGetPolygonPCopy
Unexecuted instantiation: geo_ops.c:DatumGetPolygonPCopy
Unexecuted instantiation: geo_spgist.c:DatumGetPolygonPCopy
255
static inline Datum
256
PolygonPGetDatum(const POLYGON *X)
257
0
{
258
0
  return PointerGetDatum(X);
259
0
}
Unexecuted instantiation: reloptions.c:PolygonPGetDatum
Unexecuted instantiation: gistproc.c:PolygonPGetDatum
Unexecuted instantiation: spgdoinsert.c:PolygonPGetDatum
Unexecuted instantiation: spginsert.c:PolygonPGetDatum
Unexecuted instantiation: spgkdtreeproc.c:PolygonPGetDatum
Unexecuted instantiation: spgproc.c:PolygonPGetDatum
Unexecuted instantiation: spgquadtreeproc.c:PolygonPGetDatum
Unexecuted instantiation: spgscan.c:PolygonPGetDatum
Unexecuted instantiation: spgutils.c:PolygonPGetDatum
Unexecuted instantiation: spgvacuum.c:PolygonPGetDatum
Unexecuted instantiation: spgxlog.c:PolygonPGetDatum
Unexecuted instantiation: geo_ops.c:PolygonPGetDatum
Unexecuted instantiation: geo_spgist.c:PolygonPGetDatum
260
0
#define PG_GETARG_POLYGON_P(n)    DatumGetPolygonP(PG_GETARG_DATUM(n))
261
#define PG_GETARG_POLYGON_P_COPY(n) DatumGetPolygonPCopy(PG_GETARG_DATUM(n))
262
0
#define PG_RETURN_POLYGON_P(x)    return PolygonPGetDatum(x)
263
264
static inline CIRCLE *
265
DatumGetCircleP(Datum X)
266
0
{
267
0
  return (CIRCLE *) DatumGetPointer(X);
268
0
}
Unexecuted instantiation: reloptions.c:DatumGetCircleP
Unexecuted instantiation: gistproc.c:DatumGetCircleP
Unexecuted instantiation: spgdoinsert.c:DatumGetCircleP
Unexecuted instantiation: spginsert.c:DatumGetCircleP
Unexecuted instantiation: spgkdtreeproc.c:DatumGetCircleP
Unexecuted instantiation: spgproc.c:DatumGetCircleP
Unexecuted instantiation: spgquadtreeproc.c:DatumGetCircleP
Unexecuted instantiation: spgscan.c:DatumGetCircleP
Unexecuted instantiation: spgutils.c:DatumGetCircleP
Unexecuted instantiation: spgvacuum.c:DatumGetCircleP
Unexecuted instantiation: spgxlog.c:DatumGetCircleP
Unexecuted instantiation: geo_ops.c:DatumGetCircleP
Unexecuted instantiation: geo_spgist.c:DatumGetCircleP
269
static inline Datum
270
CirclePGetDatum(const CIRCLE *X)
271
0
{
272
0
  return PointerGetDatum(X);
273
0
}
Unexecuted instantiation: reloptions.c:CirclePGetDatum
Unexecuted instantiation: gistproc.c:CirclePGetDatum
Unexecuted instantiation: spgdoinsert.c:CirclePGetDatum
Unexecuted instantiation: spginsert.c:CirclePGetDatum
Unexecuted instantiation: spgkdtreeproc.c:CirclePGetDatum
Unexecuted instantiation: spgproc.c:CirclePGetDatum
Unexecuted instantiation: spgquadtreeproc.c:CirclePGetDatum
Unexecuted instantiation: spgscan.c:CirclePGetDatum
Unexecuted instantiation: spgutils.c:CirclePGetDatum
Unexecuted instantiation: spgvacuum.c:CirclePGetDatum
Unexecuted instantiation: spgxlog.c:CirclePGetDatum
Unexecuted instantiation: geo_ops.c:CirclePGetDatum
Unexecuted instantiation: geo_spgist.c:CirclePGetDatum
274
0
#define PG_GETARG_CIRCLE_P(n) DatumGetCircleP(PG_GETARG_DATUM(n))
275
0
#define PG_RETURN_CIRCLE_P(x) return CirclePGetDatum(x)
276
277
#endif              /* GEO_DECLS_H */