Use memoize pattern for the menclose notation attribute
authorfred.wang@free.fr <fred.wang@free.fr@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 22 Aug 2016 16:18:09 +0000 (16:18 +0000)
committerfred.wang@free.fr <fred.wang@free.fr@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 22 Aug 2016 16:18:09 +0000 (16:18 +0000)
commita130399054ed4760d6868cea66a1387fd7f2f5d8
tree98a8770a1887f3364bee30783f50283b774d9940
parent5f70a8ab030539e0bc17a1599c1f19a0337941cc
Use memoize pattern for the menclose notation attribute
https://bugs.webkit.org/show_bug.cgi?id=160461

Patch by Frederic Wang <fwang@igalia.com> on 2016-08-22
Reviewed by Darin Adler.

Currently, MathMLMencloseElement::parseAttribute parse the "notation" attribute each time it
is changed. We change this to use the memoize pattern as done for other MathML attributes:
We store m_notationFlags in an Optional<uint16_t> where Optnull means that the
attribute is dirty and must be parsed again.

No new tests, already covered by existing tests.

* mathml/MathMLMencloseElement.cpp:
(WebCore::MathMLMencloseElement::parseNotationAttribute): Move parsing of the "notation"
attribute from parseAttribute into this separate helper function.
(WebCore::MathMLMencloseElement::hasNotation): This now check whether the attribute and
dirty and parse it if necessary.
(WebCore::MathMLMencloseElement::parseAttribute): Just make the attribute dirty rather than
parsing it immediately.
* mathml/MathMLMencloseElement.h: hasNotation is no longer const as it may update the
m_notationsFlags. We declare parseNotationAttribute(). Finally, we wrap m_notationFlags
in an Optional<uint16_t> and make addNotation extract the value.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@204721 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Source/WebCore/ChangeLog
Source/WebCore/mathml/MathMLMencloseElement.cpp
Source/WebCore/mathml/MathMLMencloseElement.h