On Jun 2
Yes, you right. (NBFFICallout new resolveType: 'byte*') valueSize => 1 (NBFFICallout new resolveType: 'byte*') storageSize => 4
apparently, if one wants array with 'byte*' element type (or any other) it should use a pointer size (4), not byte size (1) for it.
Or is a disclaimer not to use the class for, say, 'char*' elements more appropriate?
no , it should be fine. The difference between valueSize and storageSize is a bit confusing, and easy to confuse which to use.. Perhaps they need different naming.
+1 consider that people will use that during 10 years so good comments + names is KEY
There also stackSize, which means "how many bytes a value of given type will take, if pushed on stack , and aligned accordingly"
... after some more investigation, i found that actually storageSize should not be used. There is typeSize instead.
So, the final expression should be:
elementType := aTypeName. elementSize := (NBFFICallout new requestor: self; resolveType: elementType) typeSize.
and #sizeOf: method should also use typeSize apparently.
Cheers, Henry
-- Best regards, Igor Stasenko.