[webkit-dev] Optimizing DOMNode _nodeWith
Matt Gough
devlists at softchaos.com
Mon Apr 24 12:06:09 PDT 2006
On 24 Apr 2006, at 19:39, Geoffrey Garen wrote:
> To me it seems wrong that the internal DOM would have to know about
> the class naming scheme in a particular binding. A better approach
> might be just to grab the tag name and swizzle it according to the
> binding's class naming convention. Something like this:
>
> HTMLElement* htmlElt = static_cast<HTMLElement*>(impl);
> String tagName = htmlElt->tagName();
> String className = "DOMHTML" + tagName + "Element";
>
> That wouldn't be exactly right because of capitalization, but it
> illustrates the general idea.
>
I thought of that too, but as you say, the Capitalisation is not
consistent enough for a generic tagName to Obj-c class name. It would
also require the className to be built up for each node. Not a great
hit I know, but still slower than getting a constant string from my
objcClassName proposal. Also, (AFAIK) some tags do not have an
equivalent class in the internal DOM (e.g H1 - H6) and TBODY, THEAD
and TFOOT. These would need special casing.
Other solutions I have been thinking about are:
1. Have an enum for all the HTML tags and have a method that returns
this enum for each element kind. Then have a simple switch statement
to map the enum to ClassName. This enum might then have other uses
for when the element type needs knowing 'quickly'.
2. Have a HashMap (or NSDictionary) that maps the tagName to the
ClassName.
Any other suggestions would be welcome
Matt
More information about the webkit-dev
mailing list