MobilityDB 1.3
Loading...
Searching...
No Matches
meos_cbuffer.h
Go to the documentation of this file.
1/*****************************************************************************
2 *
3 * This MobilityDB code is provided under The PostgreSQL License.
4 * Copyright (c) 2016-2025, Université libre de Bruxelles and MobilityDB
5 * contributors
6 *
7 * MobilityDB includes portions of PostGIS version 3 source code released
8 * under the GNU General Public License (GPLv2 or later).
9 * Copyright (c) 2001-2025, PostGIS contributors
10 *
11 * Permission to use, copy, modify, and distribute this software and its
12 * documentation for any purpose, without fee, and without a written
13 * agreement is hereby granted, provided that the above copyright notice and
14 * this paragraph and the following two paragraphs appear in all copies.
15 *
16 * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR
17 * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING
18 * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION,
19 * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY
20 * OF SUCH DAMAGE.
21 *
22 * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES,
23 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
24 * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON
25 * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO
26 * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
27 *
28 *****************************************************************************/
29
34#ifndef __MEOS_CBUFFER_H__
35#define __MEOS_CBUFFER_H__
36
37/* C */
38#include <stdbool.h>
39#include <stdint.h>
40/* PostgreSQL */
41#include <postgres.h>
42/* PostGIS */
43#include <liblwgeom.h>
44/* MEOS */
45#include <meos.h>
46
47/*****************************************************************************
48 * Type definitions
49 *****************************************************************************/
50
51/* Opaque structure to represent circular buffers */
52
53typedef struct Cbuffer Cbuffer;
54
55/*****************************************************************************
56 * Validity macros and functions
57 *****************************************************************************/
58
63#if MEOS
64 #define VALIDATE_CBUFFERSET(set, ret) \
65 do { \
66 if (! ensure_not_null((void *) (set)) || \
67 ! ensure_set_isof_type((set), T_CBUFFERSET) ) \
68 return (ret); \
69 } while (0)
70#else
71 #define VALIDATE_CBUFFERSET(set, ret) \
72 do { \
73 assert(set); \
74 assert((set)->settype == T_CBUFFERSET); \
75 } while (0)
76#endif /* MEOS */
77
84#if MEOS
85 #define VALIDATE_TCBUFFER(temp, ret) \
86 do { \
87 if (! ensure_not_null((void *) (temp)) || \
88 ! ensure_temporal_isof_type((Temporal *) (temp), T_TCBUFFER) ) \
89 return (ret); \
90 } while (0)
91#else
92 #define VALIDATE_TCBUFFER(temp, ret) \
93 do { \
94 assert(temp); \
95 assert(((Temporal *) (temp))->temptype == T_TCBUFFER); \
96 } while (0)
97#endif /* MEOS */
98
99/******************************************************************************
100 * Functions for circular buffers
101 ******************************************************************************/
102
103/* Input and output functions */
104
105extern char *cbuffer_as_ewkt(const Cbuffer *cb, int maxdd);
106extern char *cbuffer_as_hexwkb(const Cbuffer *cb, uint8_t variant, size_t *size);
107extern char *cbuffer_as_text(const Cbuffer *cb, int maxdd);
108extern uint8_t *cbuffer_as_wkb(const Cbuffer *cb, uint8_t variant, size_t *size_out);
109extern Cbuffer *cbuffer_from_hexwkb(const char *hexwkb);
110extern Cbuffer *cbuffer_from_wkb(const uint8_t *wkb, size_t size);
111extern Cbuffer *cbuffer_in(const char *str);
112extern char *cbuffer_out(const Cbuffer *cb, int maxdd);
113
114/* Constructor functions */
115
116extern Cbuffer *cbuffer_copy(const Cbuffer *cb);
117extern Cbuffer *cbuffer_make(const GSERIALIZED *point, double radius);
118
119/* Conversion functions */
120
121extern GSERIALIZED *cbuffer_to_geom(const Cbuffer *cb);
122extern STBox *cbuffer_to_stbox(const Cbuffer *cb);
123extern GSERIALIZED *cbufferarr_to_geom(const Cbuffer **cbarr, int count);
124extern Cbuffer *geom_to_cbuffer(const GSERIALIZED *gs);
125
126/* Accessor functions */
127
128extern uint32 cbuffer_hash(const Cbuffer *cb);
129extern uint64 cbuffer_hash_extended(const Cbuffer *cb, uint64 seed);
130extern GSERIALIZED *cbuffer_point(const Cbuffer *cb);
131extern double cbuffer_radius(const Cbuffer *cb);
132
133/* Transformation functions */
134
135extern Cbuffer *cbuffer_round(const Cbuffer *cb, int maxdd);
136extern Cbuffer **cbufferarr_round(const Cbuffer **cbarr, int count, int maxdd);
137
138/* Spatial reference system functions */
139
140extern void cbuffer_set_srid(Cbuffer *cb, int32_t srid);
141extern int32_t cbuffer_srid(const Cbuffer *cb);
142extern Cbuffer *cbuffer_transform(const Cbuffer *cb, int32_t srid);
143extern Cbuffer *cbuffer_transform_pipeline(const Cbuffer *cb, const char *pipelinestr, int32_t srid, bool is_forward);
144
145/* Spatial relationship functions */
146
147extern int contains_cbuffer_cbuffer(const Cbuffer *cb1, const Cbuffer *cb2);
148extern int covers_cbuffer_cbuffer(const Cbuffer *cb1, const Cbuffer *cb2);
149extern int disjoint_cbuffer_cbuffer(const Cbuffer *cb1, const Cbuffer *cb2);
150extern int dwithin_cbuffer_cbuffer(const Cbuffer *cb1, const Cbuffer *cb2, double dist);
151extern int intersects_cbuffer_cbuffer(const Cbuffer *cb1, const Cbuffer *cb2);
152extern int touches_cbuffer_cbuffer(const Cbuffer *cb1, const Cbuffer *cb2);
153
154/* Bounding box functions */
155
156extern STBox *cbuffer_tstzspan_to_stbox(const Cbuffer *cb, const Span *s);
158
159/* Distance functions */
160
161extern double distance_cbuffer_cbuffer(const Cbuffer *cb1, const Cbuffer *cb2);
162extern double distance_cbuffer_geo(const Cbuffer *cb, const GSERIALIZED *gs);
163extern double distance_cbuffer_stbox(const Cbuffer *cb, const STBox *box);
164extern double nad_cbuffer_stbox(const Cbuffer *cb, const STBox *box);
165
166/* Comparison functions */
167
168extern int cbuffer_cmp(const Cbuffer *cb1, const Cbuffer *cb2);
169extern bool cbuffer_eq(const Cbuffer *cb1, const Cbuffer *cb2);
170extern bool cbuffer_ge(const Cbuffer *cb1, const Cbuffer *cb2);
171extern bool cbuffer_gt(const Cbuffer *cb1, const Cbuffer *cb2);
172extern bool cbuffer_le(const Cbuffer *cb1, const Cbuffer *cb2);
173extern bool cbuffer_lt(const Cbuffer *cb1, const Cbuffer *cb2);
174extern bool cbuffer_ne(const Cbuffer *cb1, const Cbuffer *cb2);
175extern bool cbuffer_nsame(const Cbuffer *cb1, const Cbuffer *cb2);
176extern bool cbuffer_same(const Cbuffer *cb1, const Cbuffer *cb2);
177
178/******************************************************************************
179 * Functions for circular buffer sets
180 ******************************************************************************/
181
182/* Input and output functions */
183
184extern Set *cbufferset_in(const char *str);
185extern char *cbufferset_out(const Set *s, int maxdd);
186
187/* Constructor functions */
188
189extern Set *cbufferset_make(const Cbuffer **values, int count);
190
191/* Conversion functions */
192
193extern Set *cbuffer_to_set(const Cbuffer *cb);
194
195/* Accessor functions */
196
197extern Cbuffer *cbufferset_end_value(const Set *s);
198extern Cbuffer *cbufferset_start_value(const Set *s);
199extern bool cbufferset_value_n(const Set *s, int n, Cbuffer **result);
200extern Cbuffer **cbufferset_values(const Set *s);
201
202/* Set operations */
203
204extern Set *cbuffer_union_transfn(Set *state, const Cbuffer *cb);
205extern bool contained_cbuffer_set(const Cbuffer *cb, const Set *s);
206extern bool contains_set_cbuffer(const Set *s, Cbuffer *cb);
207extern Set *intersection_cbuffer_set(const Cbuffer *cb, const Set *s);
208extern Set *intersection_set_cbuffer(const Set *s, const Cbuffer *cb);
209extern Set *minus_cbuffer_set(const Cbuffer *cb, const Set *s);
210extern Set *minus_set_cbuffer(const Set *s, const Cbuffer *cb);
211extern Set *union_cbuffer_set(const Cbuffer *cb, const Set *s);
212extern Set *union_set_cbuffer(const Set *s, const Cbuffer *cb);
213
214/*===========================================================================*
215 * Functions for temporal types
216 *===========================================================================*/
217
218/*****************************************************************************
219 * Input/output functions
220 *****************************************************************************/
221
222extern Temporal *tcbuffer_in(const char *str);
223
224/*****************************************************************************
225 * Constructor functions
226 *****************************************************************************/
227
228extern Temporal *tcbuffer_make(const Temporal *tpoint, const Temporal *tfloat);
229
230/*****************************************************************************
231 * Accessor functions
232 *****************************************************************************/
233
234extern Set *tcbuffer_points(const Temporal *temp);
235extern Set *tcbuffer_radius(const Temporal *temp);
236extern GSERIALIZED *tcbuffer_trav_area(const Temporal *temp);
237
238/*****************************************************************************
239 * Conversion functions
240 *****************************************************************************/
241
242extern Temporal *tcbuffer_to_tfloat(const Temporal *temp);
243extern Temporal *tcbuffer_to_tgeompoint(const Temporal *temp);
244extern Temporal *tgeompoint_to_tcbuffer(const Temporal *temp);
245
246/*****************************************************************************
247 * Transformation functions
248 *****************************************************************************/
249
250extern Temporal *tcbuffer_expand(const Temporal *temp, double dist);
251
252/*****************************************************************************
253 * Restriction functions
254 *****************************************************************************/
255
256extern Temporal *tcbuffer_at_cbuffer(const Temporal *temp, const Cbuffer *cb);
257extern Temporal *tcbuffer_at_geom(const Temporal *temp, const GSERIALIZED *gs);
258extern Temporal *tcbuffer_at_stbox(const Temporal *temp, const STBox *box, bool border_inc);
259extern Temporal *tcbuffer_minus_cbuffer(const Temporal *temp, const Cbuffer *cb);
260extern Temporal *tcbuffer_minus_geom(const Temporal *temp, const GSERIALIZED *gs);
261extern Temporal *tcbuffer_minus_stbox(const Temporal *temp, const STBox *box, bool border_inc);
262
263/*****************************************************************************
264 * Distance functions
265 *****************************************************************************/
266
267extern Temporal *distance_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb);
268extern Temporal *distance_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs);
269extern Temporal *distance_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2);
270extern double nad_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb);
271extern double nad_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs);
272extern double nad_tcbuffer_stbox(const Temporal *temp, const STBox *box);
273extern double nad_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2);
274extern TInstant *nai_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb);
275extern TInstant *nai_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs);
276extern TInstant *nai_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2);
277extern GSERIALIZED *shortestline_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb);
278extern GSERIALIZED *shortestline_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs);
279extern GSERIALIZED *shortestline_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2);
280
281/*****************************************************************************
282 * Comparison functions
283 *****************************************************************************/
284
285/* Ever/always comparison functions */
286
287extern int always_eq_cbuffer_tcbuffer(const Cbuffer *cb, const Temporal *temp);
288extern int always_eq_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb);
289extern int always_eq_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2);
290extern int always_ne_cbuffer_tcbuffer(const Cbuffer *cb, const Temporal *temp);
291extern int always_ne_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb);
292extern int always_ne_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2);
293extern int ever_eq_cbuffer_tcbuffer(const Cbuffer *cb, const Temporal *temp);
294extern int ever_eq_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb);
295extern int ever_eq_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2);
296extern int ever_ne_cbuffer_tcbuffer(const Cbuffer *cb, const Temporal *temp);
297extern int ever_ne_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb);
298extern int ever_ne_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2);
299
300/* Temporal comparison functions */
301
302extern Temporal *teq_cbuffer_tcbuffer(const Cbuffer *cb, const Temporal *temp);
303extern Temporal *teq_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb);
304extern Temporal *tne_cbuffer_tcbuffer(const Cbuffer *cb, const Temporal *temp);
305extern Temporal *tne_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb);
306
307/*****************************************************************************
308 * Spatial relationship functions
309 *****************************************************************************/
310
311/* Ever and always spatial relationship functions */
312
313extern int acontains_cbuffer_tcbuffer(const Cbuffer *cb, const Temporal *temp);
314extern int acontains_geo_tcbuffer(const GSERIALIZED *gs, const Temporal *temp);
315extern int acontains_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb);
316extern int acontains_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs);
317extern int acovers_cbuffer_tcbuffer(const Cbuffer *cb, const Temporal *temp);
318extern int acovers_geo_tcbuffer(const GSERIALIZED *gs, const Temporal *temp);
319extern int acovers_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb);
320extern int acovers_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs);
321extern int adisjoint_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs);
322extern int adisjoint_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb);
323extern int adisjoint_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2);
324extern int adwithin_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs, double dist);
325extern int adwithin_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb, double dist);
326extern int adwithin_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2, double dist);
327extern int aintersects_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs);
328extern int aintersects_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb);
329extern int aintersects_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2);
330extern int atouches_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs);
331extern int atouches_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb);
332extern int atouches_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2);
333extern int econtains_cbuffer_tcbuffer(const Cbuffer *cb, const Temporal *temp);
334extern int econtains_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb);
335extern int econtains_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs);
336extern int ecovers_cbuffer_tcbuffer(const Cbuffer *cb, const Temporal *temp);
337extern int ecovers_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb);
338extern int ecovers_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs);
339extern int ecovers_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2);
340extern int edisjoint_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs);
341extern int edisjoint_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb);
342extern int edwithin_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs, double dist);
343extern int edwithin_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb, double dist);
344extern int edwithin_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2, double dist);
345extern int eintersects_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs);
346extern int eintersects_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb);
347extern int eintersects_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2);
348extern int etouches_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs);
349extern int etouches_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb);
350extern int etouches_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2);
351
352/*****************************************************************************/
353
354/* Spatiotemporal relationship functions */
355
356extern Temporal *tcontains_cbuffer_tcbuffer(const Cbuffer *cb, const Temporal *temp, bool restr, bool atvalue);
357extern Temporal *tcontains_geo_tcbuffer(const GSERIALIZED *gs, const Temporal *temp, bool restr, bool atvalue);
358extern Temporal *tcontains_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs, bool restr, bool atvalue);
359extern Temporal *tcontains_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb, bool restr, bool atvalue);
360extern Temporal *tcontains_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2, bool restr, bool atvalue);
361extern Temporal *tcovers_cbuffer_tcbuffer(const Cbuffer *cb, const Temporal *temp, bool restr, bool atvalue);
362extern Temporal *tcovers_geo_tcbuffer(const GSERIALIZED *gs, const Temporal *temp, bool restr, bool atvalue);
363extern Temporal *tcovers_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs, bool restr, bool atvalue);
364extern Temporal *tcovers_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb, bool restr, bool atvalue);
365extern Temporal *tcovers_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2, bool restr, bool atvalue);
366extern Temporal *tdwithin_geo_tcbuffer(const GSERIALIZED *gs, const Temporal *temp, double dist, bool restr, bool atvalue);
367extern Temporal *tdwithin_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs, double dist, bool restr, bool atvalue);
368extern Temporal *tdwithin_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb, double dist, bool restr, bool atvalue);
369extern Temporal *tdwithin_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2, double dist, bool restr, bool atvalue);
370extern Temporal *tdisjoint_cbuffer_tcbuffer(const Cbuffer *cb, const Temporal *temp,bool restr, bool atvalue);
371extern Temporal *tdisjoint_geo_tcbuffer(const GSERIALIZED *gs, const Temporal *temp,bool restr, bool atvalue);
372extern Temporal *tdisjoint_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs, bool restr, bool atvalue);
373extern Temporal *tdisjoint_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb, bool restr, bool atvalue);
374extern Temporal *tdisjoint_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2, bool restr, bool atvalue);
375extern Temporal *tintersects_cbuffer_tcbuffer(const Cbuffer *cb, const Temporal *temp,bool restr, bool atvalue);
376extern Temporal *tintersects_geo_tcbuffer(const GSERIALIZED *gs, const Temporal *temp,bool restr, bool atvalue);
377extern Temporal *tintersects_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs, bool restr, bool atvalue);
378extern Temporal *tintersects_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb, bool restr, bool atvalue);
379extern Temporal *tintersects_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2, bool restr, bool atvalue);
380extern Temporal *ttouches_geo_tcbuffer(const GSERIALIZED *gs, const Temporal *temp, bool restr, bool atvalue);
381extern Temporal *ttouches_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs, bool restr, bool atvalue);
382extern Temporal *ttouches_cbuffer_tcbuffer(const Cbuffer *cb, const Temporal *temp, bool restr, bool atvalue);
383extern Temporal *ttouches_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb, bool restr, bool atvalue);
384extern Temporal *ttouches_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2, bool restr, bool atvalue);
385
386/*****************************************************************************/
387
388#endif /* __MEOS_CBUFFER_H__ */
Set * tcbuffer_radius(const Temporal *temp)
Return the array of radii of a temporal circular buffer @csqlfn Tcbuffer_points()
Definition: tcbuffer.c:866
Set * tcbuffer_points(const Temporal *temp)
Return the array of points or radius of a temporal circular buffer @csqlfn Tcbuffer_points()
Definition: tcbuffer.c:855
uint64 cbuffer_hash_extended(const Cbuffer *cb, uint64 seed)
Return the 64-bit hash value of a circular buffer using a seed.
Definition: cbuffer.c:1526
GSERIALIZED * cbuffer_point(const Cbuffer *cb)
Return a copy of the point of a circular buffer.
Definition: cbuffer.c:716
double cbuffer_radius(const Cbuffer *cb)
Return the radius of a circular buffer.
Definition: cbuffer.c:731
uint32 cbuffer_hash(const Cbuffer *cb)
Return the 32-bit hash value of a circular buffer.
Definition: cbuffer.c:1501
bool cbuffer_ge(const Cbuffer *cb1, const Cbuffer *cb2)
Return true if the first buffer is greater than or equal to the second one.
Definition: cbuffer.c:1484
bool cbuffer_nsame(const Cbuffer *cb1, const Cbuffer *cb2)
Return true if two circular buffers are approximately equal with respect to an epsilon value.
Definition: cbuffer.c:1393
bool cbuffer_same(const Cbuffer *cb1, const Cbuffer *cb2)
Return true if two circular buffers are approximately equal with respect to an epsilon value.
Definition: cbuffer.c:1374
bool cbuffer_ne(const Cbuffer *cb1, const Cbuffer *cb2)
Return true if the first buffer is not equal to the second one.
Definition: cbuffer.c:1363
bool cbuffer_gt(const Cbuffer *cb1, const Cbuffer *cb2)
Return true if the first buffer is greater than the second one.
Definition: cbuffer.c:1471
int cbuffer_cmp(const Cbuffer *cb1, const Cbuffer *cb2)
Return -1, 0, or 1 depending on whether the first buffer is less than, equal to, or greater than the ...
Definition: cbuffer.c:1406
bool cbuffer_le(const Cbuffer *cb1, const Cbuffer *cb2)
Return true if the first buffer is less than or equal to the second one.
Definition: cbuffer.c:1459
bool cbuffer_lt(const Cbuffer *cb1, const Cbuffer *cb2)
Return true if the first buffer is less than the second one.
Definition: cbuffer.c:1446
bool cbuffer_eq(const Cbuffer *cb1, const Cbuffer *cb2)
Return true if the first buffer is equal to the second one.
Definition: cbuffer.c:1346
Cbuffer * cbuffer_copy(const Cbuffer *cb)
Return a copy of a circular buffer.
Definition: cbuffer.c:507
Cbuffer * cbuffer_make(const GSERIALIZED *point, double radius)
Construct a circular buffer from a point and a radius.
Definition: cbuffer.c:476
GSERIALIZED * cbufferarr_to_geom(const Cbuffer **cbarr, int count)
Return a geometry converted from an array of circular buffers.
Definition: cbuffer.c:588
STBox * cbuffer_to_stbox(const Cbuffer *cb)
Convert a circular buffer into a spatiotemporal box.
Definition: cbuffer.c:681
Cbuffer * geom_to_cbuffer(const GSERIALIZED *gs)
Convert a geometry into a circular buffer.
Definition: cbuffer.c:544
GSERIALIZED * cbuffer_to_geom(const Cbuffer *cb)
Convert a circular buffer into a geometry.
Definition: cbuffer.c:527
double distance_cbuffer_geo(const Cbuffer *cb, const GSERIALIZED *gs)
Return the distance between a circular buffer and a geometry.
Definition: cbuffer.c:974
double distance_cbuffer_cbuffer(const Cbuffer *cb1, const Cbuffer *cb2)
Return the distance between two circular buffers.
Definition: cbuffer.c:943
double nad_cbuffer_stbox(const Cbuffer *cb, const STBox *box)
Return the nearest approach distance between a circular buffer and a spatiotemporal box.
Definition: tcbuffer_distance.c:504
double distance_cbuffer_stbox(const Cbuffer *cb, const STBox *box)
Return the distance between a circular buffer and a spatiotemporal box.
Definition: cbuffer.c:994
char * cbuffer_out(const Cbuffer *cb, int maxdd)
Return the string representation of a circular buffer.
Definition: cbuffer.c:314
uint8_t * cbuffer_as_wkb(const Cbuffer *cb, uint8_t variant, size_t *size_out)
Return the Well-Known Binary (WKB) representation of a circular buffer.
Definition: cbuffer.c:439
Cbuffer * cbuffer_from_hexwkb(const char *hexwkb)
Return a circular buffer from its ASCII hex-encoded Well-Known Binary (WKB) representation.
Definition: cbuffer.c:419
Cbuffer * cbuffer_from_wkb(const uint8_t *wkb, size_t size)
Return a circular buffer from its Well-Known Binary (WKB) representation.
Definition: cbuffer.c:404
char * cbuffer_as_hexwkb(const Cbuffer *cb, uint8_t variant, size_t *size)
Return the ASCII hex-encoded Well-Known Binary (HexWKB) representation of a circular buffer.
Definition: cbuffer.c:456
char * cbuffer_as_text(const Cbuffer *cb, int maxdd)
Return the Well-Known Text (WKT) representation of a circular buffer.
Definition: cbuffer.c:366
char * cbuffer_as_ewkt(const Cbuffer *cb, int maxdd)
Return the Extended Well-Known Text (EWKT) representation of a circular buffer.
Definition: cbuffer.c:384
Cbuffer * cbuffer_in(const char *str)
Return a circular buffer from its string representation.
Definition: cbuffer.c:298
int touches_cbuffer_cbuffer(const Cbuffer *cb1, const Cbuffer *cb2)
Return true if the first circular buffer touches the second one.
Definition: cbuffer.c:1236
int covers_cbuffer_cbuffer(const Cbuffer *cb1, const Cbuffer *cb2)
Return true if the first circular buffer covers the second one.
Definition: cbuffer.c:1200
int contains_cbuffer_cbuffer(const Cbuffer *cb1, const Cbuffer *cb2)
Return true if the first circular buffer contains the second one.
Definition: cbuffer.c:1188
int disjoint_cbuffer_cbuffer(const Cbuffer *cb1, const Cbuffer *cb2)
Return true if two circular buffers are disjoint in 2D.
Definition: cbuffer.c:1212
int intersects_cbuffer_cbuffer(const Cbuffer *cb1, const Cbuffer *cb2)
Return true if two circular buffers intersect in 2D.
Definition: cbuffer.c:1224
int dwithin_cbuffer_cbuffer(const Cbuffer *cb1, const Cbuffer *cb2, double dist)
Return true if two 2D circular buffers are within a distance.
Definition: cbuffer.c:1249
Cbuffer * cbuffer_transform_pipeline(const Cbuffer *cb, const char *pipelinestr, int32_t srid, bool is_forward)
Return a circular buffer transformed to another SRID using a pipeline.
Definition: cbuffer.c:896
void cbuffer_set_srid(Cbuffer *cb, int32_t srid)
Set the coordinates of a circular buffer to an SRID.
Definition: cbuffer.c:824
Cbuffer * cbuffer_transform(const Cbuffer *cb, int32_t srid)
Return a circular buffer transformed to another SRID.
Definition: cbuffer.c:865
int32_t cbuffer_srid(const Cbuffer *cb)
Return the SRID of a circular buffer.
Definition: cbuffer.c:808
Cbuffer ** cbufferarr_round(const Cbuffer **cbarr, int count, int maxdd)
Return an array of circular buffers with the precision of the values set to a number of decimal place...
Definition: cbuffer.c:784
Cbuffer * cbuffer_round(const Cbuffer *cb, int maxdd)
Return a circular buffer with the precision of the values set to a number of decimal places.
Definition: cbuffer.c:748
int ever_ne_cbuffer_tcbuffer(const Cbuffer *cb, const Temporal *temp)
Return true if a circular buffer is ever different from a temporal circular buffer.
Definition: tcbuffer_compops.c:123
int ever_eq_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb)
Return true if a temporal circular buffer is ever equal to a circular buffer.
Definition: tcbuffer_compops.c:109
int always_ne_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb)
Return true if a temporal circular buffer is always different from a circular buffer.
Definition: tcbuffer_compops.c:193
int always_ne_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2)
Return true if two temporal circular buffers are always different.
Definition: tcbuffer_compops.c:243
int ever_ne_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb)
Return true if a temporal circular buffer is ever different from a circular buffer.
Definition: tcbuffer_compops.c:137
int ever_ne_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2)
Return true if two temporal circular buffers are ever different.
Definition: tcbuffer_compops.c:219
int ever_eq_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2)
Return true if two temporal circular buffers are ever equal.
Definition: tcbuffer_compops.c:207
int ever_eq_cbuffer_tcbuffer(const Cbuffer *cb, const Temporal *temp)
Return true if a circular buffer is ever equal to a temporal circular buffer.
Definition: tcbuffer_compops.c:95
int always_eq_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2)
Return true if two temporal circular buffers are always equal.
Definition: tcbuffer_compops.c:231
int always_ne_cbuffer_tcbuffer(const Cbuffer *cb, const Temporal *temp)
Return true if a circular buffer is always different from a temporal circular buffer.
Definition: tcbuffer_compops.c:179
int always_eq_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb)
Return true if a temporal circular buffer is always equal to a circular buffer.
Definition: tcbuffer_compops.c:165
int always_eq_cbuffer_tcbuffer(const Cbuffer *cb, const Temporal *temp)
Return true if a circular buffer is always equal to a temporal circular buffer.
Definition: tcbuffer_compops.c:151
Temporal * tne_cbuffer_tcbuffer(const Cbuffer *cb, const Temporal *temp)
Return the temporal inequality of a circular buffer and a temporal circular buffer.
Definition: tcbuffer_compops.c:311
Temporal * tne_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb)
Return the temporal inequality of a temporal circular buffer and a circular buffer.
Definition: tcbuffer_compops.c:341
Temporal * teq_cbuffer_tcbuffer(const Cbuffer *cb, const Temporal *temp)
Return the temporal equality of a circular buffer and a temporal circular buffer.
Definition: tcbuffer_compops.c:297
Temporal * teq_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb)
Return the temporal equality of a temporal circular buffer and a circular buffer.
Definition: tcbuffer_compops.c:327
Temporal * tcbuffer_make(const Temporal *tpoint, const Temporal *tfloat)
Return a temporal circular buffer from a temporal point and a temporal float @csqlfn Tcbuffer_constru...
Definition: tcbuffer.c:433
Temporal * tgeompoint_to_tcbuffer(const Temporal *temp)
Return a temporal geometry point transformed to a temporal circular buffer with a zero radius.
Definition: tcbuffer.c:672
Temporal * tcbuffer_to_tfloat(const Temporal *temp)
Return a temporal float constructed from the radius of a temporal circular buffer.
Definition: tcbuffer.c:587
Temporal * tcbuffer_to_tgeompoint(const Temporal *temp)
Return a temporal geometry point constructed from the points of a temporal circular buffer.
Definition: tcbuffer.c:519
TInstant * nai_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs)
Return the nearest approach instant of the temporal circular buffer and a geometry.
Definition: tcbuffer_distance.c:422
double nad_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb)
Return the nearest approach distance of a temporal circular buffer and a circular buffer.
Definition: tcbuffer_distance.c:571
GSERIALIZED * shortestline_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb)
Return the line connecting the nearest approach point between a circular buffer and a temporal circul...
Definition: tcbuffer_distance.c:637
GSERIALIZED * shortestline_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs)
Return the line connecting the nearest approach point between a geometry and a temporal circular buff...
Definition: tcbuffer_distance.c:616
double nad_tcbuffer_stbox(const Temporal *temp, const STBox *box)
Return the nearest approach distance of a temporal circular buffer and a spatiotemporal box.
Definition: tcbuffer_distance.c:549
Temporal * distance_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb)
Return the temporal distance between a temporal circular buffer and a circular buffer @csqlfn Distanc...
Definition: tcbuffer_distance.c:339
GSERIALIZED * shortestline_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2)
Return the line connecting the nearest approach point between two temporal circular buffers.
Definition: tcbuffer_distance.c:658
TInstant * nai_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2)
Return the nearest approach instant of two temporal circular buffers.
Definition: tcbuffer_distance.c:473
Temporal * distance_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs)
Return the temporal distance between a temporal circular buffer and a geometry @csqlfn Distance_tcbuf...
Definition: tcbuffer_distance.c:367
TInstant * nai_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb)
Return the nearest approach instant of the circular buffer and a temporal circular buffer.
Definition: tcbuffer_distance.c:448
Temporal * distance_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2)
Return the temporal distance between two temporal circular buffers.
Definition: tcbuffer_distance.c:388
double nad_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs)
Return the nearest approach distance of a temporal circular buffer and a geometry.
Definition: tcbuffer_distance.c:528
double nad_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2)
Return the nearest approach distance of two temporal circular buffers.
Definition: tcbuffer_distance.c:591
Temporal * tcbuffer_in(const char *str)
Return a temporal circular buffer from its Well-Known Text (WKT) representation.
Definition: tcbuffer.c:312
int aintersects_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb)
Return 1 if a circular buffer and a temporal circular buffer always intersect, 0 if not,...
Definition: tcbuffer_spatialrels.c:1149
int edwithin_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb, double dist)
Return 1 if a geometry and a temporal circular buffer are ever within the given distance,...
Definition: tcbuffer_spatialrels.c:1441
int adisjoint_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs)
Return 1 if a temporal circular buffer and a geometry are always disjoint,0 if not,...
Definition: tcbuffer_spatialrels.c:908
int ecovers_cbuffer_tcbuffer(const Cbuffer *cb, const Temporal *temp)
Return 1 if a circular buffer ever covers a temporal circular buffer, 0 if not, and -1 on error.
Definition: tcbuffer_spatialrels.c:739
int acovers_cbuffer_tcbuffer(const Cbuffer *cb, const Temporal *temp)
Return 1 if a circular buffer always covers a temporal circular buffer, 0 if not, and -1 on error.
Definition: tcbuffer_spatialrels.c:753
int eintersects_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs)
Return 1 if a geometry and a temporal circular buffer ever intersect, 0 if not, and -1 on error or if...
Definition: tcbuffer_spatialrels.c:1069
int acontains_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb)
Return 1 if a temporal circular buffer always contains a circular buffer, 0 if not,...
Definition: tcbuffer_spatialrels.c:619
int ecovers_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb)
Return 1 if a temporal circular buffer ever covers a circular buffer, 0 if not, and -1 on error.
Definition: tcbuffer_spatialrels.c:784
int acontains_cbuffer_tcbuffer(const Cbuffer *cb, const Temporal *temp)
Return 1 if a circular buffer always contains a temporal circular buffer, 0 if not,...
Definition: tcbuffer_spatialrels.c:569
int acovers_geo_tcbuffer(const GSERIALIZED *gs, const Temporal *temp)
Return 1 if a geometry always covers a temporal circular buffer, 0 if not, and -1 on error or if the ...
Definition: tcbuffer_spatialrels.c:657
int adisjoint_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb)
Return 1 if a temporal circular buffer and a geometry are always disjoint, 0 if not,...
Definition: tcbuffer_spatialrels.c:970
int acontains_geo_tcbuffer(const GSERIALIZED *gs, const Temporal *temp)
Return 1 if a geometry always contains a temporal circular buffer, 0 if not, and -1 on error or if th...
Definition: tcbuffer_spatialrels.c:464
int atouches_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb)
Return 1 if a temporal circular buffer always touches a circular buffer, 0 if not,...
Definition: tcbuffer_spatialrels.c:1321
int atouches_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs)
Return 1 if a temporal circular buffer always touches a geometry, 0 if not, and -1 on error or if the...
Definition: tcbuffer_spatialrels.c:1259
int adwithin_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2, double dist)
Return 1 if two temporal circular buffers are always within a distance, 0 if not, -1 on error or if t...
Definition: tcbuffer_spatialrels.c:1547
int edwithin_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs, double dist)
Return 1 if a geometry and a temporal circular buffer are ever within the given distance,...
Definition: tcbuffer_spatialrels.c:1409
int edisjoint_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb)
Return 1 if a temporal circular buffer and a circular buffer are ever disjoint, 0 if not,...
Definition: tcbuffer_spatialrels.c:955
int adwithin_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb, double dist)
Return 1 if a geometry and a temporal circular buffer are always within a distance,...
Definition: tcbuffer_spatialrels.c:1466
int ecovers_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs)
Return 1 if a temporal circular buffer ever covers a geometry, 0 if not, and -1 on error or if the ge...
Definition: tcbuffer_spatialrels.c:692
int edisjoint_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs)
Return 1 if a temporal circular buffer and a geometry are ever disjoint, 0 if not,...
Definition: tcbuffer_spatialrels.c:893
int etouches_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb)
Return 1 if a temporal circular buffer always touches a circular buffer, 0 if not,...
Definition: tcbuffer_spatialrels.c:1307
int aintersects_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs)
Return 1 if a geometry and a temporal circular buffer always intersect, 0 if not, and -1 on error or ...
Definition: tcbuffer_spatialrels.c:1084
int adwithin_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs, double dist)
Return 1 if a geometry and a temporal circular buffer are always within a distance,...
Definition: tcbuffer_spatialrels.c:1424
int edwithin_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2, double dist)
Return 1 if two temporal circular buffers are ever within a distance, 0 if not, -1 on error or if the...
Definition: tcbuffer_spatialrels.c:1531
int aintersects_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2)
Return 1 if the temporal circular buffers always intersect, 0 if not, and -1 on error or if the tempo...
Definition: tcbuffer_spatialrels.c:1195
int adisjoint_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2)
Return 1 if the temporal circular buffers are always disjoint, 0 if not, and -1 on error or if the te...
Definition: tcbuffer_spatialrels.c:1017
int eintersects_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2)
Return 1 if the temporal circular buffers ever intersect, 0 if not, and -1 on error or if the tempora...
Definition: tcbuffer_spatialrels.c:1182
int econtains_cbuffer_tcbuffer(const Cbuffer *cb, const Temporal *temp)
Return 1 if a circular buffer ever contains a temporal circular buffer, 0 if not, and -1 on error.
Definition: tcbuffer_spatialrels.c:555
int eintersects_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb)
Return 1 if a circular buffer and a temporal circular buffer ever intersect, 0 if not,...
Definition: tcbuffer_spatialrels.c:1133
int econtains_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb)
Return 1 if a temporal circular buffer ever contains a circular buffer, 0 if not, and -1 on error.
Definition: tcbuffer_spatialrels.c:605
int econtains_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs)
Return 1 if a temporal circular buffer ever contains a geometry, 0 if not, and -1 on error or if the ...
Definition: tcbuffer_spatialrels.c:503
int acovers_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs)
Return 1 if a temporal circular buffer always covers a geometry, 0 if not, and -1 on error or if the ...
Definition: tcbuffer_spatialrels.c:708
int acontains_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs)
Return 1 if a temporal circular buffer always contains a geometry, 0 if not, and -1 on error or if th...
Definition: tcbuffer_spatialrels.c:519
int etouches_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs)
Return 1 if a temporal circular buffer ever touches a geometry, 0 if not, and -1 on error or if the g...
Definition: tcbuffer_spatialrels.c:1245
int acovers_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb)
Return 1 if a temporal circular buffer always covers a circular buffer, 0 if not, and -1 on error.
Definition: tcbuffer_spatialrels.c:798
Temporal * tdwithin_geo_tcbuffer(const GSERIALIZED *gs, const Temporal *temp, double dist, bool restr, bool atvalue)
Return a temporal Boolean that states whether a temporal circular buffer and a geometry are within a ...
Definition: tcbuffer_tempspatialrels.c:1226
Temporal * tdisjoint_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs, bool restr, bool atvalue)
Return a temporal Boolean that states whether a temporal circular buffer and a geometry are disjoint.
Definition: tcbuffer_tempspatialrels.c:944
Temporal * tcontains_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2, bool restr, bool atvalue)
Return a temporal Boolean that states whether a temporal circular buffer contains another one.
Definition: tcbuffer_tempspatialrels.c:810
Temporal * tcovers_cbuffer_tcbuffer(const Cbuffer *cb, const Temporal *temp, bool restr, bool atvalue)
Return a temporal Boolean that states whether a circular buffer covers a temporal circular buffer.
Definition: tcbuffer_tempspatialrels.c:870
Temporal * tcovers_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2, bool restr, bool atvalue)
Return a temporal Boolean that states whether a temporal circular buffer covers another one.
Definition: tcbuffer_tempspatialrels.c:905
Temporal * tcovers_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb, bool restr, bool atvalue)
Return a temporal Boolean that states whether a temporal circular buffer covers a geometry.
Definition: tcbuffer_tempspatialrels.c:888
Temporal * ttouches_geo_tcbuffer(const GSERIALIZED *gs, const Temporal *temp, bool restr, bool atvalue)
Return a temporal Boolean that states whether a temporal circular buffer touches a geometry.
Definition: tcbuffer_tempspatialrels.c:1121
Temporal * ttouches_cbuffer_tcbuffer(const Cbuffer *cb, const Temporal *temp, bool restr, bool atvalue)
Return a temporal Boolean that states whether a circular buffer touches a temporal circular buffer.
Definition: tcbuffer_tempspatialrels.c:1140
Temporal * tintersects_geo_tcbuffer(const GSERIALIZED *gs, const Temporal *temp, bool restr, bool atvalue)
Return a temporal Boolean that states whether a temporal circular buffer and a geometry intersect.
Definition: tcbuffer_tempspatialrels.c:1032
Temporal * tintersects_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs, bool restr, bool atvalue)
Return a temporal Boolean that states whether a temporal circular buffer and a geometry intersect.
Definition: tcbuffer_tempspatialrels.c:1015
Temporal * tcontains_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb, bool restr, bool atvalue)
Return a temporal Boolean that states whether a temporal circular buffer contains a geometry.
Definition: tcbuffer_tempspatialrels.c:779
Temporal * tdisjoint_cbuffer_tcbuffer(const Cbuffer *cb, const Temporal *temp, bool restr, bool atvalue)
Return a temporal Boolean that states whether a temporal circular buffer and a circular buffer are di...
Definition: tcbuffer_tempspatialrels.c:961
Temporal * tcontains_cbuffer_tcbuffer(const Cbuffer *cb, const Temporal *temp, bool restr, bool atvalue)
Return a temporal Boolean that states whether a circular buffer contains a temporal circular buffer.
Definition: tcbuffer_tempspatialrels.c:747
Temporal * tdisjoint_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2, bool restr, bool atvalue)
Return a temporal Boolean that states whether two temporal circular buffers are disjoint.
Definition: tcbuffer_tempspatialrels.c:994
Temporal * tdwithin_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2, double dist, bool restr, bool atvalue)
Return a temporal Boolean that states whether two temporal circular buffers are within a distance.
Definition: tcbuffer_tempspatialrels.c:1275
Temporal * tcontains_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs, bool restr, bool atvalue)
Return a temporal Boolean that states whether a temporal circular buffer contains a geometry.
Definition: tcbuffer_tempspatialrels.c:727
Temporal * tdwithin_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb, double dist, bool restr, bool atvalue)
Return a temporal Boolean that states whether a temporal circular buffer and a circular buffer are wi...
Definition: tcbuffer_tempspatialrels.c:1246
Temporal * tcovers_geo_tcbuffer(const GSERIALIZED *gs, const Temporal *temp, bool restr, bool atvalue)
Return a temporal Boolean that states whether a geometry covers a temporal circular buffer.
Definition: tcbuffer_tempspatialrels.c:832
Temporal * ttouches_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2, bool restr, bool atvalue)
Return a temporal Boolean that states whether a temporal circular buffer touches another one.
Definition: tcbuffer_tempspatialrels.c:1175
Temporal * tintersects_cbuffer_tcbuffer(const Cbuffer *cb, const Temporal *temp, bool restr, bool atvalue)
Return a temporal Boolean that states whether a temporal circular buffer and a circular buffer inters...
Definition: tcbuffer_tempspatialrels.c:1049
Temporal * tdwithin_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs, double dist, bool restr, bool atvalue)
Return a temporal Boolean that states whether a temporal circular buffer and a geometry are within a ...
Definition: tcbuffer_tempspatialrels.c:1198
Temporal * ttouches_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb, bool restr, bool atvalue)
Return a temporal Boolean that states whether a temporal circular buffer touches a geometry.
Definition: tcbuffer_tempspatialrels.c:1158
Temporal * tintersects_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2, bool restr, bool atvalue)
Return a temporal Boolean that states whether two temporal circular buffers intersect.
Definition: tcbuffer_tempspatialrels.c:1082
Temporal * tdisjoint_geo_tcbuffer(const GSERIALIZED *gs, const Temporal *temp, bool restr, bool atvalue)
Return a temporal Boolean that states whether a temporal circular buffer and a geometry are disjoint.
Definition: tcbuffer_tempspatialrels.c:927
Temporal * tcovers_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs, bool restr, bool atvalue)
Return a temporal Boolean that states whether a temporal circular buffer covers a geometry.
Definition: tcbuffer_tempspatialrels.c:850
Temporal * ttouches_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs, bool restr, bool atvalue)
Return a temporal Boolean that states whether a temporal circular buffer touches a geometry.
Definition: tcbuffer_tempspatialrels.c:1103
Temporal * tintersects_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb, bool restr, bool atvalue)
Return a temporal Boolean that states whether a temporal circular buffer and a circular buffer inters...
Definition: tcbuffer_tempspatialrels.c:1066
Temporal * tdisjoint_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb, bool restr, bool atvalue)
Return a temporal Boolean that states whether a temporal circular buffer and a circular buffer are di...
Definition: tcbuffer_tempspatialrels.c:978
Temporal * tcontains_geo_tcbuffer(const GSERIALIZED *gs, const Temporal *temp, bool restr, bool atvalue)
Return a temporal Boolean that states whether a geometry contains a temporal circular buffer.
Definition: tcbuffer_tempspatialrels.c:709
Temporal * tcbuffer_at_geom(const Temporal *temp, const GSERIALIZED *gs)
Return a temporal circular buffer restricted to a geometry.
Definition: tcbuffer.c:1079
Temporal * tcbuffer_minus_geom(const Temporal *temp, const GSERIALIZED *gs)
Return a temporal circular buffer restricted to the complement of a geometry.
Definition: tcbuffer.c:1096
Temporal * tcbuffer_at_cbuffer(const Temporal *temp, const Cbuffer *cb)
Return a temporal circular buffer restricted to a circular buffer.
Definition: tcbuffer.c:949
Temporal * tcbuffer_at_stbox(const Temporal *temp, const STBox *box, bool border_inc)
Return a temporal circular buffer restricted to a spatiotemporal box.
Definition: tcbuffer.c:1015
Temporal * tcbuffer_minus_stbox(const Temporal *temp, const STBox *box, bool border_inc)
Return a temporal circular buffer restricted to the complement of a geometry.
Definition: tcbuffer.c:1031
Temporal * tcbuffer_minus_cbuffer(const Temporal *temp, const Cbuffer *cb)
Return a temporal circular buffer restricted to the complement of a circular buffer.
Definition: tcbuffer.c:963
bool cbufferset_value_n(const Set *s, int n, Cbuffer **result)
Return in the last argument a copy of the n-th value of a circular buffer set.
Definition: cbufferset_meos.c:156
Cbuffer ** cbufferset_values(const Set *s)
Return the array of copies of the values of a circular buffer set.
Definition: cbufferset_meos.c:174
Cbuffer * cbufferset_end_value(const Set *s)
Return a copy of the end value of a circular buffer set.
Definition: cbufferset_meos.c:137
Cbuffer * cbufferset_start_value(const Set *s)
Return a copy of the start value of a circular buffer set.
Definition: cbufferset_meos.c:122
Set * cbufferset_make(const Cbuffer **values, int count)
Return a circular buffer set from an array of values.
Definition: cbufferset_meos.c:97
Set * cbuffer_to_set(const Cbuffer *cb)
Convert a circular buffer into a circular buffer set.
Definition: cbuffer.c:620
Set * cbufferset_in(const char *str)
Return a set from its Well-Known Text (WKT) representation.
Definition: cbufferset_meos.c:63
char * cbufferset_out(const Set *s, int maxdd)
Return the string representation of a circular buffer set.
Definition: cbufferset_meos.c:78
bool contains_set_cbuffer(const Set *s, Cbuffer *cb)
Return true if a set contains a circular buffer.
Definition: cbufferset_meos.c:197
Set * intersection_set_cbuffer(const Set *s, const Cbuffer *cb)
Return the intersection of a set and a circular buffer.
Definition: cbufferset_meos.c:258
Set * minus_cbuffer_set(const Cbuffer *cb, const Set *s)
Return the difference of a circular buffer and a set.
Definition: cbufferset_meos.c:287
Set * minus_set_cbuffer(const Set *s, const Cbuffer *cb)
Return the difference of a set and a circular buffer.
Definition: cbufferset_meos.c:303
Set * intersection_cbuffer_set(const Cbuffer *cb, const Set *s)
Return the intersection of a circular buffer and a set.
Definition: cbufferset_meos.c:274
Set * cbuffer_union_transfn(Set *state, const Cbuffer *cb)
Transition function for set union aggregate of circular buffers.
Definition: cbufferset_meos.c:322
bool contained_cbuffer_set(const Cbuffer *cb, const Set *s)
Return true if a circular buffer is contained in a set.
Definition: cbufferset_meos.c:213
Set * union_set_cbuffer(const Set *s, const Cbuffer *cb)
Return the union of a set and a circular buffer.
Definition: cbufferset_meos.c:229
Set * union_cbuffer_set(const Cbuffer *cb, const Set *s)
Return the union of a circular buffer and a set.
Definition: cbufferset_meos.c:245
Temporal * tcbuffer_expand(const Temporal *temp, double dist)
Return a temporal circular buffer with the radius expanded by a distance.
Definition: tcbuffer.c:908
int ecovers_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2)
Return 1 if a temporal circular buffer ever covers another one, 0 if not, and -1 on error.
Definition: tcbuffer_spatialrels.c:829
int atouches_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2)
Return 1 if a temporal circular buffer always touches another one, 0 if not, and -1 on error.
Definition: tcbuffer_spatialrels.c:1366
int etouches_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2)
Return 1 if a temporal circular buffer ever touches another one, 0 if not, and -1 on error.
Definition: tcbuffer_spatialrels.c:1352
External API of the Mobility Engine Open Source (MEOS) library.
GSERIALIZED * tcbuffer_trav_area(const Temporal *temp)
Return the traversed area of a temporal circular buffer.
Definition: tcbuffer_spatialfuncs.c:655
STBox * cbuffer_tstzspan_to_stbox(const Cbuffer *cb, const Span *s)
Return a spatiotemporal box constructed from a circular buffer and a timestamptz.
Definition: tcbuffer_boxops.c:168
STBox * cbuffer_timestamptz_to_stbox(const Cbuffer *cb, TimestampTz t)
Return a spatiotemporal box constructed from a circular buffer and a timestamptz.
Definition: tcbuffer_boxops.c:132
int64 TimestampTz
Definition: postgres_ext_defs.in.h:22
unsigned int uint32
Definition: postgres_ext_defs.in.h:16
unsigned long int uint64
Definition: postgres_ext_defs.in.h:17
double radius
radius
Definition: cbuffer.h:52
Datum point
First 8 bytes of the point which is passed by reference.
Definition: cbuffer.h:53
Functions for temporal buffers.
Definition: cbuffer.h:50
Definition: postgis_ext_defs.in.h:170
Structure to represent spatiotemporal boxes.
Definition: meos.h:134
Structure to represent sets of values.
Definition: meos.h:80
Structure to represent spans (a.k.a.
Definition: meos.h:94
Structure to represent temporal values of instant subtype.
Definition: meos.h:185
Structure to represent the common structure of temporal values of any temporal subtype.
Definition: meos.h:173
Definition: pgtz.h:42
int const GSERIALIZED * gs
Definition: trgeo_spatialrels.h:52