Skip to main content

cityjson_lib_ffi_core/
lib.rs

1#![allow(clippy::all, clippy::pedantic)]
2
3//! Shared low-level FFI core for the publishable non-Rust bindings.
4//!
5//! This crate owns the common low-level substrate used by the C++ and Python
6//! layers. The public contract stays intentionally narrow: opaque model
7//! handles, explicit ownership, stable status/error categories, and
8//! bytes-in/bytes-out entry points on top.
9
10pub mod abi;
11/// cbindgen:ignore
12mod authoring;
13pub mod error;
14pub mod exports;
15pub mod handle;
16pub mod ids;
17
18pub use abi::{
19    cj_affine_transform_4x4_t, cj_bbox_t, cj_bytes_list_t, cj_bytes_t,
20    cj_cityjsonseq_auto_transform_options_t, cj_cityjsonseq_write_options_t, cj_cityobject_id_t,
21    cj_contact_role_t, cj_contact_t, cj_contact_type_t, cj_error_kind_t, cj_geometry_boundary_t,
22    cj_geometry_boundary_view_t, cj_geometry_draft_t, cj_geometry_id_t,
23    cj_geometry_selection_spec_t, cj_geometry_template_id_t, cj_geometry_type_t,
24    cj_geometry_types_t, cj_image_type_t, cj_indices_t, cj_indices_view_t, cj_json_write_options_t,
25    cj_material_id_t, cj_model_capacities_t, cj_model_selection_t, cj_model_summary_t, cj_model_t,
26    cj_model_type_t, cj_probe_t, cj_rgb_t, cj_rgba_t, cj_ring_draft_t, cj_root_kind_t,
27    cj_semantic_id_t, cj_shell_draft_t, cj_solid_draft_t, cj_status_t, cj_string_view_t,
28    cj_surface_draft_t, cj_texture_id_t, cj_texture_type_t, cj_transform_t, cj_uv_t, cj_uvs_t,
29    cj_value_kind_t, cj_value_t, cj_version_t, cj_vertex_t, cj_vertices_t, cj_wrap_mode_t,
30};
31pub use error::{
32    AbiError, clear_last_error, copy_last_error_message, last_error_kind, last_error_message_len,
33    last_error_status, run_ffi, set_last_error, set_last_error_from_cityjson_lib_error,
34};
35pub use handle::{
36    bytes_free, bytes_from_string, bytes_from_vec, bytes_list_free, bytes_list_from_vec,
37    cityobject_draft_as_mut, cityobject_draft_free, cityobject_draft_into_handle,
38    cityobject_draft_take, contact_as_mut, contact_free, contact_into_handle, contact_take,
39    geometry_boundary_free, geometry_draft_as_mut, geometry_draft_free, geometry_draft_into_handle,
40    geometry_draft_take, geometry_types_free, geometry_types_from_vec, indices_free,
41    indices_from_vec, model_as_mut, model_as_ref, model_free, model_into_handle,
42    model_selection_as_ref, model_selection_free, model_selection_into_handle,
43    model_selection_take, model_take, ring_draft_as_mut, ring_draft_free, ring_draft_into_handle,
44    ring_draft_take, shell_draft_as_mut, shell_draft_free, shell_draft_into_handle,
45    shell_draft_take, solid_draft_as_mut, solid_draft_free, solid_draft_into_handle,
46    solid_draft_take, surface_draft_as_mut, surface_draft_free, surface_draft_into_handle,
47    surface_draft_take, uvs_free, uvs_from_vec, value_as_mut, value_free, value_into_handle,
48    value_take, vertices_free, vertices_from_vec,
49};