Am 25.09.2013 um 20:59 schrieb Vincent van Ravesteijn <v...@lyx.org>:

> 
>>> - The commit about splitting the encoding stuff and moving helper functions 
>>> into a new class, should really have some explanation why this is needed, 
>>> and why we would need a new class for this. The construction around 
>>> CharInfo becomes rather strange. It is defined in Encoding.cpp, which 
>>> indicates that it should not be used outside Encoding.cpp. It is now used 
>>> outside this file in BufferEncoding.cpp. Because of this, there are a lot 
>>> of static functions added to the Encoding class just to allow 
>>> BufferEncoding to use CharInfo as an incomplete type. Moreover, most of 
>>> these functions aren't even used.  Why is this moved into a new class ? 
>>> What was the problem that needed to be solved ? Can't we solve it with a 
>>> private header file ?
>>> 
>>> - The file src/BufferEncoding.cpp starts with a comment that it is 
>>> Encoding.cpp
>>> 
>>> - The class name is BufferEncodings so why don't we call the file 
>>> BufferEncodings.cpp ? (I know Encodings in Encoding.cpp.., but is that a 
>>> good reason?)
>>> 
>>> - The following includes in BufferEncoding.cpp are not needed:
>>> 
>>> #include "BufferList.h"
>>> #include "Lexer.h"
>>> #include "LyXRC.h"
>>> #include "support/debug.h"
>>> #include "support/gettext.h"
>>> #include "support/FileName.h"
>>> #include "support/textutils.h"
>>> #include "support/unicode.h"
>>> #include <boost/cstdint.hpp>
>>> #include <sstream>
>> The root problem is the fact Encoding(s) classes are used both by LyX and 
>> tex2lyx
>> and these classes are using the Buffer stuff.
>> 
>> This forces to link tex2lyx with the Buffer etc. making it another LyX binary
>> or split the classes somehow. Originally it was done by a dirty hack -
>> using the same code even without making a copy and compiling it twice with 
>> different
>> compiler flags. That's not nice. Neither with C nor with C++.
>> 
>> Nevertheless I'm standing on the "shoulder of giants" and want to change the 
>> code base
>> only slightly if possible. I cannot use modern tools like Eclipse for 
>> refactoring the
>> code.
> 
> Well the "giants" have made a mess in certain areas of the code. And I 
> believe this is increasing the mess a bit.
> 
>> Regarding the details:
>> * BufferEncoding.cpp is a manual copy of Encoding.cpp
>> - that's why the wrong comment
>> - that's why the name of the file
>> - that's why the superfluous includes
>> * CharInfo was a private struct
>> - I've made a class to make it more functional but didn't want to make it 
>> public
>> - It should be used inside Encoding(s) only
>> - Yes, one can move it to a separate public class with header file
>> - Yes, that's why the static methods in Encoding.cpp …
>> 
>> Who is we?
> 
> Well, I have no other choice than to fix this myself in the coming days and 
> to prepare the release of beta 2 in the weekend, or to reject this branch for 
> now and prepare the release of beta 2.

I did it myself.

BTW, I think there was a bug in the parser…

The removed lines

-               if (suffixIs(info.mathcommand, '}'))
-                       info.flags |= CharInfoMathNoTermination;

were above the assignment of the info.mathcommand member variable.

Stephan

Reply via email to