mirror of
				https://github.com/postgres/postgres.git
				synced 2025-10-30 00:04:49 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			85 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* This module defines the parse buffer and routines for setting/reading it */
 | |
| 
 | |
| #include "postgres.h"
 | |
| 
 | |
| #include "utils/elog.h"
 | |
| 
 | |
| static char *PARSE_BUFFER;
 | |
| static char *PARSE_BUFFER_PTR;
 | |
| static unsigned int PARSE_BUFFER_SIZE;
 | |
| static unsigned int SCANNER_POS;
 | |
| 
 | |
| void		set_parse_buffer(char *s);
 | |
| void		reset_parse_buffer(void);
 | |
| int			read_parse_buffer(void);
 | |
| char	   *parse_buffer(void);
 | |
| char	   *parse_buffer_ptr(void);
 | |
| unsigned int parse_buffer_curr_char(void);
 | |
| unsigned int parse_buffer_size(void);
 | |
| unsigned int parse_buffer_pos(void);
 | |
| 
 | |
| extern void seg_flush_scanner_buffer(void);		/* defined in segscan.l */
 | |
| 
 | |
| void
 | |
| set_parse_buffer(char *s)
 | |
| {
 | |
| 	PARSE_BUFFER = s;
 | |
| 	PARSE_BUFFER_SIZE = strlen(s);
 | |
| 	if (PARSE_BUFFER_SIZE == 0)
 | |
| 		elog(ERROR, "seg_in: can't parse an empty string");
 | |
| 	PARSE_BUFFER_PTR = PARSE_BUFFER;
 | |
| 	SCANNER_POS = 0;
 | |
| }
 | |
| 
 | |
| void
 | |
| reset_parse_buffer(void)
 | |
| {
 | |
| 	PARSE_BUFFER_PTR = PARSE_BUFFER;
 | |
| 	SCANNER_POS = 0;
 | |
| 	seg_flush_scanner_buffer();
 | |
| }
 | |
| 
 | |
| int
 | |
| read_parse_buffer(void)
 | |
| {
 | |
| 	int			c;
 | |
| 
 | |
| 	/*
 | |
| 	 * c = *PARSE_BUFFER_PTR++; SCANNER_POS++;
 | |
| 	 */
 | |
| 	c = PARSE_BUFFER[SCANNER_POS];
 | |
| 	if (SCANNER_POS < PARSE_BUFFER_SIZE)
 | |
| 		SCANNER_POS++;
 | |
| 	return c;
 | |
| }
 | |
| 
 | |
| char *
 | |
| parse_buffer(void)
 | |
| {
 | |
| 	return PARSE_BUFFER;
 | |
| }
 | |
| 
 | |
| unsigned int
 | |
| parse_buffer_curr_char(void)
 | |
| {
 | |
| 	return PARSE_BUFFER[SCANNER_POS];
 | |
| }
 | |
| 
 | |
| char *
 | |
| parse_buffer_ptr(void)
 | |
| {
 | |
| 	return PARSE_BUFFER_PTR;
 | |
| }
 | |
| 
 | |
| unsigned int
 | |
| parse_buffer_pos(void)
 | |
| {
 | |
| 	return SCANNER_POS;
 | |
| }
 | |
| 
 | |
| unsigned int
 | |
| parse_buffer_size(void)
 | |
| {
 | |
| 	return PARSE_BUFFER_SIZE;
 | |
| }
 |