Answer a MEOS struct the model gives no class as the handle it already is - #28
Closed
estebanzimanyi wants to merge 1 commit into
Closed
Conversation
…y is Nine of the structs the flat layer wraps have no class in the object model, and each correctly has none: `Interval` is PostgreSQL's and absent from the MeosType enum; `SkipList`, `PJ_CONTEXT` and `gsl_rng` are runtime handles MEOS registers in no enum; `AFFINE`, `BOX3D`, `GBOX` and `Match` state their whole layout in scalars; `Rgeo` is the ninth. A method carrying one was deferred, which cost 53 methods -- `Interval` alone accounts for 46. The flat handle IS the type for these, and its semantics are already the ones the ecosystem states for such a struct: the call hands MEOS an address and the memory stays MEOS's. Spelling a value struct here instead is not available in any case -- this package imports no cgo (0 of 116 files against 15 in functions/), so it cannot materialise a C struct, and only the `functions` package can. One rule covers all nine rather than a list of them: a wrapper type the model resolves to no class is handed through as the wrapper's own type, the same way the generated enums already cross. MEASURED: 1309 methods against 1256, deferrals 105 -> 52, and every one of the 52 now reads `has no emitted wrapper` -- so the object layer defers ONLY what the flat generator does not emit, and holds no gap of its own. `go build ./...` over all 12 packages, `go vet ./types` and `gofmt -l types/` (0 files) are clean, and a second generator run reproduces the tree byte for byte.
Member
Author
|
Superseded: mirrors the sibling wrongly. MEOS.NET configure(idl) SPLITS the classless structs -- all-scalar and no class are carried BY VALUE (AFFINE, BOX3D, Interval, Match), the rest stay opaque pointers -- where this treats all nine as handles. Replacement derives the same facts from the catalog and retires the hand TYPE_MAP enum list. |
estebanzimanyi
deleted the
feat/surface-the-handle-for-a-classless-struct
branch
September 3, 2026 17:02
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Nine of the structs the flat layer wraps have no class in the object model, and
each correctly has none:
Intervalis PostgreSQL's and absent from the MeosTypeenum;
SkipList,PJ_CONTEXTandgsl_rngare runtime handles MEOS registersin no enum;
AFFINE,BOX3D,GBOXandMatchstate their whole layout inscalars;
Rgeois the ninth. A method carrying one was deferred, which cost 53methods --
Intervalalone accounts for 46.The flat handle IS the type for these, and its semantics are already the ones
the ecosystem states for such a struct: the call hands MEOS an address and the
memory stays MEOS's. Spelling a value struct here instead is not available in any
case -- this package imports no cgo (0 of 116 files against 15 in functions/), so
it cannot materialise a C struct, and only the
functionspackage can.One rule covers all nine rather than a list of them: a wrapper type the model
resolves to no class is handed through as the wrapper's own type, the same way
the generated enums already cross.
MEASURED: 1309 methods against 1256, deferrals 105 -> 52, and every one of the 52
now reads
has no emitted wrapper-- so the object layer defers ONLY what theflat generator does not emit, and holds no gap of its own.
go build ./...overall 12 packages,
go vet ./typesandgofmt -l types/(0 files) are clean, and asecond generator run reproduces the tree byte for byte.