mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-03-19 20:00:51 +08:00
Fix for 1f0de66ea2a: We need to prevent redeclaration of typedef yyscan_t. (This will work with C11 but not currently with C99.) The generated scanner files provide their own typedef, but we also need to provide one for the interfaces that we expose. So we need to add some preprocessor guards to avoid a redefinition. (This is how the generated scanner files do it internally as well.) This way everything now works independent of the order in which things are included. Discussion: https://www.postgresql.org/message-id/flat/eb6faeac-2a8a-4b69-9189-c33c520e5b7b@eisentraut.org
34 lines
787 B
C
34 lines
787 B
C
/*
|
|
* contrib/seg/segdata.h
|
|
*/
|
|
typedef struct SEG
|
|
{
|
|
float4 lower;
|
|
float4 upper;
|
|
char l_sigd;
|
|
char u_sigd;
|
|
char l_ext;
|
|
char u_ext;
|
|
} SEG;
|
|
|
|
/* in seg.c */
|
|
extern int significant_digits(const char *s);
|
|
|
|
/* for segscan.l and segparse.y */
|
|
union YYSTYPE;
|
|
#ifndef YY_TYPEDEF_YY_SCANNER_T
|
|
#define YY_TYPEDEF_YY_SCANNER_T
|
|
typedef void *yyscan_t;
|
|
#endif
|
|
|
|
/* in segscan.l */
|
|
extern int seg_yylex(union YYSTYPE *yylval_param, yyscan_t yyscanner);
|
|
extern void seg_yyerror(SEG *result, struct Node *escontext,
|
|
yyscan_t yyscanner,
|
|
const char *message);
|
|
extern void seg_scanner_init(const char *str, yyscan_t *yyscannerp);
|
|
extern void seg_scanner_finish(yyscan_t yyscanner);
|
|
|
|
/* in segparse.y */
|
|
extern int seg_yyparse(SEG *result, struct Node *escontext, yyscan_t yyscanner);
|