my gobject implementation
- From: wereHamster <tom dbservice com>
- To: gtk-devel-list gnome org
- Subject: my gobject implementation
- Date: Thu, 28 Aug 2003 21:53:34 +0200
hi folks
I'm proud to announce my own implementation of the GLib/GType/GObject 
libraries. In fact it is one library called gsuite. I made it just for 
fun, also because i missed some features in the your implementation. The 
core is the GObject imlementation. It contains properties and signals 
for objects. It is all implemented on very few lines of code (I don't 
know how to measure it, there are some console commands like wc etc, but 
I don't know how to use them, anyway i would say not more than a few 
houndred lines of code only for the GType system) and I would say its 
much faster, not only because of the small size, but also because it 
doesn't use any locks and thus is not multi-thread safe (but adding 
locks for mt safety wouldn't be much work).
The GValue implementation is in a separate library and doesn't depend on 
GType or GObject. There are some features missing (mainly in GType and 
GObject) which are in your implementation, but I think they are rarely 
used, so I didn't bother with them. The GLib library has only the glog 
facility and the trash stack (GTrashStack) implemented, just the minimum 
that is needed for GType and GObject.
The feature I missed most was that I could only pass one argument to the 
signals, if you wants to pass two, you have to create a small structure 
with two pointers. In my library you can pass three arguments defined at 
signal creation and three user arguments, thats a total of total six 
arguments, that should be enough for all.
Another problem was n_preallocs: Owen told me that it has no sense to 
set n_preallocs to a value greater than zero, I don't remember why, but 
I think it has something to do with the way the unused instances are 
saved (GMemChunk?). I have implemented it using the trash stack to store 
the unused instances, it worked even with n_preallocs set to more than 
20000 and a instance size of a few kbytes, total use of memory exceeded 
1Gig, everything was freed succesfully, no memory leak (proved with 
valgrind).
Interfaces are implemented and supported, too, but not tested much, so 
there is some work to do if you wants to get them running properly.
And what now?
I don't know, perhaps someone wants my implementation, perhaps noone 
wants that. I will use it in my projects, thats sure. I had the idea to 
do something like a 'instance tracker' which would hold a pointer of 
each instance and free them automatically when the application ends, 
like a garbage collection.
anyway...
Anyone is kindly welcome to comment my work, if you do so, please cc me, 
I'm not subscribed to the list.
tc
--
wereHamster
[
Date Prev][
Date Next]   [
Thread Prev][
Thread Next]   
[
Thread Index]
[
Date Index]
[
Author Index]