Re: YY_SCANNER_SKELETON.yy_content_area could be ABSTRACT_SPECIAL ?
Berend de Boer <[email protected]> Wed, 17 Jun 2009 12:15:50 +0200
| Newsgroups | gmane.comp.lang.eiffel.gobo.devel |
|---|---|
| Message-ID | <[email protected]> |
>>>>> "Eric" == Eric Bezault <[email protected]> writes: Eric> In my mind, it has always been clear that we should use Eric> SPECIAL for efficency reason. The reason why this could be Eric> bypassed is that at the time of writing some of the Eric> supported Eiffel compilers did not support SPECIAL. Using Eric> ABSTRACT_SPECIAL is not really a solution because it Eric> introduces polymorphism, hence reducing the performance that Eric> we want to gain by using SPECIAL directly. But with SPECIAL comes the need for a copy. Which is a bit slow especially in debug mode. It's not a huge problem, but it would be nice if SPECIAL had a fast way to copy data from a given pointer. Eric> YY_SCANNER_SKELETON has been changed in such as way because Eric> during the current migration to void-safety Eric> KI_CHARACTER_BUFFER.as_special has been turned to return a Eric> non-void SPECIAL. I think that the problem comes from Eric> here. Your version of class buffer is now likely to violate Eric> this new postcondition in `as_special'. Indeed, saw the comment and I indeed inherit from KI_CHARACTER_BUFFER. Eric> I'll see what I can do to revert this change. I must say Eric> that I'm not a fan of all this void-safety thing. For code Eric> that was well equipped with assertions like the Gobo Eric> libraries, converting to void-safety makes the code more Eric> convoluted, hence harder to read and maintain. Interesting perspective. But I suppose it's a hard call. Without SPECIAL reading from the might be a bit slower, but if you need t copy to special first + read from SPECIAL I think the overall case has become a bit slower. -- Cheers, Berend de Boer ------------------------------------------------------------------------------ Crystal Reports - New Free Runtime and 30 Day Trial Check out the new simplified licensing option that enables unlimited royalty-free distribution of the report engine for externally facing server and web deployment. http://p.sf.net/sfu/businessobjects