Classes with at least one virtual function needs a virtual destructor.
This patch adds virtual destructors to Interface classes
And also enables 'warn on missing virtual destructors'
... instead of const char*
* Because it is more robust
* and it is faster... yes faster.
It is faster because internally some of our classes use std::string
(like FileUtils and Dictionary) so converting back-and-forth from const
char * to std::string is very expensive.
It is faster to have everthing in std::string as soon as possible to
prevent further conversions.
There are still some parts of the code that require conversion, but
most of the code was converted.