File: MakeNames.cpp.tmpl

package info (click to toggle)
chromium-browser 41.0.2272.118-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie-kfreebsd
  • size: 2,189,132 kB
  • sloc: cpp: 9,691,462; ansic: 3,341,451; python: 712,689; asm: 518,779; xml: 208,926; java: 169,820; sh: 119,353; perl: 68,907; makefile: 28,311; yacc: 13,305; objc: 11,385; tcl: 3,186; cs: 2,225; sql: 2,217; lex: 2,215; lisp: 1,349; pascal: 1,256; awk: 407; ruby: 155; sed: 53; php: 14; exp: 11
file content (52 lines) | stat: -rw-r--r-- 1,460 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
{% from "macros.tmpl" import license %}
{{ license() }}

#include "config.h"

#include "{{namespace}}{{suffix}}Names.h"

#include "wtf/StdLibExtras.h"

// Generated from:
{% for entry in in_files|sort %}
// - {{entry}}
{% endfor %}

namespace blink {
namespace {{namespace}}Names {

using namespace WTF;

const int k{{suffix}}NameCount = {{entries|length}};

void* {{suffix}}NamesStorage[k{{suffix}}NameCount * ((sizeof(AtomicString) + sizeof(void *) - 1) / sizeof(void *))];

{% for entry in entries|sort(attribute='name', case_sensitive=True) %}
{% filter enable_conditional(entry.Conditional) %}
const AtomicString& {{entry|symbol}} = reinterpret_cast<AtomicString*>(&{{suffix}}NamesStorage)[{{loop.index0}}];
{% endfilter %}
{% endfor %}

void init{{suffix}}()
{
    struct NameEntry {
        const char* name;
        unsigned hash;
        unsigned char length;
    };

    static const NameEntry kNames[] = {
    {% for entry in entries|sort(attribute='name', case_sensitive=True) %}
        { "{{entry|cpp_name}}", {{entry|cpp_name|hash}}, {{entry|cpp_name|length}} },
    {% endfor %}
    };

    for (size_t i = 0; i < WTF_ARRAY_LENGTH(kNames); i++) {
        StringImpl* stringImpl = StringImpl::createStatic(kNames[i].name, kNames[i].length, kNames[i].hash);
        void* address = reinterpret_cast<AtomicString*>(&{{suffix}}NamesStorage) + i;
        new (address) AtomicString(stringImpl);
    }
}

} // {{namespace}}Names
} // namespace blink