Re: [webkit-dev] Type checking / casting helpers

2014-10-02 Thread Sam Weinig
This all looks wonderful!

One question though, why downcast(…)? Will we be adding an upcast() 
function? Since the answer is probably no, could we just call this cast(…)?

- Sam

 On Sep 25, 2014, at 11:11 AM, Chris Dumez cdu...@apple.com wrote:
 
 Hi all,
 
 I started working on automatically generating the type casting helpers for 
 HTML/SVG/MathML Elements (e.g. toHTMLDivElement()). Until now, we were 
 generating only the type checking helpers using make_names.pl (e.g. 
 isHTMLDivElement()). The type casting helpers had to be manually defined 
 using NODE_TYPE_CASTS() macro.
 
 The type casting helpers are now automatically generated for most types. Part 
 of the solution involved using a templated function for type casting because 
 the types are forward-declared and we needed to do a static_cast() (a 
 reinterpret_cast() could be used with forward declarations but wouldn’t be 
 safe due to multiple inheritance).
 
 I initially had macros in place so that toHTMLDivElement() would still work 
 and would be equivalent to downcastHTMLDivElement(). The feedback I 
 received is that we should get rid of these macros and just use 
 isHTMLDivElement() / downcastHTMLDivElement() everywhere.
 The new style is very close to C++’s is_classT() and Boost’s 
 polymorphic_downcastT().
 
 I actually started updating the code to do this but I should have emailed 
 webkit-dev about this beforehand. I apologize for sending this message a bit 
 late.
 
 Please let me know if you have feedback / concerns / questions about this 
 change. I hope that this email gives you a better understanding of why I am 
 making this change.
 
 As I said before, the code base is not fully ported yet so the current 
 situation is not necessarily pretty. I will try and go through the transition 
 as fast as I can, provided that people don’t raise any concerns about this.
 
 Please also note that these new helpers still catch unnecessary type checks / 
 casts. As a matter of fact, those are now caught at build time instead of 
 linking time and should give you a nice “Unnecessary type check” / 
 “Unnecessary type cast” static assertion.
 
 Also note that the plan is to get rid of TYPE_CAST_BASE() macro entirely and 
 extend is() / downcast() to all types, not just Nodes.
 
 Kr,
 --
 Chris Dumez - Apple Inc.
 Cupertino, CA
 
 
 
 
 ___
 webkit-dev mailing list
 webkit-dev@lists.webkit.org
 https://lists.webkit.org/mailman/listinfo/webkit-dev

___
webkit-dev mailing list
webkit-dev@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-dev


Re: [webkit-dev] Type checking / casting helpers

2014-10-02 Thread Sam Weinig
That also sounds like reasonable behavior for something called cast() to me. 

Sent from my iPhone

 On Oct 2, 2014, at 5:01 PM, Benjamin Poulain benja...@webkit.org wrote:
 
 downcast fails if you do a useless cast/upcast.
 
 Benjamin
 
 On 10/2/14, 4:47 PM, Sam Weinig wrote:
 This all looks wonderful!
 
 One question though, why downcast(…)? Will we be adding an upcast()
 function? Since the answer is probably no, could we just call this
 cast(…)?
 
 - Sam
 
 On Sep 25, 2014, at 11:11 AM, Chris Dumez cdu...@apple.com
 mailto:cdu...@apple.com wrote:
 
 Hi all,
 
 I started working on automatically generating the type *casting*
 helpers for HTML/SVG/MathML Elements (e.g. toHTMLDivElement()). Until
 now, we were generating only the type *checking* helpers using
 make_names.pl (e.g. isHTMLDivElement()). The type *casting* helpers
 had to be manually defined using NODE_TYPE_CASTS() macro.
 
 The type casting helpers are now automatically generated for most
 types. Part of the solution involved using a templated function for
 type casting because the types are forward-declared and we needed to
 do a static_cast() (a reinterpret_cast() could be used with
 forward declarations but wouldn’t be safe due to multiple inheritance).
 
 I initially had macros in place so that toHTMLDivElement() would still
 work and would be equivalent to downcastHTMLDivElement(). The
 feedback I received is that we should get rid of these macros and just
 use isHTMLDivElement() / downcastHTMLDivElement() everywhere.
 The new style is very close to C++’s is_classT() and Boost’s
 polymorphic_downcastT().
 
 I actually started updating the code to do this but I should have
 emailed webkit-dev about this beforehand. I apologize for sending this
 message a bit late.
 
 Please let me know if you have feedback / concerns / questions about
 this change. I hope that this email gives you a better understanding
 of why I am making this change.
 
 As I said before, the code base is not fully ported yet so the current
 situation is not necessarily pretty. I will try and go through the
 transition as fast as I can, provided that people don’t raise any
 concerns about this.
 
 Please also note that these new helpers still catch unnecessary type
 checks / casts. As a matter of fact, those are now caught at build
 time instead of linking time and should give you a nice “Unnecessary
 type check” / “Unnecessary type cast” static assertion.
 
 Also note that the plan is to get rid of TYPE_CAST_BASE() macro
 entirely and extend is() / downcast() to all types, not just Nodes.
 
 Kr,
 --
 Chris Dumez - Apple Inc.
 Cupertino, CA
 
 
 
 
 ___
 webkit-dev mailing list
 webkit-dev@lists.webkit.org mailto:webkit-dev@lists.webkit.org
 https://lists.webkit.org/mailman/listinfo/webkit-dev
 
