mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-08-24 15:07:19 +02:00
80 lines
1.5 KiB
C
80 lines
1.5 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 cube_flush_scanner_buffer(void); /* defined in cubescan.l */
|
|
|
|
void set_parse_buffer( char* s )
|
|
{
|
|
PARSE_BUFFER = s;
|
|
PARSE_BUFFER_SIZE = strlen(s);
|
|
if ( PARSE_BUFFER_SIZE == 0 ) {
|
|
elog(ERROR, "cube_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;
|
|
cube_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;
|
|
}
|
|
|
|
|