On Jun 3, 2011, at 7:50 AM, Darin Adler wrote:

> 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.

Are you referring to the fact that from a const Node* can be used to get 
non-const pointers to the Node's neighbors in the DOM, or something else?

Regards,
Maciej

_______________________________________________
webkit-dev mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev

Reply via email to