summaryrefslogtreecommitdiff
path: root/contrib/cube
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/cube')
-rw-r--r--contrib/cube/cube.c8
-rw-r--r--contrib/cube/cubeparse.y18
-rw-r--r--contrib/cube/cubescan.l2
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)
{