Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commite89d139

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 parente1d9cf0 commite89d139

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
externboolintervalov(TimeIntervali1,TimeIntervali2);
254254
externAbsoluteTimeintervalstart(TimeIntervali);
255255
externAbsoluteTimeintervalend(TimeIntervali);
256-
externintisreltime(char*timestring,int*sign,long*quantity,int*unitnr);
256+
externintisreltime(char*timestring);
257257
externtext*timeofday(void);
258258

259259
/* dt.c */
@@ -474,6 +474,7 @@ extern bool text_lt(struct varlena *arg1, struct varlena *arg2);
474474
externbooltext_le(structvarlena*arg1,structvarlena*arg2);
475475
externbooltext_gt(structvarlena*arg1,structvarlena*arg2);
476476
externbooltext_ge(structvarlena*arg1,structvarlena*arg2);
477+
externint32textpos(text*t1,text*t2);
477478
externint32byteaGetSize(structvarlena*v);
478479
externint32byteaGetByte(structvarlena*v,int32n);
479480
externint32byteaGetBit(structvarlena*v,int32n);

‎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/2914:08:21 momjian Exp $
11+
* $Id: dt.h,v 1.15 1997/07/2916:16:12 thomas Exp $
1212
*
1313
*-------------------------------------------------------------------------
1414
*/
@@ -99,7 +99,7 @@ typedef struct {
9999
#defineMONTH1
100100
#defineYEAR2
101101
#defineDAY3
102-
#defineTIME4
102+
#defineTIMES4/* not used - thomas 1997-07-14 */
103103
#defineTZ5
104104
#defineDTZ6
105105
#defineDTZMOD7

‎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
#defineFPge(A,B)((B) - (A) <= EPSILON)
4040
#else
4141
#defineFPzero(A)(A == 0)
42+
#defineFPnzero(A)(A != 0)
4243
#defineFPeq(A,B)(A == B)
44+
#defineFPne(A,B)(A != B)
4345
#defineFPlt(A,B)(A < B)
4446
#defineFPle(A,B)(A <= B)
4547
#defineFPgt(A,B)(A > B)
@@ -98,6 +100,7 @@ typedefstruct {
98100
*-------------------------------------------------------------------*/
99101
typedefstruct {
100102
doubleA,B,C;
103+
101104
doublem;
102105
}LINE;
103106

@@ -133,11 +136,78 @@ typedef struct {
133136
/*
134137
* in geo_ops.h
135138
*/
139+
140+
/* public point routines */
141+
externPoint*point_in(char*str);
142+
externchar*point_out(Point*pt);
143+
externPoint*point_construct(doublex,doubley);
144+
externPoint*point_copy(Point*pt);
145+
externboolpoint_left(Point*pt1,Point*pt2);
146+
externboolpoint_right(Point*pt1,Point*pt2);
147+
externboolpoint_above(Point*pt1,Point*pt2);
148+
externboolpoint_below(Point*pt1,Point*pt2);
149+
externboolpoint_vert(Point*pt1,Point*pt2);
150+
externboolpoint_horiz(Point*pt1,Point*pt2);
151+
externboolpoint_eq(Point*pt1,Point*pt2);
152+
externint32pointdist(Point*p1,Point*p2);
153+
externdouble*point_distance(Point*pt1,Point*pt2);
154+
externdouble*point_slope(Point*pt1,Point*pt2);
155+
156+
/* private routines */
157+
externdoublepoint_dt(Point*pt1,Point*pt2);
158+
externdoublepoint_sl(Point*pt1,Point*pt2);
159+
160+
externPoint*point(float8*x,float8*y);
161+
externPoint*point_add(Point*p1,Point*p2);
162+
externPoint*point_sub(Point*p1,Point*p2);
163+
externPoint*point_mul(Point*p1,Point*p2);
164+
externPoint*point_div(Point*p1,Point*p2);
165+
166+
/* public lseg routines */
167+
externLSEG*lseg_in(char*str);
168+
externchar*lseg_out(LSEG*ls);
169+
externboollseg_intersect(LSEG*l1,LSEG*l2);
170+
externboollseg_parallel(LSEG*l1,LSEG*l2);
171+
externboollseg_perp(LSEG*l1,LSEG*l2);
172+
externboollseg_vertical(LSEG*lseg);
173+
externboollseg_horizontal(LSEG*lseg);
174+
externboollseg_eq(LSEG*l1,LSEG*l2);
175+
externdouble*lseg_distance(LSEG*l1,LSEG*l2);
176+
externPoint*lseg_center(LSEG*lseg);
177+
externPoint*lseg_interpt(LSEG*l1,LSEG*l2);
178+
externdouble*dist_pl(Point*pt,LINE*line);
179+
externdouble*dist_ps(Point*pt,LSEG*lseg);
180+
externdouble*dist_ppath(Point*pt,PATH*path);
181+
externdouble*dist_pb(Point*pt,BOX*box);
182+
externdouble*dist_sl(LSEG*lseg,LINE*line);
183+
externdouble*dist_sb(LSEG*lseg,BOX*box);
184+
externdouble*dist_lb(LINE*line,BOX*box);
185+
externPoint*interpt_sl(LSEG*lseg,LINE*line);
186+
externPoint*close_pl(Point*pt,LINE*line);
187+
externPoint*close_ps(Point*pt,LSEG*lseg);
188+
externPoint*close_pb(Point*pt,BOX*box);
189+
externPoint*close_sl(LSEG*lseg,LINE*line);
190+
externPoint*close_sb(LSEG*lseg,BOX*box);
191+
externPoint*close_lb(LINE*line,BOX*box);
192+
externboolon_pl(Point*pt,LINE*line);
193+
externboolon_ps(Point*pt,LSEG*lseg);
194+
externboolon_pb(Point*pt,BOX*box);
195+
externboolon_ppath(Point*pt,PATH*path);
196+
externboolon_sl(LSEG*lseg,LINE*line);
197+
externboolon_sb(LSEG*lseg,BOX*box);
198+
externboolinter_sl(LSEG*lseg,LINE*line);
199+
externboolinter_sb(LSEG*lseg,BOX*box);
200+
externboolinter_lb(LINE*line,BOX*box);
201+
202+
/* private routines */
203+
externLSEG*lseg_construct(Point*pt1,Point*pt2);
204+
externvoidstatlseg_construct(LSEG*lseg,Point*pt1,Point*pt2);
205+
externdoublelseg_dt(LSEG*l1,LSEG*l2);
206+
externvoidmake_bound_box(POLYGON*poly);
207+
208+
/* public box routines */
136209
externBOX*box_in(char*str);
137210
externchar*box_out(BOX*box);
138-
externBOX*box_construct(doublex1,doublex2,doubley1,doubley2);
139-
externBOX*box_fill(BOX*result,doublex1,doublex2,doubley1,doubley2);
140-
externBOX*box_copy(BOX*box);
141211
externboolbox_same(BOX*box1,BOX*box2);
142212
externboolbox_overlap(BOX*box1,BOX*box2);
143213
externboolbox_overleft(BOX*box1,BOX*box2);
@@ -155,16 +225,20 @@ extern bool box_le(BOX *box1, BOX *box2);
155225
externboolbox_ge(BOX*box1,BOX*box2);
156226
externPoint*box_center(BOX*box);
157227
externdouble*box_area(BOX*box);
158-
externdouble*box_length(BOX*box);
228+
externdouble*box_width(BOX*box);
159229
externdouble*box_height(BOX*box);
160230
externdouble*box_distance(BOX*box1,BOX*box2);
161231
externPoint*box_center(BOX*box);
162232
externBOX*box_intersect(BOX*box1,BOX*box2);
163233
externLSEG*box_diagonal(BOX*box);
164234

165235
/* private routines */
236+
externBOX*box_construct(doublex1,doublex2,doubley1,doubley2);
237+
externBOX*box_fill(BOX*result,doublex1,doublex2,doubley1,doubley2);
238+
externBOX*box_copy(BOX*box);
239+
166240
externdoublebox_ar(BOX*box);
167-
externdoublebox_ln(BOX*box);
241+
externdoublebox_wd(BOX*box);
168242
externdoublebox_ht(BOX*box);
169243
externdoublebox_dt(BOX*box1,BOX*box2);
170244

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

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

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

289+
externPoint*path_center(PATH*path);
211290
externPOLYGON*path_poly(PATH*path);
291+
212292
externPATH*upgradepath(PATH*path);
213293
externboolisoldpath(PATH*path);
214294

215295
/* private routines */
216296
externdoublepath_ln(PATH*path);
217-
218-
/* public point routines */
219-
externPoint*point_in(char*str);
220-
externchar*point_out(Point*pt);
221-
externPoint*point_construct(doublex,doubley);
222-
externPoint*point_copy(Point*pt);
223-
externboolpoint_left(Point*pt1,Point*pt2);
224-
externboolpoint_right(Point*pt1,Point*pt2);
225-
externboolpoint_above(Point*pt1,Point*pt2);
226-
externboolpoint_below(Point*pt1,Point*pt2);
227-
externboolpoint_vert(Point*pt1,Point*pt2);
228-
externboolpoint_horiz(Point*pt1,Point*pt2);
229-
externboolpoint_eq(Point*pt1,Point*pt2);
230-
externint32pointdist(Point*p1,Point*p2);
231-
externdouble*point_distance(Point*pt1,Point*pt2);
232-
externdouble*point_slope(Point*pt1,Point*pt2);
233-
234-
/* private routines */
235-
externdoublepoint_dt(Point*pt1,Point*pt2);
236-
externdoublepoint_sl(Point*pt1,Point*pt2);
237-
238-
externPoint*point(float8*x,float8*y);
239-
externPoint*point_add(Point*p1,Point*p2);
240-
externPoint*point_sub(Point*p1,Point*p2);
241-
externPoint*point_mul(Point*p1,Point*p2);
242-
externPoint*point_div(Point*p1,Point*p2);
243-
244-
/* public lseg routines */
245-
externLSEG*lseg_in(char*str);
246-
externchar*lseg_out(LSEG*ls);
247-
externboollseg_intersect(LSEG*l1,LSEG*l2);
248-
externboollseg_parallel(LSEG*l1,LSEG*l2);
249-
externboollseg_perp(LSEG*l1,LSEG*l2);
250-
externboollseg_vertical(LSEG*lseg);
251-
externboollseg_horizontal(LSEG*lseg);
252-
externboollseg_eq(LSEG*l1,LSEG*l2);
253-
externdouble*lseg_distance(LSEG*l1,LSEG*l2);
254-
externPoint*lseg_interpt(LSEG*l1,LSEG*l2);
255-
externdouble*dist_pl(Point*pt,LINE*line);
256-
externdouble*dist_ps(Point*pt,LSEG*lseg);
257-
externdouble*dist_ppth(Point*pt,PATH*path);
258-
externdouble*dist_pb(Point*pt,BOX*box);
259-
externdouble*dist_sl(LSEG*lseg,LINE*line);
260-
externdouble*dist_sb(LSEG*lseg,BOX*box);
261-
externdouble*dist_lb(LINE*line,BOX*box);
262-
externPoint*interpt_sl(LSEG*lseg,LINE*line);
263-
externPoint*close_pl(Point*pt,LINE*line);
264-
externPoint*close_ps(Point*pt,LSEG*lseg);
265-
externPoint*close_pb(Point*pt,BOX*box);
266-
externPoint*close_sl(LSEG*lseg,LINE*line);
267-
externPoint*close_sb(LSEG*lseg,BOX*box);
268-
externPoint*close_lb(LINE*line,BOX*box);
269-
externboolon_pl(Point*pt,LINE*line);
270-
externboolon_ps(Point*pt,LSEG*lseg);
271-
externboolon_pb(Point*pt,BOX*box);
272-
externboolon_ppath(Point*pt,PATH*path);
273-
externboolon_sl(LSEG*lseg,LINE*line);
274-
externboolon_sb(LSEG*lseg,BOX*box);
275-
externboolinter_sl(LSEG*lseg,LINE*line);
276-
externboolinter_sb(LSEG*lseg,BOX*box);
277-
externboolinter_lb(LINE*line,BOX*box);
278-
279-
/* private routines */
280-
externLSEG*lseg_construct(Point*pt1,Point*pt2);
281-
externvoidstatlseg_construct(LSEG*lseg,Point*pt1,Point*pt2);
282-
externdoublelseg_dt(LSEG*l1,LSEG*l2);
283-
externvoidmake_bound_box(POLYGON*poly);
297+
externboolplist_same(intnpts,Pointp1[],Pointp2[]);
284298

285299
/* public polygon routines */
286300
externPOLYGON*poly_in(char*s);
@@ -293,14 +307,21 @@ extern bool poly_same(POLYGON *polya, POLYGON *polyb);
293307
externboolpoly_overlap(POLYGON*polya,POLYGON*polyb);
294308
externboolpoly_contain(POLYGON*polya,POLYGON*polyb);
295309
externboolpoly_contained(POLYGON*polya,POLYGON*polyb);
310+
externboolpoly_contain_pt(POLYGON*poly,Point*p);
311+
externboolpt_contained_poly(Point*p,POLYGON*poly);
296312

313+
externdouble*poly_distance(POLYGON*polya,POLYGON*polyb);
297314
externint4poly_npoints(POLYGON*poly);
315+
externPoint*poly_center(POLYGON*poly);
298316
externBOX*poly_box(POLYGON*poly);
299317
externPATH*poly_path(POLYGON*poly);
300318
externPOLYGON*box_poly(BOX*box);
319+
301320
externPOLYGON*upgradepoly(POLYGON*poly);
302321
externPOLYGON*revertpoly(POLYGON*poly);
303322

323+
/* private polygon routines */
324+
304325
/* public circle routines */
305326
externCIRCLE*circle_in(char*str);
306327
externchar*circle_out(CIRCLE*circle);
@@ -321,6 +342,8 @@ extern bool circle_lt(CIRCLE *circle1, CIRCLE *circle2);
321342
externboolcircle_gt(CIRCLE*circle1,CIRCLE*circle2);
322343
externboolcircle_le(CIRCLE*circle1,CIRCLE*circle2);
323344
externboolcircle_ge(CIRCLE*circle1,CIRCLE*circle2);
345+
externboolcircle_contain_pt(CIRCLE*circle,Point*point);
346+
externboolpt_contained_circle(Point*point,CIRCLE*circle);
324347
externCIRCLE*circle_add_pt(CIRCLE*circle,Point*point);
325348
externCIRCLE*circle_sub_pt(CIRCLE*circle,Point*point);
326349
externCIRCLE*circle_mul_pt(CIRCLE*circle,Point*point);
@@ -330,8 +353,11 @@ extern double *circle_diameter(CIRCLE *circle);
330353
externdouble*circle_radius(CIRCLE*circle);
331354
externdouble*circle_distance(CIRCLE*circle1,CIRCLE*circle2);
332355
externdouble*dist_pc(Point*point,CIRCLE*circle);
356+
externdouble*dist_cpoly(CIRCLE*circle,POLYGON*poly);
333357
externPoint*circle_center(CIRCLE*circle);
334358
externCIRCLE*circle(Point*center,float8*radius);
359+
externCIRCLE*box_circle(BOX*box);
360+
externBOX*circle_box(CIRCLE*circle);
335361
externCIRCLE*poly_circle(POLYGON*poly);
336362
externPOLYGON*circle_poly(intnpts,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
#defineEPOCH_ABSTIME((AbsoluteTime) 0)
46-
#defineINVALID_ABSTIME ((AbsoluteTime)0x4FFFFFFE)/* 2147483647 == 2^31 - 1 */
47-
#defineCURRENT_ABSTIME ((AbsoluteTime)0x4FFFFFFD)/* 2147483646 == 2^31 - 2 */
48-
#defineNOEND_ABSTIME((AbsoluteTime)0x4FFFFFFC)/* 2147483645 == 2^31 - 3 */
49-
#defineBIG_ABSTIME((AbsoluteTime)0x4FFFFFFB)/* 2147483644 == 2^31 - 4 */
46+
#defineINVALID_ABSTIME ((AbsoluteTime)0x7FFFFFFE)/* 2147483647 == 2^31 - 1 */
47+
#defineCURRENT_ABSTIME ((AbsoluteTime)0x7FFFFFFD)/* 2147483646 == 2^31 - 2 */
48+
#defineNOEND_ABSTIME((AbsoluteTime)0x7FFFFFFC)/* 2147483645 == 2^31 - 3 */
49+
#defineBIG_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
#defineNOSTART_ABSTIME ((AbsoluteTime) INT_MIN)
6059
#else
61-
/*#define NOSTART_ABSTIME ((AbsoluteTime) 2147483648)*//* - 2^31 */
6260
#defineNOSTART_ABSTIME ((AbsoluteTime) 0x80000001)/* -2147483647 == - 2^31 */
6361
#endif/* aix */
6462

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

6765
#defineAbsoluteTimeIsValid(time) \
6866
((bool) ((time) != INVALID_ABSTIME))

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp