Hello,
tl;dr: what's the reason to get aNBExternalHandle even if you expect a
MySuperHandle object from an nbCall?
I am trying to build my first DLL wrapper with NativeBoost. I am having
a problem that instead of returning a handle object (as I thought), my
"primitive" throws NBExternalHandles at me.
The API I am trying to wrap tries to be somewhat object oriented by
(mostly) having a handle of some sort.
My thinking was to attach all DLL primitives to the respective Handle
Objects they take as a first parameter and go from there.
Some workspace code:
"Supplementary DLLs"
Tm1ULibDllLibraryLoader loadLibrary.
LibIbmCogEayLibraryLoader loadLibrary.
SslIbmCogEayLibraryLoader loadLibrary.
Log4CxxLibraryLoader loadLibrary.
"DLL to wrap"
TM1LibraryLoader loadTM1Library.
t := TM1Api new.
t tm1APIInitialize.
hUser := t tm1SystemOpen. "Returns a proper 'TM1UHandle' object'"
hUser tm1SystemAdminHostSet: 'localhost'.
hPool1 := hUser tm1ValPoolCreate. "Returns NBExternalHandle"
hPool1 inspect.
hUser tm1SystemClose.
t tm1APIFinalize.
TM1Api>>#tm1SystemOpen
<primitive: #primitiveNativeCall
module: #NativeBoostPlugin>
^ self nbCall: #(TM1UHandle TM1SystemOpen(void))
TM1UHandle>>#tm1ValPoolCreate
<primitive: #primitiveNativeCall
module: #NativeBoostPlugin>
^ self nbCall: #(#TM1PHandle TM1ValPoolCreate ( TM1UHandle self ) )
Both, TM1UHandle class and TM1PHandle class have the method
asNBExternalType: gen
"use handle ivar to hold my instance (TM1x)"
^ NBExternalObjectType objectClass: self
and are subclasses of object. What's my mistake? Can you tell with the
information I provided?
Best regards,
Markus