@@ -43,6 +43,8 @@ static inline pcbc_boolean_search_query_t *pcbc_boolean_search_query_fetch_objec
43
43
#define LOGARGS (lvl ) LCB_LOG_##lvl, NULL, "pcbc/boolean_search_query", __FILE__, __LINE__
44
44
45
45
zend_class_entry * pcbc_boolean_search_query_ce ;
46
+ extern zend_class_entry * pcbc_disjunction_search_query_ce ;
47
+ extern zend_class_entry * pcbc_conjunction_search_query_ce ;
46
48
47
49
/* {{{ proto void BooleanSearchQuery::__construct() */
48
50
PHP_METHOD (BooleanSearchQuery , __construct )
@@ -75,46 +77,21 @@ PHP_METHOD(BooleanSearchQuery, boost)
75
77
PHP_METHOD (BooleanSearchQuery , must )
76
78
{
77
79
pcbc_boolean_search_query_t * obj ;
78
- #if PHP_VERSION_ID >= 70000
79
- zval * args = NULL ;
80
- #else
81
- zval * * * args = NULL ;
82
- #endif
83
- int num_args = 0 ;
80
+ zval * conjunct = NULL ;
84
81
int rv ;
85
82
86
- rv = zend_parse_parameters (ZEND_NUM_ARGS () TSRMLS_CC , "+ " , & args , & num_args );
83
+ rv = zend_parse_parameters (ZEND_NUM_ARGS () TSRMLS_CC , "O " , & conjunct , pcbc_conjunction_search_query_ce );
87
84
if (rv == FAILURE ) {
88
85
return ;
89
86
}
90
87
91
88
obj = Z_BOOLEAN_SEARCH_QUERY_OBJ_P (getThis ());
92
89
93
- PCBC_ZVAL_ALLOC (obj -> must );
94
- array_init (PCBC_P (obj -> must ));
95
-
96
- if (num_args && args ) {
97
- int i ;
98
- for (i = 0 ; i < num_args ; ++ i ) {
99
- PCBC_ZVAL * query ;
100
90
#if PHP_VERSION_ID >= 70000
101
- query = & args [ i ] ;
91
+ ZVAL_ZVAL ( & obj -> must , conjunct , 1 , 0 ) ;
102
92
#else
103
- query = args [i ];
104
- #endif
105
- if (Z_TYPE_P (PCBC_P (* query )) != IS_OBJECT ||
106
- !instanceof_function (Z_OBJCE_P (PCBC_P (* query )), pcbc_search_query_part_ce TSRMLS_CC )) {
107
- pcbc_log (LOGARGS (WARN ), "query has to implement SearchQueryPart interface (skipping argument #%d)" , i );
108
- continue ;
109
- }
110
- add_next_index_zval (PCBC_P (obj -> must ), PCBC_P (* query ));
111
- PCBC_ADDREF_P (PCBC_P (* query ));
112
- }
113
- }
114
- #if PHP_VERSION_ID < 70000
115
- if (args ) {
116
- efree (args );
117
- }
93
+ PCBC_ADDREF_P (disjunct );
94
+ obj -> must = conjunct ;
118
95
#endif
119
96
120
97
RETURN_ZVAL (getThis (), 1 , 0 );
@@ -125,46 +102,21 @@ PHP_METHOD(BooleanSearchQuery, must)
125
102
PHP_METHOD (BooleanSearchQuery , mustNot )
126
103
{
127
104
pcbc_boolean_search_query_t * obj ;
128
- #if PHP_VERSION_ID >= 70000
129
- zval * args = NULL ;
130
- #else
131
- zval * * * args = NULL ;
132
- #endif
133
- int num_args = 0 ;
105
+ zval * disjunct = NULL ;
134
106
int rv ;
135
107
136
- rv = zend_parse_parameters (ZEND_NUM_ARGS () TSRMLS_CC , "+ " , & args , & num_args );
108
+ rv = zend_parse_parameters (ZEND_NUM_ARGS () TSRMLS_CC , "O " , & disjunct , pcbc_disjunction_search_query_ce );
137
109
if (rv == FAILURE ) {
138
110
return ;
139
111
}
140
112
141
113
obj = Z_BOOLEAN_SEARCH_QUERY_OBJ_P (getThis ());
142
114
143
- PCBC_ZVAL_ALLOC (obj -> must_not );
144
- array_init (PCBC_P (obj -> must_not ));
145
-
146
- if (num_args && args ) {
147
- int i ;
148
- for (i = 0 ; i < num_args ; ++ i ) {
149
- PCBC_ZVAL * query ;
150
115
#if PHP_VERSION_ID >= 70000
151
- query = & args [ i ] ;
116
+ ZVAL_ZVAL ( & obj -> must_not , disjunct , 1 , 0 ) ;
152
117
#else
153
- query = args [i ];
154
- #endif
155
- if (Z_TYPE_P (PCBC_P (* query )) != IS_OBJECT ||
156
- !instanceof_function (Z_OBJCE_P (PCBC_P (* query )), pcbc_search_query_part_ce TSRMLS_CC )) {
157
- pcbc_log (LOGARGS (WARN ), "query has to implement SearchQueryPart interface (skipping argument #%d)" , i );
158
- continue ;
159
- }
160
- add_next_index_zval (PCBC_P (obj -> must_not ), PCBC_P (* query ));
161
- PCBC_ADDREF_P (PCBC_P (* query ));
162
- }
163
- }
164
- #if PHP_VERSION_ID < 70000
165
- if (args ) {
166
- efree (args );
167
- }
118
+ PCBC_ADDREF_P (disjunct );
119
+ obj -> must_not = disjunct ;
168
120
#endif
169
121
170
122
RETURN_ZVAL (getThis (), 1 , 0 );
@@ -175,48 +127,22 @@ PHP_METHOD(BooleanSearchQuery, mustNot)
175
127
PHP_METHOD (BooleanSearchQuery , should )
176
128
{
177
129
pcbc_boolean_search_query_t * obj ;
178
- #if PHP_VERSION_ID >= 70000
179
- zval * args = NULL ;
180
- #else
181
- zval * * * args = NULL ;
182
- #endif
183
- int num_args = 0 ;
130
+ zval * disjunct = NULL ;
184
131
int rv ;
185
132
186
- rv = zend_parse_parameters (ZEND_NUM_ARGS () TSRMLS_CC , "+ " , & args , & num_args );
133
+ rv = zend_parse_parameters (ZEND_NUM_ARGS () TSRMLS_CC , "O " , & disjunct , pcbc_disjunction_search_query_ce );
187
134
if (rv == FAILURE ) {
188
135
return ;
189
136
}
190
137
191
138
obj = Z_BOOLEAN_SEARCH_QUERY_OBJ_P (getThis ());
192
139
193
- PCBC_ZVAL_ALLOC (obj -> should );
194
- array_init (PCBC_P (obj -> should ));
195
-
196
- if (num_args && args ) {
197
- int i ;
198
- for (i = 0 ; i < num_args ; ++ i ) {
199
- PCBC_ZVAL * query ;
200
140
#if PHP_VERSION_ID >= 70000
201
- query = & args [ i ] ;
141
+ ZVAL_ZVAL ( & obj -> should , disjunct , 1 , 0 ) ;
202
142
#else
203
- query = args [i ];
204
- #endif
205
- if (Z_TYPE_P (PCBC_P (* query )) != IS_OBJECT ||
206
- !instanceof_function (Z_OBJCE_P (PCBC_P (* query )), pcbc_search_query_part_ce TSRMLS_CC )) {
207
- pcbc_log (LOGARGS (WARN ), "query has to implement SearchQueryPart interface (skipping argument #%d)" , i );
208
- continue ;
209
- }
210
- add_next_index_zval (PCBC_P (obj -> should ), PCBC_P (* query ));
211
- PCBC_ADDREF_P (PCBC_P (* query ));
212
- }
213
- }
214
- #if PHP_VERSION_ID < 70000
215
- if (args ) {
216
- efree (args );
217
- }
143
+ PCBC_ADDREF_P (disjunct );
144
+ obj -> should = disjunct ;
218
145
#endif
219
-
220
146
RETURN_ZVAL (getThis (), 1 , 0 );
221
147
} /* }}} */
222
148
@@ -258,18 +184,18 @@ ZEND_BEGIN_ARG_INFO_EX(ai_BooleanSearchQuery_boost, 0, 0, 1)
258
184
ZEND_ARG_INFO (0 , boost )
259
185
ZEND_END_ARG_INFO ()
260
186
261
- ZEND_BEGIN_ARG_INFO_EX (ai_BooleanSearchQuery_queries , 0 , 0 , 1 )
262
- PCBC_ARG_VARIADIC_INFO (0 , queries )
187
+ ZEND_BEGIN_ARG_INFO_EX (ai_BooleanSearchQuery_query , 0 , 0 , 1 )
188
+ ZEND_ARG_INFO (0 , query )
263
189
ZEND_END_ARG_INFO ()
264
190
265
191
// clang-format off
266
192
zend_function_entry boolean_search_query_methods [] = {
267
193
PHP_ME (BooleanSearchQuery , __construct , ai_BooleanSearchQuery_none , ZEND_ACC_PRIVATE | ZEND_ACC_FINAL | ZEND_ACC_CTOR )
268
194
PHP_ME (BooleanSearchQuery , jsonSerialize , ai_BooleanSearchQuery_none , ZEND_ACC_PUBLIC )
269
195
PHP_ME (BooleanSearchQuery , boost , ai_BooleanSearchQuery_boost , ZEND_ACC_PUBLIC )
270
- PHP_ME (BooleanSearchQuery , must , ai_BooleanSearchQuery_queries , ZEND_ACC_PUBLIC )
271
- PHP_ME (BooleanSearchQuery , mustNot , ai_BooleanSearchQuery_queries , ZEND_ACC_PUBLIC )
272
- PHP_ME (BooleanSearchQuery , should , ai_BooleanSearchQuery_queries , ZEND_ACC_PUBLIC )
196
+ PHP_ME (BooleanSearchQuery , must , ai_BooleanSearchQuery_query , ZEND_ACC_PUBLIC )
197
+ PHP_ME (BooleanSearchQuery , mustNot , ai_BooleanSearchQuery_query , ZEND_ACC_PUBLIC )
198
+ PHP_ME (BooleanSearchQuery , should , ai_BooleanSearchQuery_query , ZEND_ACC_PUBLIC )
273
199
PHP_FE_END
274
200
};
275
201
// clang-format on
0 commit comments