@typechecked
def build_buffer_runtime_feature() -> RuntimeFeature:
"""
title: Build the buffer runtime feature specification.
returns:
type: RuntimeFeature
"""
runtime_root = Path(__file__).resolve().parent
native_root = runtime_root / "native"
return RuntimeFeature(
name="buffer",
symbols={
"irx_buffer_owner_external_new": ExternalSymbolSpec(
"irx_buffer_owner_external_new",
_declare_owner_external_new,
),
"irx_buffer_owner_retain": ExternalSymbolSpec(
"irx_buffer_owner_retain",
_declare_owner_retain,
),
"irx_buffer_owner_release": ExternalSymbolSpec(
"irx_buffer_owner_release",
_declare_owner_release,
),
"irx_buffer_view_retain": ExternalSymbolSpec(
"irx_buffer_view_retain",
_declare_view_retain,
),
"irx_buffer_view_release": ExternalSymbolSpec(
"irx_buffer_view_release",
_declare_view_release,
),
"irx_buffer_last_error": ExternalSymbolSpec(
"irx_buffer_last_error",
_declare_last_error,
),
},
artifacts=(
NativeArtifact(
kind="c_source",
path=native_root / "irx_buffer_runtime.c",
include_dirs=(native_root,),
compile_flags=("-std=c99",),
),
),
metadata={
"opaque_handles": {"owner": "irx_buffer_owner_handle"},
"view_type": "irx_buffer_view",
},
)