diff options
Diffstat (limited to 'contrib/cube')
-rw-r--r-- | contrib/cube/cube.c | 8 | ||||
-rw-r--r-- | contrib/cube/cubeparse.y | 18 | ||||
-rw-r--r-- | contrib/cube/cubescan.l | 2 |
3 files changed, 14 insertions, 14 deletions
diff --git a/contrib/cube/cube.c b/contrib/cube/cube.c index ce8eaa870f..dab0e6e758 100644 --- a/contrib/cube/cube.c +++ b/contrib/cube/cube.c @@ -26,8 +26,8 @@ PG_MODULE_MAGIC; #define ARRPTR(x) ( (double *) ARR_DATA_PTR(x) ) #define ARRNELEMS(x) ArrayGetNItems( ARR_NDIM(x), ARR_DIMS(x)) -extern int cube_yyparse(); -extern void cube_yyerror(const char *message); +extern int cube_yyparse(NDBOX **result); +extern void cube_yyerror(NDBOX **result, const char *message); extern void cube_scanner_init(const char *str); extern void cube_scanner_finish(void); @@ -156,12 +156,12 @@ Datum cube_in(PG_FUNCTION_ARGS) { char *str = PG_GETARG_CSTRING(0); - void *result; + NDBOX *result; cube_scanner_init(str); if (cube_yyparse(&result) != 0) - cube_yyerror("bogus input"); + cube_yyerror(&result, "bogus input"); cube_scanner_finish(); diff --git a/contrib/cube/cubeparse.y b/contrib/cube/cubeparse.y index 21fe537877..d7205b824c 100644 --- a/contrib/cube/cubeparse.y +++ b/contrib/cube/cubeparse.y @@ -1,10 +1,9 @@ %{ +/* contrib/cube/cubeparse.y */ + /* NdBox = [(lowerleft),(upperright)] */ /* [(xLL(1)...xLL(N)),(xUR(1)...xUR(n))] */ -/* contrib/cube/cubeparse.y */ - -#define YYPARSE_PARAM result /* need this to pass a pointer (void *) to yyparse */ #define YYSTYPE char * #define YYDEBUG 1 @@ -28,8 +27,8 @@ extern int cube_yylex(void); static char *scanbuf; static int scanbuflen; -void cube_yyerror(const char *message); -int cube_yyparse(void *result); +extern int cube_yyparse(NDBOX **result); +extern void cube_yyerror(NDBOX **result, const char *message); static int delim_count(char *s, char delim); static NDBOX * write_box(unsigned int dim, char *str1, char *str2); @@ -38,6 +37,7 @@ static NDBOX * write_point_as_box(char *s, int dim); %} /* BISON Declarations */ +%parse-param {NDBOX **result} %expect 0 %name-prefix="cube_yy" @@ -70,7 +70,7 @@ box: O_BRACKET paren_list COMMA paren_list C_BRACKET YYABORT; } - *((void **)result) = write_box( dim, $2, $4 ); + *result = write_box( dim, $2, $4 ); } @@ -97,7 +97,7 @@ box: O_BRACKET paren_list COMMA paren_list C_BRACKET YYABORT; } - *((void **)result) = write_box( dim, $1, $3 ); + *result = write_box( dim, $1, $3 ); } | paren_list @@ -114,7 +114,7 @@ box: O_BRACKET paren_list COMMA paren_list C_BRACKET YYABORT; } - *((void **)result) = write_point_as_box($1, dim); + *result = write_point_as_box($1, dim); } | list @@ -130,7 +130,7 @@ box: O_BRACKET paren_list COMMA paren_list C_BRACKET CUBE_MAX_DIM))); YYABORT; } - *((void **)result) = write_point_as_box($1, dim); + *result = write_point_as_box($1, dim); } ; diff --git a/contrib/cube/cubescan.l b/contrib/cube/cubescan.l index 8f917cd33a..e383b59d3d 100644 --- a/contrib/cube/cubescan.l +++ b/contrib/cube/cubescan.l @@ -61,7 +61,7 @@ float ({integer}|{real})([eE]{integer})? %% void __attribute__((noreturn)) -yyerror(const char *message) +yyerror(NDBOX **result, const char *message) { if (*yytext == YY_END_OF_BUFFER_CHAR) { |