On Jun 2, 2011, at 1:32 AM, Ryosuke Niwa wrote:

> All functions passed to enclosingNodeOfType in htmlediting.cpp are such 
> clients:
> 
> Node* enclosingNodeOfType(const Position& p, bool (*nodeIsOfType)(const 
> Node*), EditingBoundaryCrossingRule rule)
> 
> It takes a boolean function that takes const pointer to a DOM node.  It is 
> critical that nodeIsOfType does not modify DOM

This points to a place where const does not work well. Having the single node 
pointer that is the argument to the function be const does not express “must 
not modify DOM”.

If there was some way to express “must not modify DOM” that would be great, but 
that just expresses “must not modify this DOM node”.

It happens that the predicate takes a node argument. You could imagine a 
similar function that takes a Range. You can see that that’s an even clearer. 
There’s no way to pass a range to a function and also say “must not modify 
DOM”. I don’t think const is a good way to express this.

    -- Darin

_______________________________________________
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev

Reply via email to