V4RB 3.0 and pre-emptive threads

Charles Yeomans charles at declareSub.com
Mon Jul 23 11:23:40 CDT 2007


Here's the code you need to initialize and shut down V4CC.

   const CocoaLib = "Cocoa.framework"

   soft declare function NSClassFromString lib CocoaLib (aClassName  
as CFStringRef) as Ptr
   soft declare function NSSelectorFromString lib CocoaLib  
(aSelectorName as CFStringRef) as Ptr

   dim NSBundleClass as Ptr = NSClassFromString("NSBundle")

   soft declare function objc_msgSend lib CocoaLib (obj as Ptr,  
selectorID as Ptr, param1 as CFStringRef) as Ptr

   dim ValentinaBundle as Ptr = objc_msgSend(NSBundleClass,  
NSSelectorFromString("bundleWithPath:"), "/path/to/V4CC.framework")

   soft declare sub objc_msgSend lib CocoaLib (obj as Ptr, selectorID  
as Ptr)

   objc_msgSend ValentinaBundle, NSSelectorFromString("load")

   dim ValentinaClass as Ptr = NSClassFromString("Valentina")


   soft declare function objc_msgSend lib CocoaLib (obj as Ptr,  
selectorID as Ptr) as Ptr

   dim ValentinaObject as Ptr = objc_msgSend(ValentinaClass,  
NSSelectorFromString("instance"))


   soft declare sub objc_msgSend lib "Cocoa.framework" (obj as Ptr,  
selectorID as Ptr, param1 as Integer, param2 as CFStringRef)

   objc_msgSend ValentinaObject, NSSelectorFromString 
("initWithCacheSize:serial:"), 8*1024*1024, ""


   objc_msgSend ValentinaObject, NSSelectorFromString("shutDown")



This code works, but I did not work out memory management carefully;  
probably you should release ValentinaBundle when finished with it.

I'm not sure that you wouldn't be better off either getting V4Rb to  
work with preemptive threads, or studying your SQL to see if you can  
come up with something faster.

Charles Yeomans








On Jul 23, 2007, at 11:37 AM, Dave Addey wrote:

> Hi Charles,
>
> I've downloaded V4CC, but I'm still not managing to declare against  
> the
> library.  I'm assuming I need to declare against
> "/Library/Frameworks/V4CC.Framework/V4CC"?  How would I go about  
> making a
> declare for (e.g.) initialising Valentina, or shutting down Valentina?
>
> I'm sure that as soon as I get started on this, I'll be good to go  
> - but I'm
> struggling to get established.
>
> Does the same go for declaring against VSDK.Framework?
>
> Sorry for the basic questions - I'm generally okay with declares  
> (albeit new
> to Cocoa ones), but just need some help getting started.
>
> Dave.
>
>> From: Charles Yeomans <charles at declareSub.com>
>> Reply-To: Valentina Developers <valentina at lists.macserve.net>
>> Date: Mon, 23 Jul 2007 10:46:03 -0400
>> To: Valentina Developers <valentina at lists.macserve.net>
>> Subject: Re: V4RB 3.0 and pre-emptive threads
>>
>> If you want to try this approach, you might be better off getting the
>> Objective-C library and declaring to that.
>>
>>
>> Charles Yeomans
>>
>>
>> On Jul 23, 2007, at 6:10 AM, Dave Addey wrote:
>>
>>> Hi Ruslan,
>>>
>>> Thank you for all of the help with this.  I have one more
>>> possibility to
>>> explore.  Would it be possible for me to declare directly against  
>>> the
>>> Valentina Kernel dylib, and pass in a reference to the Valentina
>>> objects I
>>> have already created?  Something like this in RB:
>>>
>>>
>>> Const kVKernelLib =
>>> "/usr/local/lib/vcomponents/libvkernel_fat_release.dylib"
>>>
>>> Declare Function ValentinaInit Lib kVKernelLib (inCacheSize as  
>>> UInt32,
>>> inMacSNPtr as Ptr, inWinSNPtr as Ptr, inUnixSNPtr as Ptr) as UInt32
>>>
>>> Dim VCacheSize as integer
>>> VCacheSize = ValentinaInit(8*1024*1024, 0, 0, 0)
>>>
>>>
>>> Whenever I try this, my REALbasic application crashes with a
>>> console error
>>> of:
>>>
>>>
>>> dyld: lazy symbol binding failed: Symbol not found: _ValentinaInit
>>>   Referenced from: /Documents/DJ-1800/svn_code_cvsdude/
>>> PreemptiveThread/Test
>>> project/PreemptiveThread.debug.app/Contents/MacOS/
>>> PreemptiveThread.debug
>>>   Expected in: /usr/local/lib/vcomponents/ 
>>> libvkernel_fat_release.dylib
>>>
>>>
>>> This does not involve passing references to existing REALbasic
>>> objects, and
>>> I guess I would need to do this too.
>>>
>>> I am very aware that this is *not* the way this is meant to be
>>> done!  But I
>>> have to find a way to call Valentina, on a true, preemptive  
>>> background
>>> thread from within REALbasic, using my existing REALbasic valentina
>>> objects,
>>> but without using the V4RB plugin.  My only alternative is to re-
>>> write all
>>> of my database code in a plugin (and this is a lot of code).
>>>
>>> If you have any other ideas as to how I could do this, I would be  
>>> very
>>> grateful, as I am hitting my head against a brick wall.
>>>
>>
>> _______________________________________________
>> Valentina mailing list
>> Valentina at lists.macserve.net
>> http://lists.macserve.net/mailman/listinfo/valentina
>
>
> _______________________________________________
> Valentina mailing list
> Valentina at lists.macserve.net
> http://lists.macserve.net/mailman/listinfo/valentina



More information about the Valentina mailing list