Skip to content

Derive the catalog api field from the doxygen @ingroup group#65

Merged
estebanzimanyi merged 1 commit into
MobilityDB:masterfrom
estebanzimanyi:feat/api-from-ingroup-group
Jul 17, 2026
Merged

Derive the catalog api field from the doxygen @ingroup group#65
estebanzimanyi merged 1 commit into
MobilityDB:masterfrom
estebanzimanyi:feat/api-from-ingroup-group

Conversation

@estebanzimanyi

Copy link
Copy Markdown
Member

The catalog api field splits public from internal by the header a function is
declared in (_INTERNAL_FILES = {meos_internal.h, meos_internal_geo.h}). That
over-includes: any function in a public header counts as public even when it is
undocumented internal plumbing, which puts the public set near 4000.

This derives api from the doxygen @ingroup group — the single human-authored
signal that also drives the reference manual. A function is public iff it carries
a group that is not meos_internal_*; a function with no group, or a
meos_internal_* group, is internal. The binding and network surface and the
manual then come from one tag and cannot drift.

Since api now depends on the group, run.py attaches the @ingroup groups
before the enrichment pass rather than after it (the file-based rule does not
read the group). The enrich fixtures carry a group, and a new test asserts that a
function with no group is internal.

On a catalog regenerated from current master the public set is 2842 (from ~4020),
with the documented functions public and the undocumented internal plumbing
internal; actionable coverage rises rather than regresses. The full test suite
passes (the test_struct_layout cases need libclang-resolved struct offsets and
pass on the CI build).

The public/internal split of the catalog `api` field keys on the header a
function is declared in (`_INTERNAL_FILES`), which over-includes: any function
in a public header counts as public even with no documentation.

Derive `api` from the doxygen `@ingroup` group instead: a function is public iff
it carries a group that is not `meos_internal_*`; a function with no group, or a
`meos_internal_*` group, is internal. The binding and network surface and the
reference manual then derive from one human-authored signal and cannot drift.

Because api now depends on the group, attach the `@ingroup` groups before the
enrichment pass rather than after it (the file-based rule did not need the
group, so it ran later). Update the enrich fixtures to carry a group, and add a
test that a function with no group is internal.
@estebanzimanyi
estebanzimanyi merged commit 7a4aeb8 into MobilityDB:master Jul 17, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant