OLD | NEW |
1 {% from "macros.tmpl" import license -%} | 1 {% from "macros.tmpl" import license %} |
2 {{ license() }} | 2 {{ license() }} |
3 | 3 |
4 #include "config.h" | 4 #include "config.h" |
5 | 5 |
6 #ifdef SKIP_STATIC_CONSTRUCTORS_ON_GCC | 6 #ifdef SKIP_STATIC_CONSTRUCTORS_ON_GCC |
7 #define {{namespace|to_macro_style}}_NAMES_HIDE_GLOBALS 1 | 7 #define {{namespace|to_macro_style}}_NAMES_HIDE_GLOBALS 1 |
8 #else | 8 #else |
9 #define QNAME_DEFAULT_CONSTRUCTOR 1 | 9 #define QNAME_DEFAULT_CONSTRUCTOR 1 |
10 #endif | 10 #endif |
11 | 11 |
12 #include "{{namespace}}Names.h" | 12 #include "{{namespace}}Names.h" |
13 | 13 |
14 #include "wtf/StaticConstructors.h" | 14 #include "wtf/StaticConstructors.h" |
15 | 15 |
16 namespace WebCore { | 16 namespace WebCore { |
17 namespace {{namespace}}Names { | 17 namespace {{namespace}}Names { |
18 | 18 |
19 using namespace WebCore; | 19 using namespace WebCore; |
20 | 20 |
21 DEFINE_GLOBAL(AtomicString, {{namespace_prefix}}NamespaceURI) | 21 DEFINE_GLOBAL(AtomicString, {{namespace_prefix}}NamespaceURI) |
22 | 22 |
23 {%- if tags %} | 23 {% if tags %} |
24 | |
25 // Tags | 24 // Tags |
26 {%- for tag in tags|sort %} | 25 {% for tag in tags|sort %} |
27 DEFINE_GLOBAL(QualifiedName, {{tag|symbol}}Tag) | 26 DEFINE_GLOBAL(QualifiedName, {{tag|symbol}}Tag) |
28 {%- endfor %} | 27 {% endfor %} |
29 | 28 |
30 | 29 |
31 PassOwnPtr<const QualifiedName*[]> get{{namespace}}Tags() | 30 PassOwnPtr<const QualifiedName*[]> get{{namespace}}Tags() |
32 { | 31 { |
33 OwnPtr<const QualifiedName*[]> tags = adoptArrayPtr(new const QualifiedName*
[{{namespace}}TagsCount]); | 32 OwnPtr<const QualifiedName*[]> tags = adoptArrayPtr(new const QualifiedName*
[{{namespace}}TagsCount]); |
34 {%- for tag in tags|sort %} | 33 {% for tag in tags|sort %} |
35 tags[{{loop.index0}}] = reinterpret_cast<const QualifiedName*>(&{{tag|symbol
}}Tag); | 34 tags[{{loop.index0}}] = reinterpret_cast<const QualifiedName*>(&{{tag|symbol
}}Tag); |
36 {%- endfor %} | 35 {% endfor %} |
37 return tags.release(); | 36 return tags.release(); |
38 } | 37 } |
39 | 38 |
40 {%- endif %} | 39 {% endif %} |
41 | |
42 // Attributes | 40 // Attributes |
43 {%- for attr in attrs|sort %} | 41 {% for attr in attrs|sort %} |
44 DEFINE_GLOBAL(QualifiedName, {{attr|symbol}}Attr) | 42 DEFINE_GLOBAL(QualifiedName, {{attr|symbol}}Attr) |
45 {%- endfor %} | 43 {% endfor %} |
46 | 44 |
47 PassOwnPtr<const QualifiedName*[]> get{{namespace}}Attrs() | 45 PassOwnPtr<const QualifiedName*[]> get{{namespace}}Attrs() |
48 { | 46 { |
49 OwnPtr<const QualifiedName*[]> attrs = adoptArrayPtr(new const QualifiedName
*[{{namespace}}AttrsCount]); | 47 OwnPtr<const QualifiedName*[]> attrs = adoptArrayPtr(new const QualifiedName
*[{{namespace}}AttrsCount]); |
50 {%- for attr in attrs|sort %} | 48 {% for attr in attrs|sort %} |
51 attrs[{{loop.index0}}] = reinterpret_cast<const WebCore::QualifiedName*>(&{{
attr|symbol}}Attr); | 49 attrs[{{loop.index0}}] = reinterpret_cast<const WebCore::QualifiedName*>(&{{
attr|symbol}}Attr); |
52 {%- endfor %} | 50 {% endfor %} |
53 return attrs.release(); | 51 return attrs.release(); |
54 } | 52 } |
55 | 53 |
56 void init() | 54 void init() |
57 { | 55 { |
58 // Use placement new to initialize the globals. | 56 // Use placement new to initialize the globals. |
59 AtomicString {{namespace_prefix}}NS("{{namespace_uri}}", AtomicString::Const
ructFromLiteral); | 57 AtomicString {{namespace_prefix}}NS("{{namespace_uri}}", AtomicString::Const
ructFromLiteral); |
60 | 58 |
61 // Namespace | 59 // Namespace |
62 new ((void*)&{{namespace_prefix}}NamespaceURI) AtomicString({{namespace_pref
ix}}NS); | 60 new ((void*)&{{namespace_prefix}}NamespaceURI) AtomicString({{namespace_pref
ix}}NS); |
63 | 61 {% for name, tag_list in (tags + attrs)|groupby('name')|sort %} |
64 {%- for name, tag_list in (tags + attrs)|groupby('name')|sort %} | |
65 StringImpl* {{tag_list[0]|symbol}}Impl = StringImpl::createStatic("{{name}}"
, {{name|length}}, {{name|hash}}); | 62 StringImpl* {{tag_list[0]|symbol}}Impl = StringImpl::createStatic("{{name}}"
, {{name|length}}, {{name|hash}}); |
66 {%- endfor %} | 63 {% endfor %} |
67 | 64 |
68 // Tags | 65 // Tags |
69 {%- for tag in tags|sort %} | 66 {% for tag in tags|sort %} |
70 createQualifiedName((void*)&{{tag|symbol}}Tag, {{tag|symbol}}Impl, {{namespa
ce_prefix}}NS); | 67 createQualifiedName((void*)&{{tag|symbol}}Tag, {{tag|symbol}}Impl, {{namespa
ce_prefix}}NS); |
71 {%- endfor %} | 68 {% endfor %} |
72 | 69 |
73 // Attrs | 70 // Attrs |
74 {%- for attr in attrs|sort %} | 71 {% for attr in attrs|sort %} |
75 {%- if use_namespace_for_attrs %} | 72 {% if use_namespace_for_attrs %} |
76 createQualifiedName((void*)&{{attr|symbol}}Attr, {{attr|symbol}}Impl, {{name
space_prefix}}NS); | 73 createQualifiedName((void*)&{{attr|symbol}}Attr, {{attr|symbol}}Impl, {{name
space_prefix}}NS); |
77 {%- else %} | 74 {% else %} |
78 createQualifiedName((void*)&{{attr|symbol}}Attr, {{attr|symbol}}Impl); | 75 createQualifiedName((void*)&{{attr|symbol}}Attr, {{attr|symbol}}Impl); |
79 {%- endif %} | 76 {% endif %} |
80 {%- endfor %} | 77 {% endfor %} |
81 } | 78 } |
82 | 79 |
83 } // {{namespace}} | 80 } // {{namespace}} |
84 } // WebCore | 81 } // WebCore |
OLD | NEW |