Squeak and bluetooth
John M McIntosh
johnmci at smalltalkconsulting.com
Tue Jan 10 17:44:31 UTC 2006
Sure, you're missing the entire Sophie code base which uses this,
however at the moment the implementation of the caller of this is via
Tweak-Platforms from the impara tweak server.
I had added these types (MacCFString, MacCFType, MacCFURL, MacCFURL),
and the FFI interfaces to assist in getting the folder paths for
known os-x folder locations, however I've not actually tested *all*
the api calls yet.
Usage is quite straightforward.
buffer _ ByteArray new: 4096.
error := self cFStringGetCString: possibleCFString buffer: buffer
size: buffer size encoding: 0.
self cFRelease: possibleCFString.
Typically I've been copying the C definition into the method like so
for documentation purposes.
cFStringGetCString: aStringRef buffer: aBuffer size: aSize encoding:
<cdecl: bool 'CFStringGetCString' (MacCFString* char* long long)
^ self externalCallFailed
"Boolean CFStringGetCString (
I'll note that I'm cheating and resolving CFIndes and
CFStdringEncoding to long, but you could define a structured class
with a long field for those.
Save your image often, mistakes in coding the FFI logic will
generally crash your VM.
On 10-Jan-06, at 5:42 AM, Davide Varvello wrote:
> Hi Bert,
>> As for your questions, yes, FFI is just fine for this. And I'd
>> recommend Carbon.
>> For a bit of working recent Carbon FFI code have a look at
>> The "Files-Locations" package uses FFI calls to locate system folders
> I downloaded the Files-Locations-bf.18.mcz it contains 4 classes:
> MacCFString, MacCFType, MacCFURL, MacCFURL but there are no methods
> that call os libraries. Am I missing something?
John M. McIntosh <johnmci at smalltalkconsulting.com> 1-800-477-2659
Corporate Smalltalk Consulting Ltd. http://www.smalltalkconsulting.com
More information about the Squeak-dev