Hey, thanks for the nice feedback.
Yes, A8.03 indeed fixed this bug, previous A8 versions didn't had it. As there is no define that indicates the A8/A7 version, I had to rewrite the callback system to make it work with A8 and A7.

I also did some other minor changes, so I decided to release a new version (btw, thanks to the 24 downloaders, although I wished some more feedback :P).
The new version has the version number 0.4.1:1025 and makes the following changes:
-> The LFTypeRef has now two new members that are used to identify objects as Lite Foundation objects (including their version). The first member just holds the size of the struct (to identify changes) and the second member is the magic number (22574592 >> 8) used to identify an Lite Foundation object
-> Together with the new members comes a new function to check if an object is an Lite Foundation object or not (LFIsType()).
-> This comes to the next great thing: LFArrayRef objects can now also hold non Lite Foundation objects, although they won't get archived and don't retained.
-> Another thing is the LFTypeCopy() function that creates a copy of Lite Foundation objects (when they implement it), you can also adopt this by overwriting the copy member of your LFTypeRef instance (A more detailed guide will follow). The Lite Foundation objects that implement this create deep copies, you may adopt this behavior if you want.
-> When calling LFAutorelease() the objects gets released within the next step of the run loop. So far so known, new is the following: They get released at the beginning of the step, not at the end. This means that when you call LFAutorelease() from within a LFTimerRef or LFRunLoopObserverRef callback, the autorelease objects don't receive a release call until the next step.
-> The already mentioned bug with A8.03 is fixed. LFRunLoopObserverRef and LFTimerRef callbacks now need to have one argument from type LFTypeRef. They receive the pointer to the LFTimerRef or LFRunLoopObserverRef object that called the callback.

Sooo, thats it, like I said, this is just a small update.
Here is the download link: http://cl.ly/b93cf41fe8777a718139

What follows next: I want to extend the current function set and also cleanup everything a bit. The LFBucketRef needs also to be finished (what a damn beast) and I have a few other ideas for objects (anyone interested in an object that provides non blocking IO?). I also want to write two new guides, the first one is a "Memory Management Guideline" (I already started it) and the second one will be a guide on how integrate Lite Foundation into your existing or new application.

Every kind of feedback is really appreciated. Really. I won't eat you!


Shitlord by trade and passion. Graphics programmer at Laminar Research.
I write blog posts at feresignum.com