Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(279)

Side by Side Diff: Source/core/xml/XPathGrammar.y

Issue 26763004: Vector stores Expression object as OwnPtr instead of raw pointer in XPath. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Change XPathGrammar.y also Created 7 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright 2005 Frerich Raabe <raabe@kde.org> 2 * Copyright 2005 Frerich Raabe <raabe@kde.org>
3 * Copyright (C) 2006 Apple Inc. All rights reserved. 3 * Copyright (C) 2006 Apple Inc. All rights reserved.
4 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> 4 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org>
5 * 5 *
6 * Redistribution and use in source and binary forms, with or without 6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions 7 * modification, are permitted provided that the following conditions
8 * are met: 8 * are met:
9 * 9 *
10 * 1. Redistributions of source code must retain the above copyright 10 * 1. Redistributions of source code must retain the above copyright
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
56 56
57 %union 57 %union
58 { 58 {
59 Step::Axis axis; 59 Step::Axis axis;
60 Step::NodeTest* nodeTest; 60 Step::NodeTest* nodeTest;
61 NumericOp::Opcode numop; 61 NumericOp::Opcode numop;
62 EqTestOp::Opcode eqop; 62 EqTestOp::Opcode eqop;
63 String* str; 63 String* str;
64 Expression* expr; 64 Expression* expr;
65 Vector<Predicate*>* predList; 65 Vector<Predicate*>* predList;
66 Vector<Expression*>* argList; 66 Vector<OwnPtr<Expression> >* argList;
67 Step* step; 67 Step* step;
68 LocationPath* locationPath; 68 LocationPath* locationPath;
69 } 69 }
70 70
71 %{ 71 %{
72 72
73 static int xpathyylex(YYSTYPE* yylval) { return Parser::current()->lex(yylval); } 73 static int xpathyylex(YYSTYPE* yylval) { return Parser::current()->lex(yylval); }
74 static void xpathyyerror(void*, const char*) { } 74 static void xpathyyerror(void*, const char*) { }
75 75
76 %} 76 %}
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after
285 $$ = 0; 285 $$ = 0;
286 } 286 }
287 | 287 |
288 PredicateList 288 PredicateList
289 ; 289 ;
290 290
291 PredicateList: 291 PredicateList:
292 Predicate 292 Predicate
293 { 293 {
294 $$ = new Vector<Predicate*>; 294 $$ = new Vector<Predicate*>;
295 $$->append(new Predicate($1)); 295 $$->append(new Predicate(adoptPtr($1)));
296 parser->unregisterParseNode($1); 296 parser->unregisterParseNode($1);
297 parser->registerPredicateVector($$); 297 parser->registerPredicateVector($$);
298 } 298 }
299 | 299 |
300 PredicateList Predicate 300 PredicateList Predicate
301 { 301 {
302 $$->append(new Predicate($2)); 302 $$->append(new Predicate(adoptPtr($2)));
303 parser->unregisterParseNode($2); 303 parser->unregisterParseNode($2);
304 } 304 }
305 ; 305 ;
306 306
307 Predicate: 307 Predicate:
308 '[' Expr ']' 308 '[' Expr ']'
309 { 309 {
310 $$ = $2; 310 $$ = $2;
311 } 311 }
312 ; 312 ;
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
380 YYABORT; 380 YYABORT;
381 parser->deleteString($1); 381 parser->deleteString($1);
382 parser->deleteExpressionVector($3); 382 parser->deleteExpressionVector($3);
383 parser->registerParseNode($$); 383 parser->registerParseNode($$);
384 } 384 }
385 ; 385 ;
386 386
387 ArgumentList: 387 ArgumentList:
388 Argument 388 Argument
389 { 389 {
390 $$ = new Vector<Expression*>; 390 $$ = new Vector<OwnPtr<Expression> >;
391 $$->append($1); 391 $$->append(adoptPtr($1));
392 parser->unregisterParseNode($1); 392 parser->unregisterParseNode($1);
393 parser->registerExpressionVector($$); 393 parser->registerExpressionVector($$);
394 } 394 }
395 | 395 |
396 ArgumentList ',' Argument 396 ArgumentList ',' Argument
397 { 397 {
398 $$->append($3); 398 $$->append(adoptPtr($3));
399 parser->unregisterParseNode($3); 399 parser->unregisterParseNode($3);
400 } 400 }
401 ; 401 ;
402 402
403 Argument: 403 Argument:
404 Expr 404 Expr
405 ; 405 ;
406 406
407 UnionExpr: 407 UnionExpr:
408 PathExpr 408 PathExpr
409 | 409 |
410 UnionExpr '|' PathExpr 410 UnionExpr '|' PathExpr
411 { 411 {
412 $$ = new Union; 412 $$ = new Union;
413 $$->addSubExpression($1); 413 $$->addSubExpression(adoptPtr($1));
414 $$->addSubExpression($3); 414 $$->addSubExpression(adoptPtr($3));
415 parser->unregisterParseNode($1); 415 parser->unregisterParseNode($1);
416 parser->unregisterParseNode($3); 416 parser->unregisterParseNode($3);
417 parser->registerParseNode($$); 417 parser->registerParseNode($$);
418 } 418 }
419 ; 419 ;
420 420
421 PathExpr: 421 PathExpr:
422 LocationPath 422 LocationPath
423 { 423 {
424 $$ = $1; 424 $$ = $1;
(...skipping 20 matching lines...) Expand all
445 parser->unregisterParseNode($3); 445 parser->unregisterParseNode($3);
446 parser->registerParseNode($$); 446 parser->registerParseNode($$);
447 } 447 }
448 ; 448 ;
449 449
450 FilterExpr: 450 FilterExpr:
451 PrimaryExpr 451 PrimaryExpr
452 | 452 |
453 PrimaryExpr PredicateList 453 PrimaryExpr PredicateList
454 { 454 {
455 $$ = new Filter($1, *$2); 455 $$ = new Filter(adoptPtr($1), *$2);
456 parser->unregisterParseNode($1); 456 parser->unregisterParseNode($1);
457 parser->deletePredicateVector($2); 457 parser->deletePredicateVector($2);
458 parser->registerParseNode($$); 458 parser->registerParseNode($$);
459 } 459 }
460 ; 460 ;
461 461
462 OrExpr: 462 OrExpr:
463 AndExpr 463 AndExpr
464 | 464 |
465 OrExpr OR AndExpr 465 OrExpr OR AndExpr
466 { 466 {
467 $$ = new LogicalOp(LogicalOp::OP_Or, $1, $3); 467 $$ = new LogicalOp(LogicalOp::OP_Or, adoptPtr($1), adoptPtr($3));
468 parser->unregisterParseNode($1); 468 parser->unregisterParseNode($1);
469 parser->unregisterParseNode($3); 469 parser->unregisterParseNode($3);
470 parser->registerParseNode($$); 470 parser->registerParseNode($$);
471 } 471 }
472 ; 472 ;
473 473
474 AndExpr: 474 AndExpr:
475 EqualityExpr 475 EqualityExpr
476 | 476 |
477 AndExpr AND EqualityExpr 477 AndExpr AND EqualityExpr
478 { 478 {
479 $$ = new LogicalOp(LogicalOp::OP_And, $1, $3); 479 $$ = new LogicalOp(LogicalOp::OP_And, adoptPtr($1), adoptPtr($3));
480 parser->unregisterParseNode($1); 480 parser->unregisterParseNode($1);
481 parser->unregisterParseNode($3); 481 parser->unregisterParseNode($3);
482 parser->registerParseNode($$); 482 parser->registerParseNode($$);
483 } 483 }
484 ; 484 ;
485 485
486 EqualityExpr: 486 EqualityExpr:
487 RelationalExpr 487 RelationalExpr
488 | 488 |
489 EqualityExpr EQOP RelationalExpr 489 EqualityExpr EQOP RelationalExpr
490 { 490 {
491 $$ = new EqTestOp($2, $1, $3); 491 $$ = new EqTestOp($2, adoptPtr($1), adoptPtr($3));
492 parser->unregisterParseNode($1); 492 parser->unregisterParseNode($1);
493 parser->unregisterParseNode($3); 493 parser->unregisterParseNode($3);
494 parser->registerParseNode($$); 494 parser->registerParseNode($$);
495 } 495 }
496 ; 496 ;
497 497
498 RelationalExpr: 498 RelationalExpr:
499 AdditiveExpr 499 AdditiveExpr
500 | 500 |
501 RelationalExpr RELOP AdditiveExpr 501 RelationalExpr RELOP AdditiveExpr
502 { 502 {
503 $$ = new EqTestOp($2, $1, $3); 503 $$ = new EqTestOp($2, adoptPtr($1), adoptPtr($3));
504 parser->unregisterParseNode($1); 504 parser->unregisterParseNode($1);
505 parser->unregisterParseNode($3); 505 parser->unregisterParseNode($3);
506 parser->registerParseNode($$); 506 parser->registerParseNode($$);
507 } 507 }
508 ; 508 ;
509 509
510 AdditiveExpr: 510 AdditiveExpr:
511 MultiplicativeExpr 511 MultiplicativeExpr
512 | 512 |
513 AdditiveExpr PLUS MultiplicativeExpr 513 AdditiveExpr PLUS MultiplicativeExpr
514 { 514 {
515 $$ = new NumericOp(NumericOp::OP_Add, $1, $3); 515 $$ = new NumericOp(NumericOp::OP_Add, adoptPtr($1), adoptPtr($3));
516 parser->unregisterParseNode($1); 516 parser->unregisterParseNode($1);
517 parser->unregisterParseNode($3); 517 parser->unregisterParseNode($3);
518 parser->registerParseNode($$); 518 parser->registerParseNode($$);
519 } 519 }
520 | 520 |
521 AdditiveExpr MINUS MultiplicativeExpr 521 AdditiveExpr MINUS MultiplicativeExpr
522 { 522 {
523 $$ = new NumericOp(NumericOp::OP_Sub, $1, $3); 523 $$ = new NumericOp(NumericOp::OP_Sub, adoptPtr($1), adoptPtr($3));
524 parser->unregisterParseNode($1); 524 parser->unregisterParseNode($1);
525 parser->unregisterParseNode($3); 525 parser->unregisterParseNode($3);
526 parser->registerParseNode($$); 526 parser->registerParseNode($$);
527 } 527 }
528 ; 528 ;
529 529
530 MultiplicativeExpr: 530 MultiplicativeExpr:
531 UnaryExpr 531 UnaryExpr
532 | 532 |
533 MultiplicativeExpr MULOP UnaryExpr 533 MultiplicativeExpr MULOP UnaryExpr
534 { 534 {
535 $$ = new NumericOp($2, $1, $3); 535 $$ = new NumericOp($2, adoptPtr($1), adoptPtr($3));
536 parser->unregisterParseNode($1); 536 parser->unregisterParseNode($1);
537 parser->unregisterParseNode($3); 537 parser->unregisterParseNode($3);
538 parser->registerParseNode($$); 538 parser->registerParseNode($$);
539 } 539 }
540 ; 540 ;
541 541
542 UnaryExpr: 542 UnaryExpr:
543 UnionExpr 543 UnionExpr
544 | 544 |
545 MINUS UnaryExpr 545 MINUS UnaryExpr
546 { 546 {
547 $$ = new Negative; 547 $$ = new Negative;
548 $$->addSubExpression($2); 548 $$->addSubExpression(adoptPtr($2));
549 parser->unregisterParseNode($2); 549 parser->unregisterParseNode($2);
550 parser->registerParseNode($$); 550 parser->registerParseNode($$);
551 } 551 }
552 ; 552 ;
553 553
554 %% 554 %%
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698