On Sun, Sep 11, 2016 at 2:07 AM, Ben Coman <btc@openinworld.com> wrote: > > > > On Sat, Sep 10, 2016 at 3:14 PM, Ben Coman <btc@openinworld.com> wrote: >> >> Looks like I've been reinventing the wheel making an FFI interface to libclang.�� I just bumped into Ciprian's TalkFFI which provides a NativeBoost interface to libclang (and was used to create libgit2 bindings) >> >> * https://rochiamaya.wordpress.com/2013/07/30/create-bindings-with-talkffi/ >> * http://smalltalkhub.com/#!/~CipT/TalkFFI >> * http://smalltalkhub.com/#!/~CipT/LibClang >> >> But it is NativeBoost based and the Configuration loads AsmJit and NativeBoost packages, which seems to lock up while "Initializing Nativeboost." ��What is involved in porting TalkFFI to Pharo 5.0 UFFI? >> >> For a start, these can be manually load no problem... >> �� LibClang-FFI-Types-CiprianTeodorov.2 >> �� LibClang-Tests-CiprianTeodorov.5 >> �� LibClang-Examples-CiprianTeodorov.2 >> >> but loading LibClang-FFI-Binding-CiprianTeodorov.1 >> reports "This package depends on the following classes: >> �� CLLibraryMap >> �� CLExternalLibraryWrapper >> You must resolve these dependencies before you will be able to load these definitions: >> �� CXIndexH" >> >> which I found these in TalkFFI-Runtime-CiprianTeodorov.7, but loading this >> reports "This package depends on the following classes: >> �� NBExternalLibraryWrapper >> You must resolve these dependencies before you will be able to load these definitions: >> �� CLExternalLibraryWrapper >> >> which I see is in Pharo 4.0 and not Pharo 5.0.�� So what is the replacement for NBExternalLibraryWrapper? >> What are the other general patterns for porting NativeBoost apps to UFFI? >> > > For discussion I've compiled a rough comparison of classes of NativeBoost and UFFI.�� Quite a bit of guesswork though.�� Feel free to edit.�� Probably could be slimmed by removing less significant classes like tests and OS specific classes. �� > https://docs.google.com/spreadsheets/d/1ZN6GUtzerh7KejODXNtze3njiGAryUUdSvk_U8uLZeM/edit?usp=sharing > > cheers -ben
I've done some additional matching and colour coding. Btw here is how the raw data was generated... �� |classes| �� outfile := (FileStream newFileNamed: '/tmp/NB-hierarchy3') lineEndConvention: #lf. �� classes := Smalltalk allClasses select: [ :c | (c name beginsWith: 'NB') ]. �� classes addAll: (classes flatCollect: [ :c | c allSuperclasses ]) asSet asOrderedCollection. �� Object printSubclassesOn: outfile level: 1 filter: classes. �� outfile close.
I needed to add printSubclassesOn:level:filter: ��
as a tweak to the existing printSubclassesOn:level:filter: ��
that I thought might be generally useful, so I attached it to an issue...
Extend ClassDescription>>printSubclassesOn:level: to have a filter