Skip to content

Expose the generated MEOS surface, one file per header - #17

Merged
estebanzimanyi merged 1 commit into
MobilityDB:mainfrom
estebanzimanyi:gen/public-function-surface
Sep 2, 2026
Merged

estebanzimanyi merged 1 commit into
MobilityDB:mainfrom
estebanzimanyi:gen/public-function-surface

Conversation

@estebanzimanyi

Copy link
Copy Markdown
Member

The generated surface is what a consumer of this binding calls, so it is
public: MEOS.NET.Functions.Meos carries a static method for each of the
4825 functions the catalog declares, split across one file per MEOS header
exactly as the catalog groups them — Meos.meos.g.cs, Meos.meos_geo.g.cs,
Meos.meos_cbuffer.g.cs, through 29 headers — with the P/Invoke declarations
behind them in Meos.Native.g.cs. This is the shape GoMEOS ships, whose
functions/ package is likewise the catalog projected one file per header and
is the surface its README points a user at.

A method is the C name in PascalCase: tfloat_in reads TfloatIn,
meos_initialize reads MeosInitialize. That is the spelling GoMEOS exports,
so the ecosystem carries one rule rather than a per-binding invention, and the
generator refuses a catalog in which two C names share one C# name rather than
emitting a surface that does not compile.

Every MEOS function is therefore reachable without a hand-written wrapper,
including the operator families the object model leaves unclassified.

The generated surface is what a consumer of this binding calls, so it is
public: `MEOS.NET.Functions.Meos` carries a static method for each of the
4825 functions the catalog declares, split across one file per MEOS header
exactly as the catalog groups them — `Meos.meos.g.cs`, `Meos.meos_geo.g.cs`,
`Meos.meos_cbuffer.g.cs`, through 29 headers — with the P/Invoke declarations
behind them in `Meos.Native.g.cs`. This is the shape GoMEOS ships, whose
`functions/` package is likewise the catalog projected one file per header and
is the surface its README points a user at.

A method is the C name in PascalCase: `tfloat_in` reads `TfloatIn`,
`meos_initialize` reads `MeosInitialize`. That is the spelling GoMEOS exports,
so the ecosystem carries one rule rather than a per-binding invention, and the
generator refuses a catalog in which two C names share one C# name rather than
emitting a surface that does not compile.

Every MEOS function is therefore reachable without a hand-written wrapper,
including the operator families the object model leaves unclassified.
@estebanzimanyi
estebanzimanyi merged commit 4c42757 into MobilityDB:main Sep 2, 2026
1 check passed
@estebanzimanyi
estebanzimanyi deleted the gen/public-function-surface branch September 2, 2026 20:35
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