Ultimaker / libArcus

Communication library between internal components for Ultimaker software

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

MessageTypeStore class should (probably) be exported

onitake opened this issue · comments

The MessageTypeStore class does not have the ARCUS_EXPORT flag, so is hidden by default.

While this hasn't caused any issues with Arcus consumers so far (Cura and CuraEngine), I think it would make sense to export this class and its symbols.

As mentioned in #101 , it looks like exporting a class may also export its Pimpl components. If MessageTypeStore is exported by setting ARCUS_EXPORT on it, it should be ensured that MessageTypeStore::Private is not. This can be achieved by setting ARCUS_NO_EXPORT on class MessageTypeStore::Private.

If hiding MessageTypeStore is intentional, its header file (MessageTypeStore.h) shouldn't be installed. It's not included by any other headers, and advertising a hidden API might confuse users.

I think the MessageTypeStore should be exposed. It's something that the library user should be able to see as a sanity check or to manually create messages, even though all of them are also in the Protobuf protocol. We were (un)lucky that we haven't been using it and that's why we didn't discover that it got hidden with the change of the default.

Thanks for the fix!