On Dec 12, 2010, at 4:53 AM, Krzysztof KosiĆski wrote:
Hello
The object of the C++ refactoring GSoC project by Abhishek was to better separate the object tree (interpretation) and the XML tree (representation). But the recent merge of his work made it clear that he potentially made things much worse!
[SNIP]
All of those are public and operate directly on the XML tree - exactly the type of operation that the project was supposed to reduce!
What do we do now? At the least, all the functions listed above should be made private.
Well, then start looking at things to make them private/protected in the *proper* way.
First of all, the main objective of the project was not to separate the XML tree. The main goal was to make progress on cleaning up our structure into C++ instead of legacy C that we had. There was a huge amount of work done on that.
A *secondary* goal was to work on abstracting the XML tree. Given the bad state that our source code was in, it was understood from the begining that complete separation could not be achieved.
*However* one of the things it was doing was changing to make the access more explicit. Aside from arranging code into classes instead of just a random collection of functions (sometimes spread over many source files), the access of data was clarified somewhat. Now that we do have such clearly improper access methods, work can be done to cleanly abstract them. It's a very simple matter to add a deprecated attribute to those methods one-by-one and have the compiler guide you to all the places to look.
To summarize what you should be able to see, we had bad access all over the place before the refactoring; now, however, some of it is more explicit and easier to spot and thus will be easier to fix.