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!