Index: Source/build/scripts/templates/ElementFactory.cpp.tmpl |
diff --git a/Source/build/scripts/templates/ElementFactory.cpp.tmpl b/Source/build/scripts/templates/ElementFactory.cpp.tmpl |
index 1eca356b5b8cecf14501064c6f9d6725ab44b4a8..56398570ec707adfc991b69f21f474d3f49a146e 100644 |
--- a/Source/build/scripts/templates/ElementFactory.cpp.tmpl |
+++ b/Source/build/scripts/templates/ElementFactory.cpp.tmpl |
@@ -58,18 +58,21 @@ static PassRefPtr<{{namespace}}Element> {{tag|symbol}}Constructor( |
} |
{%- endfor %} |
-static void addTag(const QualifiedName& tag, ConstructorFunction func) |
-{ |
- g_constructors->set(tag.localName(), func); |
-} |
- |
static void createFunctionMap() |
{ |
ASSERT(!g_constructors); |
g_constructors = new FunctionMap; |
+ struct CreateFunctionMapData { |
+ const QualifiedName& tag; |
+ ConstructorFunction func; |
+ }; |
+ const CreateFunctionMapData data[] = { |
adamk
2014/02/18 18:28:41
Not sure if it matters (since this is only called
Daniel Bratell
2014/02/19 13:41:05
It's a tricky question. For a compile time constan
|
{%- for tag in tags|sort if not tag.noConstructor %} |
- addTag({{tag|symbol}}Tag, {{tag|symbol}}Constructor); |
+ { {{tag|symbol}}Tag, {{tag|symbol}}Constructor }, |
{%- endfor %} |
+ }; |
+ for (size_t i = 0; i < sizeof(data) / sizeof(*data); i++) |
adamk
2014/02/18 18:28:41
Nit: you can use WTF_ARRAY_LENGTH() (from wtf/StdL
Daniel Bratell
2014/02/19 13:41:05
Thanks!
|
+ g_constructors->set(data[i].tag.localName(), data[i].func); |
} |
PassRefPtr<{{namespace}}Element> {{namespace}}ElementFactory::create{{namespace}}Element( |