[bt-devel] Config system
Gary Holmlund
gary.holmlund at gmail.com
Mon Feb 16 22:40:34 MST 2009
Eeli Kaikkonen wrote:
> Eeli Kaikkonen wrote:
>
>>
>> At the same time I have planned a new config system. I'll try to
>> implement it so that it can be used for creating the actions without
>> messing up the old system. Then people can see if it's good or not.
>>
>
> Here is a draft attached. It's not complete or functional yet. It's
> undocumented on purpose: if you can easily understand how it works,
> it's easy to use.
>
>
> Pros:
> - very simple public interface, easy to use
> - it's simple to add a new config item (vs. the old system
> which is incomprehensibly difficult)
> - const values and mutable settings with the same interface
> (vs. the old system which has CResMgr and CBTConfig)
> - string keys can be passed as arguments (namespaces can't which
> is a huge disadvantage in the current system)
>
> Cons:
> - uses runtime memory to store key names (namespaces in the old
> system don't take space)
> - adds some runtime speed penalty
> - no compile time checks
>
> Answers to cons:
>
> Memory consumption is not a problem. Any module takes much much much
> more memory. The old system uses runtime memory, too, though maybe a
> little bit less.
>
> Runtime speed is not a problem. Graphical UI is much more costly, not
> speaking of html rendering. If a setting is used more than once in one
> place it can be put to a local variable instead of calling
> BtConfig::get().
>
> Compile time check has some value. However, as far as I know there
> exists no system which has good sides of both: compile time check and
> runtime simplicity. The current system has lost simplicity and gained
> little. The new BtConfig is between the two: it has strict runtime
> checks hidden in the implementation but very simple public interface.
>
> You can use a key only if it has been set in init phase - this
> prevents accidental typing errors if the code is ever tested even
> once. Every key must have an explicit default value. The value can be
> set only with the correct type even though QVariant itself is not
> strict about types. Faulty type is also caught runtime if the code is
> tested even once.
>
> As I said, this hasn't been tested. I may have missed even something
> obvious. Feedback is needed.
>
> --Eeli Kaikkonen
I believe I see where you are headed with this. I have not had a chance
to think about it to much.
In the mean time, I have tried to change from KApplication to
QApplication, but it looks like I can't do it until KActionCollection is
gone. It depends on some data setup by KApplication. Perhaps we should
pull it out now.
Gary
More information about the bt-devel
mailing list