From 05ace73335ec9c6775229e128aba8bfeee044639 Mon Sep 17 00:00:00 2001 From: Alvaro Herrera Date: Fri, 18 Apr 2008 21:11:35 +0000 Subject: [PATCH] Change the float4-returning functions in contrib/seg to fmgr v1 calling conventions. I also changed seg_in and seg_out, which was probably unnecessary, but it can't harm. --- contrib/seg/seg.c | 57 ++++++++++++++++++++++++++++------------------- 1 file changed, 34 insertions(+), 23 deletions(-) diff --git a/contrib/seg/seg.c b/contrib/seg/seg.c index 9579eeab3e..5d224b951d 100644 --- a/contrib/seg/seg.c +++ b/contrib/seg/seg.c @@ -33,11 +33,17 @@ extern int seg_yydebug; /* ** Input/Output routines */ -SEG *seg_in(char *str); -char *seg_out(SEG * seg); -float4 seg_lower(SEG * seg); -float4 seg_upper(SEG * seg); -float4 seg_center(SEG * seg); +PG_FUNCTION_INFO_V1(seg_in); +PG_FUNCTION_INFO_V1(seg_out); +PG_FUNCTION_INFO_V1(seg_lower); +PG_FUNCTION_INFO_V1(seg_upper); +PG_FUNCTION_INFO_V1(seg_center); + +Datum seg_in(PG_FUNCTION_ARGS); +Datum seg_out(PG_FUNCTION_ARGS); +Datum seg_lower(PG_FUNCTION_ARGS); +Datum seg_upper(PG_FUNCTION_ARGS); +Datum seg_center(PG_FUNCTION_ARGS); /* ** GiST support methods @@ -98,9 +104,10 @@ int significant_digits(char *s); * Input/Output functions *****************************************************************************/ -SEG * -seg_in(char *str) +Datum +seg_in(PG_FUNCTION_ARGS) { + char *str = PG_GETARG_CSTRING(0); SEG *result = palloc(sizeof(SEG)); seg_scanner_init(str); @@ -110,18 +117,16 @@ seg_in(char *str) seg_scanner_finish(); - return (result); + PG_RETURN_POINTER(result); } -char * -seg_out(SEG * seg) +Datum +seg_out(PG_FUNCTION_ARGS) { + SEG *seg = (SEG *) PG_GETARG_POINTER(0); char *result; char *p; - if (seg == NULL) - return (NULL); - p = result = (char *) palloc(40); if (seg->l_ext == '>' || seg->l_ext == '<' || seg->l_ext == '~') @@ -153,25 +158,31 @@ seg_out(SEG * seg) } } - return (result); + PG_RETURN_CSTRING(result); } -float4 -seg_center(SEG * seg) +Datum +seg_center(PG_FUNCTION_ARGS) { - return ((float) seg->lower + (float) seg->upper) / 2.0; + SEG *seg = (SEG *) PG_GETARG_POINTER(0); + + PG_RETURN_FLOAT4(((float) seg->lower + (float) seg->upper) / 2.0); } -float4 -seg_lower(SEG * seg) +Datum +seg_lower(PG_FUNCTION_ARGS) { - return seg->lower; + SEG *seg = (SEG *) PG_GETARG_POINTER(0); + + PG_RETURN_FLOAT4(seg->lower); } -float4 -seg_upper(SEG * seg) +Datum +seg_upper(PG_FUNCTION_ARGS) { - return seg->upper; + SEG *seg = (SEG *) PG_GETARG_POINTER(0); + + PG_RETURN_FLOAT4(seg->upper); } -- 2.40.0