Passing parameters to a C function - Mailing list pgsql-hackers

From Rodrigo Sakai
Subject Passing parameters to a C function
Date
Msg-id 000001c7a2c6$75570510$9200a8c0@NOTEBOOKSAKAI
Whole thread Raw
Responses Re: Passing parameters to a C function
List pgsql-hackers

    Hello,

 

   I have a question about passing parameters to a C function.  Imagine the example by PostgreSQL:

 

PG_FUNCTION_INFO_V1(complex_add);

 

Datum

complex_add(PG_FUNCTION_ARGS)

{

      Complex    *a = (Complex *) PG_GETARG_POINTER(0);

      Complex    *b = (Complex *) PG_GETARG_POINTER(1);

      Complex    *result;

 

      result = (Complex *) palloc(sizeof(Complex));

      result->x = a->x + b->x;

      result->y = a->y + b->y;

      PG_RETURN_POINTER(result);

}

 

 So, in the same .C file I have to write another function that calls this one, for example:

 

void

test_main()

{

    Complex *a;

    Complex *b;

 

    a = complex_in("(4.01, 3.77 )");

    printf("a = %s\n", complex_out(a));

 

    b = complex_in("(1.0,2.0)");

    printf("b = %s\n", complex_out(b));

 

    printf("a +  b = %s\n", complex_out(complex_add(a,b)));

}

 

But using version 1 calling convention it won’t work! So, how can I pass the ‘a’ and ‘b’ variables in complex_add(?, ?)?

 

Thanks in advance!

 

 

 

 

pgsql-hackers by date:

Previous
From: Magnus Hagander
Date:
Subject: Re: msvc, build and install with cygwin in the PATH
Next
From: Martijn van Oosterhout
Date:
Subject: Re: Passing parameters to a C function