H.G. Muller wrote: > There is a problem with that: if the format would be go to changes it > would be for the > reason to provide more information some GUIs need, and it would have to > appear > in the list. To be able to ignore extentions of the specs it should be > possible to let the > library allready filter the data, and only present you those items you want. >
Let's go back to the interface i suggested as an example. You can rewrite your AutoInstall function like this: std::string AutoInstall (const std::string& lastTimeStamp) { //TimeStamp may be a string composed by numberofengines_timeofthelastengineinstalled std::string timeStamp = AutomagicalEngine::getTimeStamp(); if (lastTimeStamp != timeStamp) { auto available_engines = AutomagicalEngine::getEngines(); //I think that all the engines available should be returned //InstallNewEngine should check if the engine is already registered (maybe the user did it manually) for (auto& e : available_engines) { // for each InstallNewEngine(e.getExecutable(), e.getDir(), e.getVariants(), e.getProtocol()); } } return timeStamp; } c++ provide automatic memory management and encapsulation, but the same thing can be written in c too (like gtk_widget for example). Now suppose that you change the .eng file format and add some other information, like the engine version. You will add a new function to the interface: std::string getVersion(); but all the implementation details, like parsing the .eng file for the new format (still need to support the old one, the new getVersion function will return an empty string for old eng files) will be encapsulated inside the library. If the GUI is not interested in the new information there is nothing to change: copy & paste the updated library and you have automatic support for the new format. About Stockfish: i agree with their point of view. They support a wide range of platform, compilers, linux distro: implementing your protocol in the makefile will be a nightmare (just think about how many linux distro on how many platform need to be tested every time you'll change something in the protocol). On the contrary the debian maintainer (for example) need to worry only about testing the changes on debian for the platform he is building the package for. When Steve Jobs returned to Apple it famously reduced the product number to 4: you need to focus if you want to create the best. Stockfish became the strongest chess engine by trimming all the unnecessary fat: the time a developer spend on working and testing this protocol is time that he could have spent improving the engine. Bye, Fulvio ------------------------------------------------------------------------------ Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server from Actuate! Instantly Supercharge Your Business Reports and Dashboards with Interactivity, Sharing, Native Excel Exports, App Integration & more Get technology previously reserved for billion-dollar corporations, FREE http://pubads.g.doubleclick.net/gampad/clk?id=157005751&iu=/4140/ostg.clktrk _______________________________________________ Scid-users mailing list Scid-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/scid-users