porter
Well-known member
Good news, after dropping SOMobjects, Apple have decided to adopt a language independent object model, ie COM and is even available on the iPhone.
Bad news, how did they manage to screw up IUnknown::QueryInterface so badly? The normal COM passes the IID as a pointer, what did Apple do? Some plonker defined REFIID as CFUUIDBytes so you now have to push 16 bytes on the stack instead of passing a reference. Presumably this screw-up occurred because originally on a Mac a UUID was just 16 bytes as an array, when they moved it to a struct containing 16 bytes it messed up the ABI. If they had originally defined it DCE had defined it decades ago they wouldn't have fallen into this mess.
Bad news, how did they manage to screw up IUnknown::QueryInterface so badly? The normal COM passes the IID as a pointer, what did Apple do? Some plonker defined REFIID as CFUUIDBytes so you now have to push 16 bytes on the stack instead of passing a reference. Presumably this screw-up occurred because originally on a Mac a UUID was just 16 bytes as an array, when they moved it to a struct containing 16 bytes it messed up the ABI. If they had originally defined it DCE had defined it decades ago they wouldn't have fallen into this mess.