diff options
author | Tom Lane | 2000-12-11 20:39:15 +0000 |
---|---|---|
committer | Tom Lane | 2000-12-11 20:39:15 +0000 |
commit | 9892ddf5ee0c1c82e879f4bb20bf1f53b4241a45 (patch) | |
tree | 3201a9c7304bbad67b7fa172146a4ab924e754c1 /contrib/cube/buffer.c | |
parent | 5bb4f723d23665cb2518260e7953d617fd9d6693 (diff) |
Gene Selkov's CUBE datatype (GiST example code)
Diffstat (limited to 'contrib/cube/buffer.c')
-rw-r--r-- | contrib/cube/buffer.c | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/contrib/cube/buffer.c b/contrib/cube/buffer.c new file mode 100644 index 00000000000..0bcc2d19b57 --- /dev/null +++ b/contrib/cube/buffer.c @@ -0,0 +1,79 @@ +/* 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; +} + + |