Re:

Поиск
Список
Период
Сортировка
От Robert Haas
Тема Re:
Дата
Msg-id 603c8f070904060927v3731ec89v2dbb2ffe5c58b718@mail.gmail.com
обсуждение исходный текст
Ответ на Re:  (eehab hamzeh <eehab40@hotmail.com>)
Список pgsql-committers
You are posting to the wrong mailing list.

Please see:

http://www.postgresql.org/community/lists/

...Robert

2009/4/6 eehab hamzeh <eehab40@hotmail.com>:
>
> here are the code and the error , i compile them using vc++ 6 and VC++ 2008
> and minGW the example below are for minGW
> THANKS
>
> #include "postgres.h"
> #include <string.h>
> #include "fmgr.h"
>
> #ifdef PG_MODULE_MAGIC
> PG_MODULE_MAGIC;
> #endif
>
> /* by value */
>
> PG_FUNCTION_INFO_V1(add_one);
>
> Datum
> add_one(PG_FUNCTION_ARGS)
> {
>     int32   arg = PG_GETARG_INT32(0);
>
>     PG_RETURN_INT32(arg + 1);
> }
>
> /* by reference, fixed length */
>
> PG_FUNCTION_INFO_V1(add_one_float8);
>
> Datum
> add_one_float8(PG_FUNCTION_ARGS)
> {
> &nb sp;   /* The macros for FLOAT8 hide its pass-by-reference nature. */
>     float8   arg = PG_GETARG_FLOAT8(0);
>
>     PG_RETURN_FLOAT8(arg + 1.0);
> }
>
> PG_FUNCTION_INFO_V1(makepoint);
>
> Datum
> makepoint(PG_FUNCTION_ARGS)
> {
>     /* Here, the pass-by-reference nature of Point is not hidden. */
>     Point     *pointx = PG_GETARG_POINT_P(0);
>     Point     *pointy = PG_GETARG_POINT_P(1);
>     Point     *new_point = (Point *) palloc(sizeof(Point));
>
>     new_point->x = pointx->x;
>     new_point->y = pointy->y;
>
>     PG_RETURN_POINT_P(new_point);
> }
>
> /* by reference, variable length */
>
> PG_FUNCTION_INFO_V1(copytext);
>
> Datum
> copytext(PG_FUNCTION_ARGS)
> {
>     text     *t = PG_GETARG_TEXT_P(0);
>     /*
>      * VARSIZE is the total size of the struct in bytes.
>      */
>     text     *new_t = (text *) palloc(VARSIZE(t));
>     VARATT_SIZEP(new_t) = VARSIZE(t);
>     /*
>      * VARDATA is a pointer to the data region of the struct.
>      */
>     memcpy((void *) VARDATA(new_t), /* destination */
>            (void *) VARDATA(t),     /* source */
>            VARSIZE(t)-VARHDRSZ);    /* how many bytes */
>     PG_RETURN_TEXT_P(new_t);
> }
>
> PG_FUNCTION_INFO_V1(concat_text);
>
> Datum
> concat_text(PG_FUNCTION_ARGS)
> {
>     text  *arg1 = PG_GETARG_TEXT_P(0);
>     text  *arg2 = PG_GETARG_TEXT_P(1);
>     int32 new_text_size = VARSIZE(arg1) + VARSIZE(arg2) - VARHDRSZ;
>     text *new_text = (text *) palloc(new_text_size);
>
>     VARATT_SIZEP(new_text) = new_text_size;
>     memcpy(VARDATA(new_text), VARDATA(arg1), VARSIZE(arg1)-VARHDRSZ);
>     memcpy(VARDATA(new_text) + (VARSIZE(arg1)-VARHDRSZ),
>            VARDATA(arg2), VARSIZE(arg2)-VARHDRSZ);
>   &n bsp; PG_RETURN_TEXT_P(new_text);
> }
>
>
> the error
>
> in function 'makepoint':
> error: 'Point' undeclared (first use in this function)
> error: (each undeclared identifier is reported only one
> error: for each function it appears in.)
> error: 'pointx' undeclared (first use in ´this function)
> error: 'pointy' undeclared (first use in his fnction)
> error 'new_point' undeclared (first use in his function)
> error: syntax error befre ')' oken
> in function 'copy text':
> error: 'invalid lvalue in assinment
> In function 'concat_text'
> error: invalid lvalue in assignement
> warning no new line at end of file
>
> Please any direction of how to solve the problem
>
> thanks
>
> < img alt="">
>
>
>
> ________________________________
> check out the rest of the Windows Live™. More than mail–Windows Live™ goes
> way beyond your inbox. More than messages

В списке pgsql-committers по дате отправления:

Предыдущее
От: momjian@postgresql.org (Bruce Momjian)
Дата:
Сообщение: pgsql: Adjust psql tab completion for new \d 'S' flag behavior; adjust
Следующее
От: eehab hamzeh
Дата:
Сообщение: