Skip to content

Commit e89d139

Browse files
author
Thomas G. Lockhart
committed
Add new routines.
Change definition for isreltime(). Change some names of #define constants to avoid conflicts with the yacc parser.
1 parent e1d9cf0 commit e89d139

File tree

4 files changed

+110
-85
lines changed

4 files changed

+110
-85
lines changed

src/include/utils/builtins.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
*
77
* Copyright (c) 1994, Regents of the University of California
88
*
9-
* $Id: builtins.h,v 1.19 1997/06/23 15:03:38 thomas Exp $
9+
* $Id: builtins.h,v 1.20 1997/07/29 16:16:10 thomas Exp $
1010
*
1111
* NOTES
1212
* This should normally only be included by fmgr.h.
@@ -253,7 +253,7 @@ extern bool intervalct(TimeInterval i1, TimeInterval i2);
253253
extern bool intervalov(TimeInterval i1, TimeInterval i2);
254254
extern AbsoluteTime intervalstart(TimeInterval i);
255255
extern AbsoluteTime intervalend(TimeInterval i);
256-
extern int isreltime(char *timestring, int *sign, long *quantity, int *unitnr);
256+
extern int isreltime(char *timestring);
257257
extern text *timeofday(void);
258258

259259
/* dt.c */
@@ -474,6 +474,7 @@ extern bool text_lt(struct varlena *arg1, struct varlena *arg2);
474474
extern bool text_le(struct varlena *arg1, struct varlena *arg2);
475475
extern bool text_gt(struct varlena *arg1, struct varlena *arg2);
476476
extern bool text_ge(struct varlena *arg1, struct varlena *arg2);
477+
extern int32 textpos(text* t1, text* t2);
477478
extern int32 byteaGetSize(struct varlena *v);
478479
extern int32 byteaGetByte(struct varlena *v, int32 n);
479480
extern int32 byteaGetBit(struct varlena *v, int32 n);

