1 /* This module defines the parse buffer and routines for setting/reading it */
5 #include "utils/elog.h"
7 static char *PARSE_BUFFER;
8 static char *PARSE_BUFFER_PTR;
9 static unsigned int PARSE_BUFFER_SIZE;
10 static unsigned int SCANNER_POS;
12 void set_parse_buffer(char *s);
13 void reset_parse_buffer(void);
14 int read_parse_buffer(void);
15 char *parse_buffer(void);
16 char *parse_buffer_ptr(void);
17 unsigned int parse_buffer_curr_char(void);
18 unsigned int parse_buffer_size(void);
19 unsigned int parse_buffer_pos(void);
21 extern void cube_flush_scanner_buffer(void); /* defined in cubescan.l */
24 set_parse_buffer(char *s)
27 PARSE_BUFFER_SIZE = strlen(s);
28 if (PARSE_BUFFER_SIZE == 0)
29 elog(ERROR, "cube_in: can't parse an empty string");
30 PARSE_BUFFER_PTR = PARSE_BUFFER;
35 reset_parse_buffer(void)
37 PARSE_BUFFER_PTR = PARSE_BUFFER;
39 cube_flush_scanner_buffer();
43 read_parse_buffer(void)
48 * c = *PARSE_BUFFER_PTR++; SCANNER_POS++;
50 c = PARSE_BUFFER[SCANNER_POS];
51 if (SCANNER_POS < PARSE_BUFFER_SIZE)
63 parse_buffer_curr_char(void)
65 return PARSE_BUFFER[SCANNER_POS];
69 parse_buffer_ptr(void)
71 return PARSE_BUFFER_PTR;
75 parse_buffer_pos(void)
81 parse_buffer_size(void)
83 return PARSE_BUFFER_SIZE;