Skip to content

Give a class to the types MEOS registers in no enum - #130

Merged
estebanzimanyi merged 1 commit into
MobilityDB:masterfrom
estebanzimanyi:feat/opaque-handles
Sep 3, 2026
Merged

Give a class to the types MEOS registers in no enum#130
estebanzimanyi merged 1 commit into
MobilityDB:masterfrom
estebanzimanyi:feat/opaque-handles

Conversation

@estebanzimanyi

Copy link
Copy Markdown
Member

PCSCHEMA, RTree, SPTree and MeosArray are MEOS's own — declared in the
umbrella headers, api=public, with their whole operation set published — and
the model gives them no class, so every method naming one is untypable. The
point-cloud accessors are where that bites: pcpoint_get_x, _get_y, _get_z,
_get_dim and pcpoint_to_tpcbox each take the schema the value is read
through, and a binding with no class for it reaches none of them.

They sit in Value beside the base values rather than in a hierarchy of their
own. To a binding a pointer to a struct is one thing — an instance it holds and
calls through — whether MEOS publishes the struct's layout or forward-declares
it, and GoMEOS's wrapper table draws no line between the two either: SkipList,
RTree, PJ_CONTEXT and gsl_rng are wrapped exactly as Temporal and Set
are. What they do state is a null temptype, MEOS registering them in no enum,
written out rather than left out so an unregistered type cannot read as one
nobody got round to. 67 functions reach a class this way, and none moves off the
class it had.

A class nothing is CALLED on takes the type it MAKES. Nothing is called on a
schema — every accessor takes one as an argument — so the receiver says nothing
and meos_pc_schema answering a PCSCHEMA * is what does. The char * answers
beside it say nothing, a string being no class's instance.

meos_pc_schema IS its class's prefix, so dropping the prefix leaves no member
name at all. That is the one case the override table exists for, and it now says
so; the schema cache's lookup reads get.

`PCSCHEMA`, `RTree`, `SPTree` and `MeosArray` are MEOS's own — declared in the
umbrella headers, `api=public`, with their whole operation set published — and
the model gives them no class, so every method naming one is untypable. The
point-cloud accessors are where that bites: `pcpoint_get_x`, `_get_y`, `_get_z`,
`_get_dim` and `pcpoint_to_tpcbox` each take the schema the value is read
through, and a binding with no class for it reaches none of them.

They sit in `Value` beside the base values rather than in a hierarchy of their
own. To a binding a pointer to a struct is one thing — an instance it holds and
calls through — whether MEOS publishes the struct's layout or forward-declares
it, and GoMEOS's wrapper table draws no line between the two either: `SkipList`,
`RTree`, `PJ_CONTEXT` and `gsl_rng` are wrapped exactly as `Temporal` and `Set`
are. What they do state is a null `temptype`, MEOS registering them in no enum,
written out rather than left out so an unregistered type cannot read as one
nobody got round to. 67 functions reach a class this way, and none moves off the
class it had.

A class nothing is CALLED on takes the type it MAKES. Nothing is called on a
schema — every accessor takes one as an argument — so the receiver says nothing
and `meos_pc_schema` answering a `PCSCHEMA *` is what does. The `char *` answers
beside it say nothing, a string being no class's instance.

`meos_pc_schema` IS its class's prefix, so dropping the prefix leaves no member
name at all. That is the one case the override table exists for, and it now says
so; the schema cache's lookup reads `get`.
@estebanzimanyi
estebanzimanyi merged commit a79fffb into MobilityDB:master Sep 3, 2026
3 checks passed
@estebanzimanyi
estebanzimanyi deleted the feat/opaque-handles branch September 3, 2026 09:59
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