@@ -54,34 +54,6 @@ typedef enum JsQueryItemType {
5454 jqiIn = 'I'
5555} JsQueryItemType ;
5656
57- typedef struct JsQueryItem JsQueryItem ;
58-
59- struct JsQueryItem {
60- JsQueryItemType type ;
61- JsQueryItem * next ; /* next in path */
62-
63- union {
64- struct {
65- JsQueryItem * left ;
66- JsQueryItem * right ;
67- } args ;
68-
69- JsQueryItem * arg ;
70-
71- Numeric numeric ;
72- bool boolean ;
73- struct {
74- uint32 len ;
75- char * val ; /* could not be not null-terminated */
76- } string ;
77-
78- struct {
79- int nelems ;
80- JsQueryItem * * elems ;
81- } array ;
82- };
83- };
84-
8557typedef struct JsQueryItemR {
8658 JsQueryItemType type ;
8759 int32 nextPos ;
@@ -121,34 +93,49 @@ extern void jsqIterateInit(JsQueryItemR *v);
12193extern bool jsqIterateArray (JsQueryItemR * v , JsQueryItemR * e );
12294
12395/*
124- * support
96+ * Parsing
12597 */
12698
127- extern JsQueryItem * parsejsquery ( const char * str , int len ) ;
99+ typedef struct JsQueryItem JsQueryItem ;
128100
129- int32 readJsQueryHeader (char * base , int32 pos , JsQueryItemType * type , int32 * nextPos );
101+ struct JsQueryItem {
102+ JsQueryItemType type ;
103+ JsQueryItem * next ; /* next in path */
130104
131- #define read_byte (v , b , p ) do { \
132- (v) = *(int8*)((b) + (p)); \
133- (p) += 1; \
134- } while(0) \
105+ union {
106+ struct {
107+ JsQueryItem * left ;
108+ JsQueryItem * right ;
109+ } args ;
135110
136- #define read_int32 (v , b , p ) do { \
137- (v) = *(int32*)((b) + (p)); \
138- (p) += sizeof(int32); \
139- } while(0) \
111+ JsQueryItem * arg ;
112+
113+ Numeric numeric ;
114+ bool boolean ;
115+ struct {
116+ uint32 len ;
117+ char * val ; /* could not be not null-terminated */
118+ } string ;
119+
120+ struct {
121+ int nelems ;
122+ JsQueryItem * * elems ;
123+ } array ;
124+ };
125+ };
126+
127+ extern JsQueryItem * parsejsquery (const char * str , int len );
140128
141129void alignStringInfoInt (StringInfo buf );
142- #endif
143130
144131/* jsquery_extract.c */
145132
146133typedef enum
147134{
148- iAny = 1 ,
149- iAnyArray ,
150- iKey ,
151- iAnyKey
135+ iAny = jqiAny ,
136+ iAnyArray = jqiAnyArray ,
137+ iKey = jqiKey ,
138+ iAnyKey = jqiAnyKey
152139} PathItemType ;
153140
154141typedef struct PathItem PathItem ;
@@ -163,9 +150,9 @@ struct PathItem
163150typedef enum
164151{
165152 eScalar = 1 ,
166- eAnd ,
167- eOr ,
168- eNot
153+ eAnd = jqiAnd ,
154+ eOr = jqiOr ,
155+ eNot = jqiNot
169156} ExtractedNodeType ;
170157
171158typedef struct ExtractedNode ExtractedNode ;
@@ -199,3 +186,5 @@ typedef int (*MakeEntryHandler)(ExtractedNode *node, Pointer extra);
199186ExtractedNode * extractJsQuery (JsQuery * jq , MakeEntryHandler handler , Pointer extra );
200187bool execRecursive (ExtractedNode * node , bool * check );
201188bool execRecursiveTristate (ExtractedNode * node , GinTernaryValue * check );
189+
190+ #endif
0 commit comments