___
webkit-dev mailing list
webkit-dev@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-dev


Re: [webkit-dev] Type checking / casting helpers

2014-10-02 Thread Darin Adler
I suggested the name; my inspiration was the boost::polymorphic_downcast 
function template. I also like the way a name ending with the word cast fits in 
with the family of static_cast, dynamic_cast, and reinterpret_cast.

— Darin
___
webkit-dev mailing list
webkit-dev@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-dev


Re: [webkit-dev] Type checking / casting helpers

2014-10-02 Thread Yong Li
Downcast is the old good name.

cast is so vague. I would assume castA(B) means: { return (A)B; }

Yong Li

From: Darin Adlermailto:da...@apple.com
Sent: ‎10/‎3/‎2014 3:16 AM
To: WebKit Developmentmailto:webkit-dev@lists.webkit.org
Subject: Re: [webkit-dev] Type checking / casting helpers

I suggested the name; my inspiration was the boost::polymorphic_downcast 
function template. I also like the way a name ending with the word cast fits in 
with the family of static_cast, dynamic_cast, and reinterpret_cast.

— Darin
___
webkit-dev mailing list
webkit-dev@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-dev
___
webkit-dev mailing list
webkit-dev@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-dev


[webkit-dev] Type checking / casting helpers

2014-09-25 Thread Chris Dumez
Hi all,

I started working on automatically generating the type casting helpers for 
HTML/SVG/MathML Elements (e.g. toHTMLDivElement()). Until now, we were 
generating only the type checking helpers using make_names.pl (e.g. 
isHTMLDivElement()). The type casting helpers had to be manually defined using 
NODE_TYPE_CASTS() macro.

The type casting helpers are now automatically generated for most types. Part 
of the solution involved using a templated function for type casting because 
the types are forward-declared and we needed to do a static_cast() (a 
reinterpret_cast() could be used with forward declarations but wouldn’t be 
safe due to multiple inheritance).

I initially had macros in place so that toHTMLDivElement() would still work and 
would be equivalent to downcastHTMLDivElement(). The feedback I received is 
that we should get rid of these macros and just use isHTMLDivElement() / 
downcastHTMLDivElement() everywhere.
The new style is very close to C++’s is_classT() and Boost’s 
polymorphic_downcastT().

I actually started updating the code to do this but I should have emailed 
webkit-dev about this beforehand. I apologize for sending this message a bit 
late.

Please let me know if you have feedback / concerns / questions about this 
change. I hope that this email gives you a better understanding of why I am 
making this change.

As I said before, the code base is not fully ported yet so the current 
situation is not necessarily pretty. I will try and go through the transition 
as fast as I can, provided that people don’t raise any concerns about this.

Please also note that these new helpers still catch unnecessary type checks / 
casts. As a matter of fact, those are now caught at build time instead of 
linking time and should give you a nice “Unnecessary type check” / “Unnecessary 
type cast” static assertion.

Also note that the plan is to get rid of TYPE_CAST_BASE() macro entirely and 
extend is() / downcast() to all types, not just Nodes.

Kr,
--
Chris Dumez - Apple Inc.
Cupertino, CA




___
webkit-dev mailing list
webkit-dev@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-dev