Why we shouldn't install header files created by UIC

Matt Rogers mattr at kde.org
Wed Apr 6 18:33:29 UTC 2005


Hi,

As I'm going through and changing the main settings widget to look nicer 
(screenshot at 
http://www.sourcextreme.com/projects/kdevelop/newmainsettings.png), I've 
noticed that we're installing a header file that's based of a .ui file and 
calling it public API (i.e. we're not saying these headers are private and 
they shouldn't be used). There are several reasons why this is bad, and 
here's the two that i can think of ATM:

1. No BC. the header file may or may not change depending on what version of 
uic is used to generate the file. If we didn't autogenerate the .h and 
the .cpp file everytime, this wouldn't be as much of a problem, but we do, so 
it is a problem.

2. No encapsulation. All the data members are public. You change a variable 
name (as I have done) and you break BC, which goes back to point number 1.


The solution to this is to create a new class that contains a pointer to the 
UIC generated class and make this class part of the public API.We can't base 
the new class off of the UIC generated class because you'll still run into 
the above two points. Anyways, i still plan to go forward with my changes, so 
i hope nobody cares that we're breaking BC.

Matt




More information about the KDevelop-devel mailing list