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
41/* MEOS */
42#include <meos.h>
43#include <meos_geo.h>
44
45/*****************************************************************************
46 * Type definitions
47 *****************************************************************************/
48
49/* Opaque structure to represent circular buffers */
50
51typedef struct Cbuffer Cbuffer;
52
53/*****************************************************************************
54 * Validity macros and functions
55 *****************************************************************************/
56
61#if MEOS
62 #define VALIDATE_CBUFFERSET(set, ret) \
63 do { \
64 if (! ensure_not_null((void *) (set)) || \
65 ! ensure_set_isof_type((set), T_CBUFFERSET) ) \
66 return (ret); \
67 } while (0)
68#else
69 #define VALIDATE_CBUFFERSET(set, ret) \
70 do { \
71 assert(set); \
72 assert((set)->settype == T_CBUFFERSET); \
73 } while (0)
74#endif /* MEOS */
75
82#if MEOS
83 #define VALIDATE_TCBUFFER(temp, ret) \
84 do { \
85 if (! ensure_not_null((void *) (temp)) || \
86 ! ensure_temporal_isof_type((Temporal *) (temp), T_TCBUFFER) ) \
87 return (ret); \
88 } while (0)
89#else
90 #define VALIDATE_TCBUFFER(temp, ret) \
91 do { \
92 assert(temp); \
93 assert(((Temporal *) (temp))->temptype == T_TCBUFFER); \
94 } while (0)
95#endif /* MEOS */
96
97/******************************************************************************
98 * Functions for circular buffers
99 ******************************************************************************/
100
101/* Input and output functions */
102
103extern char *cbuffer_as_ewkt(const Cbuffer *cb, int maxdd);
104extern char *cbuffer_as_hexwkb(const Cbuffer *cb, uint8_t variant, size_t *size);
105extern char *cbuffer_as_text(const Cbuffer *cb, int maxdd);
106extern uint8_t *cbuffer_as_wkb(const Cbuffer *cb, uint8_t variant, size_t *size_out);
107extern Cbuffer *cbuffer_from_hexwkb(const char *hexwkb);
108extern Cbuffer *cbuffer_from_wkb(const uint8_t *wkb, size_t size);
109extern Cbuffer *cbuffer_in(const char *str);
110extern char *cbuffer_out(const Cbuffer *cb, int maxdd);
111
112/* Constructor functions */
113
114extern Cbuffer *cbuffer_copy(const Cbuffer *cb);
115extern Cbuffer *cbuffer_make(const GSERIALIZED *point, double radius);
116
117/* Conversion functions */
118
119extern GSERIALIZED *cbuffer_to_geom(const Cbuffer *cb);
120extern STBox *cbuffer_to_stbox(const Cbuffer *cb);
121extern GSERIALIZED *cbufferarr_to_geom(const Cbuffer **cbarr, int count);
122extern Cbuffer *geom_to_cbuffer(const GSERIALIZED *gs);
123
124/* Accessor functions */
125
126extern uint32 cbuffer_hash(const Cbuffer *cb);
127extern uint64 cbuffer_hash_extended(const Cbuffer *cb, uint64 seed);
128extern GSERIALIZED *cbuffer_point(const Cbuffer *cb);
129extern double cbuffer_radius(const Cbuffer *cb);
130
131/* Transformation functions */
132
133extern Cbuffer *cbuffer_round(const Cbuffer *cb, int maxdd);
134extern Cbuffer **cbufferarr_round(const Cbuffer **cbarr, int count, int maxdd);
135
136/* Spatial reference system functions */
137
138extern void cbuffer_set_srid(Cbuffer *cb, int32_t srid);
139extern int32_t cbuffer_srid(const Cbuffer *cb);
140extern Cbuffer *cbuffer_transform(const Cbuffer *cb, int32_t srid);
141extern Cbuffer *cbuffer_transform_pipeline(const Cbuffer *cb, const char *pipelinestr, int32_t srid, bool is_forward);
142
143/* Spatial relationship functions */
144
145extern int contains_cbuffer_cbuffer(const Cbuffer *cb1, const Cbuffer *cb2);
146extern int covers_cbuffer_cbuffer(const Cbuffer *cb1, const Cbuffer *cb2);
147extern int disjoint_cbuffer_cbuffer(const Cbuffer *cb1, const Cbuffer *cb2);
148extern int dwithin_cbuffer_cbuffer(const Cbuffer *cb1, const Cbuffer *cb2, double dist);
149extern int intersects_cbuffer_cbuffer(const Cbuffer *cb1, const Cbuffer *cb2);
150extern int touches_cbuffer_cbuffer(const Cbuffer *cb1, const Cbuffer *cb2);
151
152/* Bounding box functions */
153
154extern STBox *cbuffer_tstzspan_to_stbox(const Cbuffer *cb, const Span *s);
156
157/* Distance functions */
158
159extern double distance_cbuffer_cbuffer(const Cbuffer *cb1, const Cbuffer *cb2);
160extern double distance_cbuffer_geo(const Cbuffer *cb, const GSERIALIZED *gs);
161extern double distance_cbuffer_stbox(const Cbuffer *cb, const STBox *box);
162extern double nad_cbuffer_stbox(const Cbuffer *cb, const STBox *box);
163
164/* Comparison functions */
165
166extern int cbuffer_cmp(const Cbuffer *cb1, const Cbuffer *cb2);
167extern bool cbuffer_eq(const Cbuffer *cb1, const Cbuffer *cb2);
168extern bool cbuffer_ge(const Cbuffer *cb1, const Cbuffer *cb2);
169extern bool cbuffer_gt(const Cbuffer *cb1, const Cbuffer *cb2);
170extern bool cbuffer_le(const Cbuffer *cb1, const Cbuffer *cb2);
171extern bool cbuffer_lt(const Cbuffer *cb1, const Cbuffer *cb2);
172extern bool cbuffer_ne(const Cbuffer *cb1, const Cbuffer *cb2);
173extern bool cbuffer_nsame(const Cbuffer *cb1, const Cbuffer *cb2);
174extern bool cbuffer_same(const Cbuffer *cb1, const Cbuffer *cb2);
175
176/******************************************************************************
177 * Functions for circular buffer sets
178 ******************************************************************************/
179
180/* Input and output functions */
181
182extern Set *cbufferset_in(const char *str);
183extern char *cbufferset_out(const Set *s, int maxdd);
184
185/* Constructor functions */
186
187extern Set *cbufferset_make(const Cbuffer **values, int count);
188
189/* Conversion functions */
190
191extern Set *cbuffer_to_set(const Cbuffer *cb);
192
193/* Accessor functions */
194
195extern Cbuffer *cbufferset_end_value(const Set *s);
196extern Cbuffer *cbufferset_start_value(const Set *s);
197extern bool cbufferset_value_n(const Set *s, int n, Cbuffer **result);
198extern Cbuffer **cbufferset_values(const Set *s);
199
200/* Set operations */
201
202extern Set *cbuffer_union_transfn(Set *state, const Cbuffer *cb);
203extern bool contained_cbuffer_set(const Cbuffer *cb, const Set *s);
204extern bool contains_set_cbuffer(const Set *s, Cbuffer *cb);
205extern Set *intersection_cbuffer_set(const Cbuffer *cb, const Set *s);
206extern Set *intersection_set_cbuffer(const Set *s, const Cbuffer *cb);
207extern Set *minus_cbuffer_set(const Cbuffer *cb, const Set *s);
208extern Set *minus_set_cbuffer(const Set *s, const Cbuffer *cb);
209extern Set *union_cbuffer_set(const Cbuffer *cb, const Set *s);
210extern Set *union_set_cbuffer(const Set *s, const Cbuffer *cb);
211
212/*===========================================================================*
213 * Functions for temporal types
214 *===========================================================================*/
215
216/*****************************************************************************
217 * Input/output functions
218 *****************************************************************************/
219
220extern Temporal *tcbuffer_in(const char *str);
221
222/*****************************************************************************
223 * Constructor functions
224 *****************************************************************************/
225
226extern Temporal *tcbuffer_make(const Temporal *tpoint, const Temporal *tfloat);
227
228/*****************************************************************************
229 * Accessor functions
230 *****************************************************************************/
231
232extern Set *tcbuffer_points(const Temporal *temp);
233extern Set *tcbuffer_radius(const Temporal *temp);
234extern GSERIALIZED *tcbuffer_trav_area(const Temporal *temp, bool merge_union);
235
236/*****************************************************************************
237 * Conversion functions
238 *****************************************************************************/
239
240extern Temporal *tcbuffer_to_tfloat(const Temporal *temp);
241extern Temporal *tcbuffer_to_tgeompoint(const Temporal *temp);
242extern Temporal *tgeometry_to_tcbuffer(const Temporal *temp);
243
244/*****************************************************************************
245 * Transformation functions
246 *****************************************************************************/
247
248extern Temporal *tcbuffer_expand(const Temporal *temp, double dist);
249
250/*****************************************************************************
251 * Restriction functions
252 *****************************************************************************/
253
254extern Temporal *tcbuffer_at_cbuffer(const Temporal *temp, const Cbuffer *cb);
255extern Temporal *tcbuffer_at_geom(const Temporal *temp, const GSERIALIZED *gs);
256extern Temporal *tcbuffer_at_stbox(const Temporal *temp, const STBox *box, bool border_inc);
257extern Temporal *tcbuffer_minus_cbuffer(const Temporal *temp, const Cbuffer *cb);
258extern Temporal *tcbuffer_minus_geom(const Temporal *temp, const GSERIALIZED *gs);
259extern Temporal *tcbuffer_minus_stbox(const Temporal *temp, const STBox *box, bool border_inc);
260
261/*****************************************************************************
262 * Distance functions
263 *****************************************************************************/
264
265extern Temporal *tdistance_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb);
266extern Temporal *tdistance_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs);
267extern Temporal *tdistance_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2);
268extern double nad_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb);
269extern double nad_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs);
270extern double nad_tcbuffer_stbox(const Temporal *temp, const STBox *box);
271extern double nad_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2);
272extern TInstant *nai_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb);
273extern TInstant *nai_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs);
274extern TInstant *nai_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2);
275extern GSERIALIZED *shortestline_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb);
276extern GSERIALIZED *shortestline_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs);
277extern GSERIALIZED *shortestline_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2);
278
279/*****************************************************************************
280 * Comparison functions
281 *****************************************************************************/
282
283/* Ever/always comparison functions */
284
285extern int always_eq_cbuffer_tcbuffer(const Cbuffer *cb, const Temporal *temp);
286extern int always_eq_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb);
287extern int always_eq_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2);
288extern int always_ne_cbuffer_tcbuffer(const Cbuffer *cb, const Temporal *temp);
289extern int always_ne_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb);
290extern int always_ne_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2);
291extern int ever_eq_cbuffer_tcbuffer(const Cbuffer *cb, const Temporal *temp);
292extern int ever_eq_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb);
293extern int ever_eq_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2);
294extern int ever_ne_cbuffer_tcbuffer(const Cbuffer *cb, const Temporal *temp);
295extern int ever_ne_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb);
296extern int ever_ne_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2);
297
298/* Temporal comparison functions */
299
300extern Temporal *teq_cbuffer_tcbuffer(const Cbuffer *cb, const Temporal *temp);
301extern Temporal *teq_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb);
302extern Temporal *tne_cbuffer_tcbuffer(const Cbuffer *cb, const Temporal *temp);
303extern Temporal *tne_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb);
304
305/*****************************************************************************
306 * Spatial relationship functions
307 *****************************************************************************/
308
309/* Ever and always spatial relationship functions */
310
311extern int acontains_cbuffer_tcbuffer(const Cbuffer *cb, const Temporal *temp);
312extern int acontains_geo_tcbuffer(const GSERIALIZED *gs, const Temporal *temp);
313extern int acontains_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb);
314extern int acontains_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs);
315extern int acovers_cbuffer_tcbuffer(const Cbuffer *cb, const Temporal *temp);
316extern int acovers_geo_tcbuffer(const GSERIALIZED *gs, const Temporal *temp);
317extern int acovers_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb);
318extern int acovers_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs);
319extern int adisjoint_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs);
320extern int adisjoint_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb);
321extern int adisjoint_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2);
322extern int adwithin_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs, double dist);
323extern int adwithin_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb, double dist);
324extern int adwithin_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2, double dist);
325extern int aintersects_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs);
326extern int aintersects_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb);
327extern int aintersects_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2);
328extern int atouches_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs);
329extern int atouches_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb);
330extern int atouches_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2);
331extern int econtains_cbuffer_tcbuffer(const Cbuffer *cb, const Temporal *temp);
332extern int econtains_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb);
333extern int econtains_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs);
334extern int ecovers_cbuffer_tcbuffer(const Cbuffer *cb, const Temporal *temp);
335extern int ecovers_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb);
336extern int ecovers_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs);
337extern int ecovers_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2);
338extern int edisjoint_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs);
339extern int edisjoint_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb);
340extern int edwithin_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs, double dist);
341extern int edwithin_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb, double dist);
342extern int edwithin_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2, double dist);
343extern int eintersects_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs);
344extern int eintersects_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb);
345extern int eintersects_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2);
346extern int etouches_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs);
347extern int etouches_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb);
348extern int etouches_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2);
349
350/*****************************************************************************/
351
352/* Spatiotemporal relationship functions */
353
354extern Temporal *tcontains_cbuffer_tcbuffer(const Cbuffer *cb, const Temporal *temp, bool restr, bool atvalue);
355extern Temporal *tcontains_geo_tcbuffer(const GSERIALIZED *gs, const Temporal *temp, bool restr, bool atvalue);
356extern Temporal *tcontains_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs, bool restr, bool atvalue);
357extern Temporal *tcontains_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb, bool restr, bool atvalue);
358extern Temporal *tcontains_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2, bool restr, bool atvalue);
359extern Temporal *tcovers_cbuffer_tcbuffer(const Cbuffer *cb, const Temporal *temp, bool restr, bool atvalue);
360extern Temporal *tcovers_geo_tcbuffer(const GSERIALIZED *gs, const Temporal *temp, bool restr, bool atvalue);
361extern Temporal *tcovers_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs, bool restr, bool atvalue);
362extern Temporal *tcovers_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb, bool restr, bool atvalue);
363extern Temporal *tcovers_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2, bool restr, bool atvalue);
364extern Temporal *tdwithin_geo_tcbuffer(const GSERIALIZED *gs, const Temporal *temp, double dist, bool restr, bool atvalue);
365extern Temporal *tdwithin_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs, double dist, bool restr, bool atvalue);
366extern Temporal *tdwithin_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb, double dist, bool restr, bool atvalue);
367extern Temporal *tdwithin_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2, double dist, bool restr, bool atvalue);
368extern Temporal *tdisjoint_cbuffer_tcbuffer(const Cbuffer *cb, const Temporal *temp,bool restr, bool atvalue);
369extern Temporal *tdisjoint_geo_tcbuffer(const GSERIALIZED *gs, const Temporal *temp,bool restr, bool atvalue);
370extern Temporal *tdisjoint_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs, bool restr, bool atvalue);
371extern Temporal *tdisjoint_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb, bool restr, bool atvalue);
372extern Temporal *tdisjoint_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2, bool restr, bool atvalue);
373extern Temporal *tintersects_cbuffer_tcbuffer(const Cbuffer *cb, const Temporal *temp,bool restr, bool atvalue);
374extern Temporal *tintersects_geo_tcbuffer(const GSERIALIZED *gs, const Temporal *temp,bool restr, bool atvalue);
375extern Temporal *tintersects_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs, bool restr, bool atvalue);
376extern Temporal *tintersects_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb, bool restr, bool atvalue);
377extern Temporal *tintersects_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2, bool restr, bool atvalue);
378extern Temporal *ttouches_geo_tcbuffer(const GSERIALIZED *gs, const Temporal *temp, bool restr, bool atvalue);
379extern Temporal *ttouches_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs, bool restr, bool atvalue);
380extern Temporal *ttouches_cbuffer_tcbuffer(const Cbuffer *cb, const Temporal *temp, bool restr, bool atvalue);
381extern Temporal *ttouches_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb, bool restr, bool atvalue);
382extern Temporal *ttouches_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2, bool restr, bool atvalue);
383
384/*****************************************************************************/
385
386#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:881
Set * tcbuffer_points(const Temporal *temp)
Return the array of points or radius of a temporal circular buffer @csqlfn Tcbuffer_points()
Definition: tcbuffer.c:870
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:1531
GSERIALIZED * cbuffer_point(const Cbuffer *cb)
Return a copy of the point of a circular buffer.
Definition: cbuffer.c:721
double cbuffer_radius(const Cbuffer *cb)
Return the radius of a circular buffer.
Definition: cbuffer.c:736
uint32 cbuffer_hash(const Cbuffer *cb)
Return the 32-bit hash value of a circular buffer.
Definition: cbuffer.c:1506
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:1489
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:1398
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:1379
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:1368
bool cbuffer_gt(const Cbuffer *cb1, const Cbuffer *cb2)
Return true if the first buffer is greater than the second one.
Definition: cbuffer.c:1476
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:1411
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:1464
bool cbuffer_lt(const Cbuffer *cb1, const Cbuffer *cb2)
Return true if the first buffer is less than the second one.
Definition: cbuffer.c:1451
bool cbuffer_eq(const Cbuffer *cb1, const Cbuffer *cb2)
Return true if the first buffer is equal to the second one.
Definition: cbuffer.c:1351
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:593
STBox * cbuffer_to_stbox(const Cbuffer *cb)
Convert a circular buffer into a spatiotemporal box.
Definition: cbuffer.c:686
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:979
double distance_cbuffer_cbuffer(const Cbuffer *cb1, const Cbuffer *cb2)
Return the distance between two circular buffers.
Definition: cbuffer.c:948
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:507
double distance_cbuffer_stbox(const Cbuffer *cb, const STBox *box)
Return the distance between a circular buffer and a spatiotemporal box.
Definition: cbuffer.c:999
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:1241
int covers_cbuffer_cbuffer(const Cbuffer *cb1, const Cbuffer *cb2)
Return true if the first circular buffer covers the second one.
Definition: cbuffer.c:1205
int contains_cbuffer_cbuffer(const Cbuffer *cb1, const Cbuffer *cb2)
Return true if the first circular buffer contains the second one.
Definition: cbuffer.c:1193
int disjoint_cbuffer_cbuffer(const Cbuffer *cb1, const Cbuffer *cb2)
Return true if two circular buffers are disjoint in 2D.
Definition: cbuffer.c:1217
int intersects_cbuffer_cbuffer(const Cbuffer *cb1, const Cbuffer *cb2)
Return true if two circular buffers intersect in 2D.
Definition: cbuffer.c:1229
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:1254
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:901
void cbuffer_set_srid(Cbuffer *cb, int32_t srid)
Set the coordinates of a circular buffer to an SRID.
Definition: cbuffer.c:829
Cbuffer * cbuffer_transform(const Cbuffer *cb, int32_t srid)
Return a circular buffer transformed to another SRID.
Definition: cbuffer.c:870
int32_t cbuffer_srid(const Cbuffer *cb)
Return the SRID of a circular buffer.
Definition: cbuffer.c:813
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:789
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:753
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:444
Temporal * tgeometry_to_tcbuffer(const Temporal *temp)
Convert a temporal geometry into a temporal circular buffer.
Definition: tcbuffer.c:687
Temporal * tcbuffer_to_tfloat(const Temporal *temp)
Return a temporal float constructed from the radius of a temporal circular buffer.
Definition: tcbuffer.c:598
Temporal * tcbuffer_to_tgeompoint(const Temporal *temp)
Return a temporal geometry point constructed from the points of a temporal circular buffer.
Definition: tcbuffer.c:530
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:425
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:574
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:640
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:619
Temporal * tdistance_tcbuffer_geo(const Temporal *temp, const GSERIALIZED *gs)
Return the temporal distance between a temporal circular buffer and a geometry @csqlfn Tdistance_tcbu...
Definition: tcbuffer_distance.c:370
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:552
Temporal * tdistance_tcbuffer_cbuffer(const Temporal *temp, const Cbuffer *cb)
Return the temporal distance between a temporal circular buffer and a circular buffer @csqlfn Tdistan...
Definition: tcbuffer_distance.c:342
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:661
TInstant * nai_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2)
Return the nearest approach instant of two temporal circular buffers.
Definition: tcbuffer_distance.c:476
Temporal * tdistance_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2)
Return the temporal distance between two temporal circular buffers.
Definition: tcbuffer_distance.c:391
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:451
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:531
double nad_tcbuffer_tcbuffer(const Temporal *temp1, const Temporal *temp2)
Return the nearest approach distance of two temporal circular buffers.
Definition: tcbuffer_distance.c:594
Temporal * tcbuffer_in(const char *str)
Return a temporal circular buffer from its Well-Known Text (WKT) representation.
Definition: tcbuffer.c:323
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:1095
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:1112
Temporal * tcbuffer_at_cbuffer(const Temporal *temp, const Cbuffer *cb)
Return a temporal circular buffer restricted to a circular buffer.
Definition: tcbuffer.c:964
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:1030
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:1046
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:978
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:625
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:923
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, bool merge_union)
Return the traversed area of a temporal circular buffer.
Definition: tcbuffer_spatialfuncs.c:675
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