Add shape annotations to meos-meta.json for binding codegens#2
Add shape annotations to meos-meta.json for binding codegens#2estebanzimanyi wants to merge 4 commits into
Conversation
Documents and seeds the per-function shape catalog under functions.<c_name>.shape so binding codegens can resolve array-return lengths, parallel output arrays, multi-input groups, and explicit non-wrappable functions without inventing per-binding metadata. The shape keys are: arrayReturn.lengthFrom (accessor or param), outputArrays (parallel out-parameters sharing the primary length), namedOutputs (scalar out-parameters whose name is neither result nor value), arrayInputGroup (N parallel input slices sharing one count), and skip. Initial coverage closes the 32 GoMEOS codegen TODOs: the *_values family routes through set_num_values / spanset_num_spans / temporal_num_instants accessors; the *_split family declares its time_bins / value_bins / space_bins parallel outputs; the skiplist family is marked skip; tpointseq_make_coords declares its four parallel input arrays; tempsubtype_from_string and geom_min_bounding_radius mark subtype and radius as named outputs.
ed46170 to
fd4d0ce
Compare
Adds shape.nullable across 38 functions covering 52 (function, param) pairs that accept NULL: aggregator transfn state slots, optional shift / scale / duration windows, tile origin overrides, tz_str and extra config strings, geo_as_geojson srs, and tsequenceset_make_gaps maxt. Adds shape.outputArrays for tbox_as_hexwkb / stbox_as_hexwkb (size) and the three *_time_tiles count outputs that the existing auto-detect heuristic does not reach. Lets PyMEOS-CFFI's build_pymeos_functions.py replace its hardcoded nullable_parameters and output_parameters sets with reads from the IDL.
stbox_quad_split returns an STBox array whose length lives in its trailing int *count parameter. Without the entry, bindings expose count as a user-facing input.
Match the existing geoset_values pattern. Bindings now know the length comes from set_num_values rather than treating these as free-floating Cbuffer ** / Pose ** returns.
|
LGTM on the content. The shape catalog is the right shape (heh), the One blocker: this PR is targeting Could you rebase onto master and re-point the PR base to |
|
Superseded by #16, which generates the same |
|
Agreed — superseded by #16, which generates the shape ( |
Documents and seeds the per-function shape catalog under functions.<c_name>.shape so binding codegens can resolve array-return lengths, parallel output arrays, multi-input groups, and explicit non-wrappable functions without inventing per-binding metadata. The shape keys are: arrayReturn.lengthFrom (accessor or param), outputArrays (parallel out-parameters sharing the primary length), namedOutputs (scalar out-parameters whose name is neither result nor value), arrayInputGroup (N parallel input slices sharing one count), and skip. Initial coverage closes the 32 GoMEOS codegen TODOs: the *_values family routes through set_num_values / spanset_num_spans / temporal_num_instants accessors; the *_split family declares its time_bins / value_bins / space_bins parallel outputs; the skiplist family is marked skip; tpointseq_make_coords declares its four parallel input arrays; tempsubtype_from_string and geom_min_bounding_radius mark subtype and radius as named outputs.