OSDN Git Service

pgindent run. Make it all clean.
[pg-rex/syncrep.git] / contrib / cube / buffer.c
1 /* This module defines the parse buffer and routines for setting/reading it */
2
3 #include "postgres.h"
4
5 #include "utils/elog.h"
6
7 static char *PARSE_BUFFER;
8 static char *PARSE_BUFFER_PTR;
9 static unsigned int PARSE_BUFFER_SIZE;
10 static unsigned int SCANNER_POS;
11
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);
20
21 extern void cube_flush_scanner_buffer(void);    /* defined in cubescan.l */
22
23 void
24 set_parse_buffer(char *s)
25 {
26         PARSE_BUFFER = 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;
31         SCANNER_POS = 0;
32 }
33
34 void
35 reset_parse_buffer(void)
36 {
37         PARSE_BUFFER_PTR = PARSE_BUFFER;
38         SCANNER_POS = 0;
39         cube_flush_scanner_buffer();
40 }
41
42 int
43 read_parse_buffer(void)
44 {
45         int                     c;
46
47         /*
48          * c = *PARSE_BUFFER_PTR++; SCANNER_POS++;
49          */
50         c = PARSE_BUFFER[SCANNER_POS];
51         if (SCANNER_POS < PARSE_BUFFER_SIZE)
52                 SCANNER_POS++;
53         return c;
54 }
55
56 char *
57 parse_buffer(void)
58 {
59         return PARSE_BUFFER;
60 }
61
62 unsigned int
63 parse_buffer_curr_char(void)
64 {
65         return PARSE_BUFFER[SCANNER_POS];
66 }
67
68 char *
69 parse_buffer_ptr(void)
70 {
71         return PARSE_BUFFER_PTR;
72 }
73
74 unsigned int
75 parse_buffer_pos(void)
76 {
77         return SCANNER_POS;
78 }
79
80 unsigned int
81 parse_buffer_size(void)
82 {
83         return PARSE_BUFFER_SIZE;
84 }