comparison eval.c @ 11597:fce0ed54244c libavcodec

Rename ff_eval_free() to ff_free_expr().
author stefano
date Sun, 11 Apr 2010 11:47:33 +0000
parents e22a96273dc4
children 29fda2500178
comparison
equal deleted inserted replaced
11596:e22a96273dc4 11597:fce0ed54244c
171 return NAN; 171 return NAN;
172 } 172 }
173 173
174 static AVExpr * parse_expr(Parser *p); 174 static AVExpr * parse_expr(Parser *p);
175 175
176 void ff_eval_free(AVExpr * e) { 176 void ff_free_expr(AVExpr * e) {
177 if (!e) return; 177 if (!e) return;
178 ff_eval_free(e->param[0]); 178 ff_free_expr(e->param[0]);
179 ff_eval_free(e->param[1]); 179 ff_free_expr(e->param[1]);
180 av_freep(&e); 180 av_freep(&e);
181 } 181 }
182 182
183 static AVExpr * parse_primary(Parser *p) { 183 static AVExpr * parse_primary(Parser *p) {
184 AVExpr * d = av_mallocz(sizeof(AVExpr)); 184 AVExpr * d = av_mallocz(sizeof(AVExpr));
209 209
210 p->s= strchr(p->s, '('); 210 p->s= strchr(p->s, '(');
211 if(p->s==NULL){ 211 if(p->s==NULL){
212 *p->error = "undefined constant or missing ("; 212 *p->error = "undefined constant or missing (";
213 p->s= next; 213 p->s= next;
214 ff_eval_free(d); 214 ff_free_expr(d);
215 return NULL; 215 return NULL;
216 } 216 }
217 p->s++; // "(" 217 p->s++; // "("
218 if (*next == '(') { // special case do-nothing 218 if (*next == '(') { // special case do-nothing
219 av_freep(&d); 219 av_freep(&d);
220 d = parse_expr(p); 220 d = parse_expr(p);
221 if(p->s[0] != ')'){ 221 if(p->s[0] != ')'){
222 *p->error = "missing )"; 222 *p->error = "missing )";
223 ff_eval_free(d); 223 ff_free_expr(d);
224 return NULL; 224 return NULL;
225 } 225 }
226 p->s++; // ")" 226 p->s++; // ")"
227 return d; 227 return d;
228 } 228 }
231 p->s++; // "," 231 p->s++; // ","
232 d->param[1] = parse_expr(p); 232 d->param[1] = parse_expr(p);
233 } 233 }
234 if(p->s[0] != ')'){ 234 if(p->s[0] != ')'){
235 *p->error = "missing )"; 235 *p->error = "missing )";
236 ff_eval_free(d); 236 ff_free_expr(d);
237 return NULL; 237 return NULL;
238 } 238 }
239 p->s++; // ")" 239 p->s++; // ")"
240 240
241 d->type = e_func0; 241 d->type = e_func0;
280 return d; 280 return d;
281 } 281 }
282 } 282 }
283 283
284 *p->error = "unknown function"; 284 *p->error = "unknown function";
285 ff_eval_free(d); 285 ff_free_expr(d);
286 return NULL; 286 return NULL;
287 } 287 }
288 288
289 return d; 289 return d;
290 } 290 }
402 p.func2_name = func2_name; 402 p.func2_name = func2_name;
403 p.error= error; 403 p.error= error;
404 404
405 e = parse_expr(&p); 405 e = parse_expr(&p);
406 if (!verify_expr(e)) { 406 if (!verify_expr(e)) {
407 ff_eval_free(e); 407 ff_free_expr(e);
408 e = NULL; 408 e = NULL;
409 } 409 }
410 end: 410 end:
411 av_free(w); 411 av_free(w);
412 return e; 412 return e;
426 void *opaque, const char **error){ 426 void *opaque, const char **error){
427 AVExpr * e = ff_parse(s, const_name, func1, func1_name, func2, func2_name, error); 427 AVExpr * e = ff_parse(s, const_name, func1, func1_name, func2, func2_name, error);
428 double d; 428 double d;
429 if (!e) return NAN; 429 if (!e) return NAN;
430 d = ff_parse_eval(e, const_value, opaque); 430 d = ff_parse_eval(e, const_value, opaque);
431 ff_eval_free(e); 431 ff_free_expr(e);
432 return d; 432 return d;
433 } 433 }
434 434
435 #ifdef TEST 435 #ifdef TEST
436 #undef printf 436 #undef printf