Change the float4-returning functions in contrib/seg to fmgr v1 calling
authorAlvaro Herrera
Fri, 18 Apr 2008 21:11:35 +0000 (21:11 +0000)
committerAlvaro Herrera
Fri, 18 Apr 2008 21:11:35 +0000 (21:11 +0000)
conventions.

I also changed seg_in and seg_out, which was probably unnecessary, but
it can't harm.

contrib/seg/seg.c

index 9579eeab3ef446108e3646150e8b72a417c6e6f4..5d224b951d83a920efc7fbaa6a48cc608c6ba699 100644 (file)
@@ -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);
 }