Hacker News new | past | comments | ask | show | jobs | submit login

As far as I'm aware, COM based APIs *are* C-APIs, just with a couple of additional conventions for lifetime management via refcounting, versioning interfaces and wrapping C++ classes into structs with function pointer jump tables ;)



They are just C-APIs which have a V-table, and Odin added a feature specifically to make dealing with them easier in the language too.

e.g. https://pkg.odin-lang.org/vendor/directx/d3d12/#ICommandQueu...

* command_queue^.id3d12commandqueue_vtable^.BeginEvent(command_queue, MetaData, pData, Size)

* command_queue.id3d12commandqueue_vtable.BeginEvent(command_queue, MetaData, pData, Size) // no need for the explicit dereferencing with ^

* command_queue.BeginEvent(command_queue, MetaData, pData, Size) // the vtable has `using` on it

* command_queue->BeginEvent(MetaData, pData, Size) // the -> operator will pass the value into the first argument

The `->` operator was added specifically for COM API stuff, and has been useful for the Objective-C stuff too.


From that point of view they are Assembly APIs as well, after all C API is just a convention of registers being used and call frames.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: