dpm_module_info_of becomes dpm_get_module_info, joining the other two readers on the context in stating that a call fetches a value. Recording an error had two entry points doing the same write: the exported dpm_set_last_error and an internal dpm_core::set_last_error taking a std::string. The internal one is gone and the loader calls the exported function, so a reason reaches the context by one path whether a module or the library records it.
Internal Headers
libdpm-core.so's own headers, used by its sources and never installed.
They declare the types and functions the library's translation units share with each other: the definitions behind the opaque handles <dpm/core.h> exposes, and the helpers those sources call across file boundaries.
Nothing here is part of the public interface. The install rule ships include/dpm/ alone, so a consumer or a module compiles against <dpm/core.h> and never sees this directory.