embeddenator-interop 0.22.0

Kernel interop and system integration for Embeddenator
Documentation
# cbindgen configuration for embeddenator-interop C/C++ bindings

language = "C"
cpp_compat = true

[defines]
"feature = c-bindings" = "EMBEDDENATOR_FFI_ENABLED"

[export]
include = ["SparseVecHandle", "VSAConfigHandle", "ByteBuffer"]
exclude = []

[export.rename]

[fn]
rename_args = "GeckoCase"
args = "auto"
must_use = "MUST_USE"

[struct]
rename_fields = "SnakeCase"

[enum]
rename_variants = "ScreamingSnakeCase"

[macro_expansion]
bitflags = true

[parse]
parse_deps = false
include = ["embeddenator-vsa", "embeddenator-fs", "embeddenator-io"]
clean = false
extra_bindings = []

[parse.expand]
crates = ["embeddenator-interop"]
all_features = true
default_features = true

# Documentation
documentation = true
documentation_style = "c"

# Header
header = """
/* Embeddenator Interop FFI Bindings
 * 
 * Auto-generated by cbindgen - DO NOT EDIT MANUALLY
 * 
 * This header provides C-compatible bindings for embeddenator-interop.
 * All functions are thread-safe unless otherwise noted.
 * 
 * Memory management:
 * - All `*_new()` functions allocate memory that must be freed with corresponding `*_free()`
 * - ByteBuffer results must be freed with `byte_buffer_free()`
 * - String arguments are borrowed and do not need to be freed by FFI functions
 * 
 * Example usage:
 * 
 *     SparseVecHandle* vec = sparse_vec_new();
 *     // ... use vec ...
 *     sparse_vec_free(vec);
 */
"""

include_guard = "EMBEDDENATOR_INTEROP_H"
include_version = true
namespace = "embeddenator"
namespaces = []

# Styling
line_length = 100
tab_width = 4
braces = "SameLine"
line_endings = "LF"

[layout]
packed = false
aligned_n = false

[ptr]
non_null_attribute = "NONNULL"