{
  "_id": "6a1f3884b401979e73428def",
  "Package": "RSimpleFFI",
  "Version": "1.2.0.90000",
  "Title": "Simple Foreign Function Interface using 'S7' and 'libffi'",
  "Description": "Simple Foreign Function Interface for 'R' using 'libffi'\nand 'S7' classes. Supports calling 'C' functions with type\nconversion and struct handling. Includes standard 'C' types\n(int8, int16, int32, int64, uint variants), platform types\n(size_t, bool), floating point types, and complex struct types.\nHeader parsing uses 'Rtinycc' for 'TinyCC'-backed preprocessing\nand enables automatic generation of 'R' bindings from 'C'\nheader files, simplifying package development for 'C'\nlibraries.",
  "Authors@R": "c(\nperson(given = \"Sounkou Mahamane\", family = \"Toure\",\nemail = \"sounkoutoure@gmail.com\", role = c(\"aut\", \"cre\")),\nperson( given =\"Anthony Green, Red Hat, Inc and others\" , role = c(\"ctb\"),\ncomment = \"libffi authors and COPYRIGHT holders\")\n)",
  "License": "GPL-3",
  "Remotes": [
    "sounkou-bioinfo/Rtinycc",
    "sounkou-bioinfo/treesitter.c"
  ],
  "SystemRequirements": "GNU make, pkg-config (for libffi configuration on\nRTools)",
  "Encoding": "UTF-8",
  "Roxygen": "list(markdown = TRUE)",
  "RoxygenNote": "7.3.3",
  "URL": "https://github.com/sounkou-bioinfo/RSimpleFFI,\nhttps://sounkou-bioinfo.github.io/RSimpleFFI/",
  "BugReports": "https://github.com/sounkou-bioinfo/RSimpleFFI/issues",
  "Config/pak/sysreqs": "make pkg-config",
  "Repository": "https://sounkou-bioinfo.r-universe.dev",
  "Date/Publication": "2026-05-11 16:17:44 UTC",
  "RemoteUrl": "https://github.com/sounkou-bioinfo/RSimpleFFI",
  "RemoteRef": "HEAD",
  "RemoteSha": "668d9dd3877495502e4bc1469e01e1d61509049f",
  "NeedsCompilation": "yes",
  "Packaged": {
    "Date": "2026-05-11 23:13:23 UTC",
    "User": "root"
  },
  "Author": "Sounkou Mahamane Toure [aut, cre],\nAnthony Green, Red Hat, Inc and others [ctb] (libffi authors and\nCOPYRIGHT holders)",
  "Maintainer": "Sounkou Mahamane Toure <sounkoutoure@gmail.com>",
  "MD5sum": "9d215de414cee577a690467663b4446a",
  "_user": "sounkou-bioinfo",
  "_type": "src",
  "_file": "RSimpleFFI_1.2.0.90000.tar.gz",
  "_fileid": "fd3898feba85c9dd050704bebc8ae156e75aa6d1f4d6f5fd1634d2b15dcaec1e",
  "_filesize": 1900045,
  "_sha256": "fd3898feba85c9dd050704bebc8ae156e75aa6d1f4d6f5fd1634d2b15dcaec1e",
  "_created": "2026-05-11T23:13:23.000Z",
  "_published": "2026-06-02T20:09:40.839Z",
  "_distro": "noble",
  "_jobs": [
    {
      "job": 79162172012,
      "time": 127,
      "config": "linux-devel-arm64",
      "r": "4.7.0",
      "check": "ERROR",
      "artifact": "6932037465"
    },
    {
      "job": 79162171326,
      "time": 140,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "ERROR",
      "artifact": "6932040114"
    },
    {
      "job": 79162171785,
      "time": 129,
      "config": "linux-release-arm64",
      "r": "4.6.0",
      "check": "ERROR",
      "artifact": "6932038497"
    },
    {
      "job": 79162172083,
      "time": 137,
      "config": "linux-release-x86_64",
      "r": "4.6.0",
      "check": "ERROR",
      "artifact": "6932039556"
    },
    {
      "job": 79162171450,
      "time": 85,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "ERROR",
      "artifact": "6932027780"
    },
    {
      "job": 79162171975,
      "time": 192,
      "config": "macos-oldrel-x86_64",
      "r": "4.5.3",
      "check": "ERROR",
      "artifact": "6932052184"
    },
    {
      "job": 79162171986,
      "time": 94,
      "config": "macos-release-arm64",
      "r": "4.6.0",
      "check": "ERROR",
      "artifact": "6932029760"
    },
    {
      "job": 79162171682,
      "time": 299,
      "config": "macos-release-x86_64",
      "r": "4.6.0",
      "check": "ERROR",
      "artifact": "6932077266"
    },
    {
      "job": 79162171001,
      "time": 194,
      "config": "source",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "6932006635"
    },
    {
      "job": 79162170835,
      "time": 101,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "FAIL",
      "artifact": ""
    },
    {
      "job": 79162171325,
      "time": 110,
      "config": "windows-devel",
      "r": "4.7.0",
      "check": "ERROR",
      "artifact": "6932033484"
    },
    {
      "job": 79162172263,
      "time": 110,
      "config": "windows-oldrel",
      "r": "4.5.3",
      "check": "ERROR",
      "artifact": "6932033625"
    },
    {
      "job": 79162171672,
      "time": 121,
      "config": "windows-release",
      "r": "4.6.0",
      "check": "ERROR",
      "artifact": "6932036291"
    }
  ],
  "_buildurl": "https://github.com/r-universe/sounkou-bioinfo/actions/runs/25702739243",
  "_status": "success",
  "_host": "GitHub-Actions",
  "_upstream": "https://github.com/sounkou-bioinfo/RSimpleFFI",
  "_commit": {
    "id": "668d9dd3877495502e4bc1469e01e1d61509049f",
    "author": "sounkou-bioinfo <sounkoutoure@gmail.com>",
    "committer": "sounkou-bioinfo <sounkoutoure@gmail.com>",
    "message": "Fix Windows CI failure: system2(..., env =) appends env vars as command-line args on Windows\n\nReplace system2(..., env = rtinycc_loader_env()) with a with_rtinycc_env()\nhelper that uses Sys.setenv() instead. On Windows, R's system2() appends\nenvironment variable strings (e.g. 'PATH=...') as command-line arguments\ninstead of setting them in the subprocess environment, which causes TinyCC\nto interpret the PATH string as a filename to open.\n",
    "time": 1778516264
  },
  "_maintainer": {
    "name": "Sounkou Mahamane Toure",
    "email": "sounkoutoure@gmail.com",
    "login": "sounkou-bioinfo",
    "uuid": 56392505
  },
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 4.4.0",
      "role": "Depends"
    },
    {
      "package": "S7",
      "role": "Imports"
    },
    {
      "package": "Rtinycc",
      "role": "Imports"
    },
    {
      "package": "treesitter",
      "role": "Imports"
    },
    {
      "package": "treesitter.c",
      "role": "Imports"
    },
    {
      "package": "tinytest",
      "role": "Suggests"
    },
    {
      "package": "bench",
      "role": "Suggests"
    }
  ],
  "_owner": "sounkou-bioinfo",
  "_selfowned": true,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2025-48",
      "n": 118
    },
    {
      "week": "2025-49",
      "n": 185
    },
    {
      "week": "2025-50",
      "n": 8
    },
    {
      "week": "2026-16",
      "n": 3
    },
    {
      "week": "2026-19",
      "n": 2
    },
    {
      "week": "2026-20",
      "n": 1
    }
  ],
  "_tags": [
    {
      "name": "1.0.1",
      "date": "2025-12-01"
    },
    {
      "name": "1.2.0",
      "date": "2025-12-05"
    }
  ],
  "_stars": 8,
  "_contributors": [
    {
      "user": "sounkou-bioinfo",
      "count": 339,
      "uuid": 56392505
    }
  ],
  "_userbio": {
    "uuid": 56392505,
    "type": "user",
    "name": "Sounkou Mahamane Toure",
    "description": "Sequences and Consequences."
  },
  "_downloads": {
    "count": 0,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/RSimpleFFI"
  },
  "_devurl": "https://github.com/sounkou-bioinfo/rsimpleffi",
  "_pkgdown": "https://sounkou-bioinfo.github.io/RSimpleFFI/",
  "_searchresults": 23,
  "_topics": [
    "libffi"
  ],
  "_rbuild": "4.6.0",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/readme.html",
    "extra/readme.md",
    "extra/RSimpleFFI.html",
    "manual.pdf"
  ],
  "_cranurl": false,
  "_exports": [
    "ArrayType",
    "bindgen_r_api",
    "bindgen_r_api_summary",
    "CIF",
    "create_builtin_type",
    "data_ptr",
    "data_ptr_ro",
    "dll_compile_and_load",
    "dll_ffi_symbol",
    "dll_info",
    "dll_is_loaded",
    "dll_list_loaded",
    "dll_load",
    "dll_load_r",
    "dll_load_system",
    "dll_symbol",
    "dll_unload",
    "EnumType",
    "ffi_all_offsets",
    "ffi_alloc",
    "ffi_alloc_buffer",
    "ffi_array_type",
    "ffi_bool",
    "ffi_call",
    "ffi_char",
    "ffi_cif",
    "ffi_cif_var",
    "ffi_cleanup_lib",
    "ffi_closure",
    "ffi_closure_pointer",
    "ffi_closures_supported",
    "ffi_compile_shlib",
    "ffi_copy_array",
    "ffi_copy_array_type",
    "ffi_create_bitfield_accessors",
    "ffi_create_helpers",
    "ffi_deref_pointer",
    "ffi_double",
    "ffi_enum",
    "ffi_enum_to_int",
    "ffi_extract_bit_field",
    "ffi_extract_bits64",
    "ffi_extract_signed_bit_field",
    "ffi_extract_signed_bits64",
    "ffi_field_info",
    "ffi_field_to_r",
    "ffi_fill_typed_buffer",
    "ffi_float",
    "ffi_free",
    "ffi_function",
    "ffi_get_element",
    "ffi_get_field",
    "ffi_get_symbol",
    "ffi_int",
    "ffi_int_to_enum",
    "ffi_int16",
    "ffi_int32",
    "ffi_int64",
    "ffi_int8",
    "ffi_is_null",
    "ffi_loaded_libs",
    "ffi_long",
    "ffi_longdouble",
    "ffi_longlong",
    "ffi_null_pointer",
    "ffi_offsetof",
    "ffi_pack_bits",
    "ffi_pack_bits64",
    "ffi_parse_header",
    "ffi_pointer",
    "ffi_print_struct",
    "ffi_raw",
    "ffi_read_global",
    "ffi_set_bit_field",
    "ffi_set_bits64",
    "ffi_set_field",
    "ffi_short",
    "ffi_size_t",
    "ffi_sizeof",
    "ffi_ssize_t",
    "ffi_string",
    "ffi_struct",
    "ffi_struct_array_from_list",
    "ffi_struct_from_list",
    "ffi_struct_to_list",
    "ffi_symbol",
    "ffi_symbol_from_address",
    "ffi_uchar",
    "ffi_uint",
    "ffi_uint16",
    "ffi_uint32",
    "ffi_uint64",
    "ffi_uint8",
    "ffi_ulong",
    "ffi_ulonglong",
    "ffi_union",
    "ffi_unpack_bits",
    "ffi_unpack_bits64",
    "ffi_ushort",
    "ffi_validate_call",
    "ffi_void",
    "ffi_wchar_t",
    "FFIClosure",
    "FFIType",
    "FieldInfo",
    "generate_api_constructor",
    "generate_api_offset_extractor",
    "generate_api_r_wrappers",
    "generate_api_struct_helpers",
    "generate_api_struct_typedef",
    "generate_enum_definition",
    "generate_function_wrapper",
    "generate_package_from_headers",
    "generate_package_init",
    "generate_package_init_c",
    "generate_package_struct_helpers_c",
    "generate_r_bindings",
    "generate_struct_definition",
    "generate_struct_helpers",
    "generate_typedef_definition",
    "generate_union_definition",
    "get_pointer_type",
    "is_null_pointer",
    "is_protected_ptr",
    "libffi_version",
    "make_typed_pointer",
    "NativeSymbol",
    "pointer_to_string",
    "pointer_to_string_safe",
    "ptr_to_sexp",
    "release_ptr",
    "sexp_ptr",
    "StructType",
    "tcc_available",
    "tcc_binary_path",
    "tcc_extract_defines",
    "tcc_preprocess",
    "tcc_run",
    "UnionType"
  ],
  "_help": [
    {
      "page": "ArrayType",
      "title": "FFI Array Type",
      "topics": [
        "ArrayType"
      ]
    },
    {
      "page": "bindgen_r_api",
      "title": "Generate FFI bindings for R's C API",
      "topics": [
        "bindgen_r_api"
      ]
    },
    {
      "page": "bindgen_r_api_summary",
      "title": "Get summary of R API bindings",
      "topics": [
        "bindgen_r_api_summary"
      ]
    },
    {
      "page": "CIF",
      "title": "FFI Call Interface (CIF)",
      "topics": [
        "CIF"
      ]
    },
    {
      "page": "create_builtin_type",
      "title": "Create built-in FFI type",
      "topics": [
        "create_builtin_type"
      ]
    },
    {
      "page": "data_ptr",
      "title": "Get data pointer from R vector with GC protection",
      "topics": [
        "data_ptr"
      ]
    },
    {
      "page": "data_ptr_ro",
      "title": "Get read-only data pointer from R vector with GC protection",
      "topics": [
        "data_ptr_ro"
      ]
    },
    {
      "page": "dll_ffi_symbol",
      "title": "Create FFI function from dynamically loaded function",
      "topics": [
        "dll_ffi_symbol"
      ]
    },
    {
      "page": "dll_info",
      "title": "Get information about a loaded library",
      "topics": [
        "dll_info"
      ]
    },
    {
      "page": "dll_is_loaded",
      "title": "Check if a symbol is loaded",
      "topics": [
        "dll_is_loaded"
      ]
    },
    {
      "page": "dll_list_loaded",
      "title": "List loaded libraries",
      "topics": [
        "dll_list_loaded"
      ]
    },
    {
      "page": "dynamic_library_management",
      "title": "Load a shared library/DLL",
      "topics": [
        "dll_compile_and_load",
        "dll_load",
        "dll_load_r",
        "dll_load_system",
        "dll_symbol",
        "dll_unload"
      ]
    },
    {
      "page": "EnumType",
      "title": "FFI Enumeration Type",
      "topics": [
        "EnumType"
      ]
    },
    {
      "page": "escape_r_name",
      "title": "Escape R name with backticks if needed",
      "topics": [
        "escape_r_name"
      ]
    },
    {
      "page": "ffi_all_offsets",
      "title": "Get all field offsets for a struct",
      "topics": [
        "ffi_all_offsets"
      ]
    },
    {
      "page": "alloc",
      "title": "Allocate a buffer for a given FFI type",
      "topics": [
        "ffi_alloc"
      ]
    },
    {
      "page": "ffi_alloc_buffer",
      "title": "Allocate a raw memory buffer (external pointer, auto-finalized)",
      "topics": [
        "ffi_alloc_buffer"
      ]
    },
    {
      "page": "ffi_array_type",
      "title": "Create an FFI array type",
      "topics": [
        "ffi_array_type"
      ]
    },
    {
      "page": "ffi_bool",
      "title": "Bool FFI type",
      "topics": [
        "ffi_bool"
      ]
    },
    {
      "page": "ffi_call",
      "title": "Make FFI function call",
      "topics": [
        "ffi_call"
      ]
    },
    {
      "page": "ffi_char",
      "title": "Char FFI type",
      "topics": [
        "ffi_char"
      ]
    },
    {
      "page": "ffi_cif",
      "title": "Prepare FFI call interface Prepare FFI call interface",
      "topics": [
        "ffi_cif"
      ]
    },
    {
      "page": "ffi_cif_var",
      "title": "Prepare FFI call interface for variadic functions",
      "topics": [
        "ffi_cif_var"
      ]
    },
    {
      "page": "ffi_closure",
      "title": "Create an FFI closure from an R function",
      "topics": [
        "ffi_closure"
      ]
    },
    {
      "page": "ffi_closure_pointer",
      "title": "Get the function pointer for an FFI closure",
      "topics": [
        "ffi_closure_pointer"
      ]
    },
    {
      "page": "ffi_closures_supported",
      "title": "Check if closures are supported on this platform",
      "topics": [
        "ffi_closures_supported"
      ]
    },
    {
      "page": "ffi_copy_array",
      "title": "Copy array from native memory",
      "topics": [
        "ffi_copy_array"
      ]
    },
    {
      "page": "ffi_copy_array_type",
      "title": "Copy array from native memory (ArrayType version)",
      "topics": [
        "ffi_copy_array_type"
      ]
    },
    {
      "page": "ffi_create_bitfield_accessors",
      "title": "Create accessor functions for a bit-field structure",
      "topics": [
        "ffi_create_bitfield_accessors"
      ]
    },
    {
      "page": "ffi_create_helpers",
      "title": "Create High-Level API Helpers for Struct",
      "topics": [
        "ffi_create_helpers"
      ]
    },
    {
      "page": "ffi_deref_pointer",
      "title": "Dereference a pointer",
      "topics": [
        "ffi_deref_pointer"
      ]
    },
    {
      "page": "ffi_double",
      "title": "double FFI type",
      "topics": [
        "ffi_double"
      ]
    },
    {
      "page": "ffi_enum",
      "title": "Create FFI enumeration type",
      "topics": [
        "ffi_enum"
      ]
    },
    {
      "page": "ffi_enum_to_int",
      "title": "Convert enum name to integer value",
      "topics": [
        "ffi_enum_to_int"
      ]
    },
    {
      "page": "ffi_extract_bit_field",
      "title": "Extract a single bit-field from a packed value",
      "topics": [
        "ffi_extract_bit_field"
      ]
    },
    {
      "page": "ffi_extract_bits64",
      "title": "Extract a single bit-field from a 64-bit packed value",
      "topics": [
        "ffi_extract_bits64"
      ]
    },
    {
      "page": "ffi_extract_signed_bit_field",
      "title": "Extract a signed bit-field from a packed value",
      "topics": [
        "ffi_extract_signed_bit_field"
      ]
    },
    {
      "page": "ffi_extract_signed_bits64",
      "title": "Extract a signed bit-field from a 64-bit packed value",
      "topics": [
        "ffi_extract_signed_bits64"
      ]
    },
    {
      "page": "ffi_field_info",
      "title": "Get field information from a struct type",
      "topics": [
        "ffi_field_info"
      ]
    },
    {
      "page": "ffi_fill_typed_buffer",
      "title": "Fill a typed buffer from an R vector (int or double)",
      "topics": [
        "ffi_fill_typed_buffer"
      ]
    },
    {
      "page": "ffi_float",
      "title": "float FFI type",
      "topics": [
        "ffi_float"
      ]
    },
    {
      "page": "ffi_free",
      "title": "Free memory pointed to by an external pointer",
      "topics": [
        "ffi_free"
      ]
    },
    {
      "page": "ffi_function",
      "title": "Create a reusable FFI function wrapper",
      "topics": [
        "ffi_function"
      ]
    },
    {
      "page": "ffi_get_element",
      "title": "Get element from struct array",
      "topics": [
        "ffi_get_element"
      ]
    },
    {
      "page": "ffi_get_field",
      "title": "Get field value from FFI structure",
      "topics": [
        "ffi_get_field"
      ]
    },
    {
      "page": "ffi_int",
      "title": "int FFI type",
      "topics": [
        "ffi_int"
      ]
    },
    {
      "page": "ffi_int_to_enum",
      "title": "Convert integer value to enum name",
      "topics": [
        "ffi_int_to_enum"
      ]
    },
    {
      "page": "ffi_int16",
      "title": "Int16 FFI type",
      "topics": [
        "ffi_int16"
      ]
    },
    {
      "page": "ffi_int32",
      "title": "Int32 FFI type",
      "topics": [
        "ffi_int32"
      ]
    },
    {
      "page": "ffi_int64",
      "title": "Int64 FFI type",
      "topics": [
        "ffi_int64"
      ]
    },
    {
      "page": "ffi_int8",
      "title": "Int8 FFI type",
      "topics": [
        "ffi_int8"
      ]
    },
    {
      "page": "ffi_is_null",
      "title": "Check if external pointer is NULL",
      "topics": [
        "ffi_is_null"
      ]
    },
    {
      "page": "ffi_loaded_libs",
      "title": "Get information about loaded native libraries",
      "topics": [
        "ffi_loaded_libs"
      ]
    },
    {
      "page": "ffi_long",
      "title": "long FFI type",
      "topics": [
        "ffi_long"
      ]
    },
    {
      "page": "ffi_longdouble",
      "title": "longdouble FFI type",
      "topics": [
        "ffi_longdouble"
      ]
    },
    {
      "page": "ffi_longlong",
      "title": "long long FFI type",
      "topics": [
        "ffi_longlong"
      ]
    },
    {
      "page": "ffi_null_pointer",
      "title": "Create a NULL pointer",
      "topics": [
        "ffi_null_pointer"
      ]
    },
    {
      "page": "ffi_offsetof",
      "title": "Get byte offset of a field in a structure",
      "topics": [
        "ffi_offsetof"
      ]
    },
    {
      "page": "ffi_pack_bits",
      "title": "Pack bit-fields into an integer",
      "topics": [
        "ffi_pack_bits"
      ]
    },
    {
      "page": "ffi_pack_bits64",
      "title": "Pack bit-fields into a 64-bit value",
      "topics": [
        "ffi_pack_bits64"
      ]
    },
    {
      "page": "ffi_parse_header",
      "title": "Parse C header file and create structured result",
      "topics": [
        "ffi_parse_header"
      ]
    },
    {
      "page": "ffi_pointer",
      "title": "pointer FFI type",
      "topics": [
        "ffi_pointer"
      ]
    },
    {
      "page": "ffi_print_struct",
      "title": "Pretty print struct contents",
      "topics": [
        "ffi_print_struct"
      ]
    },
    {
      "page": "ffi_raw",
      "title": "Char FFI type",
      "topics": [
        "ffi_raw"
      ]
    },
    {
      "page": "ffi_read_global",
      "title": "Read a global variable from a shared library",
      "topics": [
        "ffi_read_global"
      ]
    },
    {
      "page": "ffi_set_bit_field",
      "title": "Set a single bit-field in a packed value",
      "topics": [
        "ffi_set_bit_field"
      ]
    },
    {
      "page": "ffi_set_bits64",
      "title": "Set a single bit-field in a 64-bit packed value",
      "topics": [
        "ffi_set_bits64"
      ]
    },
    {
      "page": "ffi_set_field",
      "title": "Set field value in FFI structure",
      "topics": [
        "ffi_set_field"
      ]
    },
    {
      "page": "ffi_short",
      "title": "short FFI type",
      "topics": [
        "ffi_short"
      ]
    },
    {
      "page": "ffi_size_t",
      "title": "Size_t FFI type",
      "topics": [
        "ffi_size_t"
      ]
    },
    {
      "page": "ffi_sizeof",
      "title": "Get size of FFI type in bytes",
      "topics": [
        "ffi_sizeof"
      ]
    },
    {
      "page": "ffi_ssize_t",
      "title": "ssize_t FFI type",
      "topics": [
        "ffi_ssize_t"
      ]
    },
    {
      "page": "ffi_string",
      "title": "String FFI type",
      "topics": [
        "ffi_string"
      ]
    },
    {
      "page": "ffi_struct",
      "title": "Create FFI structure type",
      "topics": [
        "ffi_struct"
      ]
    },
    {
      "page": "ffi_struct_array_from_list",
      "title": "Allocate array of structs from R list",
      "topics": [
        "ffi_struct_array_from_list"
      ]
    },
    {
      "page": "ffi_struct_from_list",
      "title": "Create and initialize a struct from R list",
      "topics": [
        "ffi_struct_from_list"
      ]
    },
    {
      "page": "ffi_struct_to_list",
      "title": "Convert struct to R list",
      "topics": [
        "ffi_struct_to_list"
      ]
    },
    {
      "page": "ffi_symbol",
      "title": "Get native symbol reference",
      "topics": [
        "ffi_symbol"
      ]
    },
    {
      "page": "ffi_symbol_from_address",
      "title": "Create native symbol from direct address",
      "topics": [
        "ffi_symbol_from_address"
      ]
    },
    {
      "page": "ffi_uchar",
      "title": "Uchar FFI type",
      "topics": [
        "ffi_uchar"
      ]
    },
    {
      "page": "ffi_uint",
      "title": "uint FFI type",
      "topics": [
        "ffi_uint"
      ]
    },
    {
      "page": "ffi_uint16",
      "title": "Uint16 FFI type",
      "topics": [
        "ffi_uint16"
      ]
    },
    {
      "page": "ffi_uint32",
      "title": "Uint32 FFI type",
      "topics": [
        "ffi_uint32"
      ]
    },
    {
      "page": "ffi_uint64",
      "title": "Uint64 FFI type",
      "topics": [
        "ffi_uint64"
      ]
    },
    {
      "page": "ffi_uint8",
      "title": "Uint8 FFI type",
      "topics": [
        "ffi_uint8"
      ]
    },
    {
      "page": "ffi_ulong",
      "title": "ulong FFI type",
      "topics": [
        "ffi_ulong"
      ]
    },
    {
      "page": "ffi_ulonglong",
      "title": "ulonglong FFI type",
      "topics": [
        "ffi_ulonglong"
      ]
    },
    {
      "page": "ffi_union",
      "title": "Create FFI union type",
      "topics": [
        "ffi_union"
      ]
    },
    {
      "page": "ffi_unpack_bits",
      "title": "Unpack bit-fields from an integer",
      "topics": [
        "ffi_unpack_bits"
      ]
    },
    {
      "page": "ffi_unpack_bits64",
      "title": "Unpack bit-fields from a 64-bit value",
      "topics": [
        "ffi_unpack_bits64"
      ]
    },
    {
      "page": "ffi_ushort",
      "title": "Ushort FFI type",
      "topics": [
        "ffi_ushort"
      ]
    },
    {
      "page": "ffi_validate_call",
      "title": "Validate FFI call prerequisites",
      "topics": [
        "ffi_validate_call"
      ]
    },
    {
      "page": "ffi_void",
      "title": "void FFI type",
      "topics": [
        "ffi_void"
      ]
    },
    {
      "page": "ffi_wchar_t",
      "title": "Wide char FFI type",
      "topics": [
        "ffi_wchar_t"
      ]
    },
    {
      "page": "FFIClosure",
      "title": "FFI Closure - R function as C callback",
      "topics": [
        "FFIClosure"
      ]
    },
    {
      "page": "FFIType",
      "title": "FFI Type representation",
      "topics": [
        "FFIType"
      ]
    },
    {
      "page": "FieldInfo",
      "title": "Field Information Class",
      "topics": [
        "FieldInfo"
      ]
    },
    {
      "page": "generate_enum_definition",
      "title": "Generate R enum definition from parsed enum",
      "topics": [
        "generate_enum_definition"
      ]
    },
    {
      "page": "generate_function_wrapper",
      "title": "Generate R function wrapper from parsed function",
      "topics": [
        "generate_function_wrapper"
      ]
    },
    {
      "page": "generate_package_from_headers",
      "title": "Generate complete package from header files Generate complete package from header files",
      "topics": [
        "generate_package_from_headers"
      ]
    },
    {
      "page": "generate_package_init",
      "title": "Generate .onLoad/.onUnload for package",
      "topics": [
        "generate_package_init"
      ]
    },
    {
      "page": "generate_r_bindings",
      "title": "Generate R bindings from parsed header",
      "topics": [
        "generate_r_bindings"
      ]
    },
    {
      "page": "generate_struct_definition",
      "title": "Generate R struct definition from parsed struct",
      "topics": [
        "generate_struct_definition"
      ]
    },
    {
      "page": "generate_struct_helpers",
      "title": "Generate struct helper functions (allocator, from_list, to_list)",
      "topics": [
        "generate_struct_helpers"
      ]
    },
    {
      "page": "generate_typedef_definition",
      "title": "Generate R typedef alias from parsed typedef",
      "topics": [
        "generate_typedef_definition"
      ]
    },
    {
      "page": "generate_union_definition",
      "title": "Generate R union definition from parsed union",
      "topics": [
        "generate_union_definition"
      ]
    },
    {
      "page": "get_pointer_type",
      "title": "Get pointer type tag",
      "topics": [
        "get_pointer_type"
      ]
    },
    {
      "page": "is_null_pointer",
      "title": "Check if pointer is NULL",
      "topics": [
        "is_null_pointer"
      ]
    },
    {
      "page": "is_protected_ptr",
      "title": "Check if an object is a protected SEXP pointer",
      "topics": [
        "is_protected_ptr"
      ]
    },
    {
      "page": "libffi_version",
      "title": "Get libffi version string",
      "topics": [
        "libffi_version"
      ]
    },
    {
      "page": "make_typed_pointer",
      "title": "Create typed external pointer",
      "topics": [
        "make_typed_pointer"
      ]
    },
    {
      "page": "NativeSymbol",
      "title": "Native Symbol Reference",
      "topics": [
        "NativeSymbol"
      ]
    },
    {
      "page": "pointer_to_string",
      "title": "Convert pointer to string safely",
      "topics": [
        "pointer_to_string"
      ]
    },
    {
      "page": "pointer_to_string_safe",
      "title": "Convert pointer to string safely",
      "topics": [
        "pointer_to_string_safe"
      ]
    },
    {
      "page": "ptr_to_sexp",
      "title": "Get the R object from a protected SEXP pointer",
      "topics": [
        "ptr_to_sexp"
      ]
    },
    {
      "page": "release_ptr",
      "title": "Manually release a protected pointer",
      "topics": [
        "release_ptr"
      ]
    },
    {
      "page": "sexp_helpers",
      "title": "SEXP Pointer Helpers for Safe FFI Usage",
      "topics": [
        "sexp_helpers"
      ]
    },
    {
      "page": "sexp_ptr",
      "title": "Get SEXP pointer from R object with GC protection",
      "topics": [
        "sexp_ptr"
      ]
    },
    {
      "page": "StructType",
      "title": "FFI Structure Type",
      "topics": [
        "StructType"
      ]
    },
    {
      "page": "tcc_available",
      "title": "Check if TCC is available",
      "topics": [
        "tcc_available"
      ]
    },
    {
      "page": "tcc_binary_path",
      "title": "Get path to embedded TCC binary",
      "topics": [
        "tcc_binary_path"
      ]
    },
    {
      "page": "tcc_extract_defines",
      "title": "Extract #define macros from C header file or preprocessed lines",
      "topics": [
        "tcc_extract_defines"
      ]
    },
    {
      "page": "tcc_preprocess",
      "title": "Preprocess C header file using embedded TCC",
      "topics": [
        "tcc_preprocess"
      ]
    },
    {
      "page": "tcc_run",
      "title": "Compile and run C code using embedded TCC",
      "topics": [
        "tcc_run"
      ]
    },
    {
      "page": "UnionType",
      "title": "FFI Union Type",
      "topics": [
        "UnionType"
      ]
    }
  ],
  "_readme": "https://github.com/sounkou-bioinfo/RSimpleFFI/raw/HEAD/README.md",
  "_rundeps": [
    "cli",
    "formatR",
    "glue",
    "lambda.r",
    "lifecycle",
    "R6",
    "rlang",
    "Rtinycc",
    "S7",
    "treesitter",
    "treesitter.c",
    "vctrs"
  ],
  "_sysdeps": [
    {
      "shlib": "libffi",
      "package": "libffi8",
      "headers": "libffi-dev",
      "source": "libffi",
      "version": "3.4.6-1build1",
      "name": "libffi",
      "homepage": "https://sourceware.org/libffi/",
      "description": "Foreign Function Interface library runtime"
    }
  ],
  "_score": 3.7419390777291985,
  "_indexed": true,
  "_nocasepkg": "rsimpleffi",
  "_universes": [
    "sounkou-bioinfo"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "1.2.0.90000",
      "date": "2026-05-11T23:15:37.000Z",
      "distro": "noble",
      "arch": "aarch64",
      "commit": "668d9dd3877495502e4bc1469e01e1d61509049f",
      "fileid": "05e71f06406ec156c3607f9b23ea17b44b34a791a7f47169de27deb961f90afd",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/sounkou-bioinfo/actions/runs/25702739243"
    },
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "1.2.0.90000",
      "date": "2026-05-11T23:15:46.000Z",
      "distro": "noble",
      "arch": "x86_64",
      "commit": "668d9dd3877495502e4bc1469e01e1d61509049f",
      "fileid": "77aa03b1d5f441934531ed0a99108d9d6c48df35605749c3469dc2e79da83c79",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/sounkou-bioinfo/actions/runs/25702739243"
    },
    {
      "r": "4.6.0",
      "os": "linux",
      "version": "1.2.0.90000",
      "date": "2026-05-11T23:15:43.000Z",
      "distro": "noble",
      "arch": "aarch64",
      "commit": "668d9dd3877495502e4bc1469e01e1d61509049f",
      "fileid": "ba1f622fb1310857a30838852130b33b65d98137d73b79ff1d44df11ce1fcb66",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/sounkou-bioinfo/actions/runs/25702739243"
    },
    {
      "r": "4.6.0",
      "os": "linux",
      "version": "1.2.0.90000",
      "date": "2026-05-11T23:15:42.000Z",
      "distro": "noble",
      "arch": "x86_64",
      "commit": "668d9dd3877495502e4bc1469e01e1d61509049f",
      "fileid": "b90cc00b9adb151b93e7d6760c1adf716a9aa75b188dd7e032d89160ae4a2e6e",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/sounkou-bioinfo/actions/runs/25702739243"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "1.2.0.90000",
      "date": "2026-05-11T23:15:01.000Z",
      "arch": "aarch64",
      "commit": "668d9dd3877495502e4bc1469e01e1d61509049f",
      "fileid": "1fb294df9d0d07131cbd7fcdabf299fda1e97a92432045829b6e85bf543ac61b",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/sounkou-bioinfo/actions/runs/25702739243"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "1.2.0.90000",
      "date": "2026-05-11T23:16:21.000Z",
      "arch": "x86_64",
      "commit": "668d9dd3877495502e4bc1469e01e1d61509049f",
      "fileid": "1bb09daf34f6fc6a179024c8a3bb284c99a62662fec018f431234dd738bec2ed",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/sounkou-bioinfo/actions/runs/25702739243"
    },
    {
      "r": "4.6.0",
      "os": "mac",
      "version": "1.2.0.90000",
      "date": "2026-05-11T23:15:08.000Z",
      "arch": "aarch64",
      "commit": "668d9dd3877495502e4bc1469e01e1d61509049f",
      "fileid": "eb112eb5f1a5ea31b5f78eb8585ee7d4b7b93198fc3fdcd41db4e04e3a418d32",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/sounkou-bioinfo/actions/runs/25702739243"
    },
    {
      "r": "4.6.0",
      "os": "mac",
      "version": "1.2.0.90000",
      "date": "2026-05-11T23:17:48.000Z",
      "arch": "x86_64",
      "commit": "668d9dd3877495502e4bc1469e01e1d61509049f",
      "fileid": "3e6b0f8157473caddabbd0ce2428eb87727add5e05da87035d54431ce7ef6b3a",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/sounkou-bioinfo/actions/runs/25702739243"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "1.2.0.90000",
      "date": "2026-05-11T23:14:44.000Z",
      "arch": "x86_64",
      "commit": "668d9dd3877495502e4bc1469e01e1d61509049f",
      "fileid": "c7d6dacd0a6ff3459b2508efac6c0f493dbbc50ed75e41d9cd7b2a1d905452a3",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/sounkou-bioinfo/actions/runs/25702739243"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "1.2.0.90000",
      "date": "2026-05-11T23:14:39.000Z",
      "arch": "x86_64",
      "commit": "668d9dd3877495502e4bc1469e01e1d61509049f",
      "fileid": "4427192c3a38682a482f59810ddbaffd563427025687231931d5045d137c6479",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/sounkou-bioinfo/actions/runs/25702739243"
    },
    {
      "r": "4.6.0",
      "os": "win",
      "version": "1.2.0.90000",
      "date": "2026-05-11T23:14:52.000Z",
      "arch": "x86_64",
      "commit": "668d9dd3877495502e4bc1469e01e1d61509049f",
      "fileid": "a3639fba901e9d89ee00f7c0496d679858831b636a70b55641a9f6caae3b97db",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/sounkou-bioinfo/actions/runs/25702739243"
    }
  ]
}