MobilityDB 1.1
meos_internal_export.h
Go to the documentation of this file.
1/*****************************************************************************
2 *
3 * This MobilityDB code seq provided under The PostgreSQL License.
4 * Copyright(c) 2016-2023, 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-2023, 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 seq 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_INTERNAL_H__
35#define __MEOS_INTERNAL_H__
36
37/* JSON-C */
38#include <json-c/json.h>
39/* PostgreSQL */
40/* MEOS */
41#include "meos_catalog.h" /* For meosType */
42
43/*****************************************************************************
44 * Miscellaneous functions
45 *****************************************************************************/
46
47#define TimestampTzGetDatum(X) Int64GetDatum(X)
48#define DatumGetTimestampTz(X)((TimestampTz) DatumGetInt64(X))
49
50/*****************************************************************************
51 * Functions for set and span types
52 *****************************************************************************/
53
54/* Input/output functions for set and span types */
55
56extern Set *set_in(const char *str, meosType basetype);
57extern Span *span_in(const char *str, meosType spantype);
58extern SpanSet *spanset_in(const char *str, meosType spantype);
59
60/*****************************************************************************/
61
62/* Constructor functions for set and span types */
63
64extern void set_expand_bbox(Datum d, meosType basetype, void *box);
65extern void *set_bbox_ptr(const Set *s);
66extern size_t *set_offsets_ptr(const Set *s);
67extern Set *set_make(const Datum *values, int count, meosType basetype, bool ordered);
68extern Set *set_make_free(Datum *values, int count, meosType basetype, bool ordered);
69extern Set *set_copy(const Set *s);
70extern Span *span_make(Datum lower, Datum upper, bool lower_inc, bool upper_inc, meosType basetype);
71extern void span_set(Datum lower, Datum upper, bool lower_inc, bool upper_inc, meosType basetype, Span *s);
72
73/*****************************************************************************/
74
75/* Cast functions for set and span types */
76
77extern void value_set_span(Datum d, meosType basetype, Span *s);
78extern Set *value_to_set(Datum d, meosType basetype);
79extern Span *value_to_span(Datum d, meosType basetype);
80extern SpanSet *value_to_spanset(Datum d, meosType basetype);
81
82/*****************************************************************************/
83
84/* Accessor functions for set and span types */
85
86extern uint32 datum_hash(Datum d, meosType basetype);
87extern uint64 datum_hash_extended(Datum d, meosType basetype, uint64 seed);
88extern Datum set_val_n(const Set *ts, int index);
89extern Datum set_start_value(const Set *s);
90extern Datum set_end_value(const Set *s);
91extern bool set_value_n(const Set *s, int n, Datum *result);
92extern Datum *set_values(const Set *s);
93extern const Span *spanset_sp_n(const SpanSet *ss, int index);
94extern void tstzset_set_period(const Set *ts, Span *p);
95
96/*****************************************************************************/
97
98/* Transformation functions for set and span types */
99
100extern void span_shift(Span *s, Datum value);
101extern void spanset_shift(SpanSet *s, Datum value);
102extern void lower_upper_shift_tscale(TimestampTz *lower, TimestampTz *upper, const Interval *shift, const Interval *duration);
103
104/*****************************************************************************/
105
106/* Aggregate functions for set and span types */
107
108extern Set *set_agg_transfn(Set *s, Datum d, meosType basetype);
109
110/*****************************************************************************
111 * Bounding box functions for set and span types
112 *****************************************************************************/
113
114/* Topological functions for set and span types */
115
116extern bool adjacent_span_value(const Span *s, Datum d, meosType basetype);
117extern bool adjacent_spanset_value(const SpanSet *ss, Datum d, meosType basetype);
118extern bool contains_span_value(const Span *s, Datum d, meosType basetype);
119extern bool contains_spanset_value(const SpanSet *ss, Datum d, meosType basetype);
120extern bool contains_set_value(const Set *s, Datum d, meosType basetype);
121extern bool contains_set_set(const Set *s1, const Set *s2);
122extern bool contained_value_span(Datum d, meosType basetype, const Span *s);
123extern bool contained_value_set(Datum d, meosType basetype, const Set *s);
124extern bool contained_set_set(const Set *s1, const Set *s2);
125extern bool contained_value_spanset(Datum d, meosType basetype, const SpanSet *ss);
126extern bool overlaps_value_span(Datum d, meosType basetype, const Span *s);
127extern bool overlaps_value_spanset(Datum d, meosType basetype, const SpanSet *ss);
128extern bool overlaps_span_value(const Span *s, Datum d, meosType basetype);
129extern bool overlaps_spanset_value(const SpanSet *ss, Datum d, meosType basetype);
130extern bool overlaps_set_set(const Set *s1, const Set *s2);
131
132/*****************************************************************************/
133
134/* Position functions for set and span types */
135
136extern bool left_set_set(const Set *s1, const Set *s2);
137extern bool left_set_value(const Set *s, Datum d, meosType basetype);
138extern bool left_span_value(const Span *s, Datum d, meosType basetype);
139extern bool left_spanset_value(const SpanSet *ss, Datum d, meosType basetype);
140extern bool left_value_set(Datum d, meosType basetype, const Set *s);
141extern bool left_value_span(Datum d, meosType basetype, const Span *s);
142extern bool left_value_spanset(Datum d, meosType basetype, const SpanSet *ss);
143extern bool right_value_set(Datum d, meosType basetype, const Set *s);
144extern bool right_set_value(const Set *s, Datum d, meosType basetype);
145extern bool right_set_set(const Set *s1, const Set *s2);
146extern bool right_value_span(Datum d, meosType basetype, const Span *s);
147extern bool right_value_spanset(Datum d, meosType basetype, const SpanSet *ss);
148extern bool right_span_value(const Span *s, Datum d, meosType basetype);
149extern bool right_spanset_value(const SpanSet *ss, Datum d, meosType basetype);
150extern bool overleft_value_set(Datum d, meosType basetype, const Set *s);
151extern bool overleft_set_value(const Set *s, Datum d, meosType basetype);
152extern bool overleft_set_set(const Set *s1, const Set *s2);
153extern bool overleft_value_span(Datum d, meosType basetype, const Span *s);
154extern bool overleft_value_spanset(Datum d, meosType basetype, const SpanSet *ss);
155extern bool overleft_span_value(const Span *s, Datum d, meosType basetype);
156extern bool overleft_spanset_value(const SpanSet *ss, Datum d, meosType basetype);
157extern bool overright_value_set(Datum d, meosType basetype, const Set *s);
158extern bool overright_set_value(const Set *s, Datum d, meosType basetype);
159extern bool overright_set_set(const Set *s1, const Set *s2);
160extern bool overright_value_span(Datum d, meosType basetype, const Span *s);
161extern bool overright_value_spanset(Datum d, meosType basetype, const SpanSet *ss);
162extern bool overright_span_value(const Span *s, Datum d, meosType basetype);
163extern bool overright_spanset_value(const SpanSet *ss, Datum d, meosType basetype);
164
165/*****************************************************************************/
166
167/* Set functions for set and span types */
168
169extern bool inter_span_span(const Span *s1, const Span *s2, Span *result);
170extern bool intersection_set_value(const Set *s, Datum d, meosType basetype, Datum *result);
171extern bool intersection_span_value(const Span *s, Datum d, meosType basetype, Datum *result);
172extern bool intersection_spanset_value(const SpanSet *ss, Datum d, meosType basetype, Datum *result);
173extern bool intersection_value_value(Datum d1, Datum d2, meosType basetype, Datum *result);
174
175extern Set *minus_set_value(const Set *s, Datum d, meosType basetype);
176extern int minus_span_span1(const Span *s1, const Span *s2, Span **result);
177extern int minus_span_value1(const Span *s, Datum d, meosType basetype, Span **result);
178extern SpanSet *minus_span_value(const Span *s, Datum d, meosType basetype);
179extern SpanSet *minus_spanset_value(const SpanSet *ss, Datum d, meosType basetype);
180extern bool minus_value_set(Datum d, meosType basetype, const Set *s, Datum *result);
181extern bool minus_value_span(Datum d, meosType basetype, const Span *s, Datum *result);
182extern bool minus_value_spanset(Datum d, meosType basetype, const SpanSet *ss, Datum *result);
183extern bool minus_value_value(Datum d1, Datum d2, meosType basetype, Datum *result);
184
185extern Set *union_set_value(const Set *s, const Datum d, meosType basetype);
186extern SpanSet *union_span_value(const Span *s, Datum v, meosType basetype);
187extern SpanSet *union_spanset_value(const SpanSet *ss, Datum d, meosType basetype);
188extern Set *union_value_value(Datum d1, Datum d2, meosType basetype);
189
190/*****************************************************************************/
191
192/* Distance functions for set and span types */
193
194extern double distance_value_value(Datum l, Datum r, meosType typel, meosType typer);
195extern double distance_span_value(const Span *s, Datum d, meosType basetype);
196extern double distance_spanset_value(const SpanSet *ss, Datum d, meosType basetype);
197extern double distance_value_set(Datum d, meosType basetype, const Set *s);
198extern double distance_set_value(const Set *s, Datum d, meosType basetype);
199extern double distance_set_set(const Set *s1, const Set *s2);
200
201/*****************************************************************************/
202
203/* Hash functions for set and span types */
204
205extern uint32 datum_hash(Datum d, meosType basetype);
206extern uint64 datum_hash_extended(Datum d, meosType basetype, uint64 seed);
207
208/******************************************************************************
209 * Functions for box types
210 *****************************************************************************/
211
212/* Input/output functions for box types */
213
214
215/*****************************************************************************/
216
217/* Constructor functions for box types */
218
219
220/*****************************************************************************/
221
222/* Cast functions for box types */
223
224extern void number_set_tbox(Datum d, meosType basetype, TBox *box);
225extern void int_set_tbox(int i, TBox *box);
226extern void float_set_tbox(double d, TBox *box);
227extern void timestamp_set_tbox(TimestampTz t, TBox *box);
228extern void numset_set_tbox(const Set *s, TBox *box);
229extern void tstzset_set_tbox(const Set *ts, TBox *box);
230extern void numspan_set_tbox(const Span *span, TBox *box);
231extern void numspanset_set_tbox(const SpanSet *ss, TBox *box);
232extern void period_set_tbox(const Span *p, TBox *box);
233extern void periodset_set_tbox(const SpanSet *ps, TBox *box);
235extern TBox *number_period_to_tbox(Datum d, meosType basetype, const Span *p);
236
237extern bool geo_set_stbox(const GSERIALIZED *gs, STBox *box);
238extern void geoarr_set_stbox(const Datum *values, int count, STBox *box);
239extern void timestamp_set_stbox(TimestampTz t, STBox *box);
240extern void tstzset_set_stbox(const Set *ts, STBox *box);
241extern void period_set_stbox(const Span *p, STBox *box);
242extern void periodset_set_stbox(const SpanSet *ps, STBox *box);
243
244extern void number_set_tbox(Datum value, meosType basetype, TBox *box);
245extern void stbox_set_gbox(const STBox *box, GBOX *gbox);
246extern void stbox_set_box3d(const STBox *box, BOX3D *box3d);
247
248/*****************************************************************************/
249
250/* Accessor functions for box types */
251
252
253/*****************************************************************************/
254
255/* Transformation functions for box types */
256
257
258
259/*****************************************************************************/
260
261/* Topological functions for box types */
262
263
264
265/*****************************************************************************/
266
267/* Position functions for box types */
268
269
270/*****************************************************************************/
271
272/* Set functions for box types */
273
274
275/*****************************************************************************/
276
277/* Comparison functions for box types */
278
279
280
281/*****************************************************************************
282 * Functions for temporal types
283 *****************************************************************************/
284
285/* Input/output functions for temporal types */
286
287extern char **geoarr_as_text(const Datum *geoarr, int count, int maxdd, bool extended);
288extern char *tboolinst_as_mfjson(const TInstant *inst, bool with_bbox);
289extern TInstant *tboolinst_from_mfjson(json_object *mfjson);
290extern TInstant *tboolinst_in(const char *str);
291extern char *tboolseq_as_mfjson(const TSequence *seq, bool with_bbox);
292extern TSequence *tboolseq_from_mfjson(json_object *mfjson);
293extern TSequence *tboolseq_in(const char *str, interpType interp);
294extern char *tboolseqset_as_mfjson(const TSequenceSet *ss, bool with_bbox);
295extern TSequenceSet *tboolseqset_from_mfjson(json_object *mfjson);
296extern TSequenceSet *tboolseqset_in(const char *str);
297extern Temporal *temporal_in(const char *str, meosType temptype);
298extern char *temporal_out(const Temporal *temp, int maxdd);
299extern char **temporalarr_out(const Temporal **temparr, int count, int maxdd);
300extern char *tfloatinst_as_mfjson(const TInstant *inst, bool with_bbox, int precision);
301extern TInstant *tfloatinst_from_mfjson(json_object *mfjson);
302extern TInstant *tfloatinst_in(const char *str);
303extern char *tfloatseq_as_mfjson(const TSequence *seq, bool with_bbox, int precision);
304extern TSequence *tfloatseq_from_mfjson(json_object *mfjson, interpType interp);
305extern TSequence *tfloatseq_in(const char *str, interpType interp);
306extern char *tfloatseqset_as_mfjson(const TSequenceSet *ss, bool with_bbox, int precision);
307extern TSequenceSet *tfloatseqset_from_mfjson(json_object *mfjson, interpType interp);
308extern TSequenceSet *tfloatseqset_in(const char *str);
309extern char *tgeogpointinst_as_mfjson(const TInstant *inst, bool with_bbox, int precision, char *srs);
310extern TInstant *tgeogpointinst_from_mfjson(json_object *mfjson, int srid);
311extern TInstant *tgeogpointinst_in(const char *str);
312extern char *tgeogpointseq_as_mfjson(const TSequence *seq, bool with_bbox, int precision, char *srs);
313extern TSequence *tgeogpointseq_from_mfjson(json_object *mfjson, int srid, interpType interp);
314extern TSequence *tgeogpointseq_in(const char *str, interpType interp);
315extern char *tgeogpointseqset_as_mfjson(const TSequenceSet *ss, bool with_bbox, int precision, char *srs);
316extern TSequenceSet *tgeogpointseqset_from_mfjson(json_object *mfjson, int srid, interpType interp);
317extern TSequenceSet *tgeogpointseqset_in(const char *str);
318extern char *tgeompointinst_as_mfjson(const TInstant *inst, bool with_bbox, int precision, char *srs);
319extern TInstant *tgeompointinst_from_mfjson(json_object *mfjson, int srid);
320extern TInstant *tgeompointinst_in(const char *str);
321extern char *tgeompointseq_as_mfjson(const TSequence *seq, bool with_bbox, int precision, char *srs);
322extern TSequence *tgeompointseq_from_mfjson(json_object *mfjson, int srid, interpType interp);
323extern TSequence *tgeompointseq_in(const char *str, interpType interp);
324extern char *tgeompointseqset_as_mfjson(const TSequenceSet *ss, bool with_bbox, int precision, char *srs);
325extern TSequenceSet *tgeompointseqset_from_mfjson(json_object *mfjson, int srid, interpType interp);
326extern TSequenceSet *tgeompointseqset_in(const char *str);
327extern char *tinstant_as_mfjson(const TInstant *inst, int precision, bool with_bbox, char *srs);
328extern TInstant *tinstant_from_mfjson(json_object *mfjson, bool isgeo, int srid, meosType temptype);
329extern TInstant *tinstant_in(const char *str, meosType temptype);
330extern char *tinstant_out(const TInstant *inst, int maxdd);
331extern TSequence *tdiscseq_in(const char *str, meosType temptype);
332extern char *tintinst_as_mfjson(const TInstant *inst, bool with_bbox);
333extern TInstant *tintinst_from_mfjson(json_object *mfjson);
334extern TInstant *tintinst_in(const char *str);
335extern char *tintseq_as_mfjson(const TSequence *seq, bool with_bbox);
336extern TSequence *tintseq_from_mfjson(json_object *mfjson);
337extern TSequence *tintseq_in(const char *str, interpType interp);
338extern char *tintseqset_as_mfjson(const TSequenceSet *ss, bool with_bbox);
339extern TSequenceSet *tintseqset_from_mfjson(json_object *mfjson);
340extern TSequenceSet *tintseqset_in(const char *str);
341extern char **tpointarr_as_text(const Temporal **temparr, int count, int maxdd, bool extended);
342extern char *tsequence_as_mfjson(const TSequence *seq, int precision, bool with_bbox, char *srs);
343extern TSequence *tsequence_from_mfjson(json_object *mfjson, bool isgeo, int srid, meosType temptype, interpType interp);
344extern TSequence *tsequence_in(const char *str, meosType temptype, interpType interp);
345extern char *tsequence_out(const TSequence *seq, int maxdd);
346extern char *tsequenceset_as_mfjson(const TSequenceSet *ss, int precision, bool with_bbox, char *srs);
347extern TSequenceSet *tsequenceset_from_mfjson(json_object *mfjson, bool isgeo, int srid, meosType temptype, interpType interp);
348extern TSequenceSet *tsequenceset_in(const char *str, meosType temptype, interpType interp);
349extern char *tsequenceset_out(const TSequenceSet *ss, int maxdd);
350extern char *ttextinst_as_mfjson(const TInstant *inst, bool with_bbox);
351extern TInstant *ttextinst_from_mfjson(json_object *mfjson);
352extern TInstant *ttextinst_in(const char *str);
353extern char *ttextseq_as_mfjson(const TSequence *seq, bool with_bbox);
354extern TSequence *ttextseq_from_mfjson(json_object *mfjson);
355extern TSequence *ttextseq_in(const char *str, interpType interp);
356extern char *ttextseqset_as_mfjson(const TSequenceSet *ss, bool with_bbox);
357extern TSequenceSet *ttextseqset_from_mfjson(json_object *mfjson);
358extern TSequenceSet *ttextseqset_in(const char *str);
359
360/*****************************************************************************/
361
362/* Constructor functions for temporal types */
363
364extern Temporal *temporal_from_base(Datum value, meosType temptype, const Temporal *temp, interpType interp);
365extern TInstant *tinstant_copy(const TInstant *inst);
366extern TInstant *tinstant_make(Datum value, meosType temptype, TimestampTz t);
367extern TSequence *tdiscseq_from_base_time(Datum value, meosType temptype, const Set *ss);
368extern TSequence *tsequence_compact(const TSequence *seq);
369extern TSequence *tsequence_copy(const TSequence *seq);
370extern TSequence *tsequence_from_base(Datum value, meosType temptype, const TSequence *seq, interpType interp);
371extern TSequence *tsequence_from_base_time(Datum value, meosType temptype, const Span *p, interpType interp);
374extern TSequenceSet *tsequenceset_from_base(Datum value, meosType temptype, const TSequenceSet *ss, interpType interp);
375extern TSequenceSet *tsequenceset_from_base_time(Datum value, meosType temptype, const SpanSet *ps, interpType interp);
376
377/*****************************************************************************/
378
379/* Cast functions for temporal types */
380
381extern void temporal_set_period(const Temporal *temp, Span *p);
382extern TInstant *tfloatinst_to_tintinst(const TInstant *inst);
383extern TSequence *tfloatseq_to_tintseq(const TSequence *seq);
385extern void tinstant_set_period(const TInstant *inst, Span *p);
386extern TInstant *tintinst_to_tfloatinst(const TInstant *inst);
387extern TSequence *tintseq_to_tfloatseq(const TSequence *seq);
389extern void tsequence_set_period(const TSequence *seq, Span *p);
390extern void tsequenceset_set_period(const TSequenceSet *ss, Span *p);
391
392/*****************************************************************************/
393
394/* Accessor functions for temporal types */
395
396extern Datum temporal_end_value(const Temporal *temp);
397extern Datum temporal_max_value(const Temporal *temp);
398extern Datum temporal_min_value(const Temporal *temp);
399extern void temporal_set_bbox(const Temporal *temp, void *box);
400extern Datum temporal_start_value(const Temporal *temp);
401extern Datum *temporal_values(const Temporal *temp, int *count);
402extern SpanSet *tfloatinst_spanset(const TInstant *inst);
403extern Span *tfloatseq_span(const TSequence *seq);
404extern SpanSet *tfloatseq_spanset(const TSequence *seq);
406extern SpanSet *tfloatseqset_spanset(const TSequenceSet *ss);
407extern uint32 tinstant_hash(const TInstant *inst);
408extern const TInstant **tinstant_instants(const TInstant *inst, int *count);
409extern TSequence **tinstant_sequences(const TInstant *inst, int *count);
410extern void tinstant_set_bbox(const TInstant *inst, void *box);
411extern SpanSet *tinstant_time(const TInstant *inst);
412extern TimestampTz *tinstant_timestamps(const TInstant *inst, int *count);
413extern Datum tinstant_value(const TInstant *inst);
414extern bool tinstant_value_at_timestamp(const TInstant *inst, TimestampTz t, Datum *result);
415extern Datum tinstant_value_copy(const TInstant *inst);
416extern Datum *tinstant_values(const TInstant *inst, int *count);
417extern uint32 tdiscseq_hash(const TSequence *seq);
418extern const TInstant *tsequence_inst_n(const TSequence *seq, int index);
419extern bool tdiscseq_value_at_timestamp(const TSequence *seq, TimestampTz t, Datum *result);
420extern Interval *tsequence_duration(const TSequence *seq);
422extern uint32 tsequence_hash(const TSequence *seq);
423extern const TInstant *tsequence_inst_n(const TSequence *seq, int index);
424extern const TInstant **tsequence_instants(const TSequence *seq, int *count);
425extern const TInstant *tsequence_max_instant(const TSequence *seq);
426extern Datum tsequence_max_value(const TSequence *seq);
427extern const TInstant *tsequence_min_instant(const TSequence *seq);
428extern Datum tsequence_min_value(const TSequence *seq);
429extern size_t *tsequence_offsets_ptr(const TSequence *seq);
430extern TSequence **tsequence_segments(const TSequence *seq, int *count);
431extern const TSequence *tsequenceset_seq_n(const TSequenceSet *ss, int index);
432extern TSequence **tsequence_sequences(const TSequence *seq, int *count);
433extern void tsequence_set_bbox(const TSequence *seq, void *box);
434extern void tsequence_expand_bbox(TSequence *seq, const TInstant *inst);
435extern void tsequenceset_expand_bbox(TSequenceSet *ss, const TSequence *seq);
437extern SpanSet *tsequence_time(const TSequence *seq);
438extern TimestampTz *tsequence_timestamps(const TSequence *seq, int *count);
439extern bool tsequence_value_at_timestamp(const TSequence *seq, TimestampTz t, bool strict, Datum *result);
440extern Datum *tsequence_values(const TSequence *seq, int *count);
441extern Interval *tsequenceset_duration(const TSequenceSet *ss, bool boundspan);
443extern uint32 tsequenceset_hash(const TSequenceSet *ss);
444extern const TInstant *tsequenceset_inst_n(const TSequenceSet *ss, int n);
445extern const TInstant **tsequenceset_instants(const TSequenceSet *ss, int *count);
446extern const TInstant *tsequenceset_max_instant(const TSequenceSet *ss);
448extern const TInstant *tsequenceset_min_instant(const TSequenceSet *ss);
450extern int tsequenceset_num_instants(const TSequenceSet *ss);
451extern int tsequenceset_num_timestamps(const TSequenceSet *ss);
452extern TSequence **tsequenceset_segments(const TSequenceSet *ss, int *count);
453extern TSequence **tsequenceset_sequences(const TSequenceSet *ss, int *count);
454extern const TSequence **tsequenceset_sequences_p(const TSequenceSet *ss);
455extern void tsequenceset_set_bbox(const TSequenceSet *ss, void *box);
457extern SpanSet *tsequenceset_time(const TSequenceSet *ss);
459extern bool tsequenceset_timestamp_n(const TSequenceSet *ss, int n, TimestampTz *result);
460extern TimestampTz *tsequenceset_timestamps(const TSequenceSet *ss, int *count);
461extern bool tsequenceset_value_at_timestamp(const TSequenceSet *ss, TimestampTz t, bool strict, Datum *result);
462extern Datum *tsequenceset_values(const TSequenceSet *ss, int *count);
463
464// RENAME
465// extern const TInstant *tsequenceset_inst_n(const TSequenceSet *ss, int n);
466// extern const TInstant *tsequenceset_start_instant(const TSequenceSet *ss);
467// extern const TInstant *tsequenceset_end_instant(const TSequenceSet *ss);
468
469/*****************************************************************************/
470
471/* Transformation functions for temporal types */
472
473extern Temporal *tinstant_merge(const TInstant *inst1, const TInstant *inst2);
474extern Temporal *tinstant_merge_array(const TInstant **instants, int count);
475extern TInstant *tinstant_shift(const TInstant *inst, const Interval *interval);
476extern TSequence *tinstant_to_tsequence(const TInstant *inst, interpType interp);
477extern TSequenceSet *tinstant_to_tsequenceset(const TInstant *inst, interpType interp);
478extern Temporal *tdiscseq_merge(const TSequence *is1, const TSequence *is2);
479extern Temporal *tdiscseq_merge_array(const TSequence **sequences, int count);
482extern Temporal *tsequence_append_tinstant(TSequence *seq, const TInstant *inst, bool expand);
483extern Temporal *tsequence_append_tsequence(TSequence *seq1, const TSequence *seq2, bool expand);
484extern Temporal *tsequence_merge(const TSequence *seq1, const TSequence *seq2);
485extern Temporal *tsequence_merge_array(const TSequence **sequences, int count);
486extern TSequence *tsequence_shift_tscale(const TSequence *seq, const Interval *start, const Interval *duration);
487extern TInstant *tsequence_to_tinstant(const TSequence *seq);
488extern TSequence *tsequence_to_tdiscseq(const TSequence *seq);
489extern TSequence *tsequence_to_tcontseq(const TSequence *seq);
491extern TSequenceSet *tsequenceset_append_tinstant(TSequenceSet *ss, const TInstant *inst, bool expand);
492extern TSequenceSet *tsequenceset_append_tsequence(TSequenceSet *ss, const TSequence *seq, bool expand);
493extern TSequenceSet *tsequenceset_merge(const TSequenceSet *ss1, const TSequenceSet *ss2);
494extern TSequenceSet *tsequenceset_merge_array(const TSequenceSet **seqsets, int count);
495extern TSequenceSet *tsequenceset_shift_tscale(const TSequenceSet *ss, const Interval *start, const Interval *duration);
499extern TSequenceSet *tstepseq_to_linear(const TSequence *seq);
500extern int tstepseq_to_linear1(const TSequence *seq, TSequence **result);
502
503/*****************************************************************************/
504
505/* Restriction functions for temporal types */
506
507extern Temporal *temporal_restrict_value(const Temporal *temp, Datum value, bool atfunc);
508extern Temporal *temporal_restrict_values(const Temporal *temp, const Set *set, bool atfunc);
509extern Temporal *tnumber_restrict_span(const Temporal *temp, const Span *span, bool atfunc);
510extern Temporal *tnumber_restrict_spanset(const Temporal *temp, const SpanSet *ss, bool atfunc);
511extern Temporal *temporal_restrict_timestamp(const Temporal *temp, TimestampTz t, bool atfunc);
512extern Temporal *temporal_restrict_timestampset(const Temporal *temp, const Set *ss, bool atfunc);
513extern Temporal *temporal_restrict_period(const Temporal *temp, const Span *ps, bool atfunc);
514extern Temporal *temporal_restrict_periodset(const Temporal *temp, const SpanSet *ps, bool atfunc);
515extern bool temporal_value_at_timestamp(const Temporal *temp, TimestampTz t, bool strict, Datum *result);
516extern TInstant *tinstant_restrict_value(const TInstant *inst, Datum value, bool atfunc);
517extern TInstant *tinstant_restrict_values(const TInstant *inst, const Set *set, bool atfunc);
518extern TInstant *tnumberinst_restrict_span(const TInstant *inst, const Span *span, bool atfunc);
519extern TInstant *tnumberinst_restrict_spanset(const TInstant *inst, const SpanSet *ss, bool atfunc);
520extern TInstant *tinstant_restrict_timestamp(const TInstant *inst, TimestampTz t, bool atfunc);
521extern TInstant *tinstant_restrict_timestampset(const TInstant *inst, const Set *ss, bool atfunc);
522extern TInstant *tinstant_restrict_period(const TInstant *inst, const Span *period, bool atfunc);
523extern TInstant *tinstant_restrict_periodset(const TInstant *inst, const SpanSet *ps, bool atfunc);
524extern TSequence *tdiscseq_restrict_value(const TSequence *seq, Datum value, bool atfunc);
525extern TSequence *tdiscseq_restrict_values(const TSequence *seq, const Set *set, bool atfunc);
526extern TSequence *tnumberdiscseq_restrict_span(const TSequence *seq, const Span *span, bool atfunc);
527extern TSequence *tnumberdiscseq_restrict_spanset(const TSequence *seq, const SpanSet *ss, bool atfunc);
528extern TSequence *tdiscseq_restrict_minmax(const TSequence *seq, bool min, bool atfunc);
530extern bool tdiscseq_value_at_timestamp(const TSequence *seq, TimestampTz t, Datum *result);
531extern TSequenceSet *tcontseq_restrict_value(const TSequence *seq, Datum value, bool atfunc);
532extern TSequenceSet *tcontseq_restrict_values(const TSequence *seq, const Set *set, bool atfunc);
533extern TSequenceSet *tnumbercontseq_restrict_span(const TSequence *seq, const Span *span, bool atfunc);
534extern TSequenceSet *tnumbercontseq_restrict_spanset(const TSequence *seq, const SpanSet *ss, bool atfunc);
535extern TSequenceSet *tcontseq_restrict_minmax(const TSequence *seq, bool min, bool atfunc);
536
539extern TSequence *tdiscseq_restrict_timestampset(const TSequence *seq, const Set *ts, bool atfunc);
540extern TSequence *tdiscseq_at_period(const TSequence *seq, const Span *period);
541extern TSequence *tdiscseq_minus_period(const TSequence *seq, const Span *period);
542extern TSequence *tdiscseq_restrict_periodset(const TSequence *seq, const SpanSet *ps, bool atfunc);
543
546extern TSequence *tcontseq_at_timestampset(const TSequence *seq, const Set *ss);
547extern TSequenceSet *tcontseq_minus_timestampset(const TSequence *seq, const Set *ss);
548extern TSequence *tcontseq_at_period(const TSequence *seq, const Span *p);
549extern TSequenceSet *tcontseq_minus_period(const TSequence *seq, const Span *p);
550extern TSequenceSet *tcontseq_restrict_periodset(const TSequence *seq, const SpanSet *ps, bool atfunc);
551extern TSequenceSet *tsequenceset_restrict_value(const TSequenceSet *ss, Datum value, bool atfunc);
552extern TSequenceSet *tsequenceset_restrict_values(const TSequenceSet *ss, const Set *set, bool atfunc);
553extern TSequenceSet *tnumberseqset_restrict_span(const TSequenceSet *ss, const Span *span, bool atfunc);
554extern TSequenceSet *tnumberseqset_restrict_spanset(const TSequenceSet *ss, const SpanSet *spanset, bool atfunc);
555extern TSequenceSet *tsequenceset_restrict_minmax(const TSequenceSet *ss, bool min, bool atfunc);
556extern Temporal *tsequenceset_restrict_timestamp(const TSequenceSet *ss, TimestampTz t, bool atfunc);
557extern Temporal *tsequenceset_restrict_timestampset(const TSequenceSet *ss1, const Set *ss2, bool atfunc);
558extern TSequenceSet *tsequenceset_restrict_period(const TSequenceSet *ss, const Span *p, bool atfunc);
559extern TSequenceSet *tsequenceset_restrict_periodset(const TSequenceSet *ss, const SpanSet *ps, bool atfunc);
560extern TInstant *tpointinst_restrict_geometry(const TInstant *inst, const GSERIALIZED *gs, bool atfunc);
561extern TSequence *tpointdiscseq_restrict_geometry(const TSequence *seq, const GSERIALIZED *gs, bool atfunc);
562extern TSequenceSet *tpointseq_restrict_geometry(const TSequence *seq, const GSERIALIZED *gs, bool atfunc);
563extern TSequenceSet *tpointseqset_restrict_geometry(const TSequenceSet *ss, const GSERIALIZED *gs, const STBox *box, bool atfunc);
564extern Temporal *tpoint_restrict_geometry(const Temporal *temp, const GSERIALIZED *gs, bool atfunc);
565extern Temporal *tpoint_restrict_stbox(const Temporal *temp, const STBox *box, bool atfunc);
566
567/*****************************************************************************/
568
569/* Boolean functions for temporal types */
570
571
572/*****************************************************************************/
573
574/* Mathematical functions for temporal types */
575
578
579/*****************************************************************************/
580
581/* Text functions for temporal types */
582
583/*****************************************************************************
584 * Bounding box functions for temporal types
585 *****************************************************************************/
586
587/* Topological functions for temporal types */
588
589extern bool contains_number_tnumber(Datum number, meosType basetype, const Temporal *tnumber);
590extern bool contains_tnumber_number(const Temporal *tnumber, Datum number, meosType basetype);
591extern bool contained_number_tnumber(Datum number, meosType basetype, const Temporal *tnumber);
592extern bool contained_tnumber_number(const Temporal *tnumber, Datum number, meosType basetype);
593extern bool overlaps_number_tnumber(Datum number, meosType basetype, const Temporal *tnumber);
594extern bool overlaps_tnumber_number(const Temporal *tnumber, Datum number, meosType basetype);
595extern bool same_number_tnumber(Datum number, meosType basetype, const Temporal *tnumber);
596extern bool same_tnumber_number(const Temporal *tnumber, Datum number, meosType basetype);
597extern bool adjacent_number_tnumber(Datum number, meosType basetype, const Temporal *tnumber);
598extern bool adjacent_tnumber_number(const Temporal *tnumber, Datum number, meosType basetype);
599
600/*****************************************************************************/
601
602/* Position functions for temporal types */
603
604extern bool left_number_tnumber(Datum number, meosType basetype, const Temporal *tnumber);
605extern bool overleft_number_tnumber(Datum number, meosType basetype, const Temporal *tnumber);
606extern bool right_number_tnumber(Datum number, meosType basetype, const Temporal *tnumber);
607extern bool overright_number_tnumber(Datum number, meosType basetype, const Temporal *tnumber);
608extern bool left_tnumber_number(const Temporal *tnumber, Datum number, meosType basetype);
609extern bool overleft_tnumber_number(const Temporal *tnumber, Datum number, meosType basetype);
610extern bool right_tnumber_number(const Temporal *tnumber, Datum number, meosType basetype);
611extern bool overright_tnumber_number(const Temporal *tnumber, Datum number, meosType basetype);
612
613/*****************************************************************************/
614
615/* Distance functions for temporal types */
616
617extern Temporal *distance_tnumber_number(const Temporal *temp, Datum value, meosType valuetype, meosType restype);
618extern double nad_tnumber_number(const Temporal *temp, Datum value, meosType basetype);
619
620/*****************************************************************************/
621
622/* Ever/always functions for temporal types */
623
624extern bool temporal_always_eq(const Temporal *temp, Datum value);
625extern bool temporal_always_le(const Temporal *temp, Datum value);
626extern bool temporal_always_lt(const Temporal *temp, Datum value);
627extern bool temporal_ever_eq(const Temporal *temp, Datum value);
628extern bool temporal_ever_le(const Temporal *temp, Datum value);
629extern bool temporal_ever_lt(const Temporal *temp, Datum value);
630extern bool tinstant_always_eq(const TInstant *inst, Datum value);
631extern bool tinstant_always_le(const TInstant *inst, Datum value);
632extern bool tinstant_always_lt(const TInstant *inst, Datum value);
633extern bool tinstant_ever_eq(const TInstant *inst, Datum value);
634extern bool tinstant_ever_le(const TInstant *inst, Datum value);
635extern bool tinstant_ever_lt(const TInstant *inst, Datum value);
636extern bool tpoint_always_eq(const Temporal *temp, Datum value);
637extern bool tpoint_ever_eq(const Temporal *temp, Datum value);
638extern bool tpointinst_always_eq(const TInstant *inst, Datum value);
639extern bool tpointinst_ever_eq(const TInstant *inst, Datum value);
640extern bool tpointseq_always_eq(const TSequence *seq, Datum value);
641extern bool tpointseq_ever_eq(const TSequence *seq, Datum value);
642extern bool tpointseqset_always_eq(const TSequenceSet *ss, Datum value);
643extern bool tpointseqset_ever_eq(const TSequenceSet *ss, Datum value);
644extern bool tsequence_always_eq(const TSequence *seq, Datum value);
645extern bool tsequence_always_le(const TSequence *seq, Datum value);
646extern bool tsequence_always_lt(const TSequence *seq, Datum value);
647extern bool tsequence_ever_eq(const TSequence *seq, Datum value);
648extern bool tsequence_ever_le(const TSequence *seq, Datum value);
649extern bool tsequence_ever_lt(const TSequence *seq, Datum value);
650extern bool tsequenceset_always_eq(const TSequenceSet *ss, Datum value);
651extern bool tsequenceset_always_le(const TSequenceSet *ss, Datum value);
652extern bool tsequenceset_always_lt(const TSequenceSet *ss, Datum value);
653extern bool tsequenceset_ever_eq(const TSequenceSet *ss, Datum value);
654extern bool tsequenceset_ever_le(const TSequenceSet *ss, Datum value);
655extern bool tsequenceset_ever_lt(const TSequenceSet *ss, Datum value);
656
657/*****************************************************************************/
658
659/* Comparison functions for temporal types */
660
661extern Temporal *teq_base_temporal(Datum base, meosType basetype, const Temporal *temp);
662extern Temporal *teq_temporal_base(const Temporal *temp, Datum base, meosType basetype);
663extern Temporal *tne_base_temporal(Datum base, meosType basetype, const Temporal *temp);
664extern Temporal *tne_temporal_base(const Temporal *temp, Datum base, meosType basetype);
665extern Temporal *tlt_base_temporal(Datum base, meosType basetype, const Temporal *temp);
666extern Temporal *tlt_temporal_base(const Temporal *temp, Datum base, meosType basetype);
667extern Temporal *tle_base_temporal(Datum base, meosType basetype, const Temporal *temp);
668extern Temporal *tle_temporal_base(const Temporal *temp, Datum base, meosType basetype);
669extern Temporal *tgt_base_temporal(Datum base, meosType basetype, const Temporal *temp);
670extern Temporal *tgt_temporal_base(const Temporal *temp, Datum base, meosType basetype);
671extern Temporal *tge_base_temporal(Datum base, meosType basetype, const Temporal *temp);
672extern Temporal *tge_temporal_base(const Temporal *temp, Datum base, meosType basetype);
673
674extern int tinstant_cmp(const TInstant *inst1, const TInstant *inst2);
675extern bool tinstant_eq(const TInstant *inst1, const TInstant *inst2);
676extern int tdiscseq_cmp(const TSequence *is1, const TSequence *is2);
677extern bool tdiscseq_eq(const TSequence *is1, const TSequence *is2);
678extern int tsequence_cmp(const TSequence *seq1, const TSequence *seq2);
679extern bool tsequence_eq(const TSequence *seq1, const TSequence *seq2);
680extern int tsequenceset_cmp(const TSequenceSet *ss1, const TSequenceSet *ss2);
681extern bool tsequenceset_eq(const TSequenceSet *ss1, const TSequenceSet *ss2);
682
683/*****************************************************************************
684 * Spatial functions for temporal point types
685 *****************************************************************************/
686
687/* Spatial accessor functions for temporal point types */
688
689extern int tpointinst_srid(const TInstant *inst);
690extern bool tpointdiscseq_is_simple(const TSequence *seq);
693extern TSequenceSet *tpointseq_azimuth(const TSequence *seq);
694extern TSequence *tpointseq_cumulative_length(const TSequence *seq, double prevlength);
695extern bool tpointseq_is_simple(const TSequence *seq);
696extern double tpointseq_length(const TSequence *seq);
697extern TSequence *tpointseq_speed(const TSequence *seq);
698extern int tpointseq_srid(const TSequence *seq);
699extern STBox *tpointseq_stboxes(const TSequence *seq, int *count);
702extern bool tpointseqset_is_simple(const TSequenceSet *ss);
703extern double tpointseqset_length(const TSequenceSet *ss);
705extern int tpointseqset_srid(const TSequenceSet *ss);
706extern STBox *tpointseqset_stboxes(const TSequenceSet *ss, int *count);
708
709/*****************************************************************************/
710
711/* Spatial transformation functions for temporal point types */
712
713extern TInstant *tgeompointinst_tgeogpointinst(const TInstant *inst, bool oper);
714extern TSequence *tgeompointseq_tgeogpointseq(const TSequence *seq, bool oper);
716extern TInstant *tpointinst_set_srid(const TInstant *inst, int32 srid);
717extern TSequence **tpointseq_make_simple(const TSequence *seq, int *count);
718extern TSequence *tpointseq_set_srid(const TSequence *seq, int32 srid);
719extern TSequence **tpointseqset_make_simple(const TSequenceSet *ss, int *count);
721
722/*****************************************************************************/
723
724/* Spatial relationship functions for temporal point types */
725
726
727/*****************************************************************************/
728
729/* Modification functions for temporal types */
730
731extern Temporal *tcontseq_insert(const TSequence *seq1, const TSequence *seq2);
732// extern Temporal *tcontseq_update(const TSequence *seq1, const TSequence *seq2);
733extern TSequenceSet *tsequenceset_insert(const TSequenceSet *ss1, const TSequenceSet *ss2);
734// extern TSequenceSet *tsequenceset_update(const TSequenceSet *ss1, const TSequenceSet *ss2);
735
737extern TSequence *tcontseq_delete_timestampset(const TSequence *seq, const Set *ts);
738extern TSequence *tcontseq_delete_period(const TSequence *seq, const Span *p);
739extern TSequence *tcontseq_delete_periodset(const TSequence *seq, const SpanSet *ps);
742extern TSequenceSet *tsequenceset_delete_period(const TSequenceSet *ss, const Span *p);
744
745/*****************************************************************************/
746
747/* Local aggregate functions for temporal types */
748
749extern double tnumberseq_integral(const TSequence *seq);
750extern double tnumbercontseq_twavg(const TSequence *seq);
751extern double tnumberdiscseq_twavg(const TSequence *seq);
752extern double tnumberseq_twavg(const TSequence *seq);
753extern double tnumberseqset_integral(const TSequenceSet *ss);
754extern double tnumberseqset_twavg(const TSequenceSet *ss);
755extern GSERIALIZED *tpointseq_twcentroid(const TSequence *seq);
757
758/*****************************************************************************/
759
760/* Multidimensional tiling functions for temporal types */
761
762extern Temporal **temporal_time_split1(const Temporal *temp, TimestampTz start,
763 TimestampTz end, int64 tunits, TimestampTz torigin, int count,
764 TimestampTz **buckets, int *newcount);
765extern Temporal **tnumber_value_split1(const Temporal *temp, Datum start_bucket,
766 Datum size, int count, Datum **buckets, int *newcount);
767
768/*****************************************************************************/
769
770/* Similarity functions for temporal types */
771
772
773/*****************************************************************************/
774
775#endif
TBox * number_timestamp_to_tbox(Datum d, meosType basetype, TimestampTz t)
Return a temporal box from an integer and a timestamp.
Definition: tbox.c:475
TBox * number_period_to_tbox(Datum d, meosType basetype, const Span *p)
Return a temporal box from an integer and a period.
Definition: tbox.c:525
void int_set_tbox(int i, TBox *box)
Set a temporal box from an integer.
Definition: tbox.c:218
void period_set_tbox(const Span *p, TBox *box)
Set a temporal box from a period.
Definition: tbox.c:390
bool geo_set_stbox(const GSERIALIZED *gs, STBox *box)
Set a spatiotemporal box from a geometry/geography.
Definition: stbox.c:420
void number_set_tbox(Datum d, meosType basetype, TBox *box)
Set a temporal box from a number.
Definition: tbox.c:200
void numset_set_tbox(const Set *s, TBox *box)
Set a temporal box from a number set.
Definition: tbox.c:311
void timestamp_set_tbox(TimestampTz t, TBox *box)
Set a temporal box from a timestamp.
Definition: tbox.c:279
void numspan_set_tbox(const Span *span, TBox *box)
Set a temporal box from a number span.
Definition: tbox.c:359
void tstzset_set_stbox(const Set *ts, STBox *box)
Set a spatiotemporal box from a timestamp set.
Definition: stbox.c:559
void stbox_set_box3d(const STBox *box, BOX3D *box3d)
Set a PostGIS BOX3D from a spatiotemporal box.
Definition: stbox.c:348
void numspanset_set_tbox(const SpanSet *ss, TBox *box)
Set a temporal box from a span set.
Definition: tbox.c:420
void periodset_set_tbox(const SpanSet *ps, TBox *box)
Set a temporal box from a period set.
Definition: tbox.c:446
void timestamp_set_stbox(TimestampTz t, STBox *box)
Set a spatiotemporal box from a timestamp.
Definition: stbox.c:526
void float_set_tbox(double d, TBox *box)
Set a temporal box from a float.
Definition: tbox.c:248
void tstzset_set_tbox(const Set *ts, TBox *box)
Set a temporal box from a timestamp set.
Definition: tbox.c:344
void period_set_stbox(const Span *p, STBox *box)
Set a spatiotemporal box from a period.
Definition: stbox.c:589
void stbox_set_gbox(const STBox *box, GBOX *gbox)
Set a PostGIS GBOX from a spatiotemporal box.
Definition: stbox.c:321
void periodset_set_stbox(const SpanSet *ps, STBox *box)
Set a spatiotemporal box from a period set.
Definition: stbox.c:619
Datum set_val_n(const Set *ts, int index)
Return the n-th value of a set.
Definition: set.c:361
const Span * spanset_sp_n(const SpanSet *ss, int index)
Return the n-th span of a span set.
Definition: spanset.c:241
uint64 datum_hash_extended(Datum d, meosType basetype, uint64 seed)
Return the 64-bit hash of a value using a seed.
Definition: type_util.c:513
uint32 datum_hash(Datum d, meosType basetype)
Return the 32-bit hash of a value.
Definition: type_util.c:483
Set * set_agg_transfn(Set *s, Datum d, meosType basetype)
Transition function for set aggregate of values.
Definition: set_aggfuncs.c:140
Set * value_to_set(Datum d, meosType basetype)
Cast a value as a set.
Definition: set.c:606
Span * value_to_span(Datum d, meosType basetype)
Cast a value as a span.
Definition: span.c:560
void value_set_span(Datum d, meosType basetype, Span *s)
Cast a value as a span.
Definition: span.c:548
SpanSet * value_to_spanset(Datum d, meosType basetype)
Cast an element as a span set.
Definition: spanset.c:354
void span_set(Datum lower, Datum upper, bool lower_inc, bool upper_inc, meosType basetype, Span *s)
Set a span from the bounds.
Definition: span.c:474
Set * set_make(const Datum *values, int count, meosType basetype, bool ordered)
Construct a set from an array of values.
Definition: set.c:557
Span * span_make(Datum lower, Datum upper, bool lower_inc, bool upper_inc, meosType basetype)
Construct a span from the bounds.
Definition: span.c:396
Set * set_make_free(Datum *values, int count, meosType basetype, bool ordered)
Construct a set from the array of values and free the array after the creation.
Definition: set.c:572
double distance_spanset_value(const SpanSet *ss, Datum d, meosType basetype)
Return the distance between a timestamp and a span set.
Definition: spanset_ops.c:1760
double distance_value_value(Datum l, Datum r, meosType typel, meosType typer)
Return the distance between the values.
Definition: span_ops.c:1386
double distance_span_value(const Span *s, Datum d, meosType basetype)
Return the distance between a span and a value.
Definition: span_ops.c:1415
double distance_set_value(const Set *s, Datum d, meosType basetype)
Return the distance between a set and a value.
Definition: set_ops.c:1406
SpanSet * spanset_in(const char *str, meosType spantype)
Return a span set from its Well-Known Text (WKT) representation.
Definition: spanset.c:120
Set * set_in(const char *str, meosType basetype)
Return a set from its Well-Known Text (WKT) representation.
Definition: set.c:145
Span * span_in(const char *str, meosType spantype)
Return a span from its Well-Known Text (WKT) representation.
Definition: span.c:260
bool overright_span_value(const Span *s, Datum d, meosType basetype)
Return true if a span does not extend to the left of a value.
Definition: span_ops.c:812
bool right_spanset_value(const SpanSet *ss, Datum d, meosType basetype)
Return true if a span set is strictly to the right of a value.
Definition: spanset_ops.c:747
bool right_span_value(const Span *s, Datum d, meosType basetype)
Return true if a span is strictly to the right of a value.
Definition: span_ops.c:550
bool left_value_spanset(Datum d, meosType basetype, const SpanSet *ss)
Return true if a value is strictly to the left of a span set.
Definition: spanset_ops.c:525
bool overright_set_value(const Set *s, Datum d, meosType basetype)
Return true if a set does not extend to the left of a value.
Definition: set_ops.c:916
bool overright_value_spanset(Datum d, meosType basetype, const SpanSet *ss)
Return true if a value does not extend to the left of a span set.
Definition: spanset_ops.c:985
bool overleft_spanset_value(const SpanSet *ss, Datum d, meosType basetype)
Return true if a span set does not extend to the right of a value.
Definition: spanset_ops.c:829
bool overleft_value_set(Datum d, meosType basetype, const Set *s)
Return true if a value does not extend to the right of a set.
Definition: set_ops.c:704
bool left_value_span(Datum d, meosType basetype, const Span *s)
Return true if a value is strictly to the left of a span.
Definition: span_ops.c:362
bool overright_spanset_value(const SpanSet *ss, Datum d, meosType basetype)
Return true if a span set does not extend to the left of a value.
Definition: spanset_ops.c:1054
bool overleft_span_value(const Span *s, Datum d, meosType basetype)
Return true if a span does not extend to the right of a value.
Definition: span_ops.c:678
bool right_value_spanset(Datum d, meosType basetype, const SpanSet *ss)
Return true if a value is strictly to the right of a span set.
Definition: spanset_ops.c:680
bool overright_value_set(Datum d, meosType basetype, const Set *s)
Return true if a value does not extend to the the left of a set.
Definition: set_ops.c:859
bool overleft_value_spanset(Datum d, meosType basetype, const SpanSet *ss)
Return true if a value does not extend to the right of a span set.
Definition: spanset_ops.c:886
bool left_span_value(const Span *s, Datum d, meosType basetype)
Return true if a span is strictly to the left of a value.
Definition: span_ops.c:419
bool left_value_set(Datum d, meosType basetype, const Set *s)
Return true if a value is strictly to the left of a set.
Definition: set_ops.c:399
bool right_value_span(Datum d, meosType basetype, const Span *s)
Return true if a value is strictly to the right of a span.
Definition: span_ops.c:494
bool overleft_value_span(Datum d, meosType basetype, const Span *s)
Return true if a value does not extend to the right of a span.
Definition: span_ops.c:621
bool right_set_value(const Set *s, Datum d, meosType basetype)
Return true if a set is strictly to the right of a value.
Definition: set_ops.c:621
bool right_value_set(Datum d, meosType basetype, const Set *s)
Return true if a value is strictly to the right of a set.
Definition: set_ops.c:553
bool left_spanset_value(const SpanSet *ss, Datum d, meosType basetype)
Return true if a span set is strictly to the left of a value.
Definition: spanset_ops.c:594
bool overright_value_span(Datum d, meosType basetype, const Span *s)
Return true if a value does not extend to the left of a span.
Definition: span_ops.c:755
bool left_set_value(const Set *s, Datum d, meosType basetype)
Return true if a set is strictly to the left of a value.
Definition: set_ops.c:467
bool overleft_set_value(const Set *s, Datum d, meosType basetype)
Return true if a set does not extend to the right of a value.
Definition: set_ops.c:773
bool intersection_span_value(const Span *s, Datum d, meosType basetype, Datum *result)
Return the intersection of a span and a value.
Definition: span_ops.c:995
bool minus_value_set(Datum d, meosType basetype, const Set *s, Datum *result)
Return the difference of a value and a set.
Definition: set_ops.c:1223
SpanSet * minus_spanset_value(const SpanSet *ss, Datum d, meosType basetype)
Return the difference of a span set and a value.
Definition: spanset_ops.c:1610
bool minus_value_span(Datum d, meosType basetype, const Span *s, Datum *result)
Return the difference of a value and a span.
Definition: span_ops.c:1114
SpanSet * minus_span_value(const Span *s, Datum d, meosType basetype)
Return the difference of a span and a value.
Definition: span_ops.c:1232
SpanSet * union_span_value(const Span *s, Datum v, meosType basetype)
Return the union of a span and a value.
Definition: span_ops.c:897
bool minus_value_spanset(Datum d, meosType basetype, const SpanSet *ss, Datum *result)
Return the difference of a value and a span set.
Definition: spanset_ops.c:1475
Set * minus_set_value(const Set *s, Datum d, meosType basetype)
Return the difference of a set and a value.
Definition: set_ops.c:1295
SpanSet * union_spanset_value(const SpanSet *ss, Datum d, meosType basetype)
Return the union of a span set and a value.
Definition: spanset_ops.c:1141
bool inter_span_span(const Span *s1, const Span *s2, Span *result)
Set a span with the result of the intersection of two spans.
Definition: span_ops.c:1070
Set * union_set_value(const Set *s, const Datum d, meosType basetype)
Return the union of a value and a set.
Definition: set_ops.c:1002
bool intersection_spanset_value(const SpanSet *ss, Datum d, meosType basetype, Datum *result)
Return the intersection of a span set and a value.
Definition: spanset_ops.c:1323
bool intersection_set_value(const Set *s, Datum d, meosType basetype, Datum *result)
Return the intersection of a set and a value.
Definition: set_ops.c:1117
bool contained_value_spanset(Datum d, meosType basetype, const SpanSet *ss)
Return true if a value is contained by a span.
Definition: spanset_ops.c:276
bool contained_value_span(Datum d, meosType basetype, const Span *s)
Return true if a value is contained by a span.
Definition: span_ops.c:182
bool contains_set_value(const Set *s, Datum d, meosType basetype)
Return true if a set contains a value.
Definition: set_ops.c:179
bool contained_value_set(Datum d, meosType basetype, const Set *s)
Return true if a value is contained by a set.
Definition: set_ops.c:284
bool adjacent_spanset_value(const SpanSet *ss, Datum d, meosType basetype)
Return true if a span set and a value are adjacent.
Definition: spanset_ops.c:420
bool contains_spanset_value(const SpanSet *ss, Datum d, meosType basetype)
Return true if a span set contains a value.
Definition: spanset_ops.c:138
bool contains_span_value(const Span *s, Datum d, meosType basetype)
Return true if a span contains a value.
Definition: span_ops.c:94
bool adjacent_span_value(const Span *s, Datum d, meosType basetype)
Return true if a span and a value are adjacent.
Definition: span_ops.c:277
void spanset_shift(SpanSet *s, Datum value)
Shift a span set by a value.
Definition: spanset.c:468
void span_shift(Span *s, Datum value)
Shift a span by a value.
Definition: span.c:886
void lower_upper_shift_tscale(TimestampTz *lower, TimestampTz *upper, const Interval *shift, const Interval *duration)
Shift and/or scale period bounds by the intervals.
Definition: span.c:857
const TInstant ** tsequenceset_instants(const TSequenceSet *ss, int *count)
Return the distinct instants of a temporal sequence set.
Definition: tsequenceset.c:1012
TimestampTz tsequenceset_end_timestamp(const TSequenceSet *ss)
Return the end timestamp of a temporal sequence set.
Definition: tsequenceset.c:1044
bool tsequenceset_value_at_timestamp(const TSequenceSet *ss, TimestampTz t, bool strict, Datum *result)
Return the base value of a temporal sequence set at a timestamp.
Definition: tsequenceset.c:1161
int tsequenceset_num_instants(const TSequenceSet *ss)
Return the number of distinct instants of a temporal sequence set.
Definition: tsequenceset.c:942
const TInstant * tsequenceset_inst_n(const TSequenceSet *ss, int n)
Return the n-th distinct instant of a temporal sequence set.
Definition: tsequenceset.c:968
Datum tinstant_value_copy(const TInstant *inst)
Return a copy of the base value of a temporal instant.
Definition: tinstant.c:84
const TSequence ** tsequenceset_sequences_p(const TSequenceSet *ss)
Return an array of pointers to the sequences of a temporal sequence set.
Definition: tsequenceset.c:892
bool tsequence_value_at_timestamp(const TSequence *seq, TimestampTz t, bool strict, Datum *result)
Return the base value of a temporal sequence at a timestamp.
Definition: tsequence.c:2541
void tsequenceset_set_bbox(const TSequenceSet *ss, void *box)
Set the second argument to the bounding box of a temporal sequence set.
Definition: tsequenceset.c:136
const TInstant ** tsequence_instants(const TSequence *seq, int *count)
Return the array of distinct instants of a temporal sequence.
Definition: tsequence.c:2381
SpanSet * tfloatinst_spanset(const TInstant *inst)
Return the span set of a temporal instant float.
Definition: tinstant.c:429
TSequence ** tsequence_segments(const TSequence *seq, int *count)
Return the array of segments of a temporal sequence.
Definition: tsequence.c:2360
Datum tsequence_min_value(const TSequence *seq)
Return the minimum base value of a temporal sequence.
Definition: tsequence.c:2199
TSequence ** tsequenceset_segments(const TSequenceSet *ss, int *count)
Return the array of segments of a temporal sequence set.
Definition: tsequenceset.c:923
void tinstant_set_bbox(const TInstant *inst, void *box)
Set the second argument to the bounding box of a temporal instant.
Definition: temporal_boxops.c:227
Datum * temporal_values(const Temporal *temp, int *count)
Return the array of base values of a temporal value.
Definition: temporal.c:1839
int tsequenceset_num_timestamps(const TSequenceSet *ss)
Return the number of distinct timestamps of a temporal sequence set.
Definition: tsequenceset.c:1056
Datum temporal_max_value(const Temporal *temp)
Return a copy of the maximum base value of a temporal value.
Definition: temporal.c:2213
bool tdiscseq_value_at_timestamp(const TSequence *seq, TimestampTz t, Datum *result)
Return the base value of a temporal discrete sequence at a timestamp.
Definition: tsequence.c:4351
Interval * tsequence_duration(const TSequence *seq)
Return the duration of a temporal sequence.
Definition: tsequence.c:2256
bool tinstant_value_at_timestamp(const TInstant *inst, TimestampTz t, Datum *result)
Return the base value of a temporal instant at a timestamp.
Definition: tinstant.c:518
Datum tinstant_value(const TInstant *inst)
General functions for temporal instants.
Definition: tinstant.c:70
const TInstant * tsequence_inst_n(const TSequence *seq, int index)
Return the n-th instant of a temporal sequence.
Definition: tsequence.c:777
TSequence ** tsequenceset_sequences(const TSequenceSet *ss, int *count)
Return the array of sequences of a temporal sequence set.
Definition: tsequenceset.c:908
const TSequence * tsequenceset_seq_n(const TSequenceSet *ss, int index)
Return the n-th sequence of a temporal sequence set.
Definition: tsequenceset.c:161
bool tsequenceset_timestamp_n(const TSequenceSet *ss, int n, TimestampTz *result)
Return the n-th distinct timestamp of a temporal sequence set.
Definition: tsequenceset.c:1082
uint32 tinstant_hash(const TInstant *inst)
Return the 32-bit hash value of a temporal instant.
Definition: tinstant.c:1044
TimestampTz * tsequence_timestamps(const TSequence *seq, int *count)
Return the array of timestamps of a temporal sequence.
Definition: tsequence.c:2434
TimestampTz tsequence_start_timestamp(const TSequence *seq)
Return the start timestamp of a temporal sequence.
Definition: tsequence.c:2396
Datum * tinstant_values(const TInstant *inst, int *count)
Return the singleton array of base values of a temporal instant.
Definition: tinstant.c:415
const TInstant * tsequenceset_min_instant(const TSequenceSet *ss)
Return a pointer to the instant with minimum base value of a temporal sequence set.
Definition: tsequenceset.c:713
SpanSet * tinstant_time(const TInstant *inst)
Return the time frame of a temporal instant as a period set.
Definition: tinstant.c:443
Datum * tsequenceset_values(const TSequenceSet *ss, int *count)
Return the array of distinct base values of a temporal sequence set with step interpolation.
Definition: tsequenceset.c:659
TimestampTz tsequence_end_timestamp(const TSequence *seq)
Return the end timestamp of a temporal sequence.
Definition: tsequence.c:2407
Datum temporal_start_value(const Temporal *temp)
Return the start base value of a temporal value.
Definition: temporal.c:1986
TimestampTz tsequenceset_start_timestamp(const TSequenceSet *ss)
Return the start timestamp of a temporal sequence set.
Definition: tsequenceset.c:1032
const TInstant * tsequenceset_max_instant(const TSequenceSet *ss)
Return a pointer to the instant with maximum base value of a temporal sequence set.
Definition: tsequenceset.c:746
Datum temporal_min_value(const Temporal *temp)
Return a copy of the minimum base value of a temporal value.
Definition: temporal.c:2154
const TInstant * tsequence_max_instant(const TSequence *seq)
Return a pointer to the instant with minimum base value of a temporal sequence.
Definition: tsequence.c:2176
Datum tsequenceset_max_value(const TSequenceSet *ss)
Return the maximum base value of a temporal sequence set.
Definition: tsequenceset.c:803
const TInstant * tsequence_min_instant(const TSequence *seq)
Return a pointer to the instant with minimum base value of a temporal sequence.
Definition: tsequence.c:2149
Interval * tsequenceset_duration(const TSequenceSet *ss, bool boundspan)
Return the duration of a temporal sequence set.
Definition: tsequenceset.c:851
SpanSet * tsequenceset_time(const TSequenceSet *ss)
Return the time frame a temporal sequence set as a period set.
Definition: tsequenceset.c:832
uint32 tsequence_hash(const TSequence *seq)
Return the 32-bit hash value of a temporal sequence.
Definition: tsequence.c:5762
const TInstant ** tinstant_instants(const TInstant *inst, int *count)
Return the singleton array of instants of a temporal instant.
Definition: tinstant.c:500
Datum tsequenceset_min_value(const TSequenceSet *ss)
Return the minimum base value of a temporal sequence set.
Definition: tsequenceset.c:775
Datum * tsequence_values(const TSequence *seq, int *count)
Return the array of base values of a temporal sequence with step interpolation.
Definition: tsequence.c:2001
void tsequence_set_bbox(const TSequence *seq, void *box)
Set the second argument to the bounding box of a temporal sequence.
Definition: tsequence.c:753
Span * tfloatseq_span(const TSequence *seq)
Return the float span of a temporal sequence float.
Definition: tsequence.c:2023
TimestampTz * tsequenceset_timestamps(const TSequenceSet *ss, int *count)
Return the array of distinct timestamps of a temporal sequence set.
Definition: tsequenceset.c:1130
SpanSet * tfloatseqset_spanset(const TSequenceSet *ss)
Return the span set of a temporal float sequence set.
Definition: tsequenceset.c:685
SpanSet * tfloatseq_spanset(const TSequence *seq)
Return the array of spans of base values of a temporal float sequence.
Definition: tsequence.c:2106
TSequence ** tinstant_sequences(const TInstant *inst, int *count)
Return the singleton array of sequences of a temporal instant.
Definition: tinstant.c:469
void temporal_set_bbox(const Temporal *temp, void *box)
Set the second argument to the bounding box of a temporal value.
Definition: temporal.c:1821
Datum temporal_end_value(const Temporal *temp)
Return the end base value of a temporal value.
Definition: temporal.c:2069
TimestampTz * tinstant_timestamps(const TInstant *inst, int *count)
Return the singleton array of timestamps of a temporal instant.
Definition: tinstant.c:485
TSequence ** tsequence_sequences(const TSequence *seq, int *count)
Return the singleton array of sequences of a temporal sequence.
Definition: tsequence.c:2281
SpanSet * tsequence_time(const TSequence *seq)
Return the time frame of a temporal sequence as a period set.
Definition: tsequence.c:2120
uint32 tsequenceset_hash(const TSequenceSet *ss)
Return the 32-bit hash value of a temporal sequence set.
Definition: tsequenceset.c:3212
Datum tsequence_max_value(const TSequence *seq)
Return the maximum base value of a temporal sequence.
Definition: tsequence.c:2227
double tnumberseqset_twavg(const TSequenceSet *ss)
Return the time-weighted average of a temporal number.
Definition: tsequenceset.c:3113
double tnumberseq_integral(const TSequence *seq)
Return the integral (area under the curve) of a temporal sequence number.
Definition: tsequence.c:5594
GSERIALIZED * tpointseqset_twcentroid(const TSequenceSet *ss)
Return the time-weighed centroid of a temporal geometry point.
Definition: tpoint_spatialfuncs.c:2484
double tnumberseqset_integral(const TSequenceSet *ss)
Return the integral (area under the curve) of a temporal number.
Definition: tsequenceset.c:3084
double tnumberseq_twavg(const TSequence *seq)
Return the time-weighted average of a temporal sequence number.
Definition: tsequence.c:5666
double tnumberdiscseq_twavg(const TSequence *seq)
Return the time-weighted average of a temporal discrete sequence number.
Definition: tsequence.c:5629
GSERIALIZED * tpointseq_twcentroid(const TSequence *seq)
Return the time-weighed centroid of a temporal geometry point.
Definition: tpoint_spatialfuncs.c:2461
double tnumbercontseq_twavg(const TSequence *seq)
Return the time-weighted average of a temporal sequence number.
Definition: tsequence.c:5647
TSequenceSet * tfloatseqset_to_tintseqset(const TSequenceSet *ss)
Cast a temporal sequence set float to a temporal sequence set integer.
Definition: tsequenceset.c:1238
void tinstant_set_period(const TInstant *inst, Span *p)
Return the bounding period of a temporal instant.
Definition: tinstant.c:456
void temporal_set_period(const Temporal *temp, Span *p)
Set a period to the bounding period of a temporal value.
Definition: temporal.c:1176
TSequence * tfloatseq_to_tintseq(const TSequence *seq)
Cast a temporal sequence float to a temporal sequence integer.
Definition: tsequence.c:1745
TSequence * tintseq_to_tfloatseq(const TSequence *seq)
Cast a temporal sequence integer to a temporal sequence float.
Definition: tsequence.c:1724
TInstant * tintinst_to_tfloatinst(const TInstant *inst)
Cast a temporal instant integer to a temporal instant float.
Definition: tinstant.c:536
void tsequence_set_period(const TSequence *seq, Span *p)
Return the bounding period of a temporal sequence.
Definition: tsequence.c:2268
TInstant * tfloatinst_to_tintinst(const TInstant *inst)
Cast a temporal instant float to a temporal instant integer.
Definition: tinstant.c:551
TSequenceSet * tintseqset_to_tfloatseqset(const TSequenceSet *ss)
Cast a temporal sequence set integer to a temporal sequence set float.
Definition: tsequenceset.c:1212
void tsequenceset_set_period(const TSequenceSet *ss, Span *p)
Return the bounding period of a temporal sequence set.
Definition: tsequenceset.c:877
bool tinstant_eq(const TInstant *inst1, const TInstant *inst2)
Return true if two temporal instants are equal.
Definition: tinstant.c:988
int tsequence_cmp(const TSequence *seq1, const TSequence *seq2)
Return -1, 0, or 1 depending on whether the first temporal sequence is less than, equal,...
Definition: tsequence.c:5721
int tsequenceset_cmp(const TSequenceSet *ss1, const TSequenceSet *ss2)
Return -1, 0, or 1 depending on whether the first Temporal sequence set is less than,...
Definition: tsequenceset.c:3176
bool tsequenceset_eq(const TSequenceSet *ss1, const TSequenceSet *ss2)
Return true if two temporal sequence sets are equal.
Definition: tsequenceset.c:3142
bool tsequence_eq(const TSequence *seq1, const TSequence *seq2)
Return true if two temporal sequences are equal.
Definition: tsequence.c:5686
int tinstant_cmp(const TInstant *inst1, const TInstant *inst2)
Return -1, 0, or 1 depending on whether the first temporal instant is less than, equal,...
Definition: tinstant.c:1012
TSequenceSet * tsequenceset_from_base_time(Datum value, meosType temptype, const SpanSet *ps, interpType interp)
Construct a temporal sequence set from a base value and a period set.
Definition: tsequenceset.c:562
Temporal * temporal_from_base(Datum value, meosType temptype, const Temporal *temp, interpType interp)
Construct a temporal value from a base value and the time frame of another temporal value.
Definition: temporal.c:743
TSequenceSet * tsequenceset_copy(const TSequenceSet *ss)
Return a copy of a temporal sequence set.
Definition: tsequenceset.c:447
TInstant * tinstant_copy(const TInstant *inst)
Return a copy of a temporal instant.
Definition: tinstant.c:397
TSequence * tsequence_from_base(Datum value, meosType temptype, const TSequence *seq, interpType interp)
Construct a temporal sequence from a base value and the time frame of another temporal sequence.
Definition: tsequence.c:1158
TSequence * tdiscseq_from_base_time(Datum value, meosType temptype, const Set *ss)
Construct a temporal discrete sequence from a base value and a timestamp set.
Definition: tsequence.c:1067
TSequence * tsequence_copy(const TSequence *seq)
Return a copy of a temporal sequence.
Definition: tsequence.c:1033
TSequence * tsequence_from_base_time(Datum value, meosType temptype, const Span *p, interpType interp)
Construct a temporal sequence from a base value and a period.
Definition: tsequence.c:1248
TSequenceSet * tsequenceset_from_base(Datum value, meosType temptype, const TSequenceSet *ss, interpType interp)
Construct a temporal sequence set from a base value and the time frame of another temporal sequence s...
Definition: tsequenceset.c:467
TSequenceSet * tsequenceset_compact(const TSequenceSet *ss)
Return a copy of a temporal sequence set without any extra space.
Definition: tsequenceset.c:1271
TInstant * tinstant_make(Datum value, meosType temptype, TimestampTz t)
Construct a temporal instant from the arguments.
Definition: tinstant.c:276
double nad_tnumber_number(const Temporal *temp, Datum value, meosType basetype)
Return the nearest approach distance between a temporal number and a number.
Definition: tnumber_distance.c:208
Temporal * distance_tnumber_number(const Temporal *temp, Datum value, meosType valuetype, meosType restype)
Return the temporal distance between a temporal number and a number.
Definition: tnumber_distance.c:86
bool tinstant_ever_eq(const TInstant *inst, Datum value)
Return true if a temporal instant is ever equal to a base value.
Definition: tinstant.c:616
bool tsequence_ever_le(const TSequence *seq, Datum value)
Return true if a temporal sequence is ever less than or equal to a base value.
Definition: tsequence.c:3252
bool tsequence_ever_eq(const TSequence *seq, Datum value)
Return true if a temporal sequence is ever equal to a base value.
Definition: tsequence.c:3087
bool tsequence_ever_lt(const TSequence *seq, Datum value)
Return true if a temporal sequence is ever less than a base value.
Definition: tsequence.c:3229
bool tinstant_always_le(const TInstant *inst, Datum value)
Return true if a temporal instant is always less than or equal to a base value.
Definition: tinstant.c:679
bool temporal_always_lt(const Temporal *temp, Datum value)
Return true if a temporal value is always less than a base value.
Definition: temporal.c:2932
bool tsequence_always_lt(const TSequence *seq, Datum value)
Return true if a temporal sequence is always less than a base value.
Definition: tsequence.c:3296
bool tsequenceset_ever_lt(const TSequenceSet *ss, Datum value)
Return true if a temporal sequence set is ever less than a base value.
Definition: tsequenceset.c:1509
bool tpointseqset_ever_eq(const TSequenceSet *ss, Datum value)
Return true if a temporal sequence set point is ever equal to a point.
Definition: tpoint_spatialfuncs.c:762
bool tsequenceset_always_le(const TSequenceSet *ss, Datum value)
Return true if a temporal sequence set is always less than or equal to a base value.
Definition: tsequenceset.c:1574
bool temporal_ever_eq(const Temporal *temp, Datum value)
Return true if a temporal value is ever equal to a base value.
Definition: temporal.c:2762
bool tsequence_always_le(const TSequence *seq, Datum value)
Return true if a temporal sequence is always less than or equal to a base value.
Definition: tsequence.c:3341
bool tsequenceset_ever_le(const TSequenceSet *ss, Datum value)
Return true if a temporal sequence set is ever less than or equal to a base value.
Definition: tsequenceset.c:1531
bool tinstant_always_lt(const TInstant *inst, Datum value)
Return true if a temporal instant is always less than a base value.
Definition: tinstant.c:666
bool tpointseq_ever_eq(const TSequence *seq, Datum value)
Return true if a temporal sequence point is ever equal to a point.
Definition: tpoint_spatialfuncs.c:704
bool tsequenceset_always_lt(const TSequenceSet *ss, Datum value)
Return true if a temporal sequence set is always less than a base value.
Definition: tsequenceset.c:1552
bool temporal_always_le(const Temporal *temp, Datum value)
Return true if a temporal value is always less than or equal to a base value.
Definition: temporal.c:3035
bool tpointseqset_always_eq(const TSequenceSet *ss, Datum value)
Return true if a temporal sequence set point is always equal to a point.
Definition: tpoint_spatialfuncs.c:867
bool temporal_ever_lt(const Temporal *temp, Datum value)
Return true if a temporal value is ever less than a base value.
Definition: temporal.c:2882
bool tinstant_ever_le(const TInstant *inst, Datum value)
Return true if a temporal instant is ever less than or equal to a base value.
Definition: tinstant.c:654
bool temporal_ever_le(const Temporal *temp, Datum value)
Return true if a temporal value is ever less than or equal to a base value.
Definition: temporal.c:2983
bool tpointinst_always_eq(const TInstant *inst, Datum value)
Return true if a temporal instant point is always equal to a point.
Definition: tpoint_spatialfuncs.c:837
bool tinstant_always_eq(const TInstant *inst, Datum value)
Return true if a temporal instant is always equal to a base value.
Definition: tinstant.c:628
bool tsequenceset_always_eq(const TSequenceSet *ss, Datum value)
Return true if a temporal sequence set is always equal to a base value.
Definition: tsequenceset.c:1484
bool tsequence_always_eq(const TSequence *seq, Datum value)
Return true if a temporal sequence is always equal to a base value.
Definition: tsequence.c:3148
bool tsequenceset_ever_eq(const TSequenceSet *ss, Datum value)
Return true if a temporal sequence set is ever equal to a base value.
Definition: tsequenceset.c:1466
bool tpointseq_always_eq(const TSequence *seq, Datum value)
Return true if a temporal sequence point is always equal to a point.
Definition: tpoint_spatialfuncs.c:849
bool tinstant_ever_lt(const TInstant *inst, Datum value)
Return true if a temporal instant is ever less than a base value.
Definition: tinstant.c:641
bool tpointinst_ever_eq(const TInstant *inst, Datum value)
Return true if a temporal instant point is ever equal to a point.
Definition: tpoint_spatialfuncs.c:691
bool tpoint_ever_eq(const Temporal *temp, Datum value)
Return true if a temporal point is ever equal to a point.
Definition: tpoint_spatialfuncs.c:785
bool temporal_always_eq(const Temporal *temp, Datum value)
Return true if a temporal value is always equal to a base value.
Definition: temporal.c:2822
char * tgeogpointinst_as_mfjson(const TInstant *inst, bool with_bbox, int precision, char *srs)
Return the MF-JSON representation of a temporal instant geographic point.
Definition: type_out.c:642
Temporal * temporal_in(const char *str, meosType temptype)
Return a temporal value from its Well-Known Text (WKT) representation.
Definition: temporal.c:578
char * tinstant_as_mfjson(const TInstant *inst, int precision, bool with_bbox, char *srs)
Return the MF-JSON representation of a temporal instant.
Definition: type_out.c:559
TSequenceSet * tintseqset_from_mfjson(json_object *mfjson)
Return a temporal sequence set integer from its MF-JSON representation.
Definition: type_in.c:625
TInstant * tgeogpointinst_in(const char *str)
Return a temporal instant geographic point from its Well-Known Text (WKT) representation.
Definition: tinstant.c:210
TSequence * tgeogpointseq_in(const char *str, interpType interp)
Return a temporal sequence geographic point from its Well-Known Text (WKT) representation.
Definition: tsequence.c:646
TSequence * tgeompointseq_from_mfjson(json_object *mfjson, int srid, interpType interp)
Return a temporal sequence geometric point from its MF-JSON representation.
Definition: type_in.c:558
TSequenceSet * tboolseqset_from_mfjson(json_object *mfjson)
Return a temporal sequence set boolean from its MF-JSON representation.
Definition: type_in.c:614
TInstant * ttextinst_from_mfjson(json_object *mfjson)
Return a temporal instant text from its MF-JSON representation.
Definition: type_in.c:408
TSequence * tfloatseq_in(const char *str, interpType interp)
Return a temporal sequence float from its Well-Known Text (WKT) representation.
Definition: tsequence.c:604
char * ttextinst_as_mfjson(const TInstant *inst, bool with_bbox)
Return the MF-JSON representation of a temporal instant text.
Definition: type_out.c:617
char * tsequenceset_out(const TSequenceSet *ss, int maxdd)
Return the Well-Known Text (WKT) representation of a temporal sequence set.
Definition: tsequenceset.c:2707
TSequenceSet * tsequenceset_from_mfjson(json_object *mfjson, bool isgeo, int srid, meosType temptype, interpType interp)
Return a temporal sequence set point from its MF-JSON representation.
Definition: type_in.c:581
TInstant * tintinst_in(const char *str)
Return a temporal instant integer from its Well-Known Text (WKT) representation.
Definition: tinstant.c:163
char * tsequence_as_mfjson(const TSequence *seq, int precision, bool with_bbox, char *srs)
Return the MF-JSON representation of a temporal sequence.
Definition: type_out.c:720
TInstant * tintinst_from_mfjson(json_object *mfjson)
Return a temporal instant integer from its MF-JSON representation.
Definition: type_in.c:386
TSequence * ttextseq_from_mfjson(json_object *mfjson)
Return a temporal sequence text from its MF-JSON representation.
Definition: type_in.c:546
char * tintseqset_as_mfjson(const TSequenceSet *ss, bool with_bbox)
Return the MF-JSON representation of a temporal sequence set integer.
Definition: type_out.c:931
TSequenceSet * tfloatseqset_in(const char *str)
Return a temporal sequence set float from its Well-Known Text (WKT) representation.
Definition: tsequenceset.c:2625
TSequenceSet * tsequenceset_in(const char *str, meosType temptype, interpType interp)
Return a temporal sequence set from its Well-Known Text (WKT) representation.
Definition: tsequenceset.c:2593
TSequenceSet * tboolseqset_in(const char *str)
Return a temporal sequence set boolean from its Well-Known Text (WKT) representation.
Definition: tsequenceset.c:2603
TSequenceSet * tgeompointseqset_from_mfjson(json_object *mfjson, int srid, interpType interp)
Return a temporal sequence set geometric point from its MF-JSON representation.
Definition: type_in.c:659
char ** geoarr_as_text(const Datum *geoarr, int count, int maxdd, bool extended)
Return the Well-Known Text (WKT) or the Extended Well-Known Text (EWKT) representation of a geometry/...
Definition: tpoint_out.c:147
char * tgeogpointseqset_as_mfjson(const TSequenceSet *ss, bool with_bbox, int precision, char *srs)
Return the MF-JSON representation of a temporal sequence set geographic point.
Definition: type_out.c:978
char * tgeompointinst_as_mfjson(const TInstant *inst, bool with_bbox, int precision, char *srs)
Return the MF-JSON representation of a temporal instant geometric point.
Definition: type_out.c:629
char * tgeompointseqset_as_mfjson(const TSequenceSet *ss, bool with_bbox, int precision, char *srs)
Return the MF-JSON representation of a temporal sequence set geometric point.
Definition: type_out.c:965
TSequenceSet * ttextseqset_from_mfjson(json_object *mfjson)
Return a temporal sequence set text from its MF-JSON representation.
Definition: type_in.c:647
TInstant * tgeompointinst_in(const char *str)
Return a temporal instant geometric point from its Well-Known Text (WKT) representation.
Definition: tinstant.c:196
TSequence * tboolseq_in(const char *str, interpType interp)
Return a temporal sequence boolean from its Well-Known Text (WKT) representation.
Definition: tsequence.c:576
TSequenceSet * tintseqset_in(const char *str)
Return a temporal sequence set integer from its Well-Known Text (WKT) representation.
Definition: tsequenceset.c:2614
TSequence * tfloatseq_from_mfjson(json_object *mfjson, interpType interp)
Return a temporal sequence float from its MF-JSON representation.
Definition: type_in.c:535
TInstant * tgeompointinst_from_mfjson(json_object *mfjson, int srid)
Return a temporal instant geometric point from its MF-JSON representation.
Definition: type_in.c:420
TSequence * tintseq_from_mfjson(json_object *mfjson)
Return a temporal sequence integer from its MF-JSON representation.
Definition: type_in.c:524
char * ttextseq_as_mfjson(const TSequence *seq, bool with_bbox)
Return the MF-JSON representation of a temporal sequence text.
Definition: type_out.c:778
TInstant * tboolinst_from_mfjson(json_object *mfjson)
Return a temporal instant boolean from its MF-JSON representation.
Definition: type_in.c:375
char * ttextseqset_as_mfjson(const TSequenceSet *ss, bool with_bbox)
Return the MF-JSON representation of a temporal sequence set text.
Definition: type_out.c:953
char * tsequenceset_as_mfjson(const TSequenceSet *ss, int precision, bool with_bbox, char *srs)
Return the MF-JSON representation of a temporal sequence set.
Definition: type_out.c:894
TSequence * ttextseq_in(const char *str, interpType interp)
Return a temporal sequence text from its Well-Known Text (WKT) representation.
Definition: tsequence.c:618
char * tfloatseqset_as_mfjson(const TSequenceSet *ss, bool with_bbox, int precision)
Return the MF-JSON representation of a temporal sequence set float.
Definition: type_out.c:942
TInstant * tfloatinst_from_mfjson(json_object *mfjson)
Return a temporal instant float from its MF-JSON representation.
Definition: type_in.c:397
char * tsequence_out(const TSequence *seq, int maxdd)
Return the Well-Known Text (WKT) representation of a temporal sequence.
Definition: tsequence.c:705
char * tinstant_out(const TInstant *inst, int maxdd)
Return the Well-Known Text (WKT) representation of a temporal instant.
Definition: tinstant.c:246
char * tboolseqset_as_mfjson(const TSequenceSet *ss, bool with_bbox)
Return the MF-JSON representation of a temporal sequence set boolean.
Definition: type_out.c:920
char * tboolseq_as_mfjson(const TSequence *seq, bool with_bbox)
Return the MF-JSON representation of a temporal sequence boolean.
Definition: type_out.c:745
TInstant * tinstant_from_mfjson(json_object *mfjson, bool isgeo, int srid, meosType temptype)
Return a temporal instant from its MF-JSON representation.
Definition: type_in.c:295
char * tfloatseq_as_mfjson(const TSequence *seq, bool with_bbox, int precision)
Return the MF-JSON representation of a temporal sequence float.
Definition: type_out.c:767
TSequence * tgeogpointseq_from_mfjson(json_object *mfjson, int srid, interpType interp)
Return a temporal sequence geographic point from its MF-JSON representation.
Definition: type_in.c:570
TSequence * tsequence_in(const char *str, meosType temptype, interpType interp)
Return a temporal sequence from its Well-Known Text (WKT) representation.
Definition: tsequence.c:562
char * tintinst_as_mfjson(const TInstant *inst, bool with_bbox)
Return the MF-JSON representation of a temporal instant integer.
Definition: type_out.c:595
char * temporal_out(const Temporal *temp, int maxdd)
Return the Well-Known Text (WKT) representation of a temporal value.
Definition: temporal.c:653
char * tboolinst_as_mfjson(const TInstant *inst, bool with_bbox)
Return the MF-JSON representation of a temporal instant boolean.
Definition: type_out.c:584
char * tgeompointseq_as_mfjson(const TSequence *seq, bool with_bbox, int precision, char *srs)
Return the MF-JSON representation of a temporal sequence geometric point.
Definition: type_out.c:790
TSequence * tgeompointseq_in(const char *str, interpType interp)
Return a temporal sequence geometric point from its Well-Known Text (WKT) representation.
Definition: tsequence.c:632
TSequenceSet * ttextseqset_in(const char *str)
Return a temporal sequence set text from its Well-Known Text (WKT) representation.
Definition: tsequenceset.c:2639
TSequenceSet * tgeogpointseqset_from_mfjson(json_object *mfjson, int srid, interpType interp)
Return a temporal sequence set geographic point from its MF-JSON representation.
Definition: type_in.c:671
TInstant * ttextinst_in(const char *str)
Return a temporal instant text from its Well-Known Text (WKT) representation.
Definition: tinstant.c:185
TSequence * tboolseq_from_mfjson(json_object *mfjson)
Return a temporal sequence boolean from its MF-JSON representation.
Definition: type_in.c:513
TInstant * tboolinst_in(const char *str)
Return a temporal instant boolean from its Well-Known Text (WKT) representation.
Definition: tinstant.c:152
TInstant * tfloatinst_in(const char *str)
Return a temporal instant float from its Well-Known Text (WKT) representation.
Definition: tinstant.c:174
char * tintseq_as_mfjson(const TSequence *seq, bool with_bbox)
Return the MF-JSON representation of a temporal sequence integer.
Definition: type_out.c:756
TSequence * tintseq_in(const char *str, interpType interp)
Return a temporal sequence integer from its Well-Known Text (WKT) representation.
Definition: tsequence.c:590
TSequenceSet * tgeogpointseqset_in(const char *str)
Return a temporal sequence set geographic point from its Well-Known Text (WKT) representation.
Definition: tsequenceset.c:2664
TSequenceSet * tgeompointseqset_in(const char *str)
Return a temporal sequence set geometric point from its Well-Known Text (WKT) representation.
Definition: tsequenceset.c:2650
TSequence * tsequence_from_mfjson(json_object *mfjson, bool isgeo, int srid, meosType temptype, interpType interp)
Return a temporal sequence point from its MF-JSON representation.
Definition: type_in.c:479
char * tfloatinst_as_mfjson(const TInstant *inst, bool with_bbox, int precision)
Return the MF-JSON representation of a temporal instant float.
Definition: type_out.c:606
TSequenceSet * tfloatseqset_from_mfjson(json_object *mfjson, interpType interp)
Return a temporal sequence set float from its MF-JSON representation.
Definition: type_in.c:636
TInstant * tgeogpointinst_from_mfjson(json_object *mfjson, int srid)
Return a temporal instant geographic point from its MF-JSON representation.
Definition: type_in.c:432
TInstant * tinstant_in(const char *str, meosType temptype)
Return a temporal instant from its Well-Known Text (WKT) representation.
Definition: tinstant.c:141
char ** tpointarr_as_text(const Temporal **temparr, int count, int maxdd, bool extended)
Return the Well-Known Text (WKT) or the Extended Well-Known Text (EWKT) representation of a temporal ...
Definition: tpoint_out.c:164
char ** temporalarr_out(const Temporal **temparr, int count, int maxdd)
Return the Well-Known Text (WKT) representation of an array of temporal values.
Definition: type_out.c:1027
char * tgeogpointseq_as_mfjson(const TSequence *seq, bool with_bbox, int precision, char *srs)
Return the MF-JSON representation of a temporal sequence geographic point.
Definition: type_out.c:803
TSequenceSet * tsequenceset_restrict_value(const TSequenceSet *ss, Datum value, bool atfunc)
Restrict a temporal sequence set to (the complement of) a base value.
Definition: tsequenceset.c:1607
TInstant * tdiscseq_at_timestamp(const TSequence *seq, TimestampTz t)
Restrict a temporal discrete sequence to (the complement of) a timestamp.
Definition: tsequence.c:4372
TInstant * tsequence_at_timestamp(const TSequence *seq, TimestampTz t)
Restrict a temporal sequence to a timestamp.
Definition: tsequence.c:4668
TInstant * tpointinst_restrict_geometry(const TInstant *inst, const GSERIALIZED *gs, bool atfunc)
Restrict a temporal point instant to (the complement of) a geometry.
Definition: tpoint_spatialfuncs.c:3562
Temporal * tpoint_restrict_stbox(const Temporal *temp, const STBox *box, bool atfunc)
Restrict a temporal point to (the complement of) a spatiotemporal box.
Definition: tpoint_spatialfuncs.c:4459
TSequence * tdiscseq_minus_timestamp(const TSequence *seq, TimestampTz t)
Restrict a temporal discrete sequence to (the complement of) a timestamp.
Definition: tsequence.c:4401
TInstant * tinstant_restrict_period(const TInstant *inst, const Span *period, bool atfunc)
Restrict a temporal instant to (the complement of) a period.
Definition: tinstant.c:867
TSequenceSet * tnumberseqset_restrict_spanset(const TSequenceSet *ss, const SpanSet *spanset, bool atfunc)
Restrict a temporal number to (the complement of) an array of spans of base values.
Definition: tsequenceset.c:1724
TSequence * tdiscseq_restrict_values(const TSequence *seq, const Set *set, bool atfunc)
Restrict a temporal discrete sequence to (the complement of) an array of base values.
Definition: tsequence.c:3425
Temporal * temporal_restrict_timestampset(const Temporal *temp, const Set *ss, bool atfunc)
Restrict a temporal value to (the complement of) a timestamp set.
Definition: temporal.c:3417
Temporal * temporal_restrict_value(const Temporal *temp, Datum value, bool atfunc)
Restrict a temporal value to (the complement of) a base value.
Definition: temporal.c:3147
Temporal * temporal_restrict_periodset(const Temporal *temp, const SpanSet *ps, bool atfunc)
Restrict a temporal value to (the complement of) a period set.
Definition: temporal.c:3480
TInstant * tinstant_restrict_periodset(const TInstant *inst, const SpanSet *ps, bool atfunc)
Restrict a temporal instant to (the complement of) a period set.
Definition: tinstant.c:898
Temporal * tnumber_restrict_span(const Temporal *temp, const Span *span, bool atfunc)
Restrict a temporal value to (the complement of) a span of base values.
Definition: temporal.c:3254
TSequenceSet * tcontseq_restrict_periodset(const TSequence *seq, const SpanSet *ps, bool atfunc)
Restrict a temporal sequence to (the complement of) a period set.
Definition: tsequence.c:5243
TInstant * tinstant_restrict_value(const TInstant *inst, Datum value, bool atfunc)
Restrict a temporal instant to (the complement of) a base value.
Definition: tinstant.c:695
TSequenceSet * tsequenceset_restrict_periodset(const TSequenceSet *ss, const SpanSet *ps, bool atfunc)
Restrict a temporal sequence set to (the complement of) a period set.
Definition: tsequenceset.c:1990
TInstant * tnumberinst_restrict_spanset(const TInstant *inst, const SpanSet *ss, bool atfunc)
Restrict a temporal number instant to (the complement of) a span set.
Definition: tinstant.c:806
TSequenceSet * tsequenceset_restrict_period(const TSequenceSet *ss, const Span *p, bool atfunc)
Restrict a temporal sequence set to (the complement of) a period.
Definition: tsequenceset.c:1906
TSequence * tnumberdiscseq_restrict_span(const TSequence *seq, const Span *span, bool atfunc)
Restrict a temporal discrete number sequence to (the complement of) a span of base values.
Definition: tsequence.c:3788
Temporal * temporal_restrict_timestamp(const Temporal *temp, TimestampTz t, bool atfunc)
Restrict a temporal value to a timestamp.
Definition: temporal.c:3360
Temporal * temporal_restrict_period(const Temporal *temp, const Span *ps, bool atfunc)
Restrict a temporal value to (the complement of) a period.
Definition: temporal.c:3448
TSequenceSet * tcontseq_restrict_value(const TSequence *seq, Datum value, bool atfunc)
Restrict a temporal sequence to (the complement of) a base value.
Definition: tsequence.c:3663
TSequenceSet * tcontseq_minus_timestampset(const TSequence *seq, const Set *ss)
Restrict a temporal sequence to the complement of a timestamp set.
Definition: tsequence.c:4972
TSequence * tdiscseq_minus_period(const TSequence *seq, const Span *period)
Restrict a temporal discrete sequence to (the complement of) a period.
Definition: tsequence.c:4542
TSequence * tdiscseq_at_period(const TSequence *seq, const Span *period)
Restrict a temporal discrete sequence to (the complement of) a period.
Definition: tsequence.c:4511
TInstant * tinstant_restrict_timestampset(const TInstant *inst, const Set *ss, bool atfunc)
Restrict a temporal instant to (the complement of) a timestamp set.
Definition: tinstant.c:853
TSequence * tnumberdiscseq_restrict_spanset(const TSequence *seq, const SpanSet *ss, bool atfunc)
Restrict a temporal discrete sequence number to (the complement of) an array of spans of base values.
Definition: tsequence.c:3822
Temporal * tsequenceset_restrict_timestampset(const TSequenceSet *ss1, const Set *ss2, bool atfunc)
Restrict a temporal sequence set to (the complement of) a timestamp set.
Definition: tsequenceset.c:1826
TSequence * tdiscseq_restrict_periodset(const TSequence *seq, const SpanSet *ps, bool atfunc)
Restrict a discrete temporal sequence to (the complement of) a period set.
Definition: tsequence.c:4573
TSequence * tcontseq_at_timestampset(const TSequence *seq, const Set *ss)
Restrict a temporal sequence to a timestamp set.
Definition: tsequence.c:4792
TSequenceSet * tpointseq_restrict_geometry(const TSequence *seq, const GSERIALIZED *gs, bool atfunc)
Restrict a temporal point sequence to (the complement of a) geometry.
Definition: tpoint_spatialfuncs.c:4100
TSequenceSet * tnumbercontseq_restrict_span(const TSequence *seq, const Span *span, bool atfunc)
Restrict a temporal sequence number to (the complement of) a span.
Definition: tsequence.c:4177
TSequenceSet * tsequenceset_restrict_values(const TSequenceSet *ss, const Set *set, bool atfunc)
Restrict a temporal sequence set to (the complement of) an array of base values.
Definition: tsequenceset.c:1640
TSequenceSet * tcontseq_restrict_values(const TSequence *seq, const Set *set, bool atfunc)
Restrict a temporal sequence to (the complement of) an array of base values.
Definition: tsequence.c:3745
Temporal * tpoint_restrict_geometry(const Temporal *temp, const GSERIALIZED *gs, bool atfunc)
Restrict a temporal point to (the complement of) a geometry.
Definition: tpoint_spatialfuncs.c:4187
TSequenceSet * tcontseq_minus_timestamp(const TSequence *seq, TimestampTz t)
Restrict a temporal sequence to the complement of a timestamp.
Definition: tsequence.c:4771
TSequence * tdiscseq_restrict_timestampset(const TSequence *seq, const Set *ts, bool atfunc)
Restrict a temporal discrete sequence to (the complement of) a timestamp set.
Definition: tsequence.c:4432
TSequenceSet * tpointseqset_restrict_geometry(const TSequenceSet *ss, const GSERIALIZED *gs, const STBox *box, bool atfunc)
Restrict a temporal point sequence set to (the complement of) a geometry.
Definition: tpoint_spatialfuncs.c:4127
TSequenceSet * tnumbercontseq_restrict_spanset(const TSequence *seq, const SpanSet *ss, bool atfunc)
Restrict a temporal number to (the complement of) an array of spans.
Definition: tsequence.c:4288
TSequenceSet * tcontseq_restrict_minmax(const TSequence *seq, bool min, bool atfunc)
Restrict a temporal sequence to (the complement of) its minimum/maximum base value.
Definition: tsequence.c:4333
TSequence * tdiscseq_restrict_minmax(const TSequence *seq, bool min, bool atfunc)
Restrict a temporal discrete sequence to (the complement of) its minimum/maximum base value.
Definition: tsequence.c:4315
bool temporal_value_at_timestamp(const Temporal *temp, TimestampTz t, bool strict, Datum *result)
Return the base value of a temporal value at the timestamp.
Definition: temporal.c:3392
TSequenceSet * tsequenceset_restrict_minmax(const TSequenceSet *ss, bool min, bool atfunc)
Restrict a temporal sequence set to (the complement of) its minimum/maximum base value.
Definition: tsequenceset.c:1760
TInstant * tinstant_restrict_values(const TInstant *inst, const Set *set, bool atfunc)
Restrict a temporal instant to an array of base values.
Definition: tinstant.c:731
TSequenceSet * tcontseq_minus_period(const TSequence *seq, const Span *p)
Restrict a temporal sequence to the complement of a period.
Definition: tsequence.c:5109
TSequence * tdiscseq_restrict_value(const TSequence *seq, Datum value, bool atfunc)
Restrict a temporal discrete sequence to (the complement of) a base value.
Definition: tsequence.c:3383
Temporal * tnumber_restrict_spanset(const Temporal *temp, const SpanSet *ss, bool atfunc)
Restrict a temporal value to (the complement of) a span set.
Definition: temporal.c:3293
Temporal * temporal_restrict_values(const Temporal *temp, const Set *set, bool atfunc)
Restrict a temporal value to (the complement of) an array of base values.
Definition: temporal.c:3210
TInstant * tnumberinst_restrict_span(const TInstant *inst, const Span *span, bool atfunc)
Restrict a temporal number instant to (the complement of) a span of base values.
Definition: tinstant.c:771
Temporal * tsequenceset_restrict_timestamp(const TSequenceSet *ss, TimestampTz t, bool atfunc)
Restrict a temporal sequence set to (the complement of) a timestamp.
Definition: tsequenceset.c:1772
TInstant * tinstant_restrict_timestamp(const TInstant *inst, TimestampTz t, bool atfunc)
Restrict a temporal instant to (the complement of) a timestamp.
Definition: tinstant.c:823
TSequenceSet * tnumberseqset_restrict_span(const TSequenceSet *ss, const Span *span, bool atfunc)
Restrict a temporal number to a span of base values.
Definition: tsequenceset.c:1690
TSequence * tpointdiscseq_restrict_geometry(const TSequence *seq, const GSERIALIZED *gs, bool atfunc)
Restrict a temporal point discrete sequence to (the complement of) a geometry.
Definition: tpoint_spatialfuncs.c:3584
TSequence * tpointseq_cumulative_length(const TSequence *seq, double prevlength)
Return the cumulative length traversed by a temporal point.
Definition: tpoint_spatialfuncs.c:2257
STBox * tpointseq_stboxes(const TSequence *seq, int *count)
Return an array of spatiotemporal boxes from the segments of a temporal sequence point.
Definition: tpoint_boxops.c:337
GSERIALIZED * tpointseqset_trajectory(const TSequenceSet *ss)
Return the trajectory of a temporal point with sequence set type.
Definition: tpoint_spatialfuncs.c:1708
double tpointseq_length(const TSequence *seq)
Return the length traversed by a temporal sequence point.
Definition: tpoint_spatialfuncs.c:2193
int tpointseqset_srid(const TSequenceSet *ss)
Return the SRID of a temporal sequence set point.
Definition: tpoint_spatialfuncs.c:1831
TSequenceSet * tpointseqset_cumulative_length(const TSequenceSet *ss)
Return the cumulative length traversed by a temporal point.
Definition: tpoint_spatialfuncs.c:2299
GSERIALIZED * tpointcontseq_trajectory(const TSequence *seq)
Return the trajectory of a temporal sequence point.
Definition: tpoint_spatialfuncs.c:1671
TSequenceSet * tpointseqset_speed(const TSequenceSet *ss)
Return the speed of a temporal point.
Definition: tpoint_spatialfuncs.c:2385
TSequenceSet * tpointseq_azimuth(const TSequence *seq)
Return the temporal azimuth of a temporal geometry point.
Definition: tpoint_spatialfuncs.c:2639
int tpointinst_srid(const TInstant *inst)
Return the SRID of a temporal instant point.
Definition: tpoint_spatialfuncs.c:1807
double tpointseqset_length(const TSequenceSet *ss)
Return the length traversed by a temporal sequence set point.
Definition: tpoint_spatialfuncs.c:2220
GSERIALIZED * tpointdiscseq_trajectory(const TSequence *seq)
Compute the trajectory of a temporal discrete sequence point.
Definition: tpoint_spatialfuncs.c:1639
bool tpointseq_is_simple(const TSequence *seq)
Return true if a temporal point does not self-intersect.
Definition: tpoint_spatialfuncs.c:3290
bool tpointseqset_is_simple(const TSequenceSet *ss)
Return true if a temporal point does not self-intersect.
Definition: tpoint_spatialfuncs.c:3311
int tpointseq_srid(const TSequence *seq)
Return the SRID of a temporal sequence point.
Definition: tpoint_spatialfuncs.c:1819
TSequenceSet * tpointseqset_azimuth(const TSequenceSet *ss)
Return the temporal azimuth of a temporal geometry point.
Definition: tpoint_spatialfuncs.c:2653
TSequence * tpointseq_speed(const TSequence *seq)
Return the speed of a temporal point.
Definition: tpoint_spatialfuncs.c:2345
STBox * tpointseqset_stboxes(const TSequenceSet *ss, int *count)
Return an array of spatiotemporal boxes from the segments of a temporal sequence set point.
Definition: tpoint_boxops.c:355
TSequence * tpointseq_set_srid(const TSequence *seq, int32 srid)
Set the SRID of a temporal sequence point.
Definition: tpoint_spatialfuncs.c:1878
TInstant * tpointinst_set_srid(const TInstant *inst, int32 srid)
Set the SRID of a temporal instant point.
Definition: tpoint_spatialfuncs.c:1864
TSequenceSet * tgeompointseqset_tgeogpointseqset(const TSequenceSet *ss, bool oper)
Convert a temporal point from/to a geometry/geography point.
Definition: tpoint_spatialfuncs.c:2031
TSequenceSet * tpointseqset_set_srid(const TSequenceSet *ss, int32 srid)
Set the SRID of a temporal sequence set point.
Definition: tpoint_spatialfuncs.c:1900
TInstant * tgeompointinst_tgeogpointinst(const TInstant *inst, bool oper)
Convert a temporal point from/to a geometry/geography point.
Definition: tpoint_spatialfuncs.c:1963
TSequence * tgeompointseq_tgeogpointseq(const TSequence *seq, bool oper)
Convert a temporal point from/to a geometry/geography point.
Definition: tpoint_spatialfuncs.c:1984
TSequence ** tpointseq_make_simple(const TSequence *seq, int *count)
Split a temporal sequence point into an array of non self-intersecting fragments.
Definition: tpoint_spatialfuncs.c:3452
TSequence ** tpointseqset_make_simple(const TSequenceSet *ss, int *count)
Split a temporal sequence set point into an array of non self-intersecting fragments.
Definition: tpoint_spatialfuncs.c:3496
Temporal * tsequence_merge_array(const TSequence **sequences, int count)
Merge an array of temporal sequences.
Definition: tsequence.c:1692
TSequenceSet * tdiscseq_to_tsequenceset(const TSequence *seq, interpType interp)
Return a temporal discrete sequence transformed into a temporal sequence set.
Definition: tsequenceset.c:1304
TSequenceSet * tsequenceset_delete_timestamp(const TSequenceSet *ss, TimestampTz t)
Delete a timestamp from a temporal sequence set.
Definition: tsequenceset.c:2899
Temporal * tsequence_merge(const TSequence *seq1, const TSequence *seq2)
Merge two temporal sequences.
Definition: tsequence.c:1546
TSequenceSet * tsequenceset_append_tinstant(TSequenceSet *ss, const TInstant *inst, bool expand)
Append an instant to a temporal sequence set.
Definition: tsequenceset.c:2087
TSequenceSet * tsequenceset_append_tsequence(TSequenceSet *ss, const TSequence *seq, bool expand)
Append a sequence to a temporal sequence set.
Definition: tsequenceset.c:2187
TSequenceSet * tsequenceset_merge(const TSequenceSet *ss1, const TSequenceSet *ss2)
Merge two temporal sequence sets.
Definition: tsequenceset.c:2304
TSequence * tsequence_to_tdiscseq(const TSequence *seq)
Return a temporal sequence transformed into discrete interpolation.
Definition: tsequence.c:1815
TSequence * tsequence_to_tcontseq(const TSequence *seq)
Return a temporal sequence transformed to continuous interpolation.
Definition: tsequence.c:1835
TSequenceSet * tsequenceset_delete_periodset(const TSequenceSet *ss, const SpanSet *ps)
Delete a period from a temporal sequence set.
Definition: tsequenceset.c:3001
TSequenceSet * tsequenceset_merge_array(const TSequenceSet **seqsets, int count)
Merge an array of temporal sequence sets.
Definition: tsequenceset.c:2320
TSequence * tcontseq_delete_period(const TSequence *seq, const Span *p)
Delete a period from a continuos temporal sequence.
Definition: tsequence.c:5487
TInstant * tsequence_to_tinstant(const TSequence *seq)
Return a temporal sequence transformed into a temporal instant.
Definition: tinstant.c:570
TInstant * tinstant_shift(const TInstant *inst, const Interval *interval)
Return a temporal instant shifted by an interval.
Definition: tinstant.c:599
Temporal * tsequence_append_tinstant(TSequence *seq, const TInstant *inst, bool expand)
Append an instant to a temporal sequence.
Definition: tsequence.c:1349
Temporal * tinstant_merge_array(const TInstant **instants, int count)
Merge an array of temporal instants.
Definition: tinstant.c:930
TSequence * tinstant_to_tsequence(const TInstant *inst, interpType interp)
Return a temporal instant transformed into a temporal sequence.
Definition: tsequence.c:1802
TSequenceSet * tstepseqset_to_linear(const TSequenceSet *ss)
Return a temporal sequence set with continuous base type from step to linear interpolation.
Definition: tsequenceset.c:1374
TSequenceSet * tstepseq_to_linear(const TSequence *seq)
Return a temporal sequence with continuous base type transformed from step to linear interpolation.
Definition: tsequence.c:1925
TInstant * tsequenceset_to_tinstant(const TSequenceSet *ts)
Return a temporal sequence set transformed into a temporal instant.
Definition: tinstant.c:584
Temporal * tdiscseq_merge_array(const TSequence **sequences, int count)
Merge an array of temporal discrete sequences.
Definition: tsequence.c:1567
TSequenceSet * tinstant_to_tsequenceset(const TInstant *inst, interpType interp)
Return a temporal instant transformed into a temporal sequence set.
Definition: tsequenceset.c:1288
TSequence * tcontseq_delete_timestamp(const TSequence *seq, TimestampTz t)
Delete a timestamp from a continuous temporal sequence.
Definition: tsequence.c:5350
TSequence * tcontseq_delete_timestampset(const TSequence *seq, const Set *ts)
Delete a timestamp from a continuous temporal sequence.
Definition: tsequence.c:5404
TSequenceSet * tsequenceset_delete_period(const TSequenceSet *ss, const Span *p)
Delete a period from a temporal sequence set.
Definition: tsequenceset.c:2987
Temporal * tinstant_merge(const TInstant *inst1, const TInstant *inst2)
Merge two temporal instants.
Definition: tinstant.c:915
TSequenceSet * tsequenceset_delete_timestampset(const TSequenceSet *ss, const Set *ts)
Restrict a temporal sequence set to (the complement of) a timestamp set.
Definition: tsequenceset.c:2939
TSequence * tsequenceset_to_tsequence(const TSequenceSet *ss)
Return a temporal sequence set transformed into a temporal sequence value.
Definition: tsequence.c:1856
TSequence * tsequence_compact(const TSequence *seq)
Return a copy of a temporal sequence with no additional free space.
Definition: tsequence.c:1773
TSequenceSet * tsequenceset_shift_tscale(const TSequenceSet *ss, const Interval *start, const Interval *duration)
Return a temporal sequence set shifted and/or scaled by the intervals.
Definition: tsequenceset.c:1398
Temporal * tsequence_append_tsequence(TSequence *seq1, const TSequence *seq2, bool expand)
Append a sequence to a temporal sequence.
Definition: tsequence.c:1479
TSequence * tsequence_shift_tscale(const TSequence *seq, const Interval *start, const Interval *duration)
Return a temporal sequence shifted and/or scaled by the intervals.
Definition: tsequence.c:1939
TSequence * tsequenceset_to_tdiscseq(const TSequenceSet *ts)
Return a temporal sequence set transformed into discrete interpolation.
Definition: tsequenceset.c:1328
TSequenceSet * tsequence_to_tsequenceset(const TSequence *seq)
Return a temporal sequence transformed into a temporal sequence set.
Definition: tsequenceset.c:1356
Datum * set_values(const Set *s)
Return the array of values of a set.
Definition: set.c:988
bool set_value_n(const Set *s, int n, Datum *result)
Return the n-th value of a set.
Definition: set.c:891
Datum set_start_value(const Set *s)
Return the start value of a set.
Definition: set.c:754
Datum set_end_value(const Set *s)
Return the end value of a set.
Definition: set.c:820
Set * set_copy(const Set *s)
Return a copy of a set.
Definition: set.c:589
double distance_set_set(const Set *s1, const Set *s2)
Return the distance between two sets.
Definition: set_ops.c:1474
bool right_set_set(const Set *s1, const Set *s2)
Return true if the first set is strictly to the right of the second one.
Definition: set_ops.c:690
bool overright_set_set(const Set *s1, const Set *s2)
Return true if the first set does not extend to the left of the second one.
Definition: set_ops.c:986
bool left_set_set(const Set *s1, const Set *s2)
Return true if the first set is strictly to the left of a second one.
Definition: set_ops.c:537
bool overleft_set_set(const Set *s1, const Set *s2)
Return true if the first set does not extend to the right of the second one.
Definition: set_ops.c:843
bool overlaps_set_set(const Set *s1, const Set *s2)
Return true if the sets overlap.
Definition: set_ops.c:368
bool contains_set_set(const Set *s1, const Set *s2)
Return true if the first set contains the second one.
Definition: set_ops.c:251
bool contained_set_set(const Set *s1, const Set *s2)
Return true if a set is contained by the second one.
Definition: set_ops.c:352
bool tpoint_always_eq(const Temporal *temp, Datum value)
Return true if a temporal point is always equal to a point.
Definition: tpoint_spatialfuncs.c:887
meosType
Enumeration that defines the built-in and temporal types used in MobilityDB.
Definition: meos_catalog.h:53
interpType
Enumeration that defines the interpolation types used in MobilityDB.
Definition: meos.h:124
TSequence * tdiscseq_to_tsequence(const TSequence *seq, interpType interp)
Temporal * tgt_temporal_base(const Temporal *temp, Datum base, meosType basetype)
Temporal * tdiscseq_merge(const TSequence *is1, const TSequence *is2)
Temporal ** temporal_time_split1(const Temporal *temp, TimestampTz start, TimestampTz end, int64 tunits, TimestampTz torigin, int count, TimestampTz **buckets, int *newcount)
Split a temporal value into fragments with respect to period buckets.
Definition: temporal_tile.c:874
bool intersection_value_value(Datum d1, Datum d2, meosType basetype, Datum *result)
bool overright_number_tnumber(Datum number, meosType basetype, const Temporal *tnumber)
bool overlaps_number_tnumber(Datum number, meosType basetype, const Temporal *tnumber)
int tdiscseq_cmp(const TSequence *is1, const TSequence *is2)
bool adjacent_number_tnumber(Datum number, meosType basetype, const Temporal *tnumber)
bool tdiscseq_eq(const TSequence *is1, const TSequence *is2)
TSequence * tcontseq_at_period(const TSequence *seq, const Span *p)
Restrict a continuous temporal sequence to a period.
Definition: tsequence.c:4985
bool tpointdiscseq_is_simple(const TSequence *seq)
double distance_value_set(Datum d, meosType basetype, const Set *s)
void tsequence_expand_bbox(TSequence *seq, const TInstant *inst)
Expand the bounding box of a temporal sequence with an additional instant.
Definition: temporal_boxops.c:341
bool left_tnumber_number(const Temporal *tnumber, Datum number, meosType basetype)
void tstzset_set_period(const Set *ts, Span *p)
Temporal * tne_base_temporal(Datum base, meosType basetype, const Temporal *temp)
bool left_number_tnumber(Datum number, meosType basetype, const Temporal *tnumber)
size_t * tsequence_offsets_ptr(const TSequence *seq)
Return a pointer to the offsets array of a temporal sequence.
Definition: tsequence.c:764
bool right_number_tnumber(Datum number, meosType basetype, const Temporal *tnumber)
size_t * set_offsets_ptr(const Set *s)
Return a pointer to the offsets array of a set.
Definition: set.c:349
Set * union_value_value(Datum d1, Datum d2, meosType basetype)
uint32 tdiscseq_hash(const TSequence *seq)
bool right_tnumber_number(const Temporal *tnumber, Datum number, meosType basetype)
Temporal * tge_temporal_base(const Temporal *temp, Datum base, meosType basetype)
bool minus_value_value(Datum d1, Datum d2, meosType basetype, Datum *result)
Temporal * tle_base_temporal(Datum base, meosType basetype, const Temporal *temp)
TSequence * tnumberseq_derivative(const TSequence *seq)
Temporal * teq_base_temporal(Datum base, meosType basetype, const Temporal *temp)
bool overlaps_value_spanset(Datum d, meosType basetype, const SpanSet *ss)
Temporal ** tnumber_value_split1(const Temporal *temp, Datum start_bucket, Datum size, int count, Datum **buckets, int *newcount)
Split a temporal number into an array of fragments according to value buckets.
Definition: temporal_tile.c:1383
TSequence * tdiscseq_in(const char *str, meosType temptype)
bool contains_number_tnumber(Datum number, meosType basetype, const Temporal *tnumber)
bool overright_tnumber_number(const Temporal *tnumber, Datum number, meosType basetype)
void geoarr_set_stbox(const Datum *values, int count, STBox *box)
Set the spatiotemporal box from an array of geometries/geographies.
Definition: stbox.c:509
bool overleft_number_tnumber(Datum number, meosType basetype, const Temporal *tnumber)
void set_expand_bbox(Datum d, meosType basetype, void *box)
Set a bounding box from an array of set values.
Definition: set.c:311
bool overlaps_value_span(Datum d, meosType basetype, const Span *s)
bool adjacent_tnumber_number(const Temporal *tnumber, Datum number, meosType basetype)
Temporal * teq_temporal_base(const Temporal *temp, Datum base, meosType basetype)
void * set_bbox_ptr(const Set *s)
Return a pointer to the bounding box of a temporal sequence.
Definition: set.c:340
bool contained_number_tnumber(Datum number, meosType basetype, const Temporal *tnumber)
Temporal * tne_temporal_base(const Temporal *temp, Datum base, meosType basetype)
int tstepseq_to_linear1(const TSequence *seq, TSequence **result)
Return a temporal sequence with continuous base type transformed from step to linear interpolation.
Definition: tsequence.c:1873
bool same_number_tnumber(Datum number, meosType basetype, const Temporal *tnumber)
bool contains_tnumber_number(const Temporal *tnumber, Datum number, meosType basetype)
bool same_tnumber_number(const Temporal *tnumber, Datum number, meosType basetype)
TSequence * tcontseq_delete_periodset(const TSequence *seq, const SpanSet *ps)
Delete a period set from a continuous temporal sequence.
Definition: tsequence.c:5536
TSequenceSet * tnumberseqset_derivative(const TSequenceSet *ts)
bool overlaps_span_value(const Span *s, Datum d, meosType basetype)
Temporal * tge_base_temporal(Datum base, meosType basetype, const Temporal *temp)
bool contained_tnumber_number(const Temporal *tnumber, Datum number, meosType basetype)
Temporal * tgt_base_temporal(Datum base, meosType basetype, const Temporal *temp)
Interval * tsequenceset_timespan(const TSequenceSet *ss)
Span * tfloatseqset_span(const TSequenceSet *ss)
void tsequenceset_expand_bbox(TSequenceSet *ss, const TSequence *seq)
Expand the bounding box of a temporal sequence set with an additional sequence.
Definition: temporal_boxops.c:371
int minus_span_span1(const Span *s1, const Span *s2, Span **result)
Return the difference of the two spans.
Definition: span_ops.c:1297
bool overleft_tnumber_number(const Temporal *tnumber, Datum number, meosType basetype)
bool overlaps_tnumber_number(const Temporal *tnumber, Datum number, meosType basetype)
Temporal * tcontseq_insert(const TSequence *seq1, const TSequence *seq2)
Insert the second temporal value into the first one.
Definition: tsequence.c:5276
Temporal * tle_temporal_base(const Temporal *temp, Datum base, meosType basetype)
bool overlaps_spanset_value(const SpanSet *ss, Datum d, meosType basetype)
TSequenceSet * tsequenceset_insert(const TSequenceSet *ss1, const TSequenceSet *ss2)
Insert the second temporal value into the first one.
Definition: tsequenceset.c:2721
int minus_span_value1(const Span *s, Datum d, meosType basetype, Span **result)
Return the difference of a span and a value.
Definition: span_ops.c:1185
Temporal * tlt_temporal_base(const Temporal *temp, Datum base, meosType basetype)
Temporal * tlt_base_temporal(Datum base, meosType basetype, const Temporal *temp)
TInstant * tcontseq_at_timestamp(const TSequence *seq, TimestampTz t)
Restrict a temporal continuous sequence to a timestamp.
Definition: tsequence.c:4639
set(MOBILITYDB_MODULE_PATHNAME "$libdir/lib${MOBILITYDB_LIB_NAME}") set(extschema "@extschema@") configure_file(mobilitydb.control $
Definition: CMakeLists.txt:1
int64 TimestampTz
Definition: pg_ext_defs.in.h:19
unsigned int uint32
Definition: pg_ext_defs.in.h:13
uintptr_t Datum
Definition: pg_ext_defs.in.h:4
signed int int32
Definition: pg_ext_defs.in.h:8
unsigned long int uint64
Definition: pg_ext_defs.in.h:14
long int int64
Definition: pg_ext_defs.in.h:9
Definition: postgis_ext_defs.in.h:34
Definition: postgis_ext_defs.in.h:48
Definition: postgis_ext_defs.in.h:139
Definition: pg_ext_defs.in.h:24
Structure to represent spatiotemporal boxes.
Definition: meos.h:107
API of the Mobility Engine Open Source (MEOS) library.
Definition: meos.h:56
Structure to represent span sets.
Definition: meos.h:83
Structure to represent spans (a.k.a.
Definition: meos.h:70
Structure to represent temporal boxes.
Definition: meos.h:97
Structure to represent temporal values of instant subtype.
Definition: meos.h:148
Structure to represent temporal values of sequence set subtype.
Definition: meos.h:186
Structure to represent temporal values of instant set or sequence subtype.
Definition: meos.h:165
Structure to represent the common structure of temporal values of any temporal subtype.
Definition: meos.h:136