On Fri, Jul 20, 2007 at 11:34:38AM +0200, Michael Gerz wrote:
> Michael Gerz schrieb:
> >Guys,
> >
> >with Dov's latest patch (#1820) committed, I was able to produce a CT 
> >patch that does not touch the present (non-)const-ness of OutputParams.
> >
> >Since I consider this bug a major CT bug (text inside deleted insets 
> >is displayed as unchanged text), I would like you to reconsider the 
> >patch for 1.5.0.
> >
> >In a certain sense, it is a one-liner because it effects current 
> >behavior only with this statement:
> >
> >-               Change const & change = pimpl_->lookupChange(i);
> >+               Change const & change = runparams.inDeletedInset ? 
> >runparams.changeOfDeletedInset
> >+                                                                : 
> >pimpl_->lookupChange(i);
> >
> >Implementation notes:
> >
> >In order to fix the bug, it is necessary to pass information down the 
> >call stack. Prior to #1820, it would have been possible to make a 
> >local copy of the (const) outputparams, modify them locally, and pass 
> >the modified params down. However, it turns out that Dov needs to pass 
> >information _up_. Therefore, IMHO it is not a good idea to create 
> >local copies of outputParams in the same method. Instead, I modify the 
> >needed parameter at the beginning and reset them at the end 
> >(increment/decrement of inDeletedInset).
> BTW: If you still don't like to add this information to OutputParams, I 
> have to add more parameters to several methods, e.g. to:
> 
> void Paragraph::Pimpl::simpleTeXSpecialChars(Buffer const & buf,
>                                             BufferParams const & bparams,
>                                             odocstream & os,
>                                             TexRow & texrow,
>                                             OutputParams & runparams,
>                                             Font & running_font,
>                                             Font & basefont,
>                                             Font const & outerfont,
>                                             bool & open_font,
>                                             Change & running_change,
>                                             Layout const & style,
>                                             pos_type & i,
>                                             unsigned int & column,
>                                             value_type const c)
> 
> IMHO 14 parameters are enough. Don't you think that a container like 
> OutputParams is the better solution?

I am all for a container in such cases.

Although i've seen functions with 57 parameters in real life, 14 is
already far too much.

Andre'

Reply via email to