| OLD | NEW |
| 1 {% from 'macros.tmpl' import license %} | 1 {% from 'macros.tmpl' import trie_length_switch %} |
| 2 {{license()}} | 2 // Copyright (c) 2016 The Chromium Authors. All rights reserved. |
| 3 {% macro trie_switch(trie, index) %} | 3 // Use of this source code is governed by a BSD-style license that can be |
| 4 {# FIXME: No need to switch if there's only a single item in the subtrie: | 4 // found in the LICENSE file. |
| 5 can just have an if statement as we're currently doing for leaves. #} | |
| 6 switch (data[{{index}}]) { | |
| 7 {% for char, subtrie, tag, conditions in trie %} | |
| 8 case '{{char}}': | |
| 9 {% if subtrie %}{# Recurse on subtrie #} | |
| 10 {{trie_switch(subtrie, index + 1) | indent}} | |
| 11 {% elif conditions %}{# Check suffix #} | |
| 12 if ({{conditions | join(' && ')}}) | |
| 13 return {{tag}}Tag.localName().impl(); | |
| 14 return 0; | |
| 15 {% else %}{# Terminal node (no suffix) #} | |
| 16 return {{tag}}Tag.localName().impl(); | |
| 17 {% endif %} | |
| 18 {% endfor %} | |
| 19 } | |
| 20 return 0; | |
| 21 {% endmacro %} | |
| 22 | 5 |
| 23 #include "{{namespace}}ElementLookupTrie.h" | 6 #include "{{namespace}}ElementLookupTrie.h" |
| 24 | 7 |
| 25 #include "{{namespace}}Names.h" | 8 #include "{{namespace}}Names.h" |
| 26 | 9 |
| 27 namespace blink { | 10 namespace blink { |
| 28 | 11 |
| 29 using namespace {{namespace}}Names; | 12 using namespace {{namespace}}Names; |
| 30 | 13 |
| 31 StringImpl* lookup{{namespace}}Tag(const UChar* data, unsigned length) | 14 StringImpl* lookup{{namespace}}Tag(const UChar* data, unsigned length) |
| 32 { | 15 { |
| 33 ASSERT(data); | 16 DCHECK(data); |
| 34 ASSERT(length); | 17 DCHECK(length); |
| 35 switch (length) { | 18 {% macro trie_return_statement(tag) %}{{tag}}Tag.localName().impl(){% endmac
ro %} |
| 36 {% for length, trie in length_tries %} | 19 {{ trie_length_switch(length_tries, trie_return_statement, 'nullptr') | inde
nt(4) }} |
| 37 case {{length}}: | 20 return nullptr; |
| 38 {{trie_switch(trie, 0) | indent(8)}} | |
| 39 {% endfor %} | |
| 40 } | |
| 41 return 0; | |
| 42 } | 21 } |
| 43 | 22 |
| 44 } // namespace blink | 23 } // namespace blink |
| OLD | NEW |