src/include/utils/dt.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
* Copyright (c) 1994, Regents of the University of California
1010
*
11-
* $Id: dt.h,v 1.14 1997/07/29 14:08:21 momjian Exp $
11+
* $Id: dt.h,v 1.15 1997/07/29 16:16:12 thomas Exp $
1212
*
1313
*-------------------------------------------------------------------------
1414
*/
@@ -99,7 +99,7 @@ typedef struct {
9999
#define MONTH 1
100100
#define YEAR 2
101101
#define DAY 3
102-
#define TIME 4
102+
#define TIMES 4 /* not used - thomas 1997-07-14 */
103103
#define TZ 5
104104
#define DTZ 6
105105
#define DTZMOD 7

src/include/utils/geo_decls.h

Lines changed: 99 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
*
66
* Copyright (c) 1994, Regents of the University of California
77
*
8-
* $Id: geo_decls.h,v 1.5 1997/06/03 14:10:32 thomas Exp $
8+
* $Id: geo_decls.h,v 1.6 1997/07/29 16:16:13 thomas Exp $
99
*
1010
* NOTE
1111
* These routines do *not* use the float types from adt/.
@@ -39,7 +39,9 @@
3939
#define FPge(A,B) ((B) - (A) <= EPSILON)
4040
#else
4141
#define FPzero(A) (A == 0)
42+
#define FPnzero(A) (A != 0)
4243
#define FPeq(A,B) (A == B)
44+
#define FPne(A,B) (A != B)
4345
#define FPlt(A,B) (A < B)
4446
#define FPle(A,B) (A <= B)
4547
#define FPgt(A,B) (A > B)
@@ -98,6 +100,7 @@ typedef struct {
98100
*-------------------------------------------------------------------*/
99101
typedef struct {
100102
double A, B, C;
103+
101104
double m;
102105
} LINE;
103106

@@ -133,11 +136,78 @@ typedef struct {
133136
/*
134137
* in geo_ops.h
135138
*/
139+
140+
/* public point routines */
141+
extern Point *point_in(char *str);
142+
extern char *point_out(Point *pt);
143+
extern Point *point_construct(double x, double y);
144+
extern Point *point_copy(Point *pt);
145+
extern bool point_left(Point *pt1, Point *pt2);
146+
extern bool point_right(Point *pt1, Point *pt2);
147+
extern bool point_above(Point *pt1, Point *pt2);
148+
extern bool point_below(Point *pt1, Point *pt2);
149+
extern bool point_vert(Point *pt1, Point *pt2);
150+
extern bool point_horiz(Point *pt1, Point *pt2);
151+
extern bool point_eq(Point *pt1, Point *pt2);
152+
extern int32 pointdist(Point *p1, Point *p2);
153+
extern double *point_distance(Point *pt1, Point *pt2);
154+
extern double *point_slope(Point *pt1, Point *pt2);
155+
156+
/* private routines */
157+
extern double point_dt(Point *pt1, Point *pt2);
158+
extern double point_sl(Point *pt1, Point *pt2);
159+
160+
extern Point *point(float8 *x, float8 *y);
161+
extern Point *point_add(Point *p1, Point *p2);
162+
extern Point *point_sub(Point *p1, Point *p2);
163+
extern Point *point_mul(Point *p1, Point *p2);
164+
extern Point *point_div(Point *p1, Point *p2);
165+
166+
/* public lseg routines */
167+
extern LSEG *lseg_in(char *str);
168+
extern char *lseg_out(LSEG *ls);
169+
extern bool lseg_intersect(LSEG *l1, LSEG *l2);
170+
extern bool lseg_parallel(LSEG *l1, LSEG *l2);
171+
extern bool lseg_perp(LSEG *l1, LSEG *l2);
172+
extern bool lseg_vertical(LSEG *lseg);
173+
extern bool lseg_horizontal(LSEG *lseg);
174+
extern bool lseg_eq(LSEG *l1, LSEG *l2);
175+
extern double *lseg_distance(LSEG *l1, LSEG *l2);
176+
extern Point *lseg_center(LSEG *lseg);
177+
extern Point *lseg_interpt(LSEG *l1, LSEG *l2);
178+
extern double *dist_pl(Point *pt, LINE *line);
179+
extern double *dist_ps(Point *pt, LSEG *lseg);
180+
extern double *dist_ppath(Point *pt, PATH *path);
181+
extern double *dist_pb(Point *pt, BOX *box);
182+
extern double *dist_sl(LSEG *lseg, LINE *line);
183+
extern double *dist_sb(LSEG *lseg, BOX *box);
184+
extern double *dist_lb(LINE *line, BOX *box);
185+
extern Point *interpt_sl(LSEG *lseg, LINE *line);
186+
extern Point *close_pl(Point *pt, LINE *line);
187+
extern Point *close_ps(Point *pt, LSEG *lseg);
188+
extern Point *close_pb(Point *pt, BOX *box);
189+
extern Point *close_sl(LSEG *lseg, LINE *line);
190+
extern Point *close_sb(LSEG *lseg, BOX *box);
191+
extern Point *close_lb(LINE *line, BOX *box);
192+
extern bool on_pl(Point *pt, LINE *line);
193+
extern bool on_ps(Point *pt, LSEG *lseg);
194+
extern bool on_pb(Point *pt, BOX *box);
195+
extern bool on_ppath(Point *pt, PATH *path);
196+
extern bool on_sl(LSEG *lseg, LINE *line);
197+
extern bool on_sb(LSEG *lseg, BOX *box);
198+
extern bool inter_sl(LSEG *lseg, LINE *line);
199+
extern bool inter_sb(LSEG *lseg, BOX *box);
200+
extern bool inter_lb(LINE *line, BOX *box);
201+
202+
/* private routines */
203+
extern LSEG *lseg_construct(Point *pt1, Point *pt2);
204+
extern void statlseg_construct(LSEG *lseg, Point *pt1, Point *pt2);
205+
extern double lseg_dt(LSEG *l1, LSEG *l2);
206+
extern void make_bound_box(POLYGON *poly);
207+
208+
/* public box routines */
136209
extern BOX *box_in(char *str);
137210
extern char *box_out(BOX *box);
138-
extern BOX *box_construct(double x1, double x2, double y1, double y2);
139-
extern BOX *box_fill(BOX *result, double x1, double x2, double y1, double y2);
140-
extern BOX *box_copy(BOX *box);
141211
extern bool box_same(BOX *box1, BOX *box2);
142212
extern bool box_overlap(BOX *box1, BOX *box2);
143213
extern bool box_overleft(BOX *box1, BOX *box2);
@@ -155,16 +225,20 @@ extern bool box_le(BOX *box1, BOX *box2);
155225
extern bool box_ge(BOX *box1, BOX *box2);
156226
extern Point *box_center(BOX *box);
157227
extern double *box_area(BOX *box);
158-
extern double *box_length(BOX *box);
228+
extern double *box_width(BOX *box);
159229
extern double *box_height(BOX *box);
160230
extern double *box_distance(BOX *box1, BOX *box2);
161231
extern Point *box_center(BOX *box);
162232
extern BOX *box_intersect(BOX *box1, BOX *box2);
163233
extern LSEG *box_diagonal(BOX *box);
164234

165235
/* private routines */
236+
extern BOX *box_construct(double x1, double x2, double y1, double y2);
237+
extern BOX *box_fill(BOX *result, double x1, double x2, double y1, double y2);
238+
extern BOX *box_copy(BOX *box);
239+
166240
extern double box_ar(BOX *box);
167-
extern double box_ln(BOX *box);
241+
extern double box_wd(BOX *box);
168242
extern double box_ht(BOX *box);
169243
extern double box_dt(BOX *box1, BOX *box2);
170244

@@ -174,6 +248,7 @@ extern BOX *box_sub(BOX *box, Point *p);
174248
extern BOX *box_mul(BOX *box, Point *p);
175249
extern BOX *box_div(BOX *box, Point *p);
176250

251+
/* private line routines */
177252
extern LINE *line_construct_pm(Point *pt, double m);
178253
extern LINE *line_construct_pp(Point *pt1, Point *pt2);
179254
extern bool line_intersect(LINE *l1, LINE *l2);
@@ -185,6 +260,7 @@ extern bool line_eq(LINE *l1, LINE *l2);
185260
extern double *line_distance(LINE *l1, LINE *l2);
186261
extern Point *line_interpt(LINE *l1, LINE *l2);
187262

263+
/* public path routines */
188264
extern PATH *path_in(char *str);
189265
extern char *path_out(PATH *path);
190266
extern bool path_n_lt(PATH *p1, PATH *p2);
@@ -207,80 +283,18 @@ extern PATH *path_add_pt(PATH *path, Point *point);
207283
extern PATH *path_sub_pt(PATH *path, Point *point);
208284
extern PATH *path_mul_pt(PATH *path, Point *point);
209285
extern PATH *path_div_pt(PATH *path, Point *point);
286+
extern bool path_contain_pt( PATH *path, Point *p);
287+
extern bool pt_contained_path( Point *p, PATH *path);
210288

289+
extern Point *path_center(PATH *path);
211290
extern POLYGON *path_poly(PATH *path);
291+
212292
extern PATH *upgradepath(PATH *path);
213293
extern bool isoldpath(PATH *path);
214294

215295
/* private routines */
216296
extern double path_ln(PATH *path);
217-
218-
/* public point routines */
219-
extern Point *point_in(char *str);
220-
extern char *point_out(Point *pt);
221-
extern Point *point_construct(double x, double y);
222-
extern Point *point_copy(Point *pt);
223-
extern bool point_left(Point *pt1, Point *pt2);
224-
extern bool point_right(Point *pt1, Point *pt2);
225-
extern bool point_above(Point *pt1, Point *pt2);
226-
extern bool point_below(Point *pt1, Point *pt2);
227-
extern bool point_vert(Point *pt1, Point *pt2);
228-
extern bool point_horiz(Point *pt1, Point *pt2);
229-
extern bool point_eq(Point *pt1, Point *pt2);
230-
extern int32 pointdist(Point *p1, Point *p2);
231-
extern double *point_distance(Point *pt1, Point *pt2);
232-
extern double *point_slope(Point *pt1, Point *pt2);
233-
234-
/* private routines */
235-
extern double point_dt(Point *pt1, Point *pt2);
236-
extern double point_sl(Point *pt1, Point *pt2);
237-
238-
extern Point *point(float8 *x, float8 *y);
239-
extern Point *point_add(Point *p1, Point *p2);
240-
extern Point *point_sub(Point *p1, Point *p2);
241-
extern Point *point_mul(Point *p1, Point *p2);
242-
extern Point *point_div(Point *p1, Point *p2);
243-
244-
/* public lseg routines */
245-
extern LSEG *lseg_in(char *str);
246-
extern char *lseg_out(LSEG *ls);
247-
extern bool lseg_intersect(LSEG *l1, LSEG *l2);
248-
extern bool lseg_parallel(LSEG *l1, LSEG *l2);
249-
extern bool lseg_perp(LSEG *l1, LSEG *l2);
250-
extern bool lseg_vertical(LSEG *lseg);
251-
extern bool lseg_horizontal(LSEG *lseg);
252-
extern bool lseg_eq(LSEG *l1, LSEG *l2);
253-
extern double *lseg_distance(LSEG *l1, LSEG *l2);
254-
extern Point *lseg_interpt(LSEG *l1, LSEG *l2);
255-
extern double *dist_pl(Point *pt, LINE *line);
256-
extern double *dist_ps(Point *pt, LSEG *lseg);
257-
extern double *dist_ppth(Point *pt, PATH *path);
258-
extern double *dist_pb(Point *pt, BOX *box);
259-
extern double *dist_sl(LSEG *lseg, LINE *line);
260-
extern double *dist_sb(LSEG *lseg, BOX *box);
261-
extern double *dist_lb(LINE *line, BOX *box);
262-
extern Point *interpt_sl(LSEG *lseg, LINE *line);
263-
extern Point *close_pl(Point *pt, LINE *line);
264-
extern Point *close_ps(Point *pt, LSEG *lseg);
265-
extern Point *close_pb(Point *pt, BOX *box);
266-
extern Point *close_sl(LSEG *lseg, LINE *line);
267-
extern Point *close_sb(LSEG *lseg, BOX *box);
268-
extern Point *close_lb(LINE *line, BOX *box);
269-
extern bool on_pl(Point *pt, LINE *line);
270-
extern bool on_ps(Point *pt, LSEG *lseg);
271-
extern bool on_pb(Point *pt, BOX *box);
272-
extern bool on_ppath(Point *pt, PATH *path);
273-
extern bool on_sl(LSEG *lseg, LINE *line);
274-
extern bool on_sb(LSEG *lseg, BOX *box);
275-
extern bool inter_sl(LSEG *lseg, LINE *line);
276-
extern bool inter_sb(LSEG *lseg, BOX *box);
277-
extern bool inter_lb(LINE *line, BOX *box);
278-
279-
/* private routines */
280-
extern LSEG *lseg_construct(Point *pt1, Point *pt2);
281-
extern void statlseg_construct(LSEG *lseg, Point *pt1, Point *pt2);
282-
extern double lseg_dt(LSEG *l1, LSEG *l2);
283-
extern void make_bound_box(POLYGON *poly);
297+
extern bool plist_same(int npts, Point p1[], Point p2[]);
284298

285299
/* public polygon routines */
286300
extern POLYGON *poly_in(char *s);
@@ -293,14 +307,21 @@ extern bool poly_same(POLYGON *polya, POLYGON *polyb);
293307
extern bool poly_overlap(POLYGON *polya, POLYGON *polyb);
294308
extern bool poly_contain(POLYGON *polya, POLYGON *polyb);
295309
extern bool poly_contained(POLYGON *polya, POLYGON *polyb);
310+
extern bool poly_contain_pt( POLYGON *poly, Point *p);
311+
extern bool pt_contained_poly( Point *p, POLYGON *poly);
296312

313+
extern double *poly_distance(POLYGON *polya, POLYGON *polyb);
297314
extern int4 poly_npoints(POLYGON *poly);
315+
extern Point *poly_center(POLYGON *poly);
298316
extern BOX *poly_box(POLYGON *poly);
299317
extern PATH *poly_path(POLYGON *poly);
300318
extern POLYGON *box_poly(BOX *box);
319+
301320
extern POLYGON *upgradepoly(POLYGON *poly);
302321
extern POLYGON *revertpoly(POLYGON *poly);
303322

323+
/* private polygon routines */
324+
304325
/* public circle routines */
305326
extern CIRCLE *circle_in(char *str);
306327
extern char *circle_out(CIRCLE *circle);
@@ -321,6 +342,8 @@ extern bool circle_lt(CIRCLE *circle1, CIRCLE *circle2);
321342
extern bool circle_gt(CIRCLE *circle1, CIRCLE *circle2);
322343
extern bool circle_le(CIRCLE *circle1, CIRCLE *circle2);
323344
extern bool circle_ge(CIRCLE *circle1, CIRCLE *circle2);
345+
extern bool circle_contain_pt(CIRCLE *circle, Point *point);
346+
extern bool pt_contained_circle(Point *point, CIRCLE *circle);
324347
extern CIRCLE *circle_add_pt(CIRCLE *circle, Point *point);
325348
extern CIRCLE *circle_sub_pt(CIRCLE *circle, Point *point);
326349
extern CIRCLE *circle_mul_pt(CIRCLE *circle, Point *point);
@@ -330,8 +353,11 @@ extern double *circle_diameter(CIRCLE *circle);
330353
extern double *circle_radius(CIRCLE *circle);
331354
extern double *circle_distance(CIRCLE *circle1, CIRCLE *circle2);
332355
extern double *dist_pc(Point *point, CIRCLE *circle);
356+
extern double *dist_cpoly(CIRCLE *circle, POLYGON *poly);
333357
extern Point *circle_center(CIRCLE *circle);
334358
extern CIRCLE *circle(Point *center, float8 *radius);
359+
extern CIRCLE *box_circle(BOX *box);
360+
extern BOX *circle_box(CIRCLE *circle);
335361
extern CIRCLE *poly_circle(POLYGON *poly);
336362
extern POLYGON *circle_poly(int npts, CIRCLE *circle);
337363

src/include/utils/nabstime.h

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
*
77
* Copyright (c) 1994, Regents of the University of California
88
*
9-
* $Id: nabstime.h,v 1.8 1997/06/23 14:58:51 thomas Exp $
9+
* $Id: nabstime.h,v 1.9 1997/07/29 16:16:14 thomas Exp $
1010
*
1111
*-------------------------------------------------------------------------
1212
*/
@@ -43,10 +43,10 @@ typedef TimeIntervalData *TimeInterval;
4343
* so redefine them explicitly using these bit patterns. - tgl 97/02/24
4444
*/
4545
#define EPOCH_ABSTIME ((AbsoluteTime) 0)
46-
#define INVALID_ABSTIME ((AbsoluteTime) 0x4FFFFFFE) /* 2147483647 == 2^31 - 1 */
47-
#define CURRENT_ABSTIME ((AbsoluteTime) 0x4FFFFFFD) /* 2147483646 == 2^31 - 2 */
48-
#define NOEND_ABSTIME ((AbsoluteTime) 0x4FFFFFFC) /* 2147483645 == 2^31 - 3 */
49-
#define BIG_ABSTIME ((AbsoluteTime) 0x4FFFFFFB) /* 2147483644 == 2^31 - 4 */
46+
#define INVALID_ABSTIME ((AbsoluteTime) 0x7FFFFFFE) /* 2147483647 == 2^31 - 1 */
47+
#define CURRENT_ABSTIME ((AbsoluteTime) 0x7FFFFFFD) /* 2147483646 == 2^31 - 2 */
48+
#define NOEND_ABSTIME ((AbsoluteTime) 0x7FFFFFFC) /* 2147483645 == 2^31 - 3 */
49+
#define BIG_ABSTIME ((AbsoluteTime) 0x7FFFFFFB) /* 2147483644 == 2^31 - 4 */
5050

5151
#if defined(aix)
5252
/*
@@ -55,14 +55,12 @@ typedef TimeIntervalData *TimeInterval;
5555
* these integer constants depending on whether the constant is signed
5656
* or not!
5757
*/
58-
/*#define NOSTART_ABSTIME ((AbsoluteTime) HIBITI) */ /* - 2^31 */
5958
#define NOSTART_ABSTIME ((AbsoluteTime) INT_MIN)
6059
#else
61-
/*#define NOSTART_ABSTIME ((AbsoluteTime) 2147483648)*/ /* - 2^31 */
6260
#define NOSTART_ABSTIME ((AbsoluteTime) 0x80000001) /* -2147483647 == - 2^31 */
6361
#endif /* aix */
6462

65-
#define INVALID_RELTIME ((RelativeTime) 0x4FFFFFFE) /* 2147483647 == 2^31 - 1 */
63+
#define INVALID_RELTIME ((RelativeTime) 0x7FFFFFFE) /* 2147483647 == 2^31 - 1 */
6664

6765
#define AbsoluteTimeIsValid(time) \
6866
((bool) ((time) != INVALID_ABSTIME))

0 commit comments

Comments
 (0)