aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlvaro Herrera <alvherre@alvh.no-ip.org>2008-04-18 21:11:35 +0000
committerAlvaro Herrera <alvherre@alvh.no-ip.org>2008-04-18 21:11:35 +0000
commit05ace73335ec9c6775229e128aba8bfeee044639 (patch)
treee82d8da9fe04391ebe0e0a594003f2e542a850d9
parent41de1d150761ee15f4af64992ac17680b291fcb6 (diff)
downloadpostgresql-05ace73335ec9c6775229e128aba8bfeee044639.tar.gz
postgresql-05ace73335ec9c6775229e128aba8bfeee044639.zip
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.
-rw-r--r--contrib/seg/seg.c57
1 files changed, 34 insertions, 23 deletions
diff --git a/contrib/seg/seg.c b/contrib/seg/seg.c
index 9579eeab3ef..5d224b951d8 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);
}