Skip to main content Module ffi Copy item path Source rkr_dl_device_type DLPack DLDeviceType values (same numerics as dlpack.h). CPU = 1. rkr_dl_type_code DLPack DLDataTypeCode values (same numerics as dlpack.h / dlpk). CAtom Transparent atom record extracted via rkr_frame_to_c_frame . CConFrameIterator CFrame RKRArrayView A transparent, “lossy” C-struct containing only the core atomic data.
This can be extracted from an RKRConFrame handle for direct data access.
The caller is responsible for freeing the atoms array using free_c_frame.
Borrowed SoA column. data is valid until the parent frame is freed
or a mutating call reallocates storage. No copy. RKRConFrame An opaque handle to a full, lossless Rust ConFrame object.
The C/C++ side needs to treat this as a void pointer RKRConFrameBuilder An opaque handle to a Rust ConFrameBuilder object. RKRConFrameWriter An opaque handle to a Rust ConFrameWriter object.
The C/C++ side needs to treat this as a void pointer RKRDLDataType Element type request — layout-identical to DLPack DLDataType
(uint8_t code, uint8_t bits, uint16_t lanes). Interchangeable with
DLDataType from <dlpack/dlpack.h> when that header is included. RKRDLDevice Device request — layout-identical to DLPack DLDevice
(DLDeviceType device_type, int32_t device_id). RKRDLManagedTensorVersioned Re-export of dlpk’s DLManagedTensorVersioned for the C ABI surface.
Defined here so cbindgen emits a forward declaration without pulling
in the full dlpk header; consumers include <dlpack/dlpack.h> (or
equivalent) and cast through the standard DLPack ABI.
A versioned and managed C Tensor object, manage memory of DLTensor. RKRDlpackExportOptions Options for DLPack export: requested DLPack DLDataType + DLDevice. RKRSelectionResult Opaque handle for a cached selection evaluation result. mts_block_t Lean-build stubs: always export metatensor C symbols so Fortran/C can link without #ifdef.
Real implementations live under feature = "metatensor". RKRStatus Error codes for RKR functions. RKR_ABI_LAYOUT_REVISION Layout revision for opaque handles and exported records. RKR_ABI_VERSION_MAJOR Breaking-change major for the public C ABI. RKR_ABI_VERSION_MINOR Additive-change minor for the public C ABI. RKR_CON_SPEC_VERSION CON/convel format spec version. Use #if RKR_CON_SPEC_VERSION >= 2 in C/C++
to gate code that depends on atom_index semantics. con_frame_iterator_forward ⚠ Skip one frame without parsing atoms. RKR_STATUS_SUCCESS on skip,
RKR_STATUS_INDEX_OUT_OF_BOUNDS at EOF, other codes on parse error. con_frame_iterator_next ⚠ Reads the next frame from the iterator, returning an opaque handle.
The caller OWNS the returned handle and must free it with free_rkr_frame. con_frame_iterator_nth ⚠ Skip index frames, then parse the next. NULL at EOF or on error. con_frame_iterator_skip ⚠ Skip n frames without parsing atoms. Returns the number skipped, or
usize::MAX on a null iterator. create_writer_from_path_c ⚠ Creates a new frame writer for the specified file.
The caller OWNS the returned pointer and MUST call free_rkr_writer. create_writer_from_path_round_trip_c ⚠ Creates a CON writer that preserves every finite binary64 value.
The caller owns the handle and must call free_rkr_writer. create_writer_from_path_with_precision_c ⚠ Creates a new frame writer with custom floating-point precision.
The caller OWNS the returned pointer and MUST call free_rkr_writer. create_writer_gzip_c ⚠ Creates a new gzip-compressed frame writer for the specified file.
The caller OWNS the returned pointer and MUST call free_rkr_writer. create_writer_gzip_with_precision_c ⚠ Creates a gzip-compressed frame writer with a custom floating-point
precision. The caller OWNS the returned pointer and MUST call
free_rkr_writer. create_writer_zstd_c ⚠ create_writer_zstd_with_precision_c ⚠ free_c_frame ⚠ Frees the memory of a CFrame struct, including its internal atoms array. free_con_frame_iterator ⚠ Frees the memory for a CConFrameIterator. free_rkr_frame ⚠ Frees the memory for an opaque RKRConFrame handle. free_rkr_frame_array ⚠ Frees an array of frame handles returned by rkr_read_all_frames.
Each frame is freed individually, then the array itself. free_rkr_frame_builder ⚠ Frees a frame builder without building. free_rkr_frame_ptr_array ⚠ Free only the outer pointer array from rkr_read_all_frames (not the frames). free_rkr_writer ⚠ Frees the memory for an RKRConFrameWriter, closing the associated file. read_con_buffer_iterator ⚠ Iterate frames from a byte buffer (not necessarily null-terminated). read_con_file_iterator ⚠ Creates a new iterator for a .con / .convel path, including transparent
gzip (.con.gz) and zstd (.con.zst, requires zstd feature) inputs via
crate::compression::read_file_contents . read_con_string_iterator ⚠ Iterate frames from an in-memory CON text buffer (null-terminated C string). rkr_abi_layout_revision Returns the opaque-handle and exported-record layout revision. rkr_abi_stamp Returns the stable human-readable ABI negotiation stamp. rkr_abi_version_major Returns the breaking-change major for the public C ABI. rkr_abi_version_minor Returns the additive-change minor for the public C ABI. rkr_chemfiles_nsteps ⚠ Number of steps in a chemfiles trajectory (Trajectory::nsteps).
Returns usize::MAX on error or without the chemfiles feature. rkr_con_spec_version Returns the spec version at runtime (for dynamically linked consumers). rkr_count_frames ⚠ Count frames on a path (skip walk, no atom parse). usize::MAX on error. rkr_dlpack_delete ⚠ Free a DLPack tensor from rkr_frame_builder_*_dlpack (calls deleter). Safe with NULL. rkr_frame_add_atom ⚠ Deprecated : prefer rkr_frame_add_atom_full with NULL velocity
and force pointers. Adds an atom (no velocity, no forces) to the
builder using a single uniform fixed flag.
Returns RKR_STATUS_SUCCESS on success, or an error code.rkr_frame_add_atom_full ⚠ Adds an atom with optional per-axis fixed mask, velocity, and force vectors. rkr_frame_add_atom_with_fixed_mask ⚠ Deprecated : prefer rkr_frame_add_atom_full. Adds an atom (no
velocity, no forces) using per-axis fixed flags.
Returns RKR_STATUS_SUCCESS on success, or an error code.rkr_frame_add_atom_with_forces ⚠ Deprecated : prefer rkr_frame_add_atom_full. Adds an atom with
a force vector and a single uniform fixed flag.
Returns RKR_STATUS_SUCCESS on success, or an error code.rkr_frame_add_atom_with_forces_fixed_mask ⚠ Deprecated : prefer rkr_frame_add_atom_full. Adds an atom with
a force vector and per-axis fixed flags.
Returns RKR_STATUS_SUCCESS on success, or an error code.rkr_frame_add_atom_with_velocity ⚠ Deprecated : prefer rkr_frame_add_atom_full. Adds an atom with
a velocity vector and a single uniform fixed flag.
Returns RKR_STATUS_SUCCESS on success, or an error code.rkr_frame_add_atom_with_velocity_and_forces ⚠ Deprecated : prefer rkr_frame_add_atom_full. Adds an atom with
both velocity and force vectors and a single uniform fixed flag.
Returns RKR_STATUS_SUCCESS on success, or an error code.rkr_frame_add_atom_with_velocity_and_forces_fixed_mask ⚠ Deprecated : prefer rkr_frame_add_atom_full. Adds an atom with
both velocity and force vectors and per-axis fixed flags.
Returns RKR_STATUS_SUCCESS on success, or an error code.rkr_frame_add_atom_with_velocity_fixed_mask ⚠ Deprecated : prefer rkr_frame_add_atom_full. Adds an atom with
a velocity vector and per-axis fixed flags.
Returns RKR_STATUS_SUCCESS on success, or an error code.rkr_frame_atom_count ⚠ Number of atoms on the frame (atom_data order). rkr_frame_atom_energies_dlpack ⚠ DLPack per-atom energies, or SECTION_ABSENT if missing (f64/CPU default). rkr_frame_atom_energies_dlpack_ex ⚠ rkr_frame_atom_ids_view ⚠ Borrow atom_id column (always u64). rkr_frame_atom_index_by_id ⚠ Returns the position of an atom inside the frame’s atom_data array
matching the given atom_id. Returns UINT64_MAX if no atom with
that id exists or frame_handle is NULL. rkr_frame_bond_at ⚠ Read one bond at index (0-based into the bonds metadata array). rkr_frame_bond_count ⚠ Number of optional frame topology bonds (metadata["bonds"]), or 0 if absent. rkr_frame_builder_atom_count ⚠ Returns the number of atoms currently held in the builder. rkr_frame_builder_atom_energies_data ⚠ Borrow the per-atom energies buffer as a raw (N,) f64 pointer.
Returns NULL if the energies section is absent. rkr_frame_builder_atom_energies_dlpack ⚠ Export builder per-atom energies as a DLPack-managed tensor. rkr_frame_builder_atom_energies_dlpack_ex ⚠ rkr_frame_builder_atom_ids_data ⚠ Borrow the per-atom atom_ids buffer as a raw (N,) u64 pointer. rkr_frame_builder_atom_ids_dlpack ⚠ Export builder per-atom ids as a DLPack-managed tensor (N,) u64. rkr_frame_builder_atom_ids_dlpack_ex ⚠ rkr_frame_builder_build ⚠ Consumes the builder and returns a finalized RKRConFrame handle.
The builder handle is invalidated after this call.
The caller OWNS the returned frame and MUST call free_rkr_frame.
Returns NULL on error, including
crate::error::ParseError::MassMismatch . rkr_frame_builder_clear_atom_displacement ⚠ Safety rkr_frame_builder_clear_atom_energy ⚠ Safety rkr_frame_builder_clear_atom_force ⚠ Safety rkr_frame_builder_clear_atom_spread ⚠ Safety rkr_frame_builder_clear_atom_velocity ⚠ Removes velocity / force / energy data from an existing atom. rkr_frame_builder_clone ⚠ Cheap, copy-on-write clone of a frame builder. Returned handle owns
a new ConFrameBuilder whose per-atom buffers share storage with
the source via ArcArray; any subsequent mutation triggers a
per-buffer copy-on-write so writes do not leak across clones. rkr_frame_builder_displacements_data ⚠ Borrow the displacements buffer as a raw (N, 3) f64 row-major pointer.
Returns NULL if the displacements section is absent. rkr_frame_builder_displacements_dlpack ⚠ Export builder displacements as a DLPack-managed tensor. rkr_frame_builder_displacements_dlpack_ex ⚠ Like rkr_frame_builder_displacements_dlpack with export options
(NULL opts selects float64 on CPU). rkr_frame_builder_forces_data ⚠ Borrow the forces buffer as a raw (N, 3) f64 row-major pointer.
Returns NULL if the forces section is absent. rkr_frame_builder_forces_dlpack ⚠ Export builder forces as a DLPack-managed tensor. rkr_frame_builder_forces_dlpack_ex ⚠ rkr_frame_builder_get_atom_displacement ⚠ Reads the displacement of an atom (if any). *has_value is set to
true if the atom carries a displacement, else false and out_xyz
is left untouched. rkr_frame_builder_get_atom_energy ⚠ Reads the per-atom energy of an atom (if any). *has_value is set to
true if the atom carries an energy contribution, else false and
*out_value is left untouched. rkr_frame_builder_get_atom_force ⚠ Safety rkr_frame_builder_get_atom_mass ⚠ Reads the mass of an existing atom. rkr_frame_builder_get_atom_position ⚠ Reads the position of an existing atom into 3 contiguous f64 out values. rkr_frame_builder_get_atom_spread ⚠ Reads the spread of an atom (if any). *has_value is set to
true if the atom carries a spread, else false and out_xyz
is left untouched. rkr_frame_builder_get_atom_velocity ⚠ Reads the velocity / force vector of an atom (if any) into 3 contiguous
f64. *has_value is set to true if the atom carries that vector,
false if it does not (in which case out_xyz is left untouched). rkr_frame_builder_masses_data ⚠ Borrow the per-atom masses buffer as a raw (N,) f64 pointer. rkr_frame_builder_masses_dlpack ⚠ Export builder per-atom masses as a DLPack-managed tensor (N,) f64. rkr_frame_builder_masses_dlpack_ex ⚠ rkr_frame_builder_positions_data ⚠ Borrow the positions buffer as a raw (N, 3) f64 row-major pointer.
Returns NULL on invalid handle. Pointer is valid until the builder
is dropped or add_atom reallocates. rkr_frame_builder_positions_dlpack ⚠ Export builder positions as a DLPack-managed tensor. rkr_frame_builder_positions_dlpack_ex ⚠ Like rkr_frame_builder_positions_dlpack with explicit precision/device. rkr_frame_builder_set_atom_displacement ⚠ Sets the displacement vector (Angstrom) of an existing atom from 3
contiguous f64 values. rkr_frame_builder_set_atom_energies_from_flat ⚠ Bulk-update per-atom energies (one f64 per atom). rkr_frame_builder_set_atom_energy ⚠ Sets the per-atom energy contribution of an existing atom. rkr_frame_builder_set_atom_fixed ⚠ Updates per-direction fixed flags [fixed_x, fixed_y, fixed_z]. rkr_frame_builder_set_atom_force ⚠ Sets the force vector of an existing atom from 3 contiguous f64 values. rkr_frame_builder_set_atom_id ⚠ Updates the atom_id (pre-grouping index from .con column 5) of an
existing atom. The underlying Array1<u64> buffer pointer stays
stable; callers that hold a raw *const u64 via
rkr_frame_builder_atom_ids_data do not need to refresh after this. rkr_frame_builder_set_atom_mass ⚠ Updates the mass of an existing atom. rkr_frame_builder_set_atom_position ⚠ Updates the Cartesian position of an existing atom. rkr_frame_builder_set_atom_spread ⚠ Sets the spread vector (Angstrom) of an existing atom from 3
contiguous f64 values. rkr_frame_builder_set_atom_velocity ⚠ Sets the velocity vector of an existing atom from 3 contiguous f64 values. rkr_frame_builder_set_displacements_from_flat ⚠ Bulk-update displacements (Angstrom) for every atom. rkr_frame_builder_set_energy ⚠ Sets the per-frame total energy metadata on an existing frame builder.
Returns RKR_STATUS_SUCCESS on success, or an error code. rkr_frame_builder_set_forces_from_flat ⚠ Bulk-update forces for every atom. rkr_frame_builder_set_frame_index ⚠ Sets the zero-based frame index metadata on an existing frame builder.
Returns RKR_STATUS_SUCCESS on success, or an error code. rkr_frame_builder_set_last_displacement ⚠ Attaches a displacement vector (Angstrom) to the most recently added
atom on a builder. No-op if no atom has been added yet. rkr_frame_builder_set_last_energy ⚠ Attaches a per-atom energy to the most recently added atom on a
builder. No-op if no atom has been added yet. rkr_frame_builder_set_last_force ⚠ Attaches a force vector to the most recently added atom on a builder.
No-op if no atom has been added yet. rkr_frame_builder_set_last_spread ⚠ Attaches a spread vector (Angstrom) to the most recently added
atom on a builder. No-op if no atom has been added yet. rkr_frame_builder_set_last_velocity ⚠ Attaches a velocity vector to the most recently added atom on a builder.
No-op if no atom has been added yet. rkr_frame_builder_set_metadata_json ⚠ Parses and sets JSON metadata on an existing frame builder.
Returns RKR_STATUS_SUCCESS on success, or an error code. rkr_frame_builder_set_neb_band ⚠ Sets the NEB band index metadata on an existing frame builder.
Returns RKR_STATUS_SUCCESS on success, or an error code. rkr_frame_builder_set_neb_bead ⚠ Sets the NEB bead index metadata on an existing frame builder.
Returns RKR_STATUS_SUCCESS on success, or an error code. rkr_frame_builder_set_positions_from_flat ⚠ Bulk-update positions for every atom from a flat row-major
[x0,y0,z0,x1,y1,z1,...] buffer of length 3 * atom_count(). rkr_frame_builder_set_scalar_metadata ⚠ Sets a numeric metadata key on an existing frame builder.
Returns RKR_STATUS_SUCCESS on success, or an error code. rkr_frame_builder_set_spreads_from_flat ⚠ Bulk-update spreads (Angstrom) for every atom. rkr_frame_builder_set_string_metadata ⚠ Sets a string metadata key on an existing frame builder.
Returns RKR_STATUS_SUCCESS on success, or an error code. rkr_frame_builder_set_time ⚠ Sets the simulation time metadata on an existing frame builder.
Returns RKR_STATUS_SUCCESS on success, or an error code. rkr_frame_builder_set_timestep ⚠ Sets the timestep metadata on an existing frame builder.
Returns RKR_STATUS_SUCCESS on success, or an error code. rkr_frame_builder_spreads_data ⚠ Borrow the spreads buffer as a raw (N, 3) f64 row-major pointer.
Returns NULL if the spreads section is absent. rkr_frame_builder_spreads_dlpack ⚠ Export builder spreads as a DLPack-managed tensor. rkr_frame_builder_spreads_dlpack_ex ⚠ Like rkr_frame_builder_spreads_dlpack with export options
(NULL opts selects float64 on CPU). rkr_frame_builder_velocities_data ⚠ Borrow the velocities buffer as a raw (N, 3) f64 row-major pointer.
Returns NULL if the velocities section is absent or the handle is
invalid. rkr_frame_builder_velocities_dlpack ⚠ Export builder velocities as a DLPack-managed tensor. rkr_frame_builder_velocities_dlpack_ex ⚠ rkr_frame_cell_volume Cell volume (lattice det or triclinic); NaN if unavailable. rkr_frame_composition_formula ⚠ Canonical multiset formula (Cu:2|H:2) for campaign idx_formula. Free with rkr_free_string. rkr_frame_copy_atom_energies ⚠ rkr_frame_copy_atom_ids ⚠ rkr_frame_copy_displacements ⚠ Copy displacements into row-major out (length >= 3 * N), or
SECTION_ABSENT. rkr_frame_copy_forces ⚠ rkr_frame_copy_masses ⚠ rkr_frame_copy_positions ⚠ Copy positions as row-major [x0,y0,z0,...] into out (length >= 3*N).
Prefers a memcpy from the SoA column; falls back to AoS only if SoA is empty. rkr_frame_copy_spreads ⚠ Copy spreads into row-major out (length >= 3 * N), or
SECTION_ABSENT. rkr_frame_copy_velocities ⚠ rkr_frame_displacements_dlpack ⚠ DLPack displacements from a frame, or SECTION_ABSENT if missing
(f64/CPU default). rkr_frame_displacements_dlpack_ex ⚠ Like rkr_frame_displacements_dlpack with export options (NULL
opts selects float64 on CPU). rkr_frame_displacements_f64 ⚠ Row-major f64 displacements pointer, or NULL if absent / not float64. rkr_frame_displacements_view ⚠ Borrow displacements SoA, or SECTION_ABSENT. rkr_frame_energies_view ⚠ Borrow per-atom energies, or SECTION_ABSENT. rkr_frame_energy Returns the per-frame energy from metadata, or NaN if absent. rkr_frame_fmax Max (|F_i|); NaN if no finite forces. rkr_frame_forces_dlpack ⚠ DLPack forces from a frame, or SECTION_ABSENT if missing (f64/CPU default). rkr_frame_forces_dlpack_ex ⚠ rkr_frame_forces_f64 ⚠ Row-major f64 forces pointer, or NULL if absent / not float64. rkr_frame_forces_view ⚠ Borrow forces SoA, or SECTION_ABSENT. rkr_frame_frame_index Returns the zero-based frame index from metadata, or UINT64_MAX if absent. rkr_frame_get_header_line ⚠ Copies a header string line into a caller-provided buffer. rkr_frame_get_header_line_cpp ⚠ Gets a header string line as a newly allocated, null-terminated C string. rkr_frame_has_displacements ⚠ True when the frame carries a "displacements" section. False for a
NULL handle. rkr_frame_has_spreads ⚠ True when the frame carries a "spreads" section. False for a
NULL handle. rkr_frame_index_energy Campaign finite energy (crate::index_proj::finite_energy ): NaN if missing or non-finite.
Prefer this over rkr_frame_energy when mirroring readcon-db indexes. rkr_frame_index_natoms Atom count used for campaign idx_natoms (same as atom_data.len()). rkr_frame_index_projection_json ⚠ Compact JSON of crate::index_proj::FrameIndexProjection (campaign screening fields).
Free with rkr_free_string. NULL on error. rkr_frame_masses_view ⚠ Borrow per-atom masses. rkr_frame_metadata_json ⚠ Returns the JSON metadata line from a parsed frame as a heap-allocated
null-terminated C string. The caller MUST free with rkr_free_string.
Returns NULL on error. rkr_frame_metatensor_atom_energies_block ⚠ rkr_frame_metatensor_forces_block ⚠ rkr_frame_metatensor_positions_block ⚠ rkr_frame_metatensor_velocities_block ⚠ rkr_frame_neb_band Returns the NEB band index from metadata, or UINT64_MAX if absent. rkr_frame_neb_bead Returns the NEB bead index from metadata, or UINT64_MAX if absent. rkr_frame_new ⚠ Creates a new frame builder with the given cell dimensions, angles,
and header lines. rkr_frame_positions_as_dlpack ⚠ Metatensor-style: export positions as they are stored (CPU f64), with
explicit device request. Non-CPU → FEATURE_DISABLED. Prefer this over
dtype-cast *_dlpack_ex for new code. rkr_frame_positions_dlpack ⚠ DLPack positions from a frame (default float64 / CPU). Prefer
rkr_frame_positions_as_dlpack for metatensor-style device negotiation. rkr_frame_positions_dlpack_ex ⚠ Frame positions with RKRDlpackExportOptions (opts NULL → f64/CPU). rkr_frame_positions_from_dlpack ⚠ Ingest positions from a DLManagedTensorVersioned (CPU float32/64, shape (N,3)
or length 3N). Metatensor-style write path symmetry. rkr_frame_potential_type ⚠ Returns the potential type string from metadata as a heap-allocated
null-terminated C string. The caller MUST free with rkr_free_string.
Returns NULL if absent or on error. rkr_frame_sections_mask Sections presence bitmask: bit0 forces, bit1 velocities, bit2 energies (see index_proj). rkr_frame_select ⚠ Evaluate a chemfiles selection-language string on an RKRConFrame. rkr_frame_spec_version Returns the spec version stored in a parsed frame’s header.
Returns 0 on error (null handle). rkr_frame_spreads_dlpack ⚠ DLPack spreads from a frame, or SECTION_ABSENT if missing
(f64/CPU default). rkr_frame_spreads_dlpack_ex ⚠ Like rkr_frame_spreads_dlpack with export options (NULL
opts selects float64 on CPU). rkr_frame_spreads_f64 ⚠ Row-major f64 spreads pointer, or NULL if absent / not float64. rkr_frame_spreads_view ⚠ Borrow spreads SoA, or SECTION_ABSENT. rkr_frame_time Returns the simulation time from metadata, or NaN if absent. rkr_frame_timestep Returns the integration timestep from metadata, or NaN if absent. rkr_frame_to_c_frame ⚠ Extracts the core atomic data into a transparent CFrame struct.
The caller OWNS the returned pointer and MUST call free_c_frame on it. rkr_frame_total_mass Total mass from type masses × counts; NaN if not all finite. rkr_frame_velocities_dlpack ⚠ DLPack velocities from a frame, or SECTION_ABSENT if missing (f64/CPU). rkr_frame_velocities_dlpack_ex ⚠ rkr_frame_velocities_f64 ⚠ Row-major f64 velocities pointer, or NULL if absent / not float64. rkr_frame_velocities_view ⚠ Borrow velocities SoA, or SECTION_ABSENT. rkr_frame_xyz_f64 ⚠ Row-major f64 xyz pointer, or NULL if storage is not float64.
*n receives the atom count. Pointer is valid until free_rkr_frame. rkr_frame_xyz_view ⚠ Borrow positions SoA. out->data is valid until free_rkr_frame. rkr_free_string ⚠ Frees a C string that was allocated by Rust (e.g., from
rkr_frame_metadata_json, rkr_frame_potential_type, or
rkr_frame_get_header_line_cpp). Safe to call with NULL (no-op). rkr_has_chemfiles_support Returns 1 when this library build includes chemfiles selection support. rkr_has_parallel_support Returns 1 when this library build includes Rayon multi-frame parse. rkr_library_version Returns a pointer to a static, null-terminated library version string.
The returned pointer is valid for the lifetime of the process. Do NOT free it. rkr_mts_block_free ⚠ rkr_pack_rcso ⚠ Pack a frame as RCSO bytes for a caller-side MPI_Bcast. rkr_read_all_frames ⚠ Reads all frames from a .con file using mmap.
Returns an array of frame handles and sets num_frames to the count.
The caller OWNS both the array and each frame handle.
Free frames with free_rkr_frame and the array with free_rkr_frame_array.
Returns NULL on error. rkr_read_all_frames_n_threads ⚠ Like rkr_read_all_frames , with an explicit worker count. rkr_read_chemfiles ⚠ Read every step from a chemfiles-supported path. Sets *num_frames.
Free with free_rkr_frame_array. NULL on error / without chemfiles. rkr_read_chemfiles_first ⚠ Read the first frame from a chemfiles-supported path (XYZ, PDB, GRO, …).
Returns NULL on error or without the chemfiles feature. Caller: free_rkr_frame. rkr_read_chemfiles_memory ⚠ Read all frames from memory with chemfiles format (e.g. "XYZ").
Sets *num_frames. Free frames with free_rkr_frame and the array with
free_rkr_frame_array. NULL on error / without chemfiles. rkr_read_chemfiles_nth ⚠ Read step index via chemfiles Trajectory::read_step.
Returns NULL on error, out of range, or without the chemfiles feature. rkr_read_chemfiles_range ⚠ Read a chemfiles window: steps start, start+step, … < stop.
stop == usize::MAX means nsteps. guess_bonds != 0 guesses topology
when the frame has no bonds. Sets *num_frames.
Free with free_rkr_frame_array. NULL on error / without chemfiles. rkr_read_first_frame ⚠ Reads the first frame from a .con file.
Uses read_to_string for small files (< 64 KiB) and mmap for larger ones.
Stops after the first frame rather than parsing the entire file.
The caller OWNS the returned handle and MUST call free_rkr_frame.
Returns NULL on error. rkr_read_nth_frame ⚠ Skip index frames on a path, then parse one. Caller frees with free_rkr_frame. rkr_selection_result_context_size ⚠ Selection context size (1=atom, 2=pair, 3=angle, 4=dihedral). rkr_selection_result_free ⚠ Free a selection result from rkr_frame_select . Safe with NULL. rkr_selection_result_match_at ⚠ Copy match match_index atom indices into out_atoms (up to 4 slots).
Writes actual arity to *out_size when non-null. rkr_selection_result_match_count ⚠ Number of matches in a selection result. rkr_selection_result_primary_indices ⚠ Fill out_indices with primary atom indices for each match (length =
match count). Returns RKR_STATUS_BUFFER_TOO_SMALL if capacity is too small. rkr_status_message Returns a stable, static message for a status code.
The returned pointer is valid for the lifetime of the process. Do NOT free it. rkr_symbol_to_z ⚠ Returns the atomic number for a chemical symbol, or 0 if the symbol
is unknown or symbol is NULL. Lookup covers H..U (Z = 1..=92) and
is case-sensitive: “Fe” works, “fe” does not. rkr_unpack_rcso_forces ⚠ Copy RCSO forces into row-major dest. SECTION_ABSENT if the blob
has no force block. rkr_unpack_rcso_natoms ⚠ Read natoms from an RCSO blob. No MPI. rkr_unpack_rcso_positions ⚠ Copy RCSO positions into row-major dest (natoms * 3 doubles). rkr_writer_extend ⚠ Writes multiple frames from an array of handles to the file managed by the writer.
Returns RKR_STATUS_SUCCESS on success, or an error code. rkr_writer_flush ⚠ Flushes buffered CON data and reports write errors. rkr_writer_is_canonical ⚠ Returns 1 if the writer is in canonical mode, 0 otherwise (or on null handle). rkr_writer_set_canonical ⚠ Enable (canonical != 0) or disable campaign-stable CON serialization on an open writer.
Matches Rust ConFrameWriter::canonical(true) (deterministic metadata key order). rkr_z_to_symbol Returns a pointer to a static, NUL-terminated chemical symbol for an
atomic number, or “X” for unknown values. Coverage is H..U
(Z = 1..=92). The returned pointer is valid for the lifetime of the
process; do NOT free it.