aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPjotr Prins2025-02-11 02:19:49 -0600
committerPjotr Prins2025-02-11 02:19:49 -0600
commit83d5d1535754016500af6854aab26c1fbdde73d0 (patch)
tree33f31b3d1f1e11d0f3376e3120eb1f29e4fd214c
parent648ae2851d515e6b0e003d1ddb25d7b1f1e21c1f (diff)
downloadpresentations-83d5d1535754016500af6854aab26c1fbdde73d0.tar.gz
Copied guile-zig talk from FOSDEM-2023
-rw-r--r--guile-zig-local/README.md447
-rw-r--r--guile-zig-local/build.zig27
-rw-r--r--guile-zig-local/guix.scm61
-rw-r--r--guile-zig-local/my.zig79
-rw-r--r--guile-zig-local/run.scm9
-rw-r--r--guile-zig-local/test-include.zig7330
-rw-r--r--guile-zig-local/test.c36
7 files changed, 7989 insertions, 0 deletions
diff --git a/guile-zig-local/README.md b/guile-zig-local/README.md
new file mode 100644
index 0000000..ec4a664
--- /dev/null
+++ b/guile-zig-local/README.md
@@ -0,0 +1,447 @@
+# Guile & Zig
+
+Zig is a blazingly fast new programing language that adhers to a stable ABI and that makes it suitable to link against other programming languages. Zig comes withouth a garbage collector, and that makes it even better.
+
+This repo contains code to show how we can link Zig with Guile - but, really, zig directly supports any language that allows for a C FFI.
+
+## Install
+
+To create an environment with GNU Guix you can run with [guix.scm](guix.scm).
+
+```
+guix shell -C -D -f guix.scm
+zig version
+guile -v
+```
+
+This way guile can be run in an emacs shell with M-x shell -> guile.
+
+## Compile zig
+
+Run zit source tests with
+
+```
+zig test my.zig
+```
+
+Create libmy.so and show exported symbols with:
+
+```
+zig build-lib -dynamic my.zig
+nm -D --demangle libmy.so
+```
+
+## Print zig hello world from C
+
+The quick way is to create a C function that calls a zig function (no guile yet):
+
+@1
+```
+zig build-lib -dynamic my.zig
+zig cc `pkg-config --cflags guile-3.0` test.c -fPIC libmy.so $GUIX_ENVIRONMENT/lib/libguile-3.0.so -o test
+env LD_LIBRARY_PATH=.:$GUIX_ENVIRONMENT/lib ./test
+hello world
+```
+
+The `LD_LIBRARY_PATH` tells the runtime to look in the current working directory for mylib.so.
+
+## Print zig hello from guile
+
+Now we have a shared lib it should be easy to load.
+
+A shared library can be loaded into a running Guile process with the function load-extension. See the [guile documentation](https://www.gnu.org/software/guile/manual/html_node/Combining-with-C.html). In addition to the name of the library to load, this function also expects the name of a function from that library that will be called to initialize it:
+
+
+// gcc `pkg-config --cflags guile-3.0` \
+// -shared -o libmy.so -fPIC .c
+
+```
+zig cc `pkg-config --cflags guile-3.0` test.c -fPIC libmy.so -o test
+env LD_LIBRARY_PATH=. guile
+```
+
+```guile
+(load-extension "libmy" "init_module")
+```
+Should loads without error. Next we can call a function after we add a mapping to the init_module. What we want to do is:
+
+```guile
+(hello_zig)
+possibly unbound variable hello_zig
+```
+
+Hello stranger.
+
+We need to do a bit more work to make guile accept zig calls. An quick example in C is [here](https://www.gnu.org/software/guile/manual/html_node/A-Sample-Guile-Extension.html#A-Sample-Guile-Extension). libguile.h contains a range of C macros to facilite bindings. C macros (shudder - we want to get rid of those). GNU Guile is a dynamic language - that means values carry information about their type at runtime. This requires mapping values back and forth. This is true for any dynamic language - including Python, Ruby, R, etc.
+
+One fun aspect of GNU Guile is that almost all its functions are implemented in C with a scm_ prefix. So, if you look up functions, you'll the the guile call and the C call next to each other. In the Guile manual you'll find more information on [translating types](https://www.gnu.org/software/guile/manual/html_node/Dynamic-Types.html). You'll find a C example:
+
+```C
+SCM my_incrementing_function (SCM a, SCM flag)
+{
+ SCM result;
+
+ if (scm_is_true (flag))
+ result = scm_sum (a, scm_from_int (1));
+ else
+ result = a;
+
+ return result;
+}
+```
+
+that shows that the SCM macro represents different types of parameters in Guile. SCM is defined in scm.h saying `SCM values can hold proper scheme objects only.'
+
+If we add this function to test.c we can see its expanded version as
+
+```
+zig cc -E -I$GUIX_ENVIRONMENT/include/guile/3.0 test.c libmy.so -L$GUIX_ENVIRONMENT -lguile -o test
+```
+
+note the `-E` switch. The function expands to
+
+```C
+SCM my_incrementing_function (SCM a, SCM flag)
+{
+ SCM result;
+
+ if ((!((((((scm_t_bits) (0? (*(volatile SCM *)0=((flag))): (flag))) & ~(((scm_t_bits) (0? (*(volatile SCM
+ *)0=(((SCM) ((((((1)) << 8) + scm_tc8_flag)))))): ((SCM) ((((((1)) << 8) + scm_tc8_flag)))))) ^ ((scm_t_bi
+ts) (0? (*(volatile SCM *)0=(((SCM) ((((((0)) << 8) + scm_tc8_flag)))))): ((SCM) ((((((0)) << 8) + scm_tc8_
+flag)))))))) == (((scm_t_bits) (0? (*(volatile SCM *)0=(((SCM) ((((((1)) << 8) + scm_tc8_flag)))))): ((SCM)
+ ((((((1)) << 8) + scm_tc8_flag)))))) & ((scm_t_bits) (0? (*(volatile SCM *)0=(((SCM) ((((((0)) << 8) + scm
+_tc8_flag)))))): ((SCM) ((((((0)) << 8) + scm_tc8_flag))))))))))))
+ result = scm_sum (a, scm_from_int32 (1));
+ else
+ result = a;
+
+ return result;
+}
+```
+
+There is a bit of work going on, but mostly it is simple packing and unpacking described [here](https://www.gnu.org/software/guile/manual/html_node/Relationship-Between-SCM-and-scm_005ft_005fbits.html). To use this in Zig we'll need to translate the C macros for some conversions. Note that `scm_sum` and `scm_from_int` are simple function calls. The real challenge is converting SCM to boolean with `scm_is_true`.
+
+Zig comes with a utility that does that:
+
+@2
+```
+zig translate-c -I$GUIX_ENVIRONMENT/include/guile/3.0/ $GUIX_ENVIRONMENT/include/guile/3.0/libguile.h > test-include.zig
+
+```
+
+And, interestingly translates all of that including
+
+```zig
+pub const scm_t_timespec = struct_timespec;
+pub const scm_t_off = i64;
+pub const scm_t_signed_bits = isize;
+pub const scm_t_bits = usize;
+pub const struct_scm_unused_struct = extern struct {
+ scm_unused_field: u8,
+};
+pub const SCM = [*c]struct_scm_unused_struct;
+pub const scm_tc8_flag: c_int = 4;
+pub const scm_tc8_char: c_int = 12;
+pub const scm_tc8_unused_0: c_int = 20;
+pub const scm_tc8_unused_1: c_int = 28;
+pub const enum_scm_tc8_tags = c_uint;
+pub const scm_t_subr = ?*anyopaque;
+pub const struct_scm_dynamic_state = opaque {};
+pub const scm_t_dynamic_state = struct_scm_dynamic_state;
+pub const struct_scm_print_state = extern struct {
+ handle: SCM,
+ revealed: c_int,
+ writingp: c_ulong,
+ fancyp: c_ulong,
+ level: c_ulong,
+ length: c_ulong,
+ hot_ref: SCM,
+ list_offset: c_ulong,
+ top: c_ulong,
+ ceiling: c_ulong,
+ ref_vect: SCM,
+ highlight_objects: SCM,
+};
+pub const scm_print_state = struct_scm_print_state;
+pub const struct_scm_dynstack = extern struct {
+ base: [*c]scm_t_bits,
+ top: [*c]scm_t_bits,
+ limit: [*c]scm_t_bits,
+};
+```
+
+that may look familiar to Guile hackers and matches the C
+
+```C
+typedef struct scm_unused_struct { char scm_unused_field; } *SCM;
+```
+
+typed struct * that is SCM. Now from Zig, unless we start using real Guile internals we may get away with simply using our own opaque pointer that is passed around.
+
+Let's try compiling this conversion and it gives one error
+
+```sh
+zig test test-include.zig
+test-include.zig:6522:30: error: use of undeclared identifier 'sched_priority'
+pub const __sched_priority = sched_priority;
+```
+
+Commenting out that line and the compile passes. That must be too good to be true(!)
+Let's try compiling test.c with
+
+```
+zig cc `pkg-config --cflags guile-3.0` test.c -fPIC libmy.so $GUIX_ENVIRONMENT/lib/libguile-3.0.so -o test
+env LD_LIBRARY_PATH=$GUIX_ENVIRONMENT/lib:. ./test
+Hello world from 3 to 4
+```
+
+Now we add the zig call without `scm_is_false`
+
+```
+zig build-lib -dynamic my.z
+env LD_LIBRARY_PATH=$GUIX_ENVIRONMENT/lib:. ./test
+Hello world from 3 to 4
+ from 3 to 4
+```
+
+This worked! With reintroduced `scm_is_false` we get
+
+```
+./test-include.zig:6119:62: error: unable to evaluate constant expression
+pub inline fn scm_is_true(x: anytype) @TypeOf(!(scm_is_false(x) != 0)) {
+```
+
+Remember that is a C macro converted automatically. If we use a C function it works:
+
+```
+zig build-lib -dynamic my.zig
+zig cc `pkg-config --cflags guile-3.0` test.c -fPIC libmy.so $GUIX_ENVIRONMENT/lib/libguile-3.0.so -o test
+env LD_LIBRARY_PATH=$GUIX_ENVIRONMENT/lib:. ./test
+Hello world from 3 to 4
+Hello world from 4 to 5
+```
+
+Now let's try loading guile again
+
+```
+env LD_LIBRARY_PATH=. guile
+```
+
+and
+
+```
+(load-extension "libmy" "init_module")
+(hello_zig)
+possibly unbound variable hello_zig
+```
+
+while
+
+```
+nm -D libmy.so
+000000000000aa80 T hello_zig
+000000000000ab40 T my_incrementing_zig_function
+000000000003d6c0 W __zig_probe_stack
+```
+
+shows the symbols are exported. Hmm. We need to tell guile first there exists a function. Apparently I am not the [first](https://github.com/ziglang/zig/issues/1675). After a bit of try and error with zig 0.9 we get:
+
+```zig
+pub export fn ping_zig(i: SCM) SCM {
+ return i;
+}
+
+export fn init_module() void {
+ // var c_ping_zig = @intToPtr(*anyopaque, @ptrToInt(&ping_zig)); <- ampersand for zig 0.10 and after
+ var c_ping_zig = @intToPtr(*anyopaque, @ptrToInt(ping_zig));
+ var res = guile.scm_c_define_gsubr("ping_zig", 1, 0, 0, c_ping_zig);
+ _ = res;
+}
+```
+
+which runs in guile with
+
+```guile
+(load-extension "libmy" "init_module")
+(ping_zig 0)
+$1 = 0
+(ping_zig "TEST")
+$2 = "TEST"
+```
+
+Woot! That works great. Note we did not have to deal with a type system.
+
+With a recent version of zig the function pointer needs an ampersand.
+
+## Lists
+
+The work horse of data structures in Lisp is the list. Let us try to find an element that equals 2 and increment the value from Zig. First attempt
+
+```zig
+export fn my_increment_in_list_zig(lst: SCM) SCM {
+ var lst2 = guile.scm_memv(guile.scm_from_int(2), lst);
+ return lst2;
+}
+```
+
+```guile
+scheme@(guile-user)> (load-extension "libmy" "init_module")
+scheme@(guile-user)> (incr_list_zig '(3 4 2 "test"))
+$1 = (2 "test")
+```
+
+Now let's increment with
+
+```zig
+export fn my_increment_in_list_zig(lst: SCM) SCM {
+ var lst2 = guile.scm_memv(guile.scm_from_int(2), lst);
+ var lst3 = guile.scm_list_set_x(lst2, 1, guile.scm_from_int(3));
+ return lst3;
+}
+```
+
+Now this segfaults. Let's try the debugger with
+
+```
+env LD_LIBRARY_PATH=. gdb --args guile
+```
+
+and we get
+
+```
+Thread 1 "guile" received signal SIGSEGV, Segmentation fault.
+0x00007ffff7f02dc5 in scm_to_uint64 () from /gnu/store/qlmpcy5zi84m6dikq3fnx5dz38qpczlc-guile-3.0.8/lib/libguile-3.0.so.1
+```
+
+ah, I think the index 1 should be a SCM value. Indeed does the job
+
+```zig
+export fn my_increment_in_list_zig(lst: SCM) SCM {
+ var lst2 = guile.scm_memv(guile.scm_from_int(2), lst);
+ lst2 = guile.scm_list_set_x(lst2, guile.scm_from_int(0), guile.scm_from_int(3));
+ return lst; // note original is updated!
+}
+```
+
+```guile
+(load-extension "libmy" "init_module")
+(incr_list_zig (list 3 4 2 "test"))
+$1 = (3 4 3 "test")
+```
+
+## Arrays
+
+Arrays are continuous in memory. Guile provides a special page on [accessing arrays from C](https://www.gnu.org/software/guile/manual/html_node/Accessing-Arrays-from-C.html).
+
+It says: Accessing Arrays from C.
+For interworking with external C code, Guile provides an API to allow C code to access the elements of a Scheme array.
+In particular, for uniform numeric arrays, the API exposes the underlying uniform data as a C array of numbers of the relevant type.
+This can be very useful. Note that the C and Zig code need to protect and array when it starts modifying it. And for multithreaded access locking is also required. See above documentation for more.
+
+We'll want to create an [unboxed vector](https://www.gnu.org/software/guile/docs/docs-2.2/guile-ref/Uniform-Numeric-Vectors.html#Uniform-Numeric-Vectors) of double. This is the scheme version:
+
+```guile
+(use-modules (srfi srfi-4))
+(define v #f64(3.1415 2.71 1.0))
+(f64vector-length v)
+$28 = 3
+(f64vector-set! v 1 3.71)
+v
+$29 = #f64(3.1415 3.71 1.0)
+```
+
+The zig version:
+
+```zig
+// Increment the second value in the unboxed vector
+export fn my_increment_in_f64vector_zig(vec: SCM) SCM {
+ _ = guile.scm_f64vector_set_x(vec, guile.scm_from_int(1), guile.scm_from_double(3.7));
+ return vec; // note original is updated!
+}
+```
+
+does it
+
+```guile
+(define v #f64(3.1415 2.71 1.0))
+(incr_f64vector_zig v)
+$1 = #f64(3.1415 3.7 1.0)
+```
+
+Now in the final step we want to update the value as a raw Zig array. The
+C Function:
+
+```C
+const double * scm_f64vector_elements(SCM vec, scm_t_array_handle *handle, size_t *lenp, ssize_t *incp)
+```
+
+should return a pointer. The Zig translated version is
+
+```zig
+pub extern fn scm_f64vector_elements(uvec: SCM, h: [*c]scm_t_array_handle, lenp: [*c]usize, incp: [*c]isize) [*c]const f64;
+```
+
+This code unboxes the double vector:
+
+```zig
+export fn my_increment_in_f64vector_zig(vec: SCM) SCM {
+ // _ = guile.scm_f64vector_set_x(vec, guile.scm_from_int(1), guile.scm_from_double(3.7));
+ var handle: guile.scm_t_array_handle = undefined;
+ var lenp: usize = undefined;
+ var incp: isize = undefined;
+ var data = guile.scm_f64vector_elements(vec, &handle, &lenp, &incp);
+ p("\nZig says {any},{any},{any}\n",.{data[0],data[1],data[2]});
+ return vec; // note original is updated!
+}
+```
+
+When you try to mutate it will complain! We need to set the vector to mutable. Replacing
+the line with:
+
+```
+var data = guile.scm_f64vector_writable_elements(vec, &handle, &lenp, &incp);
+```
+
+gets a complaint:
+
+```
+Wrong type (expecting mutable f64vector): #f64(3.1415 2.71 1.0)
+```
+
+Try again by createing a mutable vector. This is the full code
+
+```zig
+export fn my_increment_in_f64vector_zig(vec: SCM) SCM {
+ // _ = guile.scm_f64vector_set_x(vec, guile.scm_from_int(1), guile.scm_from_double(3.7));
+ var handle: guile.scm_t_array_handle = undefined;
+ var lenp: usize = undefined;
+ var incp: isize = undefined;
+ var data = guile.scm_f64vector_writable_elements(vec, &handle, &lenp, &incp);
+ p("\nZig says {any},{any},{any}\n",.{data[0],data[1],data[2]});
+ data[1] += 1.0;
+ guile.scm_array_handle_release(&handle);
+ return vec; // note original is updated!
+}
+```
+
+```guile
+(load-extension "libmy" "init_module")
+(define v (list->f64vector '(3.1415 2.71 1.0)))
+(display "Guile says ")
+(display v)
+(incr_f64vector_zig v)
+(display "Guile now says ")
+(display v)
+```
+
+displays
+
+```
+Guile says #f64(3.1415 2.71 1.0)
+Zig says 3.1415e+00,2.71e+00,1.0e+00
+Guile now says #f64(3.1415 3.71 1.0)
+```
+
+## Sharing a pointer
+
+If you want to move pointers around, both guile and zig can handle 'foreign pointers'. Zig has *anyopaque and guile has [foreign pointers]( https://www.gnu.org/software/guile/manual/html_node/Foreign-Pointers.html#Foreign-Pointers).
diff --git a/guile-zig-local/build.zig b/guile-zig-local/build.zig
new file mode 100644
index 0000000..24aeb3a
--- /dev/null
+++ b/guile-zig-local/build.zig
@@ -0,0 +1,27 @@
+const std = @import("std");
+
+pub fn build(b: *std.build.Builder) void {
+ // Standard release options allow the person running `zig build` to select
+ // between Debug, ReleaseSafe, ReleaseFast, and ReleaseSmall.
+ const mode = b.standardReleaseOptions();
+
+ // const lib = b.addStaticLibrary("zig", "my.zig");
+ const lib = b.addSharedLibrary("zig", "my.zig", .unversioned);
+ lib.setBuildMode(mode);
+ switch (mode) {
+ .Debug, .ReleaseSafe => lib.bundle_compiler_rt = true,
+ .ReleaseFast, .ReleaseSmall => lib.disable_stack_probing = true,
+ }
+ lib.force_pic = true;
+ // lib.emit_h = true; future version of zig?
+ lib.install();
+
+ const main_tests = b.addTest("my.zig");
+ main_tests.setBuildMode(mode);
+ main_tests.addLibraryPath("build");
+ main_tests.addObjectFile("build/libmy.so");
+
+ const test_step = b.step("test", "Run library tests");
+ test_step.dependOn(&main_tests.step);
+}
+
diff --git a/guile-zig-local/guix.scm b/guile-zig-local/guix.scm
new file mode 100644
index 0000000..920b27a
--- /dev/null
+++ b/guile-zig-local/guix.scm
@@ -0,0 +1,61 @@
+;; To use this file to build HEAD of vcflib:
+;;
+;; guix build -f guix.scm
+;;
+;; To get a development container (emacs shell will work)
+;;
+;; guix shell -C -D -f guix.scm
+;;
+
+(use-modules
+ ((guix licenses) #:prefix license:)
+ (guix gexp)
+ (guix packages)
+ (guix git-download)
+ (guix build-system gnu)
+ (gnu packages algebra)
+ (gnu packages autotools)
+ (gnu packages base)
+ (gnu packages compression)
+ (gnu packages build-tools)
+ (gnu packages check)
+ (gnu packages curl)
+ (gnu packages gcc)
+ (gnu packages gdb)
+ (gnu packages guile)
+ (gnu packages haskell-xyz) ; pandoc for help files
+ (gnu packages llvm)
+ (gnu packages parallel)
+ (gnu packages pkg-config)
+ (gnu packages tls)
+ (gnu packages zig)
+ (srfi srfi-1)
+ (ice-9 popen)
+ (ice-9 rdelim))
+
+(define %source-dir (dirname (current-filename)))
+
+(define %git-commit
+ (read-string (open-pipe "git show HEAD | head -1 | cut -d ' ' -f 2" OPEN_READ)))
+
+(define-public guile-zig-git
+ (package
+ (name "guile-zig-git")
+ (version (git-version "0.0.1" "HEAD" %git-commit))
+ (source (local-file %source-dir #:recursive? #t))
+ (build-system gnu-build-system)
+ (inputs
+ `(
+ ("gdb" ,gdb)
+ ("guile" ,guile-3.0-latest)
+ ("guile-debug" ,guile-3.0-latest "debug")
+ ("zig" ,zig) ;; note we use zig-0.9.1
+ ))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (home-page "https://github.com/pjotrp/guile-zig")
+ (synopsis "Example for binding guile agains zig")
+ (description "Example for binding guile agains zig.")
+ (license license:expat)))
+
+guile-zig-git
diff --git a/guile-zig-local/my.zig b/guile-zig-local/my.zig
new file mode 100644
index 0000000..dabfccb
--- /dev/null
+++ b/guile-zig-local/my.zig
@@ -0,0 +1,79 @@
+//! This zig module provides functionality for binding guile against zig
+
+
+const std = @import("std");
+const mem = @import("std").mem;
+const guile = @import("test-include.zig");
+const SCM = guile.SCM;
+const expectEqual = @import("std").testing.expectEqual;
+const expect = @import("std").testing.expect;
+const ArrayList = std.ArrayList;
+const StringList = ArrayList([] const u8);
+const Allocator = std.mem.Allocator;
+const p = @import("std").debug.print;
+
+const hello = "Hello World from Zig";
+
+pub export fn ping_zig(i: SCM) SCM {
+ return i;
+}
+
+export fn hello_zig() void {
+ p("Hello world", .{});
+}
+
+fn hello_zig2(msg: [] const u8) []const u8 {
+ const result = msg;
+ return result;
+}
+
+export fn my_incrementing_zig_function(testi: SCM, flag: SCM) SCM {
+ var result = testi;
+ var vflag = guile.scm_to_bool(flag);
+ if (vflag != 0)
+ result = guile.scm_sum(testi, guile.scm_from_int (1))
+ else
+ result = testi;
+
+ return result;
+}
+
+// Increment the first value that is 2 in a list
+export fn my_increment_in_list_zig(lst: SCM) SCM {
+ var lst2 = guile.scm_memv(guile.scm_from_int(2), lst);
+ lst2 = guile.scm_list_set_x(lst2, guile.scm_from_int(0), guile.scm_from_int(3));
+ return lst; // note original is updated!
+}
+
+// Increment the second value in the unboxed vector
+export fn my_increment_in_f64vector_zig(vec: SCM) SCM {
+ // _ = guile.scm_f64vector_set_x(vec, guile.scm_from_int(1), guile.scm_from_double(3.7));
+ var handle: guile.scm_t_array_handle = undefined;
+ var lenp: usize = undefined;
+ var incp: isize = undefined;
+ var data = guile.scm_f64vector_writable_elements(vec, &handle, &lenp, &incp);
+ p("\nZig says {any},{any},{any}\n",.{data[0],data[1],data[2]});
+ data[1] += 1.0;
+ guile.scm_array_handle_release(&handle);
+ return vec; // note original is updated!
+}
+
+test "hello zig" {
+ try expectEqual(hello_zig2(hello),hello);
+}
+
+// ---- Guile
+
+// pub const scm_t_subr = *anyopaque;
+
+export fn init_module() void {
+ // var t = @ptrCast(*anyopaque,&ping_zig);
+ var c_ping_zig = @intToPtr(*anyopaque, @ptrToInt(&ping_zig));
+ var c_incr_zig = @intToPtr(*anyopaque, @ptrToInt(&my_incrementing_zig_function));
+ var c_incr_list_zig = @intToPtr(*anyopaque, @ptrToInt(&my_increment_in_list_zig));
+ var c_incr_f64vector_zig = @intToPtr(*anyopaque, @ptrToInt(&my_increment_in_f64vector_zig));
+ var res = guile.scm_c_define_gsubr("ping_zig", 1, 0, 0, c_ping_zig);
+ res = guile.scm_c_define_gsubr("incr_zig", 2, 0, 0, c_incr_zig);
+ res = guile.scm_c_define_gsubr("incr_list_zig", 1, 0, 0, c_incr_list_zig);
+ res = guile.scm_c_define_gsubr("incr_f64vector_zig", 1, 0, 0, c_incr_f64vector_zig);
+}
diff --git a/guile-zig-local/run.scm b/guile-zig-local/run.scm
new file mode 100644
index 0000000..0be119d
--- /dev/null
+++ b/guile-zig-local/run.scm
@@ -0,0 +1,9 @@
+(load-extension "libmy" "init_module")
+; (define v #f64(3.1415 2.71 1.0)) <- not mutable
+; (define v (make-f64vector 3 0)) <- init with zeroes
+(define v (list->f64vector '(3.1415 2.71 1.0)))
+(display "Guile says ")
+(display v)
+(incr_f64vector_zig v)
+(display "Guile now says ")
+(display v)
diff --git a/guile-zig-local/test-include.zig b/guile-zig-local/test-include.zig
new file mode 100644
index 0000000..64e91f6
--- /dev/null
+++ b/guile-zig-local/test-include.zig
@@ -0,0 +1,7330 @@
+pub const __builtin_bswap16 = @import("std").zig.c_builtins.__builtin_bswap16;
+pub const __builtin_bswap32 = @import("std").zig.c_builtins.__builtin_bswap32;
+pub const __builtin_bswap64 = @import("std").zig.c_builtins.__builtin_bswap64;
+pub const __builtin_signbit = @import("std").zig.c_builtins.__builtin_signbit;
+pub const __builtin_signbitf = @import("std").zig.c_builtins.__builtin_signbitf;
+pub const __builtin_popcount = @import("std").zig.c_builtins.__builtin_popcount;
+pub const __builtin_ctz = @import("std").zig.c_builtins.__builtin_ctz;
+pub const __builtin_clz = @import("std").zig.c_builtins.__builtin_clz;
+pub const __builtin_sqrt = @import("std").zig.c_builtins.__builtin_sqrt;
+pub const __builtin_sqrtf = @import("std").zig.c_builtins.__builtin_sqrtf;
+pub const __builtin_sin = @import("std").zig.c_builtins.__builtin_sin;
+pub const __builtin_sinf = @import("std").zig.c_builtins.__builtin_sinf;
+pub const __builtin_cos = @import("std").zig.c_builtins.__builtin_cos;
+pub const __builtin_cosf = @import("std").zig.c_builtins.__builtin_cosf;
+pub const __builtin_exp = @import("std").zig.c_builtins.__builtin_exp;
+pub const __builtin_expf = @import("std").zig.c_builtins.__builtin_expf;
+pub const __builtin_exp2 = @import("std").zig.c_builtins.__builtin_exp2;
+pub const __builtin_exp2f = @import("std").zig.c_builtins.__builtin_exp2f;
+pub const __builtin_log = @import("std").zig.c_builtins.__builtin_log;
+pub const __builtin_logf = @import("std").zig.c_builtins.__builtin_logf;
+pub const __builtin_log2 = @import("std").zig.c_builtins.__builtin_log2;
+pub const __builtin_log2f = @import("std").zig.c_builtins.__builtin_log2f;
+pub const __builtin_log10 = @import("std").zig.c_builtins.__builtin_log10;
+pub const __builtin_log10f = @import("std").zig.c_builtins.__builtin_log10f;
+pub const __builtin_abs = @import("std").zig.c_builtins.__builtin_abs;
+pub const __builtin_fabs = @import("std").zig.c_builtins.__builtin_fabs;
+pub const __builtin_fabsf = @import("std").zig.c_builtins.__builtin_fabsf;
+pub const __builtin_floor = @import("std").zig.c_builtins.__builtin_floor;
+pub const __builtin_floorf = @import("std").zig.c_builtins.__builtin_floorf;
+pub const __builtin_ceil = @import("std").zig.c_builtins.__builtin_ceil;
+pub const __builtin_ceilf = @import("std").zig.c_builtins.__builtin_ceilf;
+pub const __builtin_trunc = @import("std").zig.c_builtins.__builtin_trunc;
+pub const __builtin_truncf = @import("std").zig.c_builtins.__builtin_truncf;
+pub const __builtin_round = @import("std").zig.c_builtins.__builtin_round;
+pub const __builtin_roundf = @import("std").zig.c_builtins.__builtin_roundf;
+pub const __builtin_strlen = @import("std").zig.c_builtins.__builtin_strlen;
+pub const __builtin_strcmp = @import("std").zig.c_builtins.__builtin_strcmp;
+pub const __builtin_object_size = @import("std").zig.c_builtins.__builtin_object_size;
+pub const __builtin___memset_chk = @import("std").zig.c_builtins.__builtin___memset_chk;
+pub const __builtin_memset = @import("std").zig.c_builtins.__builtin_memset;
+pub const __builtin___memcpy_chk = @import("std").zig.c_builtins.__builtin___memcpy_chk;
+pub const __builtin_memcpy = @import("std").zig.c_builtins.__builtin_memcpy;
+pub const __builtin_expect = @import("std").zig.c_builtins.__builtin_expect;
+pub const __builtin_nanf = @import("std").zig.c_builtins.__builtin_nanf;
+pub const __builtin_huge_valf = @import("std").zig.c_builtins.__builtin_huge_valf;
+pub const __builtin_inff = @import("std").zig.c_builtins.__builtin_inff;
+pub const __builtin_isnan = @import("std").zig.c_builtins.__builtin_isnan;
+pub const __builtin_isinf = @import("std").zig.c_builtins.__builtin_isinf;
+pub const __builtin_isinf_sign = @import("std").zig.c_builtins.__builtin_isinf_sign;
+pub const __u_char = u8;
+pub const __u_short = c_ushort;
+pub const __u_int = c_uint;
+pub const __u_long = c_ulong;
+pub const __int8_t = i8;
+pub const __uint8_t = u8;
+pub const __int16_t = c_short;
+pub const __uint16_t = c_ushort;
+pub const __int32_t = c_int;
+pub const __uint32_t = c_uint;
+pub const __int64_t = c_long;
+pub const __uint64_t = c_ulong;
+pub const __int_least8_t = __int8_t;
+pub const __uint_least8_t = __uint8_t;
+pub const __int_least16_t = __int16_t;
+pub const __uint_least16_t = __uint16_t;
+pub const __int_least32_t = __int32_t;
+pub const __uint_least32_t = __uint32_t;
+pub const __int_least64_t = __int64_t;
+pub const __uint_least64_t = __uint64_t;
+pub const __quad_t = c_long;
+pub const __u_quad_t = c_ulong;
+pub const __intmax_t = c_long;
+pub const __uintmax_t = c_ulong;
+pub const __dev_t = c_ulong;
+pub const __uid_t = c_uint;
+pub const __gid_t = c_uint;
+pub const __ino_t = c_ulong;
+pub const __ino64_t = c_ulong;
+pub const __mode_t = c_uint;
+pub const __nlink_t = c_ulong;
+pub const __off_t = c_long;
+pub const __off64_t = c_long;
+pub const __pid_t = c_int;
+pub const __fsid_t = extern struct {
+ __val: [2]c_int,
+};
+pub const __clock_t = c_long;
+pub const __rlim_t = c_ulong;
+pub const __rlim64_t = c_ulong;
+pub const __id_t = c_uint;
+pub const __time_t = c_long;
+pub const __useconds_t = c_uint;
+pub const __suseconds_t = c_long;
+pub const __suseconds64_t = c_long;
+pub const __daddr_t = c_int;
+pub const __key_t = c_int;
+pub const __clockid_t = c_int;
+pub const __timer_t = ?*anyopaque;
+pub const __blksize_t = c_long;
+pub const __blkcnt_t = c_long;
+pub const __blkcnt64_t = c_long;
+pub const __fsblkcnt_t = c_ulong;
+pub const __fsblkcnt64_t = c_ulong;
+pub const __fsfilcnt_t = c_ulong;
+pub const __fsfilcnt64_t = c_ulong;
+pub const __fsword_t = c_long;
+pub const __ssize_t = c_long;
+pub const __syscall_slong_t = c_long;
+pub const __syscall_ulong_t = c_ulong;
+pub const __loff_t = __off64_t;
+pub const __caddr_t = [*c]u8;
+pub const __intptr_t = c_long;
+pub const __socklen_t = c_uint;
+pub const __sig_atomic_t = c_int;
+pub const int_least8_t = __int_least8_t;
+pub const int_least16_t = __int_least16_t;
+pub const int_least32_t = __int_least32_t;
+pub const int_least64_t = __int_least64_t;
+pub const uint_least8_t = __uint_least8_t;
+pub const uint_least16_t = __uint_least16_t;
+pub const uint_least32_t = __uint_least32_t;
+pub const uint_least64_t = __uint_least64_t;
+pub const int_fast8_t = i8;
+pub const int_fast16_t = c_long;
+pub const int_fast32_t = c_long;
+pub const int_fast64_t = c_long;
+pub const uint_fast8_t = u8;
+pub const uint_fast16_t = c_ulong;
+pub const uint_fast32_t = c_ulong;
+pub const uint_fast64_t = c_ulong;
+pub const intmax_t = __intmax_t;
+pub const uintmax_t = __uintmax_t;
+pub const ptrdiff_t = c_long;
+pub const wchar_t = c_int;
+pub const max_align_t = extern struct {
+ __clang_max_align_nonce1: c_longlong align(8),
+ __clang_max_align_nonce2: c_longdouble align(16),
+};
+pub const time_t = __time_t;
+pub const struct_timeval = extern struct {
+ tv_sec: __time_t,
+ tv_usec: __suseconds_t,
+};
+pub const suseconds_t = __suseconds_t;
+pub const __sigset_t = extern struct {
+ __val: [16]c_ulong,
+};
+pub const sigset_t = __sigset_t;
+pub const struct_timespec = extern struct {
+ tv_sec: __time_t,
+ tv_nsec: __syscall_slong_t,
+};
+pub const __fd_mask = c_long;
+pub const fd_set = extern struct {
+ __fds_bits: [16]__fd_mask,
+};
+pub const fd_mask = __fd_mask;
+pub extern fn select(__nfds: c_int, noalias __readfds: [*c]fd_set, noalias __writefds: [*c]fd_set, noalias __exceptfds: [*c]fd_set, noalias __timeout: [*c]struct_timeval) c_int;
+pub extern fn pselect(__nfds: c_int, noalias __readfds: [*c]fd_set, noalias __writefds: [*c]fd_set, noalias __exceptfds: [*c]fd_set, noalias __timeout: [*c]const struct_timespec, noalias __sigmask: [*c]const __sigset_t) c_int;
+pub const struct_timezone = extern struct {
+ tz_minuteswest: c_int,
+ tz_dsttime: c_int,
+};
+pub extern fn gettimeofday(noalias __tv: [*c]struct_timeval, noalias __tz: ?*anyopaque) c_int;
+pub extern fn settimeofday(__tv: [*c]const struct_timeval, __tz: [*c]const struct_timezone) c_int;
+pub extern fn adjtime(__delta: [*c]const struct_timeval, __olddelta: [*c]struct_timeval) c_int;
+pub const ITIMER_REAL: c_int = 0;
+pub const ITIMER_VIRTUAL: c_int = 1;
+pub const ITIMER_PROF: c_int = 2;
+pub const enum___itimer_which = c_uint;
+pub const struct_itimerval = extern struct {
+ it_interval: struct_timeval,
+ it_value: struct_timeval,
+};
+pub const __itimer_which_t = c_int;
+pub extern fn getitimer(__which: __itimer_which_t, __value: [*c]struct_itimerval) c_int;
+pub extern fn setitimer(__which: __itimer_which_t, noalias __new: [*c]const struct_itimerval, noalias __old: [*c]struct_itimerval) c_int;
+pub extern fn utimes(__file: [*c]const u8, __tvp: [*c]const struct_timeval) c_int;
+pub extern fn lutimes(__file: [*c]const u8, __tvp: [*c]const struct_timeval) c_int;
+pub extern fn futimes(__fd: c_int, __tvp: [*c]const struct_timeval) c_int;
+pub const clock_t = __clock_t;
+pub const struct_tm = extern struct {
+ tm_sec: c_int,
+ tm_min: c_int,
+ tm_hour: c_int,
+ tm_mday: c_int,
+ tm_mon: c_int,
+ tm_year: c_int,
+ tm_wday: c_int,
+ tm_yday: c_int,
+ tm_isdst: c_int,
+ tm_gmtoff: c_long,
+ tm_zone: [*c]const u8,
+};
+pub const clockid_t = __clockid_t;
+pub const timer_t = __timer_t;
+pub const struct_itimerspec = extern struct {
+ it_interval: struct_timespec,
+ it_value: struct_timespec,
+};
+pub const union_sigval = extern union {
+ sival_int: c_int,
+ sival_ptr: ?*anyopaque,
+};
+pub const __sigval_t = union_sigval;
+pub const union_pthread_attr_t = extern union {
+ __size: [56]u8,
+ __align: c_long,
+};
+pub const pthread_attr_t = union_pthread_attr_t;
+const struct_unnamed_2 = extern struct {
+ _function: ?fn (__sigval_t) callconv(.C) void,
+ _attribute: [*c]pthread_attr_t,
+};
+const union_unnamed_1 = extern union {
+ _pad: [12]c_int,
+ _tid: __pid_t,
+ _sigev_thread: struct_unnamed_2,
+};
+pub const struct_sigevent = extern struct {
+ sigev_value: __sigval_t,
+ sigev_signo: c_int,
+ sigev_notify: c_int,
+ _sigev_un: union_unnamed_1,
+};
+pub const pid_t = __pid_t;
+pub const struct___locale_data = opaque {};
+pub const struct___locale_struct = extern struct {
+ __locales: [13]?*struct___locale_data,
+ __ctype_b: [*c]const c_ushort,
+ __ctype_tolower: [*c]const c_int,
+ __ctype_toupper: [*c]const c_int,
+ __names: [13][*c]const u8,
+};
+pub const __locale_t = [*c]struct___locale_struct;
+pub const locale_t = __locale_t;
+pub extern fn clock() clock_t;
+pub extern fn time(__timer: [*c]time_t) time_t;
+pub extern fn difftime(__time1: time_t, __time0: time_t) f64;
+pub extern fn mktime(__tp: [*c]struct_tm) time_t;
+pub extern fn strftime(noalias __s: [*c]u8, __maxsize: usize, noalias __format: [*c]const u8, noalias __tp: [*c]const struct_tm) usize;
+pub extern fn strftime_l(noalias __s: [*c]u8, __maxsize: usize, noalias __format: [*c]const u8, noalias __tp: [*c]const struct_tm, __loc: locale_t) usize;
+pub extern fn gmtime(__timer: [*c]const time_t) [*c]struct_tm;
+pub extern fn localtime(__timer: [*c]const time_t) [*c]struct_tm;
+pub extern fn gmtime_r(noalias __timer: [*c]const time_t, noalias __tp: [*c]struct_tm) [*c]struct_tm;
+pub extern fn localtime_r(noalias __timer: [*c]const time_t, noalias __tp: [*c]struct_tm) [*c]struct_tm;
+pub extern fn asctime(__tp: [*c]const struct_tm) [*c]u8;
+pub extern fn ctime(__timer: [*c]const time_t) [*c]u8;
+pub extern fn asctime_r(noalias __tp: [*c]const struct_tm, noalias __buf: [*c]u8) [*c]u8;
+pub extern fn ctime_r(noalias __timer: [*c]const time_t, noalias __buf: [*c]u8) [*c]u8;
+pub extern var __tzname: [2][*c]u8;
+pub extern var __daylight: c_int;
+pub extern var __timezone: c_long;
+pub extern var tzname: [2][*c]u8;
+pub extern fn tzset() void;
+pub extern var daylight: c_int;
+pub extern var timezone: c_long;
+pub extern fn timegm(__tp: [*c]struct_tm) time_t;
+pub extern fn timelocal(__tp: [*c]struct_tm) time_t;
+pub extern fn dysize(__year: c_int) c_int;
+pub extern fn nanosleep(__requested_time: [*c]const struct_timespec, __remaining: [*c]struct_timespec) c_int;
+pub extern fn clock_getres(__clock_id: clockid_t, __res: [*c]struct_timespec) c_int;
+pub extern fn clock_gettime(__clock_id: clockid_t, __tp: [*c]struct_timespec) c_int;
+pub extern fn clock_settime(__clock_id: clockid_t, __tp: [*c]const struct_timespec) c_int;
+pub extern fn clock_nanosleep(__clock_id: clockid_t, __flags: c_int, __req: [*c]const struct_timespec, __rem: [*c]struct_timespec) c_int;
+pub extern fn clock_getcpuclockid(__pid: pid_t, __clock_id: [*c]clockid_t) c_int;
+pub extern fn timer_create(__clock_id: clockid_t, noalias __evp: [*c]struct_sigevent, noalias __timerid: [*c]timer_t) c_int;
+pub extern fn timer_delete(__timerid: timer_t) c_int;
+pub extern fn timer_settime(__timerid: timer_t, __flags: c_int, noalias __value: [*c]const struct_itimerspec, noalias __ovalue: [*c]struct_itimerspec) c_int;
+pub extern fn timer_gettime(__timerid: timer_t, __value: [*c]struct_itimerspec) c_int;
+pub extern fn timer_getoverrun(__timerid: timer_t) c_int;
+pub extern fn timespec_get(__ts: [*c]struct_timespec, __base: c_int) c_int;
+pub const _Float32 = f32;
+pub const _Float64 = f64;
+pub const _Float32x = f64;
+pub const _Float64x = c_longdouble;
+pub const div_t = extern struct {
+ quot: c_int,
+ rem: c_int,
+};
+pub const ldiv_t = extern struct {
+ quot: c_long,
+ rem: c_long,
+};
+pub const lldiv_t = extern struct {
+ quot: c_longlong,
+ rem: c_longlong,
+};
+pub extern fn __ctype_get_mb_cur_max() usize;
+pub fn atof(arg___nptr: [*c]const u8) callconv(.C) f64 {
+ var __nptr = arg___nptr;
+ return strtod(__nptr, @ptrCast([*c][*c]u8, @alignCast(@import("std").meta.alignment([*c]u8), @intToPtr(?*anyopaque, @as(c_int, 0)))));
+}
+pub fn atoi(arg___nptr: [*c]const u8) callconv(.C) c_int {
+ var __nptr = arg___nptr;
+ return @bitCast(c_int, @truncate(c_int, strtol(__nptr, @ptrCast([*c][*c]u8, @alignCast(@import("std").meta.alignment([*c]u8), @intToPtr(?*anyopaque, @as(c_int, 0)))), @as(c_int, 10))));
+}
+pub fn atol(arg___nptr: [*c]const u8) callconv(.C) c_long {
+ var __nptr = arg___nptr;
+ return strtol(__nptr, @ptrCast([*c][*c]u8, @alignCast(@import("std").meta.alignment([*c]u8), @intToPtr(?*anyopaque, @as(c_int, 0)))), @as(c_int, 10));
+}
+pub fn atoll(arg___nptr: [*c]const u8) callconv(.C) c_longlong {
+ var __nptr = arg___nptr;
+ return strtoll(__nptr, @ptrCast([*c][*c]u8, @alignCast(@import("std").meta.alignment([*c]u8), @intToPtr(?*anyopaque, @as(c_int, 0)))), @as(c_int, 10));
+}
+pub extern fn strtod(__nptr: [*c]const u8, __endptr: [*c][*c]u8) f64;
+pub extern fn strtof(__nptr: [*c]const u8, __endptr: [*c][*c]u8) f32;
+pub extern fn strtold(__nptr: [*c]const u8, __endptr: [*c][*c]u8) c_longdouble;
+pub extern fn strtol(__nptr: [*c]const u8, __endptr: [*c][*c]u8, __base: c_int) c_long;
+pub extern fn strtoul(__nptr: [*c]const u8, __endptr: [*c][*c]u8, __base: c_int) c_ulong;
+pub extern fn strtoq(noalias __nptr: [*c]const u8, noalias __endptr: [*c][*c]u8, __base: c_int) c_longlong;
+pub extern fn strtouq(noalias __nptr: [*c]const u8, noalias __endptr: [*c][*c]u8, __base: c_int) c_ulonglong;
+pub extern fn strtoll(__nptr: [*c]const u8, __endptr: [*c][*c]u8, __base: c_int) c_longlong;
+pub extern fn strtoull(__nptr: [*c]const u8, __endptr: [*c][*c]u8, __base: c_int) c_ulonglong;
+pub extern fn l64a(__n: c_long) [*c]u8;
+pub extern fn a64l(__s: [*c]const u8) c_long;
+pub const u_char = __u_char;
+pub const u_short = __u_short;
+pub const u_int = __u_int;
+pub const u_long = __u_long;
+pub const quad_t = __quad_t;
+pub const u_quad_t = __u_quad_t;
+pub const fsid_t = __fsid_t;
+pub const loff_t = __loff_t;
+pub const ino_t = __ino_t;
+pub const dev_t = __dev_t;
+pub const gid_t = __gid_t;
+pub const mode_t = __mode_t;
+pub const nlink_t = __nlink_t;
+pub const uid_t = __uid_t;
+pub const off_t = __off_t;
+pub const id_t = __id_t;
+pub const daddr_t = __daddr_t;
+pub const caddr_t = __caddr_t;
+pub const key_t = __key_t;
+pub const ulong = c_ulong;
+pub const ushort = c_ushort;
+pub const uint = c_uint;
+pub const u_int8_t = __uint8_t;
+pub const u_int16_t = __uint16_t;
+pub const u_int32_t = __uint32_t;
+pub const u_int64_t = __uint64_t;
+pub const register_t = c_long;
+pub fn __bswap_16(arg___bsx: __uint16_t) callconv(.C) __uint16_t {
+ var __bsx = arg___bsx;
+ return @bitCast(__uint16_t, @truncate(c_short, ((@bitCast(c_int, @as(c_uint, __bsx)) >> @intCast(@import("std").math.Log2Int(c_int), 8)) & @as(c_int, 255)) | ((@bitCast(c_int, @as(c_uint, __bsx)) & @as(c_int, 255)) << @intCast(@import("std").math.Log2Int(c_int), 8))));
+}
+pub fn __bswap_32(arg___bsx: __uint32_t) callconv(.C) __uint32_t {
+ var __bsx = arg___bsx;
+ return ((((__bsx & @as(c_uint, 4278190080)) >> @intCast(@import("std").math.Log2Int(c_uint), 24)) | ((__bsx & @as(c_uint, 16711680)) >> @intCast(@import("std").math.Log2Int(c_uint), 8))) | ((__bsx & @as(c_uint, 65280)) << @intCast(@import("std").math.Log2Int(c_uint), 8))) | ((__bsx & @as(c_uint, 255)) << @intCast(@import("std").math.Log2Int(c_uint), 24));
+}
+pub fn __bswap_64(arg___bsx: __uint64_t) callconv(.C) __uint64_t {
+ var __bsx = arg___bsx;
+ return @bitCast(__uint64_t, @truncate(c_ulong, ((((((((@bitCast(c_ulonglong, @as(c_ulonglong, __bsx)) & @as(c_ulonglong, 18374686479671623680)) >> @intCast(@import("std").math.Log2Int(c_ulonglong), 56)) | ((@bitCast(c_ulonglong, @as(c_ulonglong, __bsx)) & @as(c_ulonglong, 71776119061217280)) >> @intCast(@import("std").math.Log2Int(c_ulonglong), 40))) | ((@bitCast(c_ulonglong, @as(c_ulonglong, __bsx)) & @as(c_ulonglong, 280375465082880)) >> @intCast(@import("std").math.Log2Int(c_ulonglong), 24))) | ((@bitCast(c_ulonglong, @as(c_ulonglong, __bsx)) & @as(c_ulonglong, 1095216660480)) >> @intCast(@import("std").math.Log2Int(c_ulonglong), 8))) | ((@bitCast(c_ulonglong, @as(c_ulonglong, __bsx)) & @as(c_ulonglong, 4278190080)) << @intCast(@import("std").math.Log2Int(c_ulonglong), 8))) | ((@bitCast(c_ulonglong, @as(c_ulonglong, __bsx)) & @as(c_ulonglong, 16711680)) << @intCast(@import("std").math.Log2Int(c_ulonglong), 24))) | ((@bitCast(c_ulonglong, @as(c_ulonglong, __bsx)) & @as(c_ulonglong, 65280)) << @intCast(@import("std").math.Log2Int(c_ulonglong), 40))) | ((@bitCast(c_ulonglong, @as(c_ulonglong, __bsx)) & @as(c_ulonglong, 255)) << @intCast(@import("std").math.Log2Int(c_ulonglong), 56))));
+}
+pub fn __uint16_identity(arg___x: __uint16_t) callconv(.C) __uint16_t {
+ var __x = arg___x;
+ return __x;
+}
+pub fn __uint32_identity(arg___x: __uint32_t) callconv(.C) __uint32_t {
+ var __x = arg___x;
+ return __x;
+}
+pub fn __uint64_identity(arg___x: __uint64_t) callconv(.C) __uint64_t {
+ var __x = arg___x;
+ return __x;
+}
+pub const blksize_t = __blksize_t;
+pub const blkcnt_t = __blkcnt_t;
+pub const fsblkcnt_t = __fsblkcnt_t;
+pub const fsfilcnt_t = __fsfilcnt_t;
+pub const struct___pthread_internal_list = extern struct {
+ __prev: [*c]struct___pthread_internal_list,
+ __next: [*c]struct___pthread_internal_list,
+};
+pub const __pthread_list_t = struct___pthread_internal_list;
+pub const struct___pthread_internal_slist = extern struct {
+ __next: [*c]struct___pthread_internal_slist,
+};
+pub const __pthread_slist_t = struct___pthread_internal_slist;
+pub const struct___pthread_mutex_s = extern struct {
+ __lock: c_int,
+ __count: c_uint,
+ __owner: c_int,
+ __nusers: c_uint,
+ __kind: c_int,
+ __spins: c_short,
+ __elision: c_short,
+ __list: __pthread_list_t,
+};
+pub const struct___pthread_rwlock_arch_t = extern struct {
+ __readers: c_uint,
+ __writers: c_uint,
+ __wrphase_futex: c_uint,
+ __writers_futex: c_uint,
+ __pad3: c_uint,
+ __pad4: c_uint,
+ __cur_writer: c_int,
+ __shared: c_int,
+ __rwelision: i8,
+ __pad1: [7]u8,
+ __pad2: c_ulong,
+ __flags: c_uint,
+};
+const struct_unnamed_4 = extern struct {
+ __low: c_uint,
+ __high: c_uint,
+};
+const union_unnamed_3 = extern union {
+ __wseq: c_ulonglong,
+ __wseq32: struct_unnamed_4,
+};
+const struct_unnamed_6 = extern struct {
+ __low: c_uint,
+ __high: c_uint,
+};
+const union_unnamed_5 = extern union {
+ __g1_start: c_ulonglong,
+ __g1_start32: struct_unnamed_6,
+};
+pub const struct___pthread_cond_s = extern struct {
+ unnamed_0: union_unnamed_3,
+ unnamed_1: union_unnamed_5,
+ __g_refs: [2]c_uint,
+ __g_size: [2]c_uint,
+ __g1_orig_size: c_uint,
+ __wrefs: c_uint,
+ __g_signals: [2]c_uint,
+};
+pub const __tss_t = c_uint;
+pub const __thrd_t = c_ulong;
+pub const __once_flag = extern struct {
+ __data: c_int,
+};
+pub const pthread_t = c_ulong;
+pub const pthread_mutexattr_t = extern union {
+ __size: [4]u8,
+ __align: c_int,
+};
+pub const pthread_condattr_t = extern union {
+ __size: [4]u8,
+ __align: c_int,
+};
+pub const pthread_key_t = c_uint;
+pub const pthread_once_t = c_int;
+pub const pthread_mutex_t = extern union {
+ __data: struct___pthread_mutex_s,
+ __size: [40]u8,
+ __align: c_long,
+};
+pub const pthread_cond_t = extern union {
+ __data: struct___pthread_cond_s,
+ __size: [48]u8,
+ __align: c_longlong,
+};
+pub const pthread_rwlock_t = extern union {
+ __data: struct___pthread_rwlock_arch_t,
+ __size: [56]u8,
+ __align: c_long,
+};
+pub const pthread_rwlockattr_t = extern union {
+ __size: [8]u8,
+ __align: c_long,
+};
+pub const pthread_spinlock_t = c_int;
+pub const pthread_barrier_t = extern union {
+ __size: [32]u8,
+ __align: c_long,
+};
+pub const pthread_barrierattr_t = extern union {
+ __size: [4]u8,
+ __align: c_int,
+};
+pub extern fn random() c_long;
+pub extern fn srandom(__seed: c_uint) void;
+pub extern fn initstate(__seed: c_uint, __statebuf: [*c]u8, __statelen: usize) [*c]u8;
+pub extern fn setstate(__statebuf: [*c]u8) [*c]u8;
+pub const struct_random_data = extern struct {
+ fptr: [*c]i32,
+ rptr: [*c]i32,
+ state: [*c]i32,
+ rand_type: c_int,
+ rand_deg: c_int,
+ rand_sep: c_int,
+ end_ptr: [*c]i32,
+};
+pub extern fn random_r(noalias __buf: [*c]struct_random_data, noalias __result: [*c]i32) c_int;
+pub extern fn srandom_r(__seed: c_uint, __buf: [*c]struct_random_data) c_int;
+pub extern fn initstate_r(__seed: c_uint, noalias __statebuf: [*c]u8, __statelen: usize, noalias __buf: [*c]struct_random_data) c_int;
+pub extern fn setstate_r(noalias __statebuf: [*c]u8, noalias __buf: [*c]struct_random_data) c_int;
+pub extern fn rand() c_int;
+pub extern fn srand(__seed: c_uint) void;
+pub extern fn rand_r(__seed: [*c]c_uint) c_int;
+pub extern fn drand48() f64;
+pub extern fn erand48(__xsubi: [*c]c_ushort) f64;
+pub extern fn lrand48() c_long;
+pub extern fn nrand48(__xsubi: [*c]c_ushort) c_long;
+pub extern fn mrand48() c_long;
+pub extern fn jrand48(__xsubi: [*c]c_ushort) c_long;
+pub extern fn srand48(__seedval: c_long) void;
+pub extern fn seed48(__seed16v: [*c]c_ushort) [*c]c_ushort;
+pub extern fn lcong48(__param: [*c]c_ushort) void;
+pub const struct_drand48_data = extern struct {
+ __x: [3]c_ushort,
+ __old_x: [3]c_ushort,
+ __c: c_ushort,
+ __init: c_ushort,
+ __a: c_ulonglong,
+};
+pub extern fn drand48_r(noalias __buffer: [*c]struct_drand48_data, noalias __result: [*c]f64) c_int;
+pub extern fn erand48_r(__xsubi: [*c]c_ushort, noalias __buffer: [*c]struct_drand48_data, noalias __result: [*c]f64) c_int;
+pub extern fn lrand48_r(noalias __buffer: [*c]struct_drand48_data, noalias __result: [*c]c_long) c_int;
+pub extern fn nrand48_r(__xsubi: [*c]c_ushort, noalias __buffer: [*c]struct_drand48_data, noalias __result: [*c]c_long) c_int;
+pub extern fn mrand48_r(noalias __buffer: [*c]struct_drand48_data, noalias __result: [*c]c_long) c_int;
+pub extern fn jrand48_r(__xsubi: [*c]c_ushort, noalias __buffer: [*c]struct_drand48_data, noalias __result: [*c]c_long) c_int;
+pub extern fn srand48_r(__seedval: c_long, __buffer: [*c]struct_drand48_data) c_int;
+pub extern fn seed48_r(__seed16v: [*c]c_ushort, __buffer: [*c]struct_drand48_data) c_int;
+pub extern fn lcong48_r(__param: [*c]c_ushort, __buffer: [*c]struct_drand48_data) c_int;
+pub extern fn malloc(__size: c_ulong) ?*anyopaque;
+pub extern fn calloc(__nmemb: c_ulong, __size: c_ulong) ?*anyopaque;
+pub extern fn realloc(__ptr: ?*anyopaque, __size: c_ulong) ?*anyopaque;
+pub extern fn reallocarray(__ptr: ?*anyopaque, __nmemb: usize, __size: usize) ?*anyopaque;
+pub extern fn free(__ptr: ?*anyopaque) void;
+pub extern fn alloca(__size: c_ulong) ?*anyopaque;
+pub extern fn valloc(__size: usize) ?*anyopaque;
+pub extern fn posix_memalign(__memptr: [*c]?*anyopaque, __alignment: usize, __size: usize) c_int;
+pub extern fn aligned_alloc(__alignment: c_ulong, __size: c_ulong) ?*anyopaque;
+pub extern fn abort() noreturn;
+pub extern fn atexit(__func: ?fn () callconv(.C) void) c_int;
+pub extern fn at_quick_exit(__func: ?fn () callconv(.C) void) c_int;
+pub extern fn on_exit(__func: ?fn (c_int, ?*anyopaque) callconv(.C) void, __arg: ?*anyopaque) c_int;
+pub extern fn exit(__status: c_int) noreturn;
+pub extern fn quick_exit(__status: c_int) noreturn;
+pub extern fn _Exit(__status: c_int) noreturn;
+pub extern fn getenv(__name: [*c]const u8) [*c]u8;
+pub extern fn putenv(__string: [*c]u8) c_int;
+pub extern fn setenv(__name: [*c]const u8, __value: [*c]const u8, __replace: c_int) c_int;
+pub extern fn unsetenv(__name: [*c]const u8) c_int;
+pub extern fn clearenv() c_int;
+pub extern fn mktemp(__template: [*c]u8) [*c]u8;
+pub extern fn mkstemp(__template: [*c]u8) c_int;
+pub extern fn mkstemps(__template: [*c]u8, __suffixlen: c_int) c_int;
+pub extern fn mkdtemp(__template: [*c]u8) [*c]u8;
+pub extern fn system(__command: [*c]const u8) c_int;
+pub extern fn realpath(noalias __name: [*c]const u8, noalias __resolved: [*c]u8) [*c]u8;
+pub const __compar_fn_t = ?fn (?*const anyopaque, ?*const anyopaque) callconv(.C) c_int;
+pub fn bsearch(arg___key: ?*const anyopaque, arg___base: ?*const anyopaque, arg___nmemb: usize, arg___size: usize, arg___compar: __compar_fn_t) callconv(.C) ?*anyopaque {
+ var __key = arg___key;
+ var __base = arg___base;
+ var __nmemb = arg___nmemb;
+ var __size = arg___size;
+ var __compar = arg___compar;
+ var __l: usize = undefined;
+ var __u: usize = undefined;
+ var __idx: usize = undefined;
+ var __p: ?*const anyopaque = undefined;
+ var __comparison: c_int = undefined;
+ __l = 0;
+ __u = __nmemb;
+ while (__l < __u) {
+ __idx = (__l +% __u) / @bitCast(c_ulong, @as(c_long, @as(c_int, 2)));
+ __p = @intToPtr(?*anyopaque, @ptrToInt(@ptrCast([*c]const u8, @alignCast(@import("std").meta.alignment(u8), __base)) + (__idx *% __size)));
+ __comparison = __compar.?(__key, __p);
+ if (__comparison < @as(c_int, 0)) {
+ __u = __idx;
+ } else if (__comparison > @as(c_int, 0)) {
+ __l = __idx +% @bitCast(c_ulong, @as(c_long, @as(c_int, 1)));
+ } else return @intToPtr(?*anyopaque, @ptrToInt(__p));
+ }
+ return @intToPtr(?*anyopaque, @as(c_int, 0));
+}
+pub extern fn qsort(__base: ?*anyopaque, __nmemb: usize, __size: usize, __compar: __compar_fn_t) void;
+pub extern fn abs(__x: c_int) c_int;
+pub extern fn labs(__x: c_long) c_long;
+pub extern fn llabs(__x: c_longlong) c_longlong;
+pub extern fn div(__numer: c_int, __denom: c_int) div_t;
+pub extern fn ldiv(__numer: c_long, __denom: c_long) ldiv_t;
+pub extern fn lldiv(__numer: c_longlong, __denom: c_longlong) lldiv_t;
+pub extern fn ecvt(__value: f64, __ndigit: c_int, noalias __decpt: [*c]c_int, noalias __sign: [*c]c_int) [*c]u8;
+pub extern fn fcvt(__value: f64, __ndigit: c_int, noalias __decpt: [*c]c_int, noalias __sign: [*c]c_int) [*c]u8;
+pub extern fn gcvt(__value: f64, __ndigit: c_int, __buf: [*c]u8) [*c]u8;
+pub extern fn qecvt(__value: c_longdouble, __ndigit: c_int, noalias __decpt: [*c]c_int, noalias __sign: [*c]c_int) [*c]u8;
+pub extern fn qfcvt(__value: c_longdouble, __ndigit: c_int, noalias __decpt: [*c]c_int, noalias __sign: [*c]c_int) [*c]u8;
+pub extern fn qgcvt(__value: c_longdouble, __ndigit: c_int, __buf: [*c]u8) [*c]u8;
+pub extern fn ecvt_r(__value: f64, __ndigit: c_int, noalias __decpt: [*c]c_int, noalias __sign: [*c]c_int, noalias __buf: [*c]u8, __len: usize) c_int;
+pub extern fn fcvt_r(__value: f64, __ndigit: c_int, noalias __decpt: [*c]c_int, noalias __sign: [*c]c_int, noalias __buf: [*c]u8, __len: usize) c_int;
+pub extern fn qecvt_r(__value: c_longdouble, __ndigit: c_int, noalias __decpt: [*c]c_int, noalias __sign: [*c]c_int, noalias __buf: [*c]u8, __len: usize) c_int;
+pub extern fn qfcvt_r(__value: c_longdouble, __ndigit: c_int, noalias __decpt: [*c]c_int, noalias __sign: [*c]c_int, noalias __buf: [*c]u8, __len: usize) c_int;
+pub extern fn mblen(__s: [*c]const u8, __n: usize) c_int;
+pub extern fn mbtowc(noalias __pwc: [*c]wchar_t, noalias __s: [*c]const u8, __n: usize) c_int;
+pub extern fn wctomb(__s: [*c]u8, __wchar: wchar_t) c_int;
+pub extern fn mbstowcs(noalias __pwcs: [*c]wchar_t, noalias __s: [*c]const u8, __n: usize) usize;
+pub extern fn wcstombs(noalias __s: [*c]u8, noalias __pwcs: [*c]const wchar_t, __n: usize) usize;
+pub extern fn rpmatch(__response: [*c]const u8) c_int;
+pub extern fn getsubopt(noalias __optionp: [*c][*c]u8, noalias __tokens: [*c]const [*c]u8, noalias __valuep: [*c][*c]u8) c_int;
+pub extern fn getloadavg(__loadavg: [*c]f64, __nelem: c_int) c_int;
+pub const scm_t_timespec = struct_timespec;
+pub const scm_t_off = i64;
+pub const scm_t_signed_bits = isize;
+pub const scm_t_bits = usize;
+pub const struct_scm_unused_struct = extern struct {
+ scm_unused_field: u8,
+};
+pub const SCM = [*c]struct_scm_unused_struct;
+pub const scm_tc8_flag: c_int = 4;
+pub const scm_tc8_char: c_int = 12;
+pub const scm_tc8_unused_0: c_int = 20;
+pub const scm_tc8_unused_1: c_int = 28;
+pub const enum_scm_tc8_tags = c_uint;
+pub const scm_t_subr = ?*anyopaque;
+pub const struct_scm_dynamic_state = opaque {};
+pub const scm_t_dynamic_state = struct_scm_dynamic_state;
+pub const struct_scm_print_state = extern struct {
+ handle: SCM,
+ revealed: c_int,
+ writingp: c_ulong,
+ fancyp: c_ulong,
+ level: c_ulong,
+ length: c_ulong,
+ hot_ref: SCM,
+ list_offset: c_ulong,
+ top: c_ulong,
+ ceiling: c_ulong,
+ ref_vect: SCM,
+ highlight_objects: SCM,
+};
+pub const scm_print_state = struct_scm_print_state;
+pub const struct_scm_dynstack = extern struct {
+ base: [*c]scm_t_bits,
+ top: [*c]scm_t_bits,
+ limit: [*c]scm_t_bits,
+};
+pub const scm_t_dynstack = struct_scm_dynstack;
+pub const scm_t_wchar = i32;
+pub const struct_scm_frame = opaque {};
+pub const union_scm_vm_stack_element = extern union {
+ as_uint: usize,
+ as_vcode: [*c]u32,
+ as_mcode: [*c]u8,
+ as_scm: SCM,
+ as_f64: f64,
+ as_u64: u64,
+ as_s64: i64,
+ as_ptr: ?*anyopaque,
+ as_bits: scm_t_bits,
+};
+pub const __jmp_buf = [8]c_long;
+pub const struct___jmp_buf_tag = extern struct {
+ __jmpbuf: __jmp_buf,
+ __mask_was_saved: c_int,
+ __saved_mask: __sigset_t,
+};
+pub const jmp_buf = [1]struct___jmp_buf_tag;
+pub const struct_scm_vm = extern struct {
+ ip: [*c]u32,
+ sp: [*c]union_scm_vm_stack_element,
+ fp: [*c]union_scm_vm_stack_element,
+ stack_limit: [*c]union_scm_vm_stack_element,
+ compare_result: u8,
+ apply_hook_enabled: u8,
+ return_hook_enabled: u8,
+ next_hook_enabled: u8,
+ abort_hook_enabled: u8,
+ disable_mcode: u8,
+ engine: u8,
+ unused: u8,
+ stack_size: usize,
+ stack_bottom: [*c]union_scm_vm_stack_element,
+ apply_hook: SCM,
+ return_hook: SCM,
+ next_hook: SCM,
+ abort_hook: SCM,
+ stack_top: [*c]union_scm_vm_stack_element,
+ overflow_handler_stack: SCM,
+ registers: [*c]jmp_buf,
+ mra_after_abort: [*c]u8,
+ trace_level: c_int,
+};
+pub const struct_scm_thread_wake_data = opaque {};
+pub const SCM_STACKITEM = c_long;
+pub const struct_scm_jit_state = opaque {};
+pub const struct_scm_thread = extern struct {
+ next_thread: [*c]struct_scm_thread,
+ vm: struct_scm_vm,
+ pending_asyncs: SCM,
+ block_asyncs: c_uint,
+ freelists: [16]?*anyopaque,
+ pointerless_freelists: [16]?*anyopaque,
+ handle: SCM,
+ pthread: pthread_t,
+ result: SCM,
+ exited: c_int,
+ guile_mode: c_int,
+ needs_unregister: c_int,
+ wake: ?*struct_scm_thread_wake_data,
+ sleep_cond: pthread_cond_t,
+ sleep_pipe: [2]c_int,
+ dynamic_state: ?*scm_t_dynamic_state,
+ dynstack: scm_t_dynstack,
+ continuation_root: SCM,
+ continuation_base: [*c]SCM_STACKITEM,
+ base: [*c]SCM_STACKITEM,
+ jit_state: ?*struct_scm_jit_state,
+};
+pub const scm_thread = struct_scm_thread;
+pub extern var scm_system_error_key: SCM;
+pub extern var scm_num_overflow_key: SCM;
+pub extern var scm_out_of_range_key: SCM;
+pub extern var scm_args_number_key: SCM;
+pub extern var scm_arg_type_key: SCM;
+pub extern var scm_misc_error_key: SCM;
+pub extern fn scm_error(key: SCM, subr: [*c]const u8, message: [*c]const u8, args: SCM, rest: SCM) noreturn;
+pub extern fn scm_error_scm(key: SCM, subr: SCM, message: SCM, args: SCM, rest: SCM) noreturn;
+pub extern fn scm_strerror(err: SCM) SCM;
+pub extern fn scm_syserror(subr: [*c]const u8) noreturn;
+pub extern fn scm_syserror_msg(subr: [*c]const u8, message: [*c]const u8, args: SCM, eno: c_int) noreturn;
+pub extern fn scm_num_overflow(subr: [*c]const u8) noreturn;
+pub extern fn scm_out_of_range(subr: [*c]const u8, bad_value: SCM) noreturn;
+pub extern fn scm_out_of_range_pos(subr: [*c]const u8, bad_value: SCM, pos: SCM) noreturn;
+pub extern fn scm_wrong_num_args(proc: SCM) noreturn;
+pub extern fn scm_error_num_args_subr(subr: [*c]const u8) noreturn;
+pub extern fn scm_wrong_type_arg(subr: [*c]const u8, pos: c_int, bad_value: SCM) noreturn;
+pub extern fn scm_i_wrong_type_arg_symbol(symbol: SCM, pos: c_int, bad_value: SCM) noreturn;
+pub extern fn scm_wrong_type_arg_msg(subr: [*c]const u8, pos: c_int, bad_value: SCM, sz: [*c]const u8) noreturn;
+pub extern fn scm_misc_error(subr: [*c]const u8, message: [*c]const u8, args: SCM) noreturn;
+pub extern fn scm_init_error() void;
+pub const SCM_C_HOOK_NORMAL: c_int = 0;
+pub const SCM_C_HOOK_OR: c_int = 1;
+pub const SCM_C_HOOK_AND: c_int = 2;
+pub const enum_scm_t_c_hook_type = c_uint;
+pub const scm_t_c_hook_type = enum_scm_t_c_hook_type;
+pub const scm_t_c_hook_function = ?fn (?*anyopaque, ?*anyopaque, ?*anyopaque) callconv(.C) ?*anyopaque;
+pub const struct_scm_t_c_hook_entry = extern struct {
+ next: [*c]struct_scm_t_c_hook_entry,
+ func: scm_t_c_hook_function,
+ data: ?*anyopaque,
+};
+pub const scm_t_c_hook_entry = struct_scm_t_c_hook_entry;
+pub const struct_scm_t_c_hook = extern struct {
+ first: [*c]scm_t_c_hook_entry,
+ type: scm_t_c_hook_type,
+ data: ?*anyopaque,
+};
+pub const scm_t_c_hook = struct_scm_t_c_hook;
+pub extern fn scm_c_hook_init(hook: [*c]scm_t_c_hook, hook_data: ?*anyopaque, @"type": scm_t_c_hook_type) void;
+pub extern fn scm_c_hook_add(hook: [*c]scm_t_c_hook, func: scm_t_c_hook_function, fn_data: ?*anyopaque, appendp: c_int) void;
+pub extern fn scm_c_hook_remove(hook: [*c]scm_t_c_hook, func: scm_t_c_hook_function, fn_data: ?*anyopaque) void;
+pub extern fn scm_c_hook_run(hook: [*c]scm_t_c_hook, data: ?*anyopaque) ?*anyopaque;
+pub const struct_scm_t_cell = extern struct {
+ word_0: SCM,
+ word_1: SCM,
+};
+pub const scm_t_cell = struct_scm_t_cell;
+pub extern var scm_gc_ports_collected: c_ulong;
+pub extern var scm_after_gc_hook: SCM;
+pub extern var scm_before_gc_c_hook: scm_t_c_hook;
+pub extern var scm_before_mark_c_hook: scm_t_c_hook;
+pub extern var scm_before_sweep_c_hook: scm_t_c_hook;
+pub extern var scm_after_sweep_c_hook: scm_t_c_hook;
+pub extern var scm_after_gc_c_hook: scm_t_c_hook;
+pub extern fn scm_set_debug_cell_accesses_x(flag: SCM) SCM;
+pub extern fn scm_object_address(obj: SCM) SCM;
+pub extern fn scm_gc_enable() SCM;
+pub extern fn scm_gc_disable() SCM;
+pub extern fn scm_gc_dump() SCM;
+pub extern fn scm_gc_stats() SCM;
+pub extern fn scm_gc() SCM;
+pub extern fn scm_i_gc(what: [*c]const u8) void;
+pub extern fn scm_gc_mark(p: SCM) void;
+pub extern fn scm_gc_sweep() void;
+pub extern fn scm_gc_register_allocation(size: usize) void;
+pub extern fn scm_malloc(size: usize) ?*anyopaque;
+pub extern fn scm_calloc(size: usize) ?*anyopaque;
+pub extern fn scm_realloc(mem: ?*anyopaque, size: usize) ?*anyopaque;
+pub extern fn scm_strdup(str: [*c]const u8) [*c]u8;
+pub extern fn scm_strndup(str: [*c]const u8, n: usize) [*c]u8;
+pub extern fn scm_gc_register_collectable_memory(mem: ?*anyopaque, size: usize, what: [*c]const u8) void;
+pub extern fn scm_gc_unregister_collectable_memory(mem: ?*anyopaque, size: usize, what: [*c]const u8) void;
+pub extern fn scm_gc_malloc_pointerless(size: usize, what: [*c]const u8) ?*anyopaque;
+pub extern fn scm_gc_calloc(size: usize, what: [*c]const u8) ?*anyopaque;
+pub extern fn scm_gc_malloc(size: usize, what: [*c]const u8) ?*anyopaque;
+pub extern fn scm_gc_realloc(mem: ?*anyopaque, old_size: usize, new_size: usize, what: [*c]const u8) ?*anyopaque;
+pub extern fn scm_gc_free(mem: ?*anyopaque, size: usize, what: [*c]const u8) void;
+pub extern fn scm_gc_strdup(str: [*c]const u8, what: [*c]const u8) [*c]u8;
+pub extern fn scm_gc_strndup(str: [*c]const u8, n: usize, what: [*c]const u8) [*c]u8;
+pub fn scm_cell(arg_car: scm_t_bits, arg_cdr: scm_t_bits) callconv(.C) SCM {
+ var car = arg_car;
+ var cdr = arg_cdr;
+ var cell: SCM = @intToPtr(SCM, @intCast(scm_t_bits, @ptrToInt(scm_gc_malloc(@sizeOf(scm_t_cell), null))));
+ _ = blk: {
+ const tmp = @intToPtr(SCM, cdr);
+ (blk_1: {
+ const tmp_2 = @as(c_int, 1);
+ if (tmp_2 >= 0) break :blk_1 @ptrCast([*c]SCM, @alignCast(@import("std").meta.alignment(SCM), @ptrCast([*c]scm_t_cell, @alignCast(@import("std").meta.alignment(scm_t_cell), @intToPtr([*c]scm_t_bits, @intCast(scm_t_bits, @ptrToInt(if (false) blk_2: {
+ const tmp_3 = cell;
+ @intToPtr([*c]volatile SCM, @as(c_int, 0)).* = tmp_3;
+ break :blk_2 tmp_3;
+ } else cell))))))) + @intCast(usize, tmp_2) else break :blk_1 @ptrCast([*c]SCM, @alignCast(@import("std").meta.alignment(SCM), @ptrCast([*c]scm_t_cell, @alignCast(@import("std").meta.alignment(scm_t_cell), @intToPtr([*c]scm_t_bits, @intCast(scm_t_bits, @ptrToInt(if (false) blk_2: {
+ const tmp_3 = cell;
+ @intToPtr([*c]volatile SCM, @as(c_int, 0)).* = tmp_3;
+ break :blk_2 tmp_3;
+ } else cell))))))) - ~@bitCast(usize, @intCast(isize, tmp_2) +% -1);
+ }).* = tmp;
+ break :blk tmp;
+ };
+ _ = blk: {
+ const tmp = @intToPtr(SCM, car);
+ (blk_1: {
+ const tmp_2 = @as(c_int, 0);
+ if (tmp_2 >= 0) break :blk_1 @ptrCast([*c]SCM, @alignCast(@import("std").meta.alignment(SCM), @ptrCast([*c]scm_t_cell, @alignCast(@import("std").meta.alignment(scm_t_cell), @intToPtr([*c]scm_t_bits, @intCast(scm_t_bits, @ptrToInt(if (false) blk_2: {
+ const tmp_3 = cell;
+ @intToPtr([*c]volatile SCM, @as(c_int, 0)).* = tmp_3;
+ break :blk_2 tmp_3;
+ } else cell))))))) + @intCast(usize, tmp_2) else break :blk_1 @ptrCast([*c]SCM, @alignCast(@import("std").meta.alignment(SCM), @ptrCast([*c]scm_t_cell, @alignCast(@import("std").meta.alignment(scm_t_cell), @intToPtr([*c]scm_t_bits, @intCast(scm_t_bits, @ptrToInt(if (false) blk_2: {
+ const tmp_3 = cell;
+ @intToPtr([*c]volatile SCM, @as(c_int, 0)).* = tmp_3;
+ break :blk_2 tmp_3;
+ } else cell))))))) - ~@bitCast(usize, @intCast(isize, tmp_2) +% -1);
+ }).* = tmp;
+ break :blk tmp;
+ };
+ return cell;
+} // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/gc.h:203:3: warning: TODO implement translation of stmt class GCCAsmStmtClass
+// /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/gc.h:174:1: warning: unable to translate function, demoted to extern
+pub extern fn scm_double_cell(arg_car: scm_t_bits, arg_cbr: scm_t_bits, arg_ccr: scm_t_bits, arg_cdr: scm_t_bits) callconv(.C) SCM; // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/gc.h:236:3: warning: TODO implement translation of stmt class GCCAsmStmtClass
+// /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/gc.h:214:1: warning: unable to translate function, demoted to extern
+pub extern fn scm_words(arg_car: scm_t_bits, arg_n_words: u32) callconv(.C) SCM;
+pub extern fn scm_remember_upto_here_1(obj: SCM) void;
+pub extern fn scm_remember_upto_here_2(obj1: SCM, obj2: SCM) void;
+pub extern fn scm_remember_upto_here(obj1: SCM, ...) void;
+pub extern fn scm_return_first(elt: SCM, ...) SCM;
+pub extern fn scm_return_first_int(x: c_int, ...) c_int;
+pub extern fn scm_permanent_object(obj: SCM) SCM;
+pub extern fn scm_gc_protect_object(obj: SCM) SCM;
+pub extern fn scm_gc_unprotect_object(obj: SCM) SCM;
+pub extern fn scm_gc_register_root(p: [*c]SCM) void;
+pub extern fn scm_gc_unregister_root(p: [*c]SCM) void;
+pub extern fn scm_gc_register_roots(b: [*c]SCM, n: c_ulong) void;
+pub extern fn scm_gc_unregister_roots(b: [*c]SCM, n: c_ulong) void;
+pub extern fn scm_gc_after_nonlocal_exit() void;
+pub extern fn scm_storage_prehistory() void;
+pub extern fn scm_init_gc_protect_object() void;
+pub extern fn scm_init_gc() void;
+pub fn scm_is_pair(arg_x: SCM) callconv(.C) c_int {
+ var x = arg_x;
+ return @boolToInt(!((@bitCast(c_ulong, @as(c_long, @as(c_int, 6))) & @intCast(scm_t_bits, @ptrToInt(if (false) blk: {
+ const tmp = x;
+ @intToPtr([*c]volatile SCM, @as(c_int, 0)).* = tmp;
+ break :blk tmp;
+ } else x))) != 0) and ((@bitCast(c_ulong, @as(c_long, @as(c_int, 1))) & @intCast(scm_t_bits, @ptrToInt(if (false) blk: {
+ const tmp = (blk_1: {
+ const tmp_2 = @as(c_int, 0);
+ if (tmp_2 >= 0) break :blk_1 @ptrCast([*c]SCM, @alignCast(@import("std").meta.alignment(SCM), @ptrCast([*c]scm_t_cell, @alignCast(@import("std").meta.alignment(scm_t_cell), @intToPtr([*c]scm_t_bits, @intCast(scm_t_bits, @ptrToInt(if (false) blk_2: {
+ const tmp_3 = x;
+ @intToPtr([*c]volatile SCM, @as(c_int, 0)).* = tmp_3;
+ break :blk_2 tmp_3;
+ } else x))))))) + @intCast(usize, tmp_2) else break :blk_1 @ptrCast([*c]SCM, @alignCast(@import("std").meta.alignment(SCM), @ptrCast([*c]scm_t_cell, @alignCast(@import("std").meta.alignment(scm_t_cell), @intToPtr([*c]scm_t_bits, @intCast(scm_t_bits, @ptrToInt(if (false) blk_2: {
+ const tmp_3 = x;
+ @intToPtr([*c]volatile SCM, @as(c_int, 0)).* = tmp_3;
+ break :blk_2 tmp_3;
+ } else x))))))) - ~@bitCast(usize, @intCast(isize, tmp_2) +% -1);
+ }).*;
+ @intToPtr([*c]volatile SCM, @as(c_int, 0)).* = tmp;
+ break :blk tmp;
+ } else (blk: {
+ const tmp = @as(c_int, 0);
+ if (tmp >= 0) break :blk @ptrCast([*c]SCM, @alignCast(@import("std").meta.alignment(SCM), @ptrCast([*c]scm_t_cell, @alignCast(@import("std").meta.alignment(scm_t_cell), @intToPtr([*c]scm_t_bits, @intCast(scm_t_bits, @ptrToInt(if (false) blk_1: {
+ const tmp_2 = x;
+ @intToPtr([*c]volatile SCM, @as(c_int, 0)).* = tmp_2;
+ break :blk_1 tmp_2;
+ } else x))))))) + @intCast(usize, tmp) else break :blk @ptrCast([*c]SCM, @alignCast(@import("std").meta.alignment(SCM), @ptrCast([*c]scm_t_cell, @alignCast(@import("std").meta.alignment(scm_t_cell), @intToPtr([*c]scm_t_bits, @intCast(scm_t_bits, @ptrToInt(if (false) blk_1: {
+ const tmp_2 = x;
+ @intToPtr([*c]volatile SCM, @as(c_int, 0)).* = tmp_2;
+ break :blk_1 tmp_2;
+ } else x))))))) - ~@bitCast(usize, @intCast(isize, tmp) +% -1);
+ }).*))) == @bitCast(c_ulong, @as(c_long, @as(c_int, 0)))));
+}
+pub fn scm_cons(arg_x: SCM, arg_y: SCM) callconv(.C) SCM {
+ var x = arg_x;
+ var y = arg_y;
+ return scm_cell(@intCast(scm_t_bits, @ptrToInt(if (false) blk: {
+ const tmp = x;
+ @intToPtr([*c]volatile SCM, @as(c_int, 0)).* = tmp;
+ break :blk tmp;
+ } else x)), @intCast(scm_t_bits, @ptrToInt(if (false) blk: {
+ const tmp = y;
+ @intToPtr([*c]volatile SCM, @as(c_int, 0)).* = tmp;
+ break :blk tmp;
+ } else y)));
+}
+pub fn scm_car(arg_x: SCM) callconv(.C) SCM {
+ var x = arg_x;
+ if (__builtin_expect(@bitCast(c_long, @as(c_long, @boolToInt(!(scm_is_pair(x) != 0)))), @bitCast(c_long, @as(c_long, @as(c_int, 0)))) != 0) {
+ scm_wrong_type_arg_msg("car", @as(c_int, 0), x, "pair");
+ }
+ return (blk: {
+ const tmp = @as(c_int, 0);
+ if (tmp >= 0) break :blk @ptrCast([*c]SCM, @alignCast(@import("std").meta.alignment(SCM), @ptrCast([*c]scm_t_cell, @alignCast(@import("std").meta.alignment(scm_t_cell), @intToPtr([*c]scm_t_bits, @intCast(scm_t_bits, @ptrToInt(if (false) blk_1: {
+ const tmp_2 = x;
+ @intToPtr([*c]volatile SCM, @as(c_int, 0)).* = tmp_2;
+ break :blk_1 tmp_2;
+ } else x))))))) + @intCast(usize, tmp) else break :blk @ptrCast([*c]SCM, @alignCast(@import("std").meta.alignment(SCM), @ptrCast([*c]scm_t_cell, @alignCast(@import("std").meta.alignment(scm_t_cell), @intToPtr([*c]scm_t_bits, @intCast(scm_t_bits, @ptrToInt(if (false) blk_1: {
+ const tmp_2 = x;
+ @intToPtr([*c]volatile SCM, @as(c_int, 0)).* = tmp_2;
+ break :blk_1 tmp_2;
+ } else x))))))) - ~@bitCast(usize, @intCast(isize, tmp) +% -1);
+ }).*;
+}
+pub fn scm_cdr(arg_x: SCM) callconv(.C) SCM {
+ var x = arg_x;
+ if (__builtin_expect(@bitCast(c_long, @as(c_long, @boolToInt(!(scm_is_pair(x) != 0)))), @bitCast(c_long, @as(c_long, @as(c_int, 0)))) != 0) {
+ scm_wrong_type_arg_msg("cdr", @as(c_int, 0), x, "pair");
+ }
+ return (blk: {
+ const tmp = @as(c_int, 1);
+ if (tmp >= 0) break :blk @ptrCast([*c]SCM, @alignCast(@import("std").meta.alignment(SCM), @ptrCast([*c]scm_t_cell, @alignCast(@import("std").meta.alignment(scm_t_cell), @intToPtr([*c]scm_t_bits, @intCast(scm_t_bits, @ptrToInt(if (false) blk_1: {
+ const tmp_2 = x;
+ @intToPtr([*c]volatile SCM, @as(c_int, 0)).* = tmp_2;
+ break :blk_1 tmp_2;
+ } else x))))))) + @intCast(usize, tmp) else break :blk @ptrCast([*c]SCM, @alignCast(@import("std").meta.alignment(SCM), @ptrCast([*c]scm_t_cell, @alignCast(@import("std").meta.alignment(scm_t_cell), @intToPtr([*c]scm_t_bits, @intCast(scm_t_bits, @ptrToInt(if (false) blk_1: {
+ const tmp_2 = x;
+ @intToPtr([*c]volatile SCM, @as(c_int, 0)).* = tmp_2;
+ break :blk_1 tmp_2;
+ } else x))))))) - ~@bitCast(usize, @intCast(isize, tmp) +% -1);
+ }).*;
+}
+pub extern fn scm_cons2(w: SCM, x: SCM, y: SCM) SCM;
+pub extern fn scm_pair_p(x: SCM) SCM;
+pub extern fn scm_set_car_x(pair: SCM, value: SCM) SCM;
+pub extern fn scm_set_cdr_x(pair: SCM, value: SCM) SCM;
+pub extern fn scm_cddr(x: SCM) SCM;
+pub extern fn scm_cdar(x: SCM) SCM;
+pub extern fn scm_cadr(x: SCM) SCM;
+pub extern fn scm_caar(x: SCM) SCM;
+pub extern fn scm_cdddr(x: SCM) SCM;
+pub extern fn scm_cddar(x: SCM) SCM;
+pub extern fn scm_cdadr(x: SCM) SCM;
+pub extern fn scm_cdaar(x: SCM) SCM;
+pub extern fn scm_caddr(x: SCM) SCM;
+pub extern fn scm_cadar(x: SCM) SCM;
+pub extern fn scm_caadr(x: SCM) SCM;
+pub extern fn scm_caaar(x: SCM) SCM;
+pub extern fn scm_cddddr(x: SCM) SCM;
+pub extern fn scm_cdddar(x: SCM) SCM;
+pub extern fn scm_cddadr(x: SCM) SCM;
+pub extern fn scm_cddaar(x: SCM) SCM;
+pub extern fn scm_cdaddr(x: SCM) SCM;
+pub extern fn scm_cdadar(x: SCM) SCM;
+pub extern fn scm_cdaadr(x: SCM) SCM;
+pub extern fn scm_cdaaar(x: SCM) SCM;
+pub extern fn scm_cadddr(x: SCM) SCM;
+pub extern fn scm_caddar(x: SCM) SCM;
+pub extern fn scm_cadadr(x: SCM) SCM;
+pub extern fn scm_cadaar(x: SCM) SCM;
+pub extern fn scm_caaddr(x: SCM) SCM;
+pub extern fn scm_caadar(x: SCM) SCM;
+pub extern fn scm_caaadr(x: SCM) SCM;
+pub extern fn scm_caaaar(x: SCM) SCM;
+pub extern fn scm_init_pairs() void;
+pub extern fn scm_acons(w: SCM, x: SCM, y: SCM) SCM;
+pub extern fn scm_sloppy_assq(x: SCM, alist: SCM) SCM;
+pub extern fn scm_sloppy_assv(x: SCM, alist: SCM) SCM;
+pub extern fn scm_sloppy_assoc(x: SCM, alist: SCM) SCM;
+pub extern fn scm_assq(x: SCM, alist: SCM) SCM;
+pub extern fn scm_assv(x: SCM, alist: SCM) SCM;
+pub extern fn scm_assoc(x: SCM, alist: SCM) SCM;
+pub extern fn scm_assq_ref(alist: SCM, key: SCM) SCM;
+pub extern fn scm_assv_ref(alist: SCM, key: SCM) SCM;
+pub extern fn scm_assoc_ref(alist: SCM, key: SCM) SCM;
+pub extern fn scm_assq_set_x(alist: SCM, key: SCM, val: SCM) SCM;
+pub extern fn scm_assv_set_x(alist: SCM, key: SCM, val: SCM) SCM;
+pub extern fn scm_assoc_set_x(alist: SCM, key: SCM, val: SCM) SCM;
+pub extern fn scm_assq_remove_x(alist: SCM, key: SCM) SCM;
+pub extern fn scm_assv_remove_x(alist: SCM, key: SCM) SCM;
+pub extern fn scm_assoc_remove_x(alist: SCM, key: SCM) SCM;
+pub extern fn scm_init_alist() void;
+pub extern fn scm_char_p(x: SCM) SCM;
+pub extern fn scm_char_eq_p(x: SCM, y: SCM) SCM;
+pub extern fn scm_char_less_p(x: SCM, y: SCM) SCM;
+pub extern fn scm_char_leq_p(x: SCM, y: SCM) SCM;
+pub extern fn scm_char_gr_p(x: SCM, y: SCM) SCM;
+pub extern fn scm_char_geq_p(x: SCM, y: SCM) SCM;
+pub extern fn scm_char_ci_eq_p(x: SCM, y: SCM) SCM;
+pub extern fn scm_char_ci_less_p(x: SCM, y: SCM) SCM;
+pub extern fn scm_char_ci_leq_p(x: SCM, y: SCM) SCM;
+pub extern fn scm_char_ci_gr_p(x: SCM, y: SCM) SCM;
+pub extern fn scm_char_ci_geq_p(x: SCM, y: SCM) SCM;
+pub extern fn scm_char_alphabetic_p(chr: SCM) SCM;
+pub extern fn scm_char_numeric_p(chr: SCM) SCM;
+pub extern fn scm_char_whitespace_p(chr: SCM) SCM;
+pub extern fn scm_char_upper_case_p(chr: SCM) SCM;
+pub extern fn scm_char_lower_case_p(chr: SCM) SCM;
+pub extern fn scm_char_is_both_p(chr: SCM) SCM;
+pub extern fn scm_char_to_integer(chr: SCM) SCM;
+pub extern fn scm_integer_to_char(n: SCM) SCM;
+pub extern fn scm_char_upcase(chr: SCM) SCM;
+pub extern fn scm_char_downcase(chr: SCM) SCM;
+pub extern fn scm_char_titlecase(chr: SCM) SCM;
+pub extern fn scm_char_general_category(chr: SCM) SCM;
+pub fn scm_c_make_char(arg_c: scm_t_wchar) callconv(.C) SCM {
+ var c = arg_c;
+ return if (c <= @as(c_int, 1)) @intToPtr(SCM, (@bitCast(scm_t_bits, @as(c_ulong, @bitCast(u8, @truncate(i8, c)))) << @intCast(@import("std").math.Log2Int(scm_t_bits), 8)) +% @bitCast(c_ulong, @as(c_long, scm_tc8_char))) else @intToPtr(SCM, (@bitCast(scm_t_bits, @as(c_long, c)) << @intCast(@import("std").math.Log2Int(scm_t_bits), 8)) +% @bitCast(c_ulong, @as(c_long, scm_tc8_char)));
+}
+pub extern fn scm_c_upcase(c: scm_t_wchar) scm_t_wchar;
+pub extern fn scm_c_downcase(c: scm_t_wchar) scm_t_wchar;
+pub extern fn scm_c_titlecase(c: scm_t_wchar) scm_t_wchar;
+pub extern fn scm_i_charname(chr: SCM) [*c]const u8;
+pub extern fn scm_i_charname_to_char(charname: [*c]const u8, charname_len: usize) SCM;
+pub extern fn scm_init_chars() void;
+pub const struct_scm_t_option = extern struct {
+ type: c_uint,
+ name: [*c]const u8,
+ val: scm_t_bits,
+ doc: [*c]u8,
+};
+pub const scm_t_option = struct_scm_t_option;
+pub extern fn scm_options_try(args: SCM, options: [*c]scm_t_option, s: [*c]const u8, dry_run: c_int) SCM;
+pub extern fn scm_options(SCM, [*c]scm_t_option, [*c]const u8) SCM;
+pub extern fn scm_init_opts(?fn (SCM) callconv(.C) SCM, [*c]scm_t_option) void;
+pub extern fn scm_init_options() void;
+pub extern var scm_print_state_vtable: SCM;
+pub extern var scm_tc16_port_with_ps: scm_t_bits;
+pub extern fn scm_print_options(setting: SCM) SCM;
+pub extern fn scm_make_print_state() SCM;
+pub extern fn scm_free_print_state(print_state: SCM) void;
+pub extern fn scm_i_port_with_print_state(port: SCM, print_state: SCM) SCM;
+pub extern fn scm_intprint(n: intmax_t, radix: c_int, port: SCM) void;
+pub extern fn scm_uintprint(n: uintmax_t, radix: c_int, port: SCM) void;
+pub extern fn scm_ipruk(hdr: [*c]u8, ptr: SCM, port: SCM) void;
+pub extern fn scm_iprlist(hdr: [*c]u8, exp: SCM, tlr: c_int, port: SCM, pstate: [*c]scm_print_state) void;
+pub extern fn scm_print_symbol_name(str: [*c]const u8, len: usize, port: SCM) void;
+pub extern fn scm_prin1(exp: SCM, port: SCM, writingp: c_int) void;
+pub extern fn scm_iprin1(exp: SCM, port: SCM, pstate: [*c]scm_print_state) void;
+pub extern fn scm_write(obj: SCM, port: SCM) SCM;
+pub extern fn scm_display(obj: SCM, port: SCM) SCM;
+pub extern fn scm_simple_format(port: SCM, message: SCM, args: SCM) SCM;
+pub extern fn scm_newline(port: SCM) SCM;
+pub extern fn scm_write_char(chr: SCM, port: SCM) SCM;
+pub extern fn scm_printer_apply(proc: SCM, exp: SCM, port: SCM, [*c]scm_print_state) SCM;
+pub extern fn scm_port_with_print_state(port: SCM, pstate: SCM) SCM;
+pub extern fn scm_get_print_state(port: SCM) SCM;
+pub extern fn scm_valid_oport_value_p(val: SCM) c_int;
+pub extern fn scm_init_print() void;
+pub const scm_t_inum = c_long;
+pub const struct_scm_t_double = extern struct {
+ type: SCM,
+ real: f64,
+};
+pub const scm_t_double = struct_scm_t_double;
+pub const struct_scm_t_complex = extern struct {
+ type: SCM,
+ real: f64,
+ imag: f64,
+};
+pub const scm_t_complex = struct_scm_t_complex;
+pub extern fn scm_exact_p(x: SCM) SCM;
+pub extern fn scm_is_exact(x: SCM) c_int;
+pub extern fn scm_odd_p(n: SCM) SCM;
+pub extern fn scm_even_p(n: SCM) SCM;
+pub extern fn scm_finite_p(x: SCM) SCM;
+pub extern fn scm_inf_p(x: SCM) SCM;
+pub extern fn scm_nan_p(x: SCM) SCM;
+pub extern fn scm_inf() SCM;
+pub extern fn scm_nan() SCM;
+pub extern fn scm_abs(x: SCM) SCM;
+pub extern fn scm_quotient(x: SCM, y: SCM) SCM;
+pub extern fn scm_remainder(x: SCM, y: SCM) SCM;
+pub extern fn scm_modulo(x: SCM, y: SCM) SCM;
+pub extern fn scm_euclidean_divide(x: SCM, y: SCM, q: [*c]SCM, r: [*c]SCM) void;
+pub extern fn scm_euclidean_quotient(x: SCM, y: SCM) SCM;
+pub extern fn scm_euclidean_remainder(x: SCM, y: SCM) SCM;
+pub extern fn scm_floor_divide(x: SCM, y: SCM, q: [*c]SCM, r: [*c]SCM) void;
+pub extern fn scm_floor_quotient(x: SCM, y: SCM) SCM;
+pub extern fn scm_floor_remainder(x: SCM, y: SCM) SCM;
+pub extern fn scm_ceiling_divide(x: SCM, y: SCM, q: [*c]SCM, r: [*c]SCM) void;
+pub extern fn scm_ceiling_quotient(x: SCM, y: SCM) SCM;
+pub extern fn scm_ceiling_remainder(x: SCM, y: SCM) SCM;
+pub extern fn scm_truncate_divide(x: SCM, y: SCM, q: [*c]SCM, r: [*c]SCM) void;
+pub extern fn scm_truncate_quotient(x: SCM, y: SCM) SCM;
+pub extern fn scm_truncate_remainder(x: SCM, y: SCM) SCM;
+pub extern fn scm_centered_divide(x: SCM, y: SCM, q: [*c]SCM, r: [*c]SCM) void;
+pub extern fn scm_centered_quotient(x: SCM, y: SCM) SCM;
+pub extern fn scm_centered_remainder(x: SCM, y: SCM) SCM;
+pub extern fn scm_round_divide(x: SCM, y: SCM, q: [*c]SCM, r: [*c]SCM) void;
+pub extern fn scm_round_quotient(x: SCM, y: SCM) SCM;
+pub extern fn scm_round_remainder(x: SCM, y: SCM) SCM;
+pub extern fn scm_gcd(x: SCM, y: SCM) SCM;
+pub extern fn scm_lcm(n1: SCM, n2: SCM) SCM;
+pub extern fn scm_logand(n1: SCM, n2: SCM) SCM;
+pub extern fn scm_logior(n1: SCM, n2: SCM) SCM;
+pub extern fn scm_logxor(n1: SCM, n2: SCM) SCM;
+pub extern fn scm_logtest(n1: SCM, n2: SCM) SCM;
+pub extern fn scm_logbit_p(n1: SCM, n2: SCM) SCM;
+pub extern fn scm_lognot(n: SCM) SCM;
+pub extern fn scm_modulo_expt(n: SCM, k: SCM, m: SCM) SCM;
+pub extern fn scm_integer_expt(z1: SCM, z2: SCM) SCM;
+pub extern fn scm_ash(n: SCM, count: SCM) SCM;
+pub extern fn scm_round_ash(n: SCM, count: SCM) SCM;
+pub extern fn scm_bit_extract(n: SCM, start: SCM, end: SCM) SCM;
+pub extern fn scm_logcount(n: SCM) SCM;
+pub extern fn scm_integer_length(n: SCM) SCM;
+pub extern fn scm_i_euclidean_divide(x: SCM, y: SCM) SCM;
+pub extern fn scm_i_floor_divide(x: SCM, y: SCM) SCM;
+pub extern fn scm_i_ceiling_divide(x: SCM, y: SCM) SCM;
+pub extern fn scm_i_truncate_divide(x: SCM, y: SCM) SCM;
+pub extern fn scm_i_centered_divide(x: SCM, y: SCM) SCM;
+pub extern fn scm_i_round_divide(x: SCM, y: SCM) SCM;
+pub extern fn scm_i_gcd(x: SCM, y: SCM, rest: SCM) SCM;
+pub extern fn scm_i_lcm(x: SCM, y: SCM, rest: SCM) SCM;
+pub extern fn scm_i_logand(x: SCM, y: SCM, rest: SCM) SCM;
+pub extern fn scm_i_logior(x: SCM, y: SCM, rest: SCM) SCM;
+pub extern fn scm_i_logxor(x: SCM, y: SCM, rest: SCM) SCM;
+pub extern fn scm_iint2str(num: intmax_t, rad: c_int, p: [*c]u8) usize;
+pub extern fn scm_iuint2str(num: uintmax_t, rad: c_int, p: [*c]u8) usize;
+pub extern fn scm_number_to_string(x: SCM, radix: SCM) SCM;
+pub extern fn scm_print_real(sexp: SCM, port: SCM, pstate: [*c]scm_print_state) c_int;
+pub extern fn scm_print_complex(sexp: SCM, port: SCM, pstate: [*c]scm_print_state) c_int;
+pub extern fn scm_bigprint(exp: SCM, port: SCM, pstate: [*c]scm_print_state) c_int;
+pub extern fn scm_c_locale_stringn_to_number(mem: [*c]const u8, len: usize, radix: c_uint) SCM;
+pub extern fn scm_i_string_to_number(str: SCM, radix: c_uint) SCM;
+pub extern fn scm_string_to_number(str: SCM, radix: SCM) SCM;
+pub extern fn scm_bigequal(x: SCM, y: SCM) SCM;
+pub extern fn scm_real_equalp(x: SCM, y: SCM) SCM;
+pub extern fn scm_complex_equalp(x: SCM, y: SCM) SCM;
+pub extern fn scm_i_heap_numbers_equal_p(x: SCM, y: SCM) c_int;
+pub extern fn scm_number_p(x: SCM) SCM;
+pub extern fn scm_complex_p(x: SCM) SCM;
+pub extern fn scm_real_p(x: SCM) SCM;
+pub extern fn scm_rational_p(z: SCM) SCM;
+pub extern fn scm_integer_p(x: SCM) SCM;
+pub extern fn scm_exact_integer_p(x: SCM) SCM;
+pub extern fn scm_inexact_p(x: SCM) SCM;
+pub extern fn scm_is_inexact(x: SCM) c_int;
+pub extern fn scm_num_eq_p(x: SCM, y: SCM) SCM;
+pub extern fn scm_less_p(x: SCM, y: SCM) SCM;
+pub extern fn scm_gr_p(x: SCM, y: SCM) SCM;
+pub extern fn scm_leq_p(x: SCM, y: SCM) SCM;
+pub extern fn scm_geq_p(x: SCM, y: SCM) SCM;
+pub extern fn scm_zero_p(z: SCM) SCM;
+pub extern fn scm_positive_p(x: SCM) SCM;
+pub extern fn scm_negative_p(x: SCM) SCM;
+pub extern fn scm_max(x: SCM, y: SCM) SCM;
+pub extern fn scm_min(x: SCM, y: SCM) SCM;
+pub extern fn scm_sum(x: SCM, y: SCM) SCM;
+pub extern fn scm_oneplus(x: SCM) SCM;
+pub extern fn scm_difference(x: SCM, y: SCM) SCM;
+pub extern fn scm_oneminus(x: SCM) SCM;
+pub extern fn scm_product(x: SCM, y: SCM) SCM;
+pub extern fn scm_divide(x: SCM, y: SCM) SCM;
+pub extern fn scm_floor(x: SCM) SCM;
+pub extern fn scm_ceiling(x: SCM) SCM;
+pub extern fn scm_c_truncate(x: f64) f64;
+pub extern fn scm_c_round(x: f64) f64;
+pub extern fn scm_truncate_number(x: SCM) SCM;
+pub extern fn scm_round_number(x: SCM) SCM;
+pub extern fn scm_expt(z1: SCM, z2: SCM) SCM;
+pub extern fn scm_sin(z: SCM) SCM;
+pub extern fn scm_cos(z: SCM) SCM;
+pub extern fn scm_tan(z: SCM) SCM;
+pub extern fn scm_sinh(z: SCM) SCM;
+pub extern fn scm_cosh(z: SCM) SCM;
+pub extern fn scm_tanh(z: SCM) SCM;
+pub extern fn scm_asin(z: SCM) SCM;
+pub extern fn scm_acos(z: SCM) SCM;
+pub extern fn scm_atan(x: SCM, y: SCM) SCM;
+pub extern fn scm_sys_asinh(z: SCM) SCM;
+pub extern fn scm_sys_acosh(z: SCM) SCM;
+pub extern fn scm_sys_atanh(z: SCM) SCM;
+pub extern fn scm_make_rectangular(z1: SCM, z2: SCM) SCM;
+pub extern fn scm_make_polar(z1: SCM, z2: SCM) SCM;
+pub extern fn scm_real_part(z: SCM) SCM;
+pub extern fn scm_imag_part(z: SCM) SCM;
+pub extern fn scm_magnitude(z: SCM) SCM;
+pub extern fn scm_angle(z: SCM) SCM;
+pub extern fn scm_exact_to_inexact(z: SCM) SCM;
+pub extern fn scm_inexact_to_exact(z: SCM) SCM;
+pub extern fn scm_trunc(x: SCM) SCM;
+pub extern fn scm_log(z: SCM) SCM;
+pub extern fn scm_log10(z: SCM) SCM;
+pub extern fn scm_exp(z: SCM) SCM;
+pub extern fn scm_sqrt(z: SCM) SCM;
+pub extern fn scm_exact_integer_sqrt(k: SCM, s: [*c]SCM, r: [*c]SCM) void;
+pub extern fn scm_i_min(x: SCM, y: SCM, rest: SCM) SCM;
+pub extern fn scm_i_max(x: SCM, y: SCM, rest: SCM) SCM;
+pub extern fn scm_i_sum(x: SCM, y: SCM, rest: SCM) SCM;
+pub extern fn scm_i_difference(x: SCM, y: SCM, rest: SCM) SCM;
+pub extern fn scm_i_product(x: SCM, y: SCM, rest: SCM) SCM;
+pub extern fn scm_i_divide(x: SCM, y: SCM, rest: SCM) SCM;
+pub extern fn scm_i_exact_integer_sqrt(k: SCM) SCM;
+pub extern fn scm_rationalize(x: SCM, err: SCM) SCM;
+pub extern fn scm_numerator(z: SCM) SCM;
+pub extern fn scm_denominator(z: SCM) SCM;
+pub extern fn scm_i_fraction2double(z: SCM) f64;
+pub extern fn scm_i_fraction_equalp(x: SCM, y: SCM) SCM;
+pub extern fn scm_i_print_fraction(sexp: SCM, port: SCM, pstate: [*c]scm_print_state) c_int;
+pub extern fn scm_i_print_double(val: f64, port: SCM) void;
+pub extern fn scm_i_print_complex(real: f64, imag: f64, port: SCM) void;
+pub extern fn scm_is_integer(val: SCM) c_int;
+pub extern fn scm_is_exact_integer(val: SCM) c_int;
+pub extern fn scm_is_signed_integer(val: SCM, min: intmax_t, max: intmax_t) c_int;
+pub extern fn scm_is_unsigned_integer(val: SCM, min: uintmax_t, max: uintmax_t) c_int;
+pub extern fn scm_from_signed_integer(val: intmax_t) SCM;
+pub extern fn scm_from_unsigned_integer(val: uintmax_t) SCM;
+pub extern fn scm_to_signed_integer(val: SCM, min: intmax_t, max: intmax_t) intmax_t;
+pub extern fn scm_to_unsigned_integer(val: SCM, min: uintmax_t, max: uintmax_t) uintmax_t;
+pub extern fn scm_to_int8(x: SCM) i8;
+pub extern fn scm_from_int8(x: i8) SCM;
+pub extern fn scm_to_uint8(x: SCM) u8;
+pub extern fn scm_from_uint8(x: u8) SCM;
+pub extern fn scm_to_int16(x: SCM) i16;
+pub extern fn scm_from_int16(x: i16) SCM;
+pub extern fn scm_to_uint16(x: SCM) u16;
+pub extern fn scm_from_uint16(x: u16) SCM;
+pub extern fn scm_to_int32(x: SCM) i32;
+pub extern fn scm_from_int32(x: i32) SCM;
+pub extern fn scm_to_uint32(x: SCM) u32;
+pub extern fn scm_from_uint32(x: u32) SCM;
+pub extern fn scm_to_wchar(x: SCM) scm_t_wchar;
+pub extern fn scm_from_wchar(x: scm_t_wchar) SCM;
+pub extern fn scm_to_int64(x: SCM) i64;
+pub extern fn scm_from_int64(x: i64) SCM;
+pub extern fn scm_to_uint64(x: SCM) u64;
+pub extern fn scm_from_uint64(x: u64) SCM;
+pub extern fn scm_is_real(val: SCM) c_int;
+pub extern fn scm_is_rational(val: SCM) c_int;
+pub extern fn scm_to_double(val: SCM) f64;
+pub extern fn scm_from_double(val: f64) SCM;
+pub extern fn scm_is_complex(val: SCM) c_int;
+pub extern fn scm_c_make_rectangular(re: f64, im: f64) SCM;
+pub extern fn scm_c_make_polar(mag: f64, ang: f64) SCM;
+pub extern fn scm_c_real_part(z: SCM) f64;
+pub extern fn scm_c_imag_part(z: SCM) f64;
+pub extern fn scm_c_magnitude(z: SCM) f64;
+pub extern fn scm_c_angle(z: SCM) f64;
+pub extern fn scm_is_number(val: SCM) c_int;
+pub extern fn scm_init_numbers() void;
+pub extern fn scm_make_array(fill: SCM, bounds: SCM) SCM;
+pub extern fn scm_make_typed_array(@"type": SCM, fill: SCM, bounds: SCM) SCM;
+pub extern fn scm_shared_array_root(ra: SCM) SCM;
+pub extern fn scm_shared_array_offset(ra: SCM) SCM;
+pub extern fn scm_shared_array_increments(ra: SCM) SCM;
+pub extern fn scm_make_shared_array(oldra: SCM, mapfunc: SCM, dims: SCM) SCM;
+pub extern fn scm_transpose_array(ra: SCM, args: SCM) SCM;
+pub extern fn scm_array_contents(ra: SCM, strict: SCM) SCM;
+pub extern fn scm_array_slice(ra: SCM, indices: SCM) SCM;
+pub extern fn scm_array_cell_ref(ra: SCM, indices: SCM) SCM;
+pub extern fn scm_array_cell_set_x(ra: SCM, b: SCM, indices: SCM) SCM;
+pub extern fn scm_list_to_array(ndim: SCM, lst: SCM) SCM;
+pub extern fn scm_list_to_typed_array(@"type": SCM, ndim: SCM, lst: SCM) SCM;
+pub extern fn scm_c_array_rank(ra: SCM) usize;
+pub extern fn scm_array_rank(ra: SCM) SCM;
+pub extern fn scm_is_array(obj: SCM) c_int;
+pub extern fn scm_array_p(v: SCM, unused: SCM) SCM;
+pub extern fn scm_array_p_2(SCM) SCM;
+pub extern fn scm_is_typed_array(obj: SCM, @"type": SCM) c_int;
+pub extern fn scm_typed_array_p(v: SCM, @"type": SCM) SCM;
+pub extern fn scm_c_array_length(ra: SCM) usize;
+pub extern fn scm_array_length(ra: SCM) SCM;
+pub extern fn scm_array_dimensions(ra: SCM) SCM;
+pub extern fn scm_array_type(ra: SCM) SCM;
+pub extern fn scm_array_type_code(ra: SCM) SCM;
+pub extern fn scm_array_in_bounds_p(v: SCM, args: SCM) SCM;
+pub extern fn scm_c_array_ref_1(v: SCM, idx0: isize) SCM;
+pub extern fn scm_c_array_ref_2(v: SCM, idx0: isize, idx1: isize) SCM;
+pub extern fn scm_c_array_set_1_x(v: SCM, obj: SCM, idx0: isize) void;
+pub extern fn scm_c_array_set_2_x(v: SCM, obj: SCM, idx0: isize, idx1: isize) void;
+pub extern fn scm_array_ref(v: SCM, args: SCM) SCM;
+pub extern fn scm_array_set_x(v: SCM, obj: SCM, args: SCM) SCM;
+pub extern fn scm_array_to_list(v: SCM) SCM;
+pub const struct_scm_t_array_dim = extern struct {
+ lbnd: isize,
+ ubnd: isize,
+ inc: isize,
+};
+pub const scm_t_array_dim = struct_scm_t_array_dim;
+pub fn scm_i_raw_array(arg_ndim: c_int) callconv(.C) SCM {
+ var ndim = arg_ndim;
+ return scm_words((@bitCast(scm_t_bits, @as(c_long, ndim)) << @intCast(@import("std").math.Log2Int(scm_t_bits), 17)) +% @bitCast(c_ulong, @as(c_long, @as(c_int, 93))), @bitCast(u32, @as(c_int, 3) + (ndim * @as(c_int, 3))));
+}
+pub extern fn scm_i_make_array(ndim: c_int) SCM;
+pub extern fn scm_i_print_array(array: SCM, port: SCM, pstate: [*c]scm_print_state) c_int;
+pub extern fn scm_i_shap2ra(args: SCM) SCM;
+pub extern fn scm_init_arrays() void;
+pub const scm_t_vector_ref = ?fn (SCM, usize) callconv(.C) SCM;
+pub const scm_t_vector_set = ?fn (SCM, usize, SCM) callconv(.C) void;
+pub const SCM_ARRAY_ELEMENT_TYPE_SCM: c_int = 0;
+pub const SCM_ARRAY_ELEMENT_TYPE_CHAR: c_int = 1;
+pub const SCM_ARRAY_ELEMENT_TYPE_BIT: c_int = 2;
+pub const SCM_ARRAY_ELEMENT_TYPE_VU8: c_int = 3;
+pub const SCM_ARRAY_ELEMENT_TYPE_U8: c_int = 4;
+pub const SCM_ARRAY_ELEMENT_TYPE_S8: c_int = 5;
+pub const SCM_ARRAY_ELEMENT_TYPE_U16: c_int = 6;
+pub const SCM_ARRAY_ELEMENT_TYPE_S16: c_int = 7;
+pub const SCM_ARRAY_ELEMENT_TYPE_U32: c_int = 8;
+pub const SCM_ARRAY_ELEMENT_TYPE_S32: c_int = 9;
+pub const SCM_ARRAY_ELEMENT_TYPE_U64: c_int = 10;
+pub const SCM_ARRAY_ELEMENT_TYPE_S64: c_int = 11;
+pub const SCM_ARRAY_ELEMENT_TYPE_F32: c_int = 12;
+pub const SCM_ARRAY_ELEMENT_TYPE_F64: c_int = 13;
+pub const SCM_ARRAY_ELEMENT_TYPE_C32: c_int = 14;
+pub const SCM_ARRAY_ELEMENT_TYPE_C64: c_int = 15;
+pub const SCM_ARRAY_ELEMENT_TYPE_LAST: c_int = 15;
+pub const scm_t_array_element_type = c_uint;
+pub extern var scm_i_array_element_types: [*c]SCM;
+pub const struct_scm_t_array_handle = extern struct {
+ array: SCM,
+ base: usize,
+ ndims: usize,
+ dims: [*c]scm_t_array_dim,
+ dim0: scm_t_array_dim,
+ element_type: scm_t_array_element_type,
+ elements: ?*const anyopaque,
+ writable_elements: ?*anyopaque,
+ vector: SCM,
+ // vref: scm_t_vector_ref,
+ // vset: scm_t_vector_set,
+};
+
+pub const scm_t_array_handle = struct_scm_t_array_handle;
+pub extern fn scm_array_get_handle(array: SCM, h: [*c]scm_t_array_handle) void;
+pub extern fn scm_array_handle_pos(h: [*c]scm_t_array_handle, indices: SCM) isize;
+pub extern fn scm_array_handle_pos_1(h: [*c]scm_t_array_handle, idx0: isize) isize;
+pub extern fn scm_array_handle_pos_2(h: [*c]scm_t_array_handle, idx0: isize, idx1: isize) isize;
+pub extern fn scm_array_handle_element_type(h: [*c]scm_t_array_handle) SCM;
+pub extern fn scm_array_handle_release(h: [*c]scm_t_array_handle) void;
+pub extern fn scm_array_handle_elements(h: [*c]scm_t_array_handle) [*c]const SCM;
+pub extern fn scm_array_handle_writable_elements(h: [*c]scm_t_array_handle) [*c]SCM;
+pub fn scm_array_handle_ref(arg_h: [*c]scm_t_array_handle, arg_p: isize) callconv(.C) SCM {
+ var h = arg_h;
+ var p = arg_p;
+ if (__builtin_expect(@bitCast(c_long, @as(c_long, @boolToInt((p < @bitCast(c_long, @as(c_long, @as(c_int, 0)))) and (@bitCast(usize, -p) > h.*.base)))), @bitCast(c_long, @as(c_long, @as(c_int, 0)))) != 0) {
+ scm_out_of_range(null, scm_from_int64(p));
+ }
+ return h.*.vref.?(h.*.vector, h.*.base +% @bitCast(c_ulong, p));
+}
+pub fn scm_array_handle_set(arg_h: [*c]scm_t_array_handle, arg_p: isize, arg_v: SCM) callconv(.C) void {
+ var h = arg_h;
+ var p = arg_p;
+ var v = arg_v;
+ if (__builtin_expect(@bitCast(c_long, @as(c_long, @boolToInt((p < @bitCast(c_long, @as(c_long, @as(c_int, 0)))) and (@bitCast(usize, -p) > h.*.base)))), @bitCast(c_long, @as(c_long, @as(c_int, 0)))) != 0) {
+ scm_out_of_range(null, scm_from_int64(p));
+ }
+ h.*.vset.?(h.*.vector, h.*.base +% @bitCast(c_ulong, p), v);
+}
+pub extern fn scm_init_array_handle() void;
+pub extern fn scm_ra_matchp(ra0: SCM, ras: SCM) c_int;
+pub extern fn scm_ramapc(cproc: ?*anyopaque, data: SCM, ra0: SCM, lra: SCM, what: [*c]const u8) c_int;
+pub extern fn scm_array_fill_x(ra: SCM, fill: SCM) SCM;
+pub extern fn scm_array_copy_x(src: SCM, dst: SCM) SCM;
+pub extern fn scm_array_map_x(ra0: SCM, proc: SCM, lra: SCM) SCM;
+pub extern fn scm_array_for_each(proc: SCM, ra0: SCM, lra: SCM) SCM;
+pub extern fn scm_array_index_map_x(ra: SCM, proc: SCM) SCM;
+pub extern fn scm_array_equal_p(ra0: SCM, ra1: SCM) SCM;
+pub extern fn scm_array_slice_for_each(frank: SCM, op: SCM, args: SCM) SCM;
+pub extern fn scm_array_slice_for_each_in_order(frank: SCM, op: SCM, args: SCM) SCM;
+pub extern fn scm_i_array_rebase(a: SCM, base: usize) SCM;
+pub extern fn scm_init_array_map() void;
+pub extern fn scm_is_bool(SCM) c_int;
+pub extern fn scm_to_bool(x: SCM) c_int;
+pub extern fn scm_not(x: SCM) SCM;
+pub extern fn scm_boolean_p(obj: SCM) SCM;
+pub extern fn scm_nil_p(obj: SCM) SCM;
+pub extern fn scm_init_boolean() void;
+pub extern fn scm_procedure_p(obj: SCM) SCM;
+pub extern fn scm_thunk_p(obj: SCM) SCM;
+pub extern fn scm_procedure_with_setter_p(obj: SCM) SCM;
+pub extern fn scm_make_procedure_with_setter(procedure: SCM, setter: SCM) SCM;
+pub extern fn scm_procedure(proc: SCM) SCM;
+pub extern fn scm_setter(proc: SCM) SCM;
+pub extern fn scm_init_procs() void;
+pub const scm_t_thunk = ?fn (?*anyopaque) callconv(.C) SCM;
+pub const scm_t_exception_handler = ?fn (?*anyopaque, SCM) callconv(.C) SCM;
+pub extern fn scm_c_make_thunk(body: scm_t_thunk, body_data: ?*anyopaque) SCM;
+pub extern fn scm_c_make_exception_handler(h: scm_t_exception_handler, handler_data: ?*anyopaque) SCM;
+pub extern fn scm_c_with_exception_handler(@"type": SCM, handler: scm_t_exception_handler, handler_data: ?*anyopaque, thunk: scm_t_thunk, thunk_data: ?*anyopaque) SCM;
+pub extern fn scm_c_with_default_exception_handler(thunk: scm_t_thunk, data: ?*anyopaque) SCM;
+pub extern fn scm_with_exception_handler(@"type": SCM, handler: SCM, thunk: SCM) SCM;
+pub extern fn scm_with_pre_unwind_exception_handler(handler: SCM, thunk: SCM) SCM;
+pub extern fn scm_raise_exception(exn: SCM) noreturn;
+pub extern fn scm_exception_kind(exn: SCM) SCM;
+pub extern fn scm_exception_args(exn: SCM) SCM;
+pub extern fn scm_dynwind_throw_handler() void;
+pub extern fn scm_report_stack_overflow() void;
+pub extern fn scm_report_out_of_memory() void;
+pub extern fn scm_init_exceptions() void;
+pub const scm_t_catch_body = scm_t_thunk;
+pub const scm_t_catch_handler = ?fn (?*anyopaque, SCM, SCM) callconv(.C) SCM;
+pub extern fn scm_i_make_catch_handler(h: scm_t_catch_handler, data: ?*anyopaque) SCM;
+pub extern fn scm_c_catch(tag: SCM, body: scm_t_catch_body, body_data: ?*anyopaque, handler: scm_t_catch_handler, handler_data: ?*anyopaque, pre_unwind_handler: scm_t_catch_handler, pre_unwind_handler_data: ?*anyopaque) SCM;
+pub extern fn scm_c_with_throw_handler(tag: SCM, body: scm_t_catch_body, body_data: ?*anyopaque, handler: scm_t_catch_handler, handler_data: ?*anyopaque, lazy_catch_p: c_int) SCM;
+pub extern fn scm_internal_catch(tag: SCM, body: scm_t_catch_body, body_data: ?*anyopaque, handler: scm_t_catch_handler, handler_data: ?*anyopaque) SCM;
+pub const struct_scm_body_thunk_data = extern struct {
+ tag: SCM,
+ body_proc: SCM,
+};
+pub extern fn scm_body_thunk(?*anyopaque) SCM;
+pub extern fn scm_handle_by_proc(?*anyopaque, SCM, SCM) SCM;
+pub extern fn scm_handle_by_proc_catching_all(?*anyopaque, SCM, SCM) SCM;
+pub extern fn scm_handle_by_message(?*anyopaque, SCM, SCM) SCM;
+pub extern fn scm_handle_by_message_noexit(?*anyopaque, SCM, SCM) SCM;
+pub extern fn scm_handle_by_throw(?*anyopaque, SCM, SCM) SCM;
+pub extern fn scm_exit_status(args: SCM) c_int;
+pub extern fn scm_catch_with_pre_unwind_handler(tag: SCM, thunk: SCM, handler: SCM, lazy_handler: SCM) SCM;
+pub extern fn scm_catch(tag: SCM, thunk: SCM, handler: SCM) SCM;
+pub extern fn scm_with_throw_handler(tag: SCM, thunk: SCM, handler: SCM) SCM;
+pub extern fn scm_ithrow(key: SCM, args: SCM, no_return: c_int) noreturn;
+pub extern fn scm_throw(key: SCM, args: SCM) noreturn;
+pub extern fn scm_init_throw() void;
+pub extern fn setjmp(__env: [*c]struct___jmp_buf_tag) c_int;
+pub extern fn __sigsetjmp(__env: [*c]struct___jmp_buf_tag, __savemask: c_int) c_int;
+pub extern fn _setjmp(__env: [*c]struct___jmp_buf_tag) c_int;
+pub extern fn longjmp(__env: [*c]struct___jmp_buf_tag, __val: c_int) noreturn;
+pub extern fn _longjmp(__env: [*c]struct___jmp_buf_tag, __val: c_int) noreturn;
+pub const sigjmp_buf = [1]struct___jmp_buf_tag;
+pub extern fn siglongjmp(__env: [*c]struct___jmp_buf_tag, __val: c_int) noreturn;
+pub const sig_atomic_t = __sig_atomic_t;
+const struct_unnamed_8 = extern struct {
+ si_pid: __pid_t,
+ si_uid: __uid_t,
+};
+const struct_unnamed_9 = extern struct {
+ si_tid: c_int,
+ si_overrun: c_int,
+ si_sigval: __sigval_t,
+};
+const struct_unnamed_10 = extern struct {
+ si_pid: __pid_t,
+ si_uid: __uid_t,
+ si_sigval: __sigval_t,
+};
+const struct_unnamed_11 = extern struct {
+ si_pid: __pid_t,
+ si_uid: __uid_t,
+ si_status: c_int,
+ si_utime: __clock_t,
+ si_stime: __clock_t,
+};
+const struct_unnamed_14 = extern struct {
+ _lower: ?*anyopaque,
+ _upper: ?*anyopaque,
+};
+const union_unnamed_13 = extern union {
+ _addr_bnd: struct_unnamed_14,
+ _pkey: __uint32_t,
+};
+const struct_unnamed_12 = extern struct {
+ si_addr: ?*anyopaque,
+ si_addr_lsb: c_short,
+ _bounds: union_unnamed_13,
+};
+const struct_unnamed_15 = extern struct {
+ si_band: c_long,
+ si_fd: c_int,
+};
+const struct_unnamed_16 = extern struct {
+ _call_addr: ?*anyopaque,
+ _syscall: c_int,
+ _arch: c_uint,
+};
+const union_unnamed_7 = extern union {
+ _pad: [28]c_int,
+ _kill: struct_unnamed_8,
+ _timer: struct_unnamed_9,
+ _rt: struct_unnamed_10,
+ _sigchld: struct_unnamed_11,
+ _sigfault: struct_unnamed_12,
+ _sigpoll: struct_unnamed_15,
+ _sigsys: struct_unnamed_16,
+};
+pub const siginfo_t = extern struct {
+ si_signo: c_int,
+ si_errno: c_int,
+ si_code: c_int,
+ __pad0: c_int,
+ _sifields: union_unnamed_7,
+};
+pub const SI_ASYNCNL: c_int = -60;
+pub const SI_DETHREAD: c_int = -7;
+pub const SI_TKILL: c_int = -6;
+pub const SI_SIGIO: c_int = -5;
+pub const SI_ASYNCIO: c_int = -4;
+pub const SI_MESGQ: c_int = -3;
+pub const SI_TIMER: c_int = -2;
+pub const SI_QUEUE: c_int = -1;
+pub const SI_USER: c_int = 0;
+pub const SI_KERNEL: c_int = 128;
+const enum_unnamed_17 = c_int;
+pub const ILL_ILLOPC: c_int = 1;
+pub const ILL_ILLOPN: c_int = 2;
+pub const ILL_ILLADR: c_int = 3;
+pub const ILL_ILLTRP: c_int = 4;
+pub const ILL_PRVOPC: c_int = 5;
+pub const ILL_PRVREG: c_int = 6;
+pub const ILL_COPROC: c_int = 7;
+pub const ILL_BADSTK: c_int = 8;
+pub const ILL_BADIADDR: c_int = 9;
+const enum_unnamed_18 = c_uint;
+pub const FPE_INTDIV: c_int = 1;
+pub const FPE_INTOVF: c_int = 2;
+pub const FPE_FLTDIV: c_int = 3;
+pub const FPE_FLTOVF: c_int = 4;
+pub const FPE_FLTUND: c_int = 5;
+pub const FPE_FLTRES: c_int = 6;
+pub const FPE_FLTINV: c_int = 7;
+pub const FPE_FLTSUB: c_int = 8;
+pub const FPE_FLTUNK: c_int = 14;
+pub const FPE_CONDTRAP: c_int = 15;
+const enum_unnamed_19 = c_uint;
+pub const SEGV_MAPERR: c_int = 1;
+pub const SEGV_ACCERR: c_int = 2;
+pub const SEGV_BNDERR: c_int = 3;
+pub const SEGV_PKUERR: c_int = 4;
+pub const SEGV_ACCADI: c_int = 5;
+pub const SEGV_ADIDERR: c_int = 6;
+pub const SEGV_ADIPERR: c_int = 7;
+pub const SEGV_MTEAERR: c_int = 8;
+pub const SEGV_MTESERR: c_int = 9;
+const enum_unnamed_20 = c_uint;
+pub const BUS_ADRALN: c_int = 1;
+pub const BUS_ADRERR: c_int = 2;
+pub const BUS_OBJERR: c_int = 3;
+pub const BUS_MCEERR_AR: c_int = 4;
+pub const BUS_MCEERR_AO: c_int = 5;
+const enum_unnamed_21 = c_uint;
+pub const CLD_EXITED: c_int = 1;
+pub const CLD_KILLED: c_int = 2;
+pub const CLD_DUMPED: c_int = 3;
+pub const CLD_TRAPPED: c_int = 4;
+pub const CLD_STOPPED: c_int = 5;
+pub const CLD_CONTINUED: c_int = 6;
+const enum_unnamed_22 = c_uint;
+pub const POLL_IN: c_int = 1;
+pub const POLL_OUT: c_int = 2;
+pub const POLL_MSG: c_int = 3;
+pub const POLL_ERR: c_int = 4;
+pub const POLL_PRI: c_int = 5;
+pub const POLL_HUP: c_int = 6;
+const enum_unnamed_23 = c_uint;
+pub const sigval_t = __sigval_t;
+pub const sigevent_t = struct_sigevent;
+pub const SIGEV_SIGNAL: c_int = 0;
+pub const SIGEV_NONE: c_int = 1;
+pub const SIGEV_THREAD: c_int = 2;
+pub const SIGEV_THREAD_ID: c_int = 4;
+const enum_unnamed_24 = c_uint;
+pub const __sighandler_t = ?fn (c_int) callconv(.C) void;
+pub extern fn __sysv_signal(__sig: c_int, __handler: __sighandler_t) __sighandler_t;
+pub extern fn signal(__sig: c_int, __handler: __sighandler_t) __sighandler_t;
+pub extern fn kill(__pid: __pid_t, __sig: c_int) c_int;
+pub extern fn killpg(__pgrp: __pid_t, __sig: c_int) c_int;
+pub extern fn raise(__sig: c_int) c_int;
+pub extern fn ssignal(__sig: c_int, __handler: __sighandler_t) __sighandler_t;
+pub extern fn gsignal(__sig: c_int) c_int;
+pub extern fn psignal(__sig: c_int, __s: [*c]const u8) void;
+pub extern fn psiginfo(__pinfo: [*c]const siginfo_t, __s: [*c]const u8) void;
+pub extern fn sigblock(__mask: c_int) c_int;
+pub extern fn sigsetmask(__mask: c_int) c_int;
+pub extern fn siggetmask() c_int;
+pub const sig_t = __sighandler_t;
+pub extern fn sigemptyset(__set: [*c]sigset_t) c_int;
+pub extern fn sigfillset(__set: [*c]sigset_t) c_int;
+pub extern fn sigaddset(__set: [*c]sigset_t, __signo: c_int) c_int;
+pub extern fn sigdelset(__set: [*c]sigset_t, __signo: c_int) c_int;
+pub extern fn sigismember(__set: [*c]const sigset_t, __signo: c_int) c_int;
+const union_unnamed_25 = extern union {
+ sa_handler: __sighandler_t,
+ sa_sigaction: ?fn (c_int, [*c]siginfo_t, ?*anyopaque) callconv(.C) void,
+};
+pub const struct_sigaction = extern struct {
+ __sigaction_handler: union_unnamed_25,
+ sa_mask: __sigset_t,
+ sa_flags: c_int,
+ sa_restorer: ?fn () callconv(.C) void,
+};
+pub extern fn sigprocmask(__how: c_int, noalias __set: [*c]const sigset_t, noalias __oset: [*c]sigset_t) c_int;
+pub extern fn sigsuspend(__set: [*c]const sigset_t) c_int;
+pub extern fn sigaction(__sig: c_int, noalias __act: [*c]const struct_sigaction, noalias __oact: [*c]struct_sigaction) c_int;
+pub extern fn sigpending(__set: [*c]sigset_t) c_int;
+pub extern fn sigwait(noalias __set: [*c]const sigset_t, noalias __sig: [*c]c_int) c_int;
+pub extern fn sigwaitinfo(noalias __set: [*c]const sigset_t, noalias __info: [*c]siginfo_t) c_int;
+pub extern fn sigtimedwait(noalias __set: [*c]const sigset_t, noalias __info: [*c]siginfo_t, noalias __timeout: [*c]const struct_timespec) c_int;
+pub extern fn sigqueue(__pid: __pid_t, __sig: c_int, __val: union_sigval) c_int;
+pub const struct__fpx_sw_bytes = extern struct {
+ magic1: __uint32_t,
+ extended_size: __uint32_t,
+ xstate_bv: __uint64_t,
+ xstate_size: __uint32_t,
+ __glibc_reserved1: [7]__uint32_t,
+};
+pub const struct__fpreg = extern struct {
+ significand: [4]c_ushort,
+ exponent: c_ushort,
+};
+pub const struct__fpxreg = extern struct {
+ significand: [4]c_ushort,
+ exponent: c_ushort,
+ __glibc_reserved1: [3]c_ushort,
+};
+pub const struct__xmmreg = extern struct {
+ element: [4]__uint32_t,
+};
+pub const struct__fpstate = extern struct {
+ cwd: __uint16_t,
+ swd: __uint16_t,
+ ftw: __uint16_t,
+ fop: __uint16_t,
+ rip: __uint64_t,
+ rdp: __uint64_t,
+ mxcsr: __uint32_t,
+ mxcr_mask: __uint32_t,
+ _st: [8]struct__fpxreg,
+ _xmm: [16]struct__xmmreg,
+ __glibc_reserved1: [24]__uint32_t,
+};
+const union_unnamed_26 = extern union {
+ fpstate: [*c]struct__fpstate,
+ __fpstate_word: __uint64_t,
+};
+pub const struct_sigcontext = extern struct {
+ r8: __uint64_t,
+ r9: __uint64_t,
+ r10: __uint64_t,
+ r11: __uint64_t,
+ r12: __uint64_t,
+ r13: __uint64_t,
+ r14: __uint64_t,
+ r15: __uint64_t,
+ rdi: __uint64_t,
+ rsi: __uint64_t,
+ rbp: __uint64_t,
+ rbx: __uint64_t,
+ rdx: __uint64_t,
+ rax: __uint64_t,
+ rcx: __uint64_t,
+ rsp: __uint64_t,
+ rip: __uint64_t,
+ eflags: __uint64_t,
+ cs: c_ushort,
+ gs: c_ushort,
+ fs: c_ushort,
+ __pad0: c_ushort,
+ err: __uint64_t,
+ trapno: __uint64_t,
+ oldmask: __uint64_t,
+ cr2: __uint64_t,
+ unnamed_0: union_unnamed_26,
+ __reserved1: [8]__uint64_t,
+};
+pub const struct__xsave_hdr = extern struct {
+ xstate_bv: __uint64_t,
+ __glibc_reserved1: [2]__uint64_t,
+ __glibc_reserved2: [5]__uint64_t,
+};
+pub const struct__ymmh_state = extern struct {
+ ymmh_space: [64]__uint32_t,
+};
+pub const struct__xstate = extern struct {
+ fpstate: struct__fpstate,
+ xstate_hdr: struct__xsave_hdr,
+ ymmh: struct__ymmh_state,
+};
+pub extern fn sigreturn(__scp: [*c]struct_sigcontext) c_int;
+pub const stack_t = extern struct {
+ ss_sp: ?*anyopaque,
+ ss_flags: c_int,
+ ss_size: usize,
+};
+pub const greg_t = c_longlong;
+pub const gregset_t = [23]greg_t;
+pub const struct__libc_fpxreg = extern struct {
+ significand: [4]c_ushort,
+ exponent: c_ushort,
+ __glibc_reserved1: [3]c_ushort,
+};
+pub const struct__libc_xmmreg = extern struct {
+ element: [4]__uint32_t,
+};
+pub const struct__libc_fpstate = extern struct {
+ cwd: __uint16_t,
+ swd: __uint16_t,
+ ftw: __uint16_t,
+ fop: __uint16_t,
+ rip: __uint64_t,
+ rdp: __uint64_t,
+ mxcsr: __uint32_t,
+ mxcr_mask: __uint32_t,
+ _st: [8]struct__libc_fpxreg,
+ _xmm: [16]struct__libc_xmmreg,
+ __glibc_reserved1: [24]__uint32_t,
+};
+pub const fpregset_t = [*c]struct__libc_fpstate;
+pub const mcontext_t = extern struct {
+ gregs: gregset_t,
+ fpregs: fpregset_t,
+ __reserved1: [8]c_ulonglong,
+};
+pub const struct_ucontext_t = extern struct {
+ uc_flags: c_ulong,
+ uc_link: [*c]struct_ucontext_t,
+ uc_stack: stack_t,
+ uc_mcontext: mcontext_t,
+ uc_sigmask: sigset_t,
+ __fpregs_mem: struct__libc_fpstate,
+ __ssp: [4]c_ulonglong,
+};
+pub const ucontext_t = struct_ucontext_t;
+pub extern fn siginterrupt(__sig: c_int, __interrupt: c_int) c_int;
+pub const SS_ONSTACK: c_int = 1;
+pub const SS_DISABLE: c_int = 2;
+const enum_unnamed_27 = c_uint;
+pub extern fn sigaltstack(noalias __ss: [*c]const stack_t, noalias __oss: [*c]stack_t) c_int;
+pub const struct_sigstack = extern struct {
+ ss_sp: ?*anyopaque,
+ ss_onstack: c_int,
+};
+pub extern fn sigstack(__ss: [*c]struct_sigstack, __oss: [*c]struct_sigstack) c_int;
+pub extern fn pthread_sigmask(__how: c_int, noalias __newmask: [*c]const __sigset_t, noalias __oldmask: [*c]__sigset_t) c_int;
+pub extern fn pthread_kill(__threadid: pthread_t, __signo: c_int) c_int;
+pub extern fn __libc_current_sigrtmin() c_int;
+pub extern fn __libc_current_sigrtmax() c_int;
+pub const SCM_DYNSTACK_TYPE_NONE: c_int = 0;
+pub const SCM_DYNSTACK_TYPE_FRAME: c_int = 1;
+pub const SCM_DYNSTACK_TYPE_UNWINDER: c_int = 2;
+pub const SCM_DYNSTACK_TYPE_REWINDER: c_int = 3;
+pub const SCM_DYNSTACK_TYPE_WITH_FLUID: c_int = 4;
+pub const SCM_DYNSTACK_TYPE_PROMPT: c_int = 5;
+pub const SCM_DYNSTACK_TYPE_DYNWIND: c_int = 6;
+pub const SCM_DYNSTACK_TYPE_DYNAMIC_STATE: c_int = 7;
+pub const scm_t_dynstack_item_type = c_uint;
+pub const SCM_F_DYNSTACK_FRAME_REWINDABLE: c_int = 16;
+pub const scm_t_dynstack_frame_flags = c_uint;
+pub const SCM_F_DYNSTACK_WINDER_EXPLICIT: c_int = 16;
+pub const scm_t_dynstack_winder_flags = c_uint;
+pub const SCM_F_DYNSTACK_PROMPT_ESCAPE_ONLY: c_int = 16;
+pub const scm_t_dynstack_prompt_flags = c_uint;
+pub const scm_t_guard = ?fn (?*anyopaque) callconv(.C) void;
+pub extern fn scm_dynstack_push_frame([*c]scm_t_dynstack, scm_t_dynstack_frame_flags) void;
+pub extern fn scm_dynstack_push_rewinder([*c]scm_t_dynstack, scm_t_dynstack_winder_flags, scm_t_guard, ?*anyopaque) void;
+pub extern fn scm_dynstack_push_unwinder([*c]scm_t_dynstack, scm_t_dynstack_winder_flags, scm_t_guard, ?*anyopaque) void;
+pub extern fn scm_dynstack_push_fluid([*c]scm_t_dynstack, fluid: SCM, value: SCM, dynamic_state: ?*scm_t_dynamic_state) void;
+pub extern fn scm_dynstack_push_dynamic_state([*c]scm_t_dynstack, SCM, ?*scm_t_dynamic_state) void;
+pub extern fn scm_dynstack_push_prompt([*c]scm_t_dynstack, scm_t_dynstack_prompt_flags, key: SCM, fp_offset: ptrdiff_t, sp_offset: ptrdiff_t, vra: [*c]u32, mra: [*c]u8, registers: [*c]jmp_buf) void;
+pub extern fn scm_dynstack_push_dynwind([*c]scm_t_dynstack, enter: SCM, leave: SCM) void;
+pub extern fn scm_dynstack_pop([*c]scm_t_dynstack) void;
+pub extern fn scm_dynstack_capture_all(dynstack: [*c]scm_t_dynstack) [*c]scm_t_dynstack;
+pub extern fn scm_dynstack_capture(dynstack: [*c]scm_t_dynstack, item: [*c]scm_t_bits) [*c]scm_t_dynstack;
+pub extern fn scm_dynstack_wind_1([*c]scm_t_dynstack, [*c]scm_t_bits) void;
+pub extern fn scm_dynstack_unwind_1([*c]scm_t_dynstack) scm_t_bits;
+pub extern fn scm_dynstack_wind([*c]scm_t_dynstack, [*c]scm_t_bits) void;
+pub extern fn scm_dynstack_unwind([*c]scm_t_dynstack, [*c]scm_t_bits) void;
+pub extern fn scm_dynstack_unwind_fork([*c]scm_t_dynstack, [*c]scm_t_dynstack) [*c]scm_t_bits;
+pub extern fn scm_dynstack_unwind_frame([*c]scm_t_dynstack) void;
+pub extern fn scm_dynstack_unwind_fluid(dynstack: [*c]scm_t_dynstack, dynamic_state: ?*scm_t_dynamic_state) void;
+pub extern fn scm_dynstack_unwind_dynamic_state(dynstack: [*c]scm_t_dynstack, dynamic_state: ?*scm_t_dynamic_state) void;
+pub extern fn scm_dynstack_find_prompt([*c]scm_t_dynstack, SCM, [*c]scm_t_dynstack_prompt_flags, [*c]ptrdiff_t, [*c]ptrdiff_t, [*c][*c]u32, [*c][*c]u8, [*c][*c]jmp_buf) [*c]scm_t_bits;
+pub extern fn scm_dynstack_find_old_fluid_value([*c]scm_t_dynstack, SCM, usize, SCM) SCM;
+pub extern fn scm_dynstack_relocate_prompts([*c]scm_t_dynstack, ptrdiff_t) void;
+pub extern fn scm_dynstack_wind_prompt([*c]scm_t_dynstack, [*c]scm_t_bits, ptrdiff_t, [*c]jmp_buf) void;
+pub extern fn scm_std_select(fds: c_int, rfds: [*c]fd_set, wfds: [*c]fd_set, efds: [*c]fd_set, timeout: [*c]struct_timeval) c_int;
+pub const struct_scm_smob_descriptor = extern struct {
+ name: [*c]const u8,
+ size: usize,
+ mark: ?fn (SCM) callconv(.C) SCM,
+ free: ?fn (SCM) callconv(.C) usize,
+ print: ?fn (SCM, SCM, [*c]scm_print_state) callconv(.C) c_int,
+ equalp: ?fn (SCM, SCM) callconv(.C) SCM,
+ apply: scm_t_subr,
+ apply_trampoline: SCM,
+};
+pub const scm_smob_descriptor = struct_scm_smob_descriptor;
+pub extern var scm_numsmob: c_long;
+pub extern var scm_smobs: [*c]scm_smob_descriptor;
+pub extern fn scm_i_new_smob(tc: scm_t_bits, scm_t_bits) SCM;
+pub extern fn scm_i_new_double_smob(tc: scm_t_bits, scm_t_bits, scm_t_bits, scm_t_bits) SCM;
+pub fn scm_new_smob(arg_tc: scm_t_bits, arg_data: scm_t_bits) callconv(.C) SCM {
+ var tc = arg_tc;
+ var data = arg_data;
+ var smobnum: scm_t_bits = @bitCast(c_ulong, @as(c_long, @as(c_int, 255))) & (tc >> @intCast(@import("std").math.Log2Int(scm_t_bits), 8));
+ if (__builtin_expect(@bitCast(c_long, @as(c_long, @boolToInt((scm_smobs[smobnum].mark != null) or (scm_smobs[smobnum].free != null)))), @bitCast(c_long, @as(c_long, @as(c_int, 0)))) != 0) return scm_i_new_smob(tc, data) else return scm_cell(tc, data);
+ return null;
+}
+pub fn scm_new_double_smob(arg_tc: scm_t_bits, arg_data1: scm_t_bits, arg_data2: scm_t_bits, arg_data3: scm_t_bits) callconv(.C) SCM {
+ var tc = arg_tc;
+ var data1 = arg_data1;
+ var data2 = arg_data2;
+ var data3 = arg_data3;
+ var smobnum: scm_t_bits = @bitCast(c_ulong, @as(c_long, @as(c_int, 255))) & (tc >> @intCast(@import("std").math.Log2Int(scm_t_bits), 8));
+ if (__builtin_expect(@bitCast(c_long, @as(c_long, @boolToInt((scm_smobs[smobnum].mark != null) or (scm_smobs[smobnum].free != null)))), @bitCast(c_long, @as(c_long, @as(c_int, 0)))) != 0) return scm_i_new_double_smob(tc, data1, data2, data3) else return scm_double_cell(tc, data1, data2, data3);
+ return null;
+}
+pub extern fn scm_mark0(ptr: SCM) SCM;
+pub extern fn scm_markcdr(ptr: SCM) SCM;
+pub extern fn scm_free0(ptr: SCM) usize;
+pub extern fn scm_smob_print(exp: SCM, port: SCM, pstate: [*c]scm_print_state) c_int;
+pub extern fn scm_make_smob_type(name: [*c]const u8, size: usize) scm_t_bits;
+pub extern fn scm_set_smob_mark(tc: scm_t_bits, mark: ?fn (SCM) callconv(.C) SCM) void;
+pub extern fn scm_set_smob_free(tc: scm_t_bits, free: ?fn (SCM) callconv(.C) usize) void;
+pub extern fn scm_set_smob_print(tc: scm_t_bits, print: ?fn (SCM, SCM, [*c]scm_print_state) callconv(.C) c_int) void;
+pub extern fn scm_set_smob_equalp(tc: scm_t_bits, equalp: ?fn (SCM, SCM) callconv(.C) SCM) void;
+pub extern fn scm_set_smob_apply(tc: scm_t_bits, apply: scm_t_subr, req: c_uint, opt: c_uint, rst: c_uint) void;
+pub extern fn scm_smob_type_class(tc: scm_t_bits) SCM;
+pub extern fn scm_assert_smob_type(tag: scm_t_bits, val: SCM) void;
+pub extern fn scm_make_smob(tc: scm_t_bits) SCM;
+pub extern fn scm_smob_prehistory() void;
+pub extern fn scm_program_p(obj: SCM) SCM;
+pub extern fn scm_program_code(program: SCM) SCM;
+pub extern fn scm_primitive_code_p(code: SCM) SCM;
+pub extern fn scm_primitive_code_name(code: SCM) SCM;
+pub extern fn scm_primitive_call_ip(prim: SCM) SCM;
+pub extern fn scm_i_program_name(program: SCM) SCM;
+pub extern fn scm_i_program_documentation(program: SCM) SCM;
+pub extern fn scm_i_program_properties(program: SCM) SCM;
+pub extern fn scm_find_source_for_addr(ip: SCM) SCM;
+pub extern fn scm_program_address_range(program: SCM) SCM;
+pub extern fn scm_program_num_free_variables(program: SCM) SCM;
+pub extern fn scm_program_free_variable_ref(program: SCM, i: SCM) SCM;
+pub extern fn scm_program_free_variable_set_x(program: SCM, i: SCM, x: SCM) SCM;
+pub extern fn scm_i_program_arity(program: SCM, req: [*c]c_int, opt: [*c]c_int, rest: [*c]c_int) c_int;
+pub extern fn scm_i_program_print(program: SCM, port: SCM, pstate: [*c]scm_print_state) void;
+pub extern fn scm_bootstrap_programs() void;
+pub extern fn scm_init_programs() void;
+pub const SCM_F_COMPARE_NONE: c_int = 0;
+pub const SCM_F_COMPARE_EQUAL: c_int = 1;
+pub const SCM_F_COMPARE_LESS_THAN: c_int = 2;
+pub const SCM_F_COMPARE_INVALID: c_int = 3;
+pub const enum_scm_compare = c_uint;
+pub extern fn scm_call_with_vm(proc: SCM, args: SCM) SCM;
+pub extern fn scm_call_with_stack_overflow_handler(limit: SCM, thunk: SCM, handler: SCM) SCM;
+pub extern fn scm_vm_add_apply_hook_x(SCM) SCM;
+pub extern fn scm_vm_add_return_hook_x(SCM) SCM;
+pub extern fn scm_vm_add_abort_hook_x(SCM) SCM;
+pub extern fn scm_vm_add_next_hook_x(SCM) SCM;
+pub extern fn scm_vm_remove_apply_hook_x(SCM) SCM;
+pub extern fn scm_vm_remove_return_hook_x(SCM) SCM;
+pub extern fn scm_vm_remove_abort_hook_x(SCM) SCM;
+pub extern fn scm_vm_remove_next_hook_x(SCM) SCM;
+pub extern fn scm_vm_trace_level() SCM;
+pub extern fn scm_set_vm_trace_level_x(level: SCM) SCM;
+pub extern fn scm_vm_engine() SCM;
+pub extern fn scm_set_vm_engine_x(engine: SCM) SCM;
+pub extern fn scm_set_default_vm_engine_x(engine: SCM) SCM;
+pub extern fn scm_c_set_vm_engine_x(engine: c_int) void;
+pub extern fn scm_c_set_default_vm_engine_x(engine: c_int) void;
+pub extern fn scm_i_vm_prepare_stack(vp: [*c]struct_scm_vm) void;
+pub const struct_GC_ms_entry = opaque {};
+pub extern fn scm_i_vm_mark_stack([*c]struct_scm_vm, ?*struct_GC_ms_entry, ?*struct_GC_ms_entry) ?*struct_GC_ms_entry;
+pub extern fn scm_i_vm_free_stack(vp: [*c]struct_scm_vm) void;
+pub const struct_scm_vm_cont = extern struct {
+ vra: [*c]u32,
+ mra: [*c]u8,
+ fp_offset: ptrdiff_t,
+ stack_size: ptrdiff_t,
+ stack_bottom: [*c]union_scm_vm_stack_element,
+ dynstack: [*c]scm_t_dynstack,
+ flags: u32,
+};
+pub extern fn scm_load_compiled_with_vm(file: SCM) SCM;
+pub extern fn scm_i_call_with_current_continuation(proc: SCM) SCM;
+pub extern fn scm_i_capture_current_stack() SCM;
+pub extern fn scm_i_vm_abort(tag_and_argv: [*c]SCM, n: usize) noreturn;
+pub extern fn scm_i_vm_emergency_abort(tag_and_argv: [*c]SCM, n: usize) noreturn;
+pub extern fn scm_i_vm_cont_to_frame(cont: SCM, frame: ?*struct_scm_frame) c_int;
+pub extern fn scm_i_vm_cont_print(x: SCM, port: SCM, pstate: [*c]scm_print_state) void;
+pub extern fn scm_i_vm_is_boot_continuation_code(ip: [*c]u32) c_int;
+pub extern fn scm_bootstrap_vm() void;
+pub extern fn scm_init_vm() void;
+pub const struct_sched_param = extern struct {
+ sched_priority: c_int,
+};
+pub const __cpu_mask = c_ulong;
+pub const cpu_set_t = extern struct {
+ __bits: [16]__cpu_mask,
+};
+pub extern fn __sched_cpucount(__setsize: usize, __setp: [*c]const cpu_set_t) c_int;
+pub extern fn __sched_cpualloc(__count: usize) [*c]cpu_set_t;
+pub extern fn __sched_cpufree(__set: [*c]cpu_set_t) void;
+pub extern fn sched_setparam(__pid: __pid_t, __param: [*c]const struct_sched_param) c_int;
+pub extern fn sched_getparam(__pid: __pid_t, __param: [*c]struct_sched_param) c_int;
+pub extern fn sched_setscheduler(__pid: __pid_t, __policy: c_int, __param: [*c]const struct_sched_param) c_int;
+pub extern fn sched_getscheduler(__pid: __pid_t) c_int;
+pub extern fn sched_yield() c_int;
+pub extern fn sched_get_priority_max(__algorithm: c_int) c_int;
+pub extern fn sched_get_priority_min(__algorithm: c_int) c_int;
+pub extern fn sched_rr_get_interval(__pid: __pid_t, __t: [*c]struct_timespec) c_int;
+pub const PTHREAD_CREATE_JOINABLE: c_int = 0;
+pub const PTHREAD_CREATE_DETACHED: c_int = 1;
+const enum_unnamed_28 = c_uint;
+pub const PTHREAD_MUTEX_TIMED_NP: c_int = 0;
+pub const PTHREAD_MUTEX_RECURSIVE_NP: c_int = 1;
+pub const PTHREAD_MUTEX_ERRORCHECK_NP: c_int = 2;
+pub const PTHREAD_MUTEX_ADAPTIVE_NP: c_int = 3;
+pub const PTHREAD_MUTEX_NORMAL: c_int = 0;
+pub const PTHREAD_MUTEX_RECURSIVE: c_int = 1;
+pub const PTHREAD_MUTEX_ERRORCHECK: c_int = 2;
+pub const PTHREAD_MUTEX_DEFAULT: c_int = 0;
+const enum_unnamed_29 = c_uint;
+pub const PTHREAD_MUTEX_STALLED: c_int = 0;
+pub const PTHREAD_MUTEX_STALLED_NP: c_int = 0;
+pub const PTHREAD_MUTEX_ROBUST: c_int = 1;
+pub const PTHREAD_MUTEX_ROBUST_NP: c_int = 1;
+const enum_unnamed_30 = c_uint;
+pub const PTHREAD_PRIO_NONE: c_int = 0;
+pub const PTHREAD_PRIO_INHERIT: c_int = 1;
+pub const PTHREAD_PRIO_PROTECT: c_int = 2;
+const enum_unnamed_31 = c_uint;
+pub const PTHREAD_RWLOCK_PREFER_READER_NP: c_int = 0;
+pub const PTHREAD_RWLOCK_PREFER_WRITER_NP: c_int = 1;
+pub const PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP: c_int = 2;
+pub const PTHREAD_RWLOCK_DEFAULT_NP: c_int = 0;
+const enum_unnamed_32 = c_uint;
+pub const PTHREAD_INHERIT_SCHED: c_int = 0;
+pub const PTHREAD_EXPLICIT_SCHED: c_int = 1;
+const enum_unnamed_33 = c_uint;
+pub const PTHREAD_SCOPE_SYSTEM: c_int = 0;
+pub const PTHREAD_SCOPE_PROCESS: c_int = 1;
+const enum_unnamed_34 = c_uint;
+pub const PTHREAD_PROCESS_PRIVATE: c_int = 0;
+pub const PTHREAD_PROCESS_SHARED: c_int = 1;
+const enum_unnamed_35 = c_uint;
+pub const struct__pthread_cleanup_buffer = extern struct {
+ __routine: ?fn (?*anyopaque) callconv(.C) void,
+ __arg: ?*anyopaque,
+ __canceltype: c_int,
+ __prev: [*c]struct__pthread_cleanup_buffer,
+};
+pub const PTHREAD_CANCEL_ENABLE: c_int = 0;
+pub const PTHREAD_CANCEL_DISABLE: c_int = 1;
+const enum_unnamed_36 = c_uint;
+pub const PTHREAD_CANCEL_DEFERRED: c_int = 0;
+pub const PTHREAD_CANCEL_ASYNCHRONOUS: c_int = 1;
+const enum_unnamed_37 = c_uint;
+pub extern fn pthread_create(noalias __newthread: [*c]pthread_t, noalias __attr: [*c]const pthread_attr_t, __start_routine: ?fn (?*anyopaque) callconv(.C) ?*anyopaque, noalias __arg: ?*anyopaque) c_int;
+pub extern fn pthread_exit(__retval: ?*anyopaque) noreturn;
+pub extern fn pthread_join(__th: pthread_t, __thread_return: [*c]?*anyopaque) c_int;
+pub extern fn pthread_detach(__th: pthread_t) c_int;
+pub extern fn pthread_self() pthread_t;
+pub fn pthread_equal(arg___thread1: pthread_t, arg___thread2: pthread_t) callconv(.C) c_int {
+ var __thread1 = arg___thread1;
+ var __thread2 = arg___thread2;
+ return @boolToInt(__thread1 == __thread2);
+}
+pub extern fn pthread_attr_init(__attr: [*c]pthread_attr_t) c_int;
+pub extern fn pthread_attr_destroy(__attr: [*c]pthread_attr_t) c_int;
+pub extern fn pthread_attr_getdetachstate(__attr: [*c]const pthread_attr_t, __detachstate: [*c]c_int) c_int;
+pub extern fn pthread_attr_setdetachstate(__attr: [*c]pthread_attr_t, __detachstate: c_int) c_int;
+pub extern fn pthread_attr_getguardsize(__attr: [*c]const pthread_attr_t, __guardsize: [*c]usize) c_int;
+pub extern fn pthread_attr_setguardsize(__attr: [*c]pthread_attr_t, __guardsize: usize) c_int;
+pub extern fn pthread_attr_getschedparam(noalias __attr: [*c]const pthread_attr_t, noalias __param: [*c]struct_sched_param) c_int;
+pub extern fn pthread_attr_setschedparam(noalias __attr: [*c]pthread_attr_t, noalias __param: [*c]const struct_sched_param) c_int;
+pub extern fn pthread_attr_getschedpolicy(noalias __attr: [*c]const pthread_attr_t, noalias __policy: [*c]c_int) c_int;
+pub extern fn pthread_attr_setschedpolicy(__attr: [*c]pthread_attr_t, __policy: c_int) c_int;
+pub extern fn pthread_attr_getinheritsched(noalias __attr: [*c]const pthread_attr_t, noalias __inherit: [*c]c_int) c_int;
+pub extern fn pthread_attr_setinheritsched(__attr: [*c]pthread_attr_t, __inherit: c_int) c_int;
+pub extern fn pthread_attr_getscope(noalias __attr: [*c]const pthread_attr_t, noalias __scope: [*c]c_int) c_int;
+pub extern fn pthread_attr_setscope(__attr: [*c]pthread_attr_t, __scope: c_int) c_int;
+pub extern fn pthread_attr_getstackaddr(noalias __attr: [*c]const pthread_attr_t, noalias __stackaddr: [*c]?*anyopaque) c_int;
+pub extern fn pthread_attr_setstackaddr(__attr: [*c]pthread_attr_t, __stackaddr: ?*anyopaque) c_int;
+pub extern fn pthread_attr_getstacksize(noalias __attr: [*c]const pthread_attr_t, noalias __stacksize: [*c]usize) c_int;
+pub extern fn pthread_attr_setstacksize(__attr: [*c]pthread_attr_t, __stacksize: usize) c_int;
+pub extern fn pthread_attr_getstack(noalias __attr: [*c]const pthread_attr_t, noalias __stackaddr: [*c]?*anyopaque, noalias __stacksize: [*c]usize) c_int;
+pub extern fn pthread_attr_setstack(__attr: [*c]pthread_attr_t, __stackaddr: ?*anyopaque, __stacksize: usize) c_int;
+pub extern fn pthread_setschedparam(__target_thread: pthread_t, __policy: c_int, __param: [*c]const struct_sched_param) c_int;
+pub extern fn pthread_getschedparam(__target_thread: pthread_t, noalias __policy: [*c]c_int, noalias __param: [*c]struct_sched_param) c_int;
+pub extern fn pthread_setschedprio(__target_thread: pthread_t, __prio: c_int) c_int;
+pub extern fn pthread_once(__once_control: [*c]pthread_once_t, __init_routine: ?fn () callconv(.C) void) c_int;
+pub extern fn pthread_setcancelstate(__state: c_int, __oldstate: [*c]c_int) c_int;
+pub extern fn pthread_setcanceltype(__type: c_int, __oldtype: [*c]c_int) c_int;
+pub extern fn pthread_cancel(__th: pthread_t) c_int;
+pub extern fn pthread_testcancel() void;
+pub const struct___cancel_jmp_buf_tag = extern struct {
+ __cancel_jmp_buf: __jmp_buf,
+ __mask_was_saved: c_int,
+};
+pub const __pthread_unwind_buf_t = extern struct {
+ __cancel_jmp_buf: [1]struct___cancel_jmp_buf_tag,
+ __pad: [4]?*anyopaque,
+};
+pub const struct___pthread_cleanup_frame = extern struct {
+ __cancel_routine: ?fn (?*anyopaque) callconv(.C) void,
+ __cancel_arg: ?*anyopaque,
+ __do_it: c_int,
+ __cancel_type: c_int,
+};
+pub extern fn __pthread_register_cancel(__buf: [*c]__pthread_unwind_buf_t) void;
+pub extern fn __pthread_unregister_cancel(__buf: [*c]__pthread_unwind_buf_t) void;
+pub extern fn __pthread_unwind_next(__buf: [*c]__pthread_unwind_buf_t) noreturn;
+pub extern fn pthread_mutex_init(__mutex: [*c]pthread_mutex_t, __mutexattr: [*c]const pthread_mutexattr_t) c_int;
+pub extern fn pthread_mutex_destroy(__mutex: [*c]pthread_mutex_t) c_int;
+pub extern fn pthread_mutex_trylock(__mutex: [*c]pthread_mutex_t) c_int;
+pub extern fn pthread_mutex_lock(__mutex: [*c]pthread_mutex_t) c_int;
+pub extern fn pthread_mutex_timedlock(noalias __mutex: [*c]pthread_mutex_t, noalias __abstime: [*c]const struct_timespec) c_int;
+pub extern fn pthread_mutex_unlock(__mutex: [*c]pthread_mutex_t) c_int;
+pub extern fn pthread_mutex_getprioceiling(noalias __mutex: [*c]const pthread_mutex_t, noalias __prioceiling: [*c]c_int) c_int;
+pub extern fn pthread_mutex_setprioceiling(noalias __mutex: [*c]pthread_mutex_t, __prioceiling: c_int, noalias __old_ceiling: [*c]c_int) c_int;
+pub extern fn pthread_mutex_consistent(__mutex: [*c]pthread_mutex_t) c_int;
+pub extern fn pthread_mutexattr_init(__attr: [*c]pthread_mutexattr_t) c_int;
+pub extern fn pthread_mutexattr_destroy(__attr: [*c]pthread_mutexattr_t) c_int;
+pub extern fn pthread_mutexattr_getpshared(noalias __attr: [*c]const pthread_mutexattr_t, noalias __pshared: [*c]c_int) c_int;
+pub extern fn pthread_mutexattr_setpshared(__attr: [*c]pthread_mutexattr_t, __pshared: c_int) c_int;
+pub extern fn pthread_mutexattr_gettype(noalias __attr: [*c]const pthread_mutexattr_t, noalias __kind: [*c]c_int) c_int;
+pub extern fn pthread_mutexattr_settype(__attr: [*c]pthread_mutexattr_t, __kind: c_int) c_int;
+pub extern fn pthread_mutexattr_getprotocol(noalias __attr: [*c]const pthread_mutexattr_t, noalias __protocol: [*c]c_int) c_int;
+pub extern fn pthread_mutexattr_setprotocol(__attr: [*c]pthread_mutexattr_t, __protocol: c_int) c_int;
+pub extern fn pthread_mutexattr_getprioceiling(noalias __attr: [*c]const pthread_mutexattr_t, noalias __prioceiling: [*c]c_int) c_int;
+pub extern fn pthread_mutexattr_setprioceiling(__attr: [*c]pthread_mutexattr_t, __prioceiling: c_int) c_int;
+pub extern fn pthread_mutexattr_getrobust(__attr: [*c]const pthread_mutexattr_t, __robustness: [*c]c_int) c_int;
+pub extern fn pthread_mutexattr_setrobust(__attr: [*c]pthread_mutexattr_t, __robustness: c_int) c_int;
+pub extern fn pthread_rwlock_init(noalias __rwlock: [*c]pthread_rwlock_t, noalias __attr: [*c]const pthread_rwlockattr_t) c_int;
+pub extern fn pthread_rwlock_destroy(__rwlock: [*c]pthread_rwlock_t) c_int;
+pub extern fn pthread_rwlock_rdlock(__rwlock: [*c]pthread_rwlock_t) c_int;
+pub extern fn pthread_rwlock_tryrdlock(__rwlock: [*c]pthread_rwlock_t) c_int;
+pub extern fn pthread_rwlock_timedrdlock(noalias __rwlock: [*c]pthread_rwlock_t, noalias __abstime: [*c]const struct_timespec) c_int;
+pub extern fn pthread_rwlock_wrlock(__rwlock: [*c]pthread_rwlock_t) c_int;
+pub extern fn pthread_rwlock_trywrlock(__rwlock: [*c]pthread_rwlock_t) c_int;
+pub extern fn pthread_rwlock_timedwrlock(noalias __rwlock: [*c]pthread_rwlock_t, noalias __abstime: [*c]const struct_timespec) c_int;
+pub extern fn pthread_rwlock_unlock(__rwlock: [*c]pthread_rwlock_t) c_int;
+pub extern fn pthread_rwlockattr_init(__attr: [*c]pthread_rwlockattr_t) c_int;
+pub extern fn pthread_rwlockattr_destroy(__attr: [*c]pthread_rwlockattr_t) c_int;
+pub extern fn pthread_rwlockattr_getpshared(noalias __attr: [*c]const pthread_rwlockattr_t, noalias __pshared: [*c]c_int) c_int;
+pub extern fn pthread_rwlockattr_setpshared(__attr: [*c]pthread_rwlockattr_t, __pshared: c_int) c_int;
+pub extern fn pthread_rwlockattr_getkind_np(noalias __attr: [*c]const pthread_rwlockattr_t, noalias __pref: [*c]c_int) c_int;
+pub extern fn pthread_rwlockattr_setkind_np(__attr: [*c]pthread_rwlockattr_t, __pref: c_int) c_int;
+pub extern fn pthread_cond_init(noalias __cond: [*c]pthread_cond_t, noalias __cond_attr: [*c]const pthread_condattr_t) c_int;
+pub extern fn pthread_cond_destroy(__cond: [*c]pthread_cond_t) c_int;
+pub extern fn pthread_cond_signal(__cond: [*c]pthread_cond_t) c_int;
+pub extern fn pthread_cond_broadcast(__cond: [*c]pthread_cond_t) c_int;
+pub extern fn pthread_cond_wait(noalias __cond: [*c]pthread_cond_t, noalias __mutex: [*c]pthread_mutex_t) c_int;
+pub extern fn pthread_cond_timedwait(noalias __cond: [*c]pthread_cond_t, noalias __mutex: [*c]pthread_mutex_t, noalias __abstime: [*c]const struct_timespec) c_int;
+pub extern fn pthread_condattr_init(__attr: [*c]pthread_condattr_t) c_int;
+pub extern fn pthread_condattr_destroy(__attr: [*c]pthread_condattr_t) c_int;
+pub extern fn pthread_condattr_getpshared(noalias __attr: [*c]const pthread_condattr_t, noalias __pshared: [*c]c_int) c_int;
+pub extern fn pthread_condattr_setpshared(__attr: [*c]pthread_condattr_t, __pshared: c_int) c_int;
+pub extern fn pthread_condattr_getclock(noalias __attr: [*c]const pthread_condattr_t, noalias __clock_id: [*c]__clockid_t) c_int;
+pub extern fn pthread_condattr_setclock(__attr: [*c]pthread_condattr_t, __clock_id: __clockid_t) c_int;
+pub extern fn pthread_spin_init(__lock: [*c]volatile pthread_spinlock_t, __pshared: c_int) c_int;
+pub extern fn pthread_spin_destroy(__lock: [*c]volatile pthread_spinlock_t) c_int;
+pub extern fn pthread_spin_lock(__lock: [*c]volatile pthread_spinlock_t) c_int;
+pub extern fn pthread_spin_trylock(__lock: [*c]volatile pthread_spinlock_t) c_int;
+pub extern fn pthread_spin_unlock(__lock: [*c]volatile pthread_spinlock_t) c_int;
+pub extern fn pthread_barrier_init(noalias __barrier: [*c]pthread_barrier_t, noalias __attr: [*c]const pthread_barrierattr_t, __count: c_uint) c_int;
+pub extern fn pthread_barrier_destroy(__barrier: [*c]pthread_barrier_t) c_int;
+pub extern fn pthread_barrier_wait(__barrier: [*c]pthread_barrier_t) c_int;
+pub extern fn pthread_barrierattr_init(__attr: [*c]pthread_barrierattr_t) c_int;
+pub extern fn pthread_barrierattr_destroy(__attr: [*c]pthread_barrierattr_t) c_int;
+pub extern fn pthread_barrierattr_getpshared(noalias __attr: [*c]const pthread_barrierattr_t, noalias __pshared: [*c]c_int) c_int;
+pub extern fn pthread_barrierattr_setpshared(__attr: [*c]pthread_barrierattr_t, __pshared: c_int) c_int;
+pub extern fn pthread_key_create(__key: [*c]pthread_key_t, __destr_function: ?fn (?*anyopaque) callconv(.C) void) c_int;
+pub extern fn pthread_key_delete(__key: pthread_key_t) c_int;
+pub extern fn pthread_getspecific(__key: pthread_key_t) ?*anyopaque;
+pub extern fn pthread_setspecific(__key: pthread_key_t, __pointer: ?*const anyopaque) c_int;
+pub extern fn pthread_getcpuclockid(__thread_id: pthread_t, __clock_id: [*c]__clockid_t) c_int;
+pub extern fn pthread_atfork(__prepare: ?fn () callconv(.C) void, __parent: ?fn () callconv(.C) void, __child: ?fn () callconv(.C) void) c_int;
+pub extern var scm_i_pthread_mutexattr_recursive: [1]pthread_mutexattr_t;
+pub extern var scm_tc16_thread: scm_t_bits;
+pub extern var scm_tc16_mutex: scm_t_bits;
+pub extern var scm_tc16_condvar: scm_t_bits;
+pub extern fn scm_spawn_thread(body: scm_t_catch_body, body_data: ?*anyopaque, handler: scm_t_catch_handler, handler_data: ?*anyopaque) SCM;
+pub extern fn scm_without_guile(func: ?fn (?*anyopaque) callconv(.C) ?*anyopaque, data: ?*anyopaque) ?*anyopaque;
+pub extern fn scm_with_guile(func: ?fn (?*anyopaque) callconv(.C) ?*anyopaque, data: ?*anyopaque) ?*anyopaque;
+pub extern fn scm_threads_prehistory(?*anyopaque) void;
+pub extern fn scm_init_threads() void;
+pub extern fn scm_init_threads_default_dynamic_state() void;
+pub extern fn scm_i_dynwind_pthread_mutex_lock_block_asyncs(mutex: [*c]pthread_mutex_t) void;
+pub extern fn scm_call_with_new_thread(thunk: SCM, handler: SCM) SCM;
+pub extern fn scm_yield() SCM;
+pub extern fn scm_cancel_thread(t: SCM) SCM;
+pub extern fn scm_join_thread(t: SCM) SCM;
+pub extern fn scm_join_thread_timed(t: SCM, timeout: SCM, timeoutval: SCM) SCM;
+pub extern fn scm_thread_p(t: SCM) SCM;
+pub extern fn scm_make_mutex() SCM;
+pub extern fn scm_make_recursive_mutex() SCM;
+pub extern fn scm_make_mutex_with_kind(kind: SCM) SCM;
+pub extern fn scm_lock_mutex(m: SCM) SCM;
+pub extern fn scm_timed_lock_mutex(m: SCM, timeout: SCM) SCM;
+pub extern fn scm_dynwind_lock_mutex(mutex: SCM) void;
+pub extern fn scm_try_mutex(m: SCM) SCM;
+pub extern fn scm_unlock_mutex(m: SCM) SCM;
+pub extern fn scm_mutex_p(o: SCM) SCM;
+pub extern fn scm_mutex_locked_p(m: SCM) SCM;
+pub extern fn scm_mutex_owner(m: SCM) SCM;
+pub extern fn scm_mutex_level(m: SCM) SCM;
+pub extern fn scm_make_condition_variable() SCM;
+pub extern fn scm_wait_condition_variable(cond: SCM, mutex: SCM) SCM;
+pub extern fn scm_timed_wait_condition_variable(cond: SCM, mutex: SCM, abstime: SCM) SCM;
+pub extern fn scm_signal_condition_variable(cond: SCM) SCM;
+pub extern fn scm_broadcast_condition_variable(cond: SCM) SCM;
+pub extern fn scm_condition_variable_p(o: SCM) SCM;
+pub extern fn scm_current_thread() SCM;
+pub extern fn scm_all_threads() SCM;
+pub extern fn scm_c_thread_exited_p(thread: SCM) c_int;
+pub extern fn scm_thread_exited_p(thread: SCM) SCM;
+pub extern var scm_i_misc_mutex: pthread_mutex_t;
+pub extern fn scm_pthread_mutex_lock(mutex: [*c]pthread_mutex_t) c_int;
+pub extern fn scm_dynwind_pthread_mutex_lock(mutex: [*c]pthread_mutex_t) void;
+pub extern fn scm_pthread_cond_wait(cond: [*c]pthread_cond_t, mutex: [*c]pthread_mutex_t) c_int;
+pub extern fn scm_pthread_cond_timedwait(cond: [*c]pthread_cond_t, mutex: [*c]pthread_mutex_t, abstime: [*c]const scm_t_timespec) c_int;
+pub extern fn scm_std_sleep(c_uint) c_uint;
+pub extern fn scm_std_usleep(c_ulong) c_ulong;
+pub extern fn scm_total_processor_count() SCM;
+pub extern fn scm_current_processor_count() SCM;
+pub extern fn scm_async_tick() void;
+pub extern fn scm_switch() void;
+pub extern fn scm_system_async_mark(a: SCM) SCM;
+pub extern fn scm_system_async_mark_for_thread(a: SCM, thread: SCM) SCM;
+pub extern fn scm_c_prepare_to_wait_on_fd(fd: c_int) c_int;
+pub extern fn scm_c_prepare_to_wait_on_cond(m: [*c]pthread_mutex_t, c: [*c]pthread_cond_t) c_int;
+pub extern fn scm_c_wait_finished() void;
+pub extern fn scm_noop(args: SCM) SCM;
+pub extern fn scm_call_with_blocked_asyncs(proc: SCM) SCM;
+pub extern fn scm_call_with_unblocked_asyncs(proc: SCM) SCM;
+pub extern fn scm_c_call_with_blocked_asyncs(p: ?fn (?*anyopaque) callconv(.C) ?*anyopaque, d: ?*anyopaque) ?*anyopaque;
+pub extern fn scm_c_call_with_unblocked_asyncs(p: ?fn (?*anyopaque) callconv(.C) ?*anyopaque, d: ?*anyopaque) ?*anyopaque;
+pub extern fn scm_dynwind_block_asyncs() void;
+pub extern fn scm_dynwind_unblock_asyncs() void;
+pub extern fn scm_i_prepare_to_wait([*c]scm_thread, ?*struct_scm_thread_wake_data) c_int;
+pub extern fn scm_i_wait_finished([*c]scm_thread) void;
+pub extern fn scm_i_prepare_to_wait_on_fd([*c]scm_thread, c_int) c_int;
+pub extern fn scm_i_prepare_to_wait_on_cond([*c]scm_thread, [*c]pthread_mutex_t, [*c]pthread_cond_t) c_int;
+pub extern fn scm_i_async_push(t: [*c]scm_thread, proc: SCM) void;
+pub extern fn scm_i_async_pop(t: [*c]scm_thread) SCM;
+pub extern fn scm_init_async() void;
+pub fn scm_is_atomic_box(arg_obj: SCM) callconv(.C) c_int {
+ var obj = arg_obj;
+ return @boolToInt(!((@bitCast(c_ulong, @as(c_long, @as(c_int, 6))) & @intCast(scm_t_bits, @ptrToInt(if (false) blk: {
+ const tmp = obj;
+ @intToPtr([*c]volatile SCM, @as(c_int, 0)).* = tmp;
+ break :blk tmp;
+ } else obj))) != 0) and ((@bitCast(c_ulong, @as(c_long, @as(c_int, 127))) & @intCast(scm_t_bits, @ptrToInt(if (false) blk: {
+ const tmp = (blk_1: {
+ const tmp_2 = @as(c_int, 0);
+ if (tmp_2 >= 0) break :blk_1 @ptrCast([*c]SCM, @alignCast(@import("std").meta.alignment(SCM), @ptrCast([*c]scm_t_cell, @alignCast(@import("std").meta.alignment(scm_t_cell), @intToPtr([*c]scm_t_bits, @intCast(scm_t_bits, @ptrToInt(if (false) blk_2: {
+ const tmp_3 = obj;
+ @intToPtr([*c]volatile SCM, @as(c_int, 0)).* = tmp_3;
+ break :blk_2 tmp_3;
+ } else obj))))))) + @intCast(usize, tmp_2) else break :blk_1 @ptrCast([*c]SCM, @alignCast(@import("std").meta.alignment(SCM), @ptrCast([*c]scm_t_cell, @alignCast(@import("std").meta.alignment(scm_t_cell), @intToPtr([*c]scm_t_bits, @intCast(scm_t_bits, @ptrToInt(if (false) blk_2: {
+ const tmp_3 = obj;
+ @intToPtr([*c]volatile SCM, @as(c_int, 0)).* = tmp_3;
+ break :blk_2 tmp_3;
+ } else obj))))))) - ~@bitCast(usize, @intCast(isize, tmp_2) +% -1);
+ }).*;
+ @intToPtr([*c]volatile SCM, @as(c_int, 0)).* = tmp;
+ break :blk tmp;
+ } else (blk: {
+ const tmp = @as(c_int, 0);
+ if (tmp >= 0) break :blk @ptrCast([*c]SCM, @alignCast(@import("std").meta.alignment(SCM), @ptrCast([*c]scm_t_cell, @alignCast(@import("std").meta.alignment(scm_t_cell), @intToPtr([*c]scm_t_bits, @intCast(scm_t_bits, @ptrToInt(if (false) blk_1: {
+ const tmp_2 = obj;
+ @intToPtr([*c]volatile SCM, @as(c_int, 0)).* = tmp_2;
+ break :blk_1 tmp_2;
+ } else obj))))))) + @intCast(usize, tmp) else break :blk @ptrCast([*c]SCM, @alignCast(@import("std").meta.alignment(SCM), @ptrCast([*c]scm_t_cell, @alignCast(@import("std").meta.alignment(scm_t_cell), @intToPtr([*c]scm_t_bits, @intCast(scm_t_bits, @ptrToInt(if (false) blk_1: {
+ const tmp_2 = obj;
+ @intToPtr([*c]volatile SCM, @as(c_int, 0)).* = tmp_2;
+ break :blk_1 tmp_2;
+ } else obj))))))) - ~@bitCast(usize, @intCast(isize, tmp) +% -1);
+ }).*))) == @bitCast(c_ulong, @as(c_long, @as(c_int, 55)))));
+}
+pub fn scm_atomic_box_loc(arg_obj: SCM) callconv(.C) [*c]SCM {
+ var obj = arg_obj;
+ return &(blk: {
+ const tmp = @as(c_int, 1);
+ if (tmp >= 0) break :blk @ptrCast([*c]SCM, @alignCast(@import("std").meta.alignment(SCM), @ptrCast([*c]scm_t_cell, @alignCast(@import("std").meta.alignment(scm_t_cell), @intToPtr([*c]scm_t_bits, @intCast(scm_t_bits, @ptrToInt(if (false) blk_1: {
+ const tmp_2 = obj;
+ @intToPtr([*c]volatile SCM, @as(c_int, 0)).* = tmp_2;
+ break :blk_1 tmp_2;
+ } else obj))))))) + @intCast(usize, tmp) else break :blk @ptrCast([*c]SCM, @alignCast(@import("std").meta.alignment(SCM), @ptrCast([*c]scm_t_cell, @alignCast(@import("std").meta.alignment(scm_t_cell), @intToPtr([*c]scm_t_bits, @intCast(scm_t_bits, @ptrToInt(if (false) blk_1: {
+ const tmp_2 = obj;
+ @intToPtr([*c]volatile SCM, @as(c_int, 0)).* = tmp_2;
+ break :blk_1 tmp_2;
+ } else obj))))))) - ~@bitCast(usize, @intCast(isize, tmp) +% -1);
+ }).*;
+}
+pub extern fn scm_list_to_bitvector(list: SCM) SCM;
+pub extern fn scm_bitvector_to_list(vec: SCM) SCM;
+pub extern fn scm_bitvector_copy(vec: SCM, start: SCM, end: SCM) SCM;
+pub extern fn scm_bitvector_position(v: SCM, item: SCM, start: SCM) SCM;
+pub extern fn scm_is_bitvector(obj: SCM) c_int;
+pub extern fn scm_c_make_bitvector(len: usize, fill: SCM) SCM;
+pub extern fn scm_c_bitvector_length(vec: SCM) usize;
+pub extern fn scm_c_bitvector_count(v: SCM) usize;
+pub extern fn scm_c_bitvector_bit_is_set(vec: SCM, idx: usize) c_int;
+pub extern fn scm_c_bitvector_bit_is_clear(vec: SCM, idx: usize) c_int;
+pub extern fn scm_c_bitvector_set_bit_x(vec: SCM, idx: usize) void;
+pub extern fn scm_c_bitvector_clear_bit_x(vec: SCM, idx: usize) void;
+pub extern fn scm_c_bitvector_set_bits_x(v: SCM, bits: SCM) void;
+pub extern fn scm_c_bitvector_clear_bits_x(v: SCM, bits: SCM) void;
+pub extern fn scm_c_bitvector_set_all_bits_x(vec: SCM) void;
+pub extern fn scm_c_bitvector_clear_all_bits_x(vec: SCM) void;
+pub extern fn scm_c_bitvector_flip_all_bits_x(vec: SCM) void;
+pub extern fn scm_c_bitvector_count_bits(v: SCM, bits: SCM) usize;
+pub extern fn scm_array_handle_bit_elements(h: [*c]scm_t_array_handle) [*c]const u32;
+pub extern fn scm_array_handle_bit_writable_elements(h: [*c]scm_t_array_handle) [*c]u32;
+pub extern fn scm_array_handle_bit_elements_offset(h: [*c]scm_t_array_handle) usize;
+pub extern fn scm_bitvector_elements(vec: SCM, h: [*c]scm_t_array_handle, offp: [*c]usize, lenp: [*c]usize, incp: [*c]isize) [*c]const u32;
+pub extern fn scm_bitvector_writable_elements(vec: SCM, h: [*c]scm_t_array_handle, offp: [*c]usize, lenp: [*c]usize, incp: [*c]isize) [*c]u32;
+pub extern fn scm_i_bitvector_bits(vec: SCM) [*c]u32;
+pub extern fn scm_i_is_mutable_bitvector(vec: SCM) c_int;
+pub extern fn scm_i_print_bitvector(vec: SCM, port: SCM, pstate: [*c]scm_print_state) c_int;
+pub extern fn scm_i_bitvector_equal_p(vec1: SCM, vec2: SCM) SCM;
+pub extern fn scm_init_bitvectors() void;
+pub extern const scm_i_array_element_type_sizes: [*c]const usize;
+pub extern fn scm_array_handle_uniform_element_size(h: [*c]scm_t_array_handle) usize;
+pub extern fn scm_array_handle_uniform_element_bit_size(h: [*c]scm_t_array_handle) usize;
+pub extern fn scm_array_handle_uniform_elements(h: [*c]scm_t_array_handle) ?*const anyopaque;
+pub extern fn scm_array_handle_uniform_writable_elements(h: [*c]scm_t_array_handle) ?*anyopaque;
+pub extern fn scm_init_uniform() void;
+pub extern var scm_endianness_big: SCM;
+pub extern var scm_endianness_little: SCM;
+pub extern fn scm_c_make_bytevector(usize) SCM;
+pub extern fn scm_is_bytevector(SCM) c_int;
+pub extern fn scm_c_bytevector_length(SCM) usize;
+pub extern fn scm_c_bytevector_ref(SCM, usize) u8;
+pub extern fn scm_c_bytevector_set_x(SCM, usize, u8) void;
+pub extern fn scm_make_bytevector(SCM, SCM) SCM;
+pub extern fn scm_native_endianness() SCM;
+pub extern fn scm_bytevector_p(SCM) SCM;
+pub extern fn scm_bytevector_length(SCM) SCM;
+pub extern fn scm_bytevector_eq_p(SCM, SCM) SCM;
+pub extern fn scm_bytevector_fill_x(SCM, SCM) SCM;
+pub extern fn scm_bytevector_copy_x(SCM, SCM, SCM, SCM, SCM) SCM;
+pub extern fn scm_bytevector_copy(SCM) SCM;
+pub extern fn scm_uniform_array_to_bytevector(SCM) SCM;
+pub extern fn scm_bytevector_to_u8_list(SCM) SCM;
+pub extern fn scm_u8_list_to_bytevector(SCM) SCM;
+pub extern fn scm_uint_list_to_bytevector(SCM, SCM, SCM) SCM;
+pub extern fn scm_bytevector_to_uint_list(SCM, SCM, SCM) SCM;
+pub extern fn scm_sint_list_to_bytevector(SCM, SCM, SCM) SCM;
+pub extern fn scm_bytevector_to_sint_list(SCM, SCM, SCM) SCM;
+pub extern fn scm_bytevector_u16_native_ref(SCM, SCM) SCM;
+pub extern fn scm_bytevector_s16_native_ref(SCM, SCM) SCM;
+pub extern fn scm_bytevector_u32_native_ref(SCM, SCM) SCM;
+pub extern fn scm_bytevector_s32_native_ref(SCM, SCM) SCM;
+pub extern fn scm_bytevector_u64_native_ref(SCM, SCM) SCM;
+pub extern fn scm_bytevector_s64_native_ref(SCM, SCM) SCM;
+pub extern fn scm_bytevector_u8_ref(SCM, SCM) SCM;
+pub extern fn scm_bytevector_s8_ref(SCM, SCM) SCM;
+pub extern fn scm_bytevector_uint_ref(SCM, SCM, SCM, SCM) SCM;
+pub extern fn scm_bytevector_sint_ref(SCM, SCM, SCM, SCM) SCM;
+pub extern fn scm_bytevector_u16_ref(SCM, SCM, SCM) SCM;
+pub extern fn scm_bytevector_s16_ref(SCM, SCM, SCM) SCM;
+pub extern fn scm_bytevector_u32_ref(SCM, SCM, SCM) SCM;
+pub extern fn scm_bytevector_s32_ref(SCM, SCM, SCM) SCM;
+pub extern fn scm_bytevector_u64_ref(SCM, SCM, SCM) SCM;
+pub extern fn scm_bytevector_s64_ref(SCM, SCM, SCM) SCM;
+pub extern fn scm_bytevector_u16_native_set_x(SCM, SCM, SCM) SCM;
+pub extern fn scm_bytevector_s16_native_set_x(SCM, SCM, SCM) SCM;
+pub extern fn scm_bytevector_u32_native_set_x(SCM, SCM, SCM) SCM;
+pub extern fn scm_bytevector_s32_native_set_x(SCM, SCM, SCM) SCM;
+pub extern fn scm_bytevector_u64_native_set_x(SCM, SCM, SCM) SCM;
+pub extern fn scm_bytevector_s64_native_set_x(SCM, SCM, SCM) SCM;
+pub extern fn scm_bytevector_u8_set_x(SCM, SCM, SCM) SCM;
+pub extern fn scm_bytevector_s8_set_x(SCM, SCM, SCM) SCM;
+pub extern fn scm_bytevector_uint_set_x(SCM, SCM, SCM, SCM, SCM) SCM;
+pub extern fn scm_bytevector_sint_set_x(SCM, SCM, SCM, SCM, SCM) SCM;
+pub extern fn scm_bytevector_u16_set_x(SCM, SCM, SCM, SCM) SCM;
+pub extern fn scm_bytevector_s16_set_x(SCM, SCM, SCM, SCM) SCM;
+pub extern fn scm_bytevector_u32_set_x(SCM, SCM, SCM, SCM) SCM;
+pub extern fn scm_bytevector_s32_set_x(SCM, SCM, SCM, SCM) SCM;
+pub extern fn scm_bytevector_u64_set_x(SCM, SCM, SCM, SCM) SCM;
+pub extern fn scm_bytevector_s64_set_x(SCM, SCM, SCM, SCM) SCM;
+pub extern fn scm_bytevector_ieee_single_ref(SCM, SCM, SCM) SCM;
+pub extern fn scm_bytevector_ieee_single_native_ref(SCM, SCM) SCM;
+pub extern fn scm_bytevector_ieee_single_set_x(SCM, SCM, SCM, SCM) SCM;
+pub extern fn scm_bytevector_ieee_single_native_set_x(SCM, SCM, SCM) SCM;
+pub extern fn scm_bytevector_ieee_double_ref(SCM, SCM, SCM) SCM;
+pub extern fn scm_bytevector_ieee_double_native_ref(SCM, SCM) SCM;
+pub extern fn scm_bytevector_ieee_double_set_x(SCM, SCM, SCM, SCM) SCM;
+pub extern fn scm_bytevector_ieee_double_native_set_x(SCM, SCM, SCM) SCM;
+pub extern fn scm_string_to_utf8(SCM) SCM;
+pub extern fn scm_string_to_utf16(SCM, SCM) SCM;
+pub extern fn scm_string_to_utf32(SCM, SCM) SCM;
+pub extern fn scm_utf8_to_string(SCM) SCM;
+pub extern fn scm_utf16_to_string(SCM, SCM) SCM;
+pub extern fn scm_utf32_to_string(SCM, SCM) SCM;
+pub extern fn scm_i_make_typed_bytevector(usize, scm_t_array_element_type) SCM;
+pub extern fn scm_c_take_typed_bytevector([*c]i8, usize, scm_t_array_element_type, SCM) SCM;
+pub extern fn scm_bootstrap_bytevectors() void;
+pub extern fn scm_init_bytevectors() void;
+pub extern var scm_i_native_endianness: SCM;
+pub extern fn scm_c_take_gc_bytevector([*c]i8, usize, SCM) SCM;
+pub extern fn scm_i_print_bytevector(SCM, SCM, [*c]scm_print_state) c_int;
+pub extern fn scm_c_shrink_bytevector(SCM, usize) SCM;
+pub extern fn scm_i_bytevector_generalized_set_x(SCM, usize, SCM) void;
+pub extern var scm_null_bytevector: SCM;
+pub const scm_t_contregs = extern struct {
+ jmpbuf: jmp_buf,
+ num_stack_items: usize,
+ root: SCM,
+ vm_cont: SCM,
+ offset: ptrdiff_t,
+ stack: [1]SCM_STACKITEM,
+};
+pub extern fn scm_i_make_continuation(thread: [*c]scm_thread, vm_cont: SCM) SCM;
+pub extern fn scm_i_reinstate_continuation(cont: SCM, mra: [*c]u8) noreturn;
+pub extern fn scm_i_continuation_to_frame(cont: SCM, frame: ?*struct_scm_frame) c_int;
+pub extern fn scm_i_contregs(contregs: SCM) [*c]scm_t_contregs;
+pub extern fn scm_c_with_continuation_barrier(func: ?fn (?*anyopaque) callconv(.C) ?*anyopaque, ?*anyopaque) ?*anyopaque;
+pub extern fn scm_with_continuation_barrier(proc: SCM) SCM;
+pub extern fn scm_i_with_continuation_barrier(body: scm_t_catch_body, body_data: ?*anyopaque, handler: scm_t_catch_handler, handler_data: ?*anyopaque, pre_unwind_handler: scm_t_catch_handler, pre_unwind_handler_data: ?*anyopaque) SCM;
+pub extern fn scm_init_continuations() void;
+pub extern fn scm_dynamic_link(fname: SCM) SCM;
+pub extern fn scm_dynamic_object_p(obj: SCM) SCM;
+pub extern fn scm_dynamic_pointer(name: SCM, obj: SCM) SCM;
+pub extern fn scm_dynamic_func(name: SCM, obj: SCM) SCM;
+pub extern fn scm_dynamic_call(name: SCM, obj: SCM) SCM;
+pub extern fn scm_init_dynamic_linking() void;
+pub extern fn scm_dynamic_wind(thunk1: SCM, thunk2: SCM, thunk3: SCM) SCM;
+pub extern fn scm_init_dynwind() void;
+pub extern fn scm_swap_bindings(vars: SCM, vals: SCM) void;
+pub const SCM_F_DYNWIND_REWINDABLE: c_int = 16;
+pub const scm_t_dynwind_flags = c_uint;
+pub const SCM_F_WIND_EXPLICITLY: c_int = 16;
+pub const scm_t_wind_flags = c_uint;
+pub extern fn scm_dynwind_begin(scm_t_dynwind_flags) void;
+pub extern fn scm_dynwind_end() void;
+pub extern fn scm_dynwind_unwind_handler(func: ?fn (?*anyopaque) callconv(.C) void, data: ?*anyopaque, scm_t_wind_flags) void;
+pub extern fn scm_dynwind_rewind_handler(func: ?fn (?*anyopaque) callconv(.C) void, data: ?*anyopaque, scm_t_wind_flags) void;
+pub extern fn scm_dynwind_unwind_handler_with_scm(func: ?fn (SCM) callconv(.C) void, data: SCM, scm_t_wind_flags) void;
+pub extern fn scm_dynwind_rewind_handler_with_scm(func: ?fn (SCM) callconv(.C) void, data: SCM, scm_t_wind_flags) void;
+pub extern fn scm_dynwind_free(mem: ?*anyopaque) void;
+pub extern fn scm_eq_p(x: SCM, y: SCM) SCM;
+pub extern fn scm_eqv_p(x: SCM, y: SCM) SCM;
+pub extern fn scm_equal_p(x: SCM, y: SCM) SCM;
+pub extern fn scm_init_eq() void;
+pub const scm_t_struct_finalize = ?fn (SCM) callconv(.C) void;
+pub extern var scm_standard_vtable_vtable: SCM;
+pub extern var scm_applicable_struct_vtable_vtable: SCM;
+pub extern var scm_applicable_struct_with_setter_vtable_vtable: SCM;
+pub extern fn scm_make_struct_layout(fields: SCM) SCM;
+pub extern fn scm_struct_p(x: SCM) SCM;
+pub extern fn scm_struct_vtable_p(x: SCM) SCM;
+pub extern fn scm_allocate_struct(vtable: SCM, n_words: SCM) SCM;
+pub extern fn scm_make_struct_simple(vtable: SCM, init: SCM) SCM;
+pub extern fn scm_make_struct_no_tail(vtable: SCM, init: SCM) SCM;
+pub extern fn scm_c_make_struct(vtable: SCM, n_tail: usize, n_inits: usize, init: scm_t_bits, ...) SCM;
+pub extern fn scm_c_make_structv(vtable: SCM, n_tail: usize, n_inits: usize, init: [*c]scm_t_bits) SCM;
+pub extern fn scm_make_vtable(fields: SCM, printer: SCM) SCM;
+pub extern fn scm_i_make_vtable_vtable(fields: SCM) SCM;
+pub extern fn scm_struct_ref(handle: SCM, pos: SCM) SCM;
+pub extern fn scm_struct_set_x(handle: SCM, pos: SCM, val: SCM) SCM;
+pub extern fn scm_struct_ref_unboxed(handle: SCM, pos: SCM) SCM;
+pub extern fn scm_struct_set_x_unboxed(handle: SCM, pos: SCM, val: SCM) SCM;
+pub extern fn scm_struct_vtable(handle: SCM) SCM;
+pub extern fn scm_struct_vtable_name(vtable: SCM) SCM;
+pub extern fn scm_set_struct_vtable_name_x(vtable: SCM, name: SCM) SCM;
+pub extern fn scm_print_struct(exp: SCM, port: SCM, [*c]scm_print_state) void;
+pub extern fn scm_i_struct_equalp(s1: SCM, s2: SCM) SCM;
+pub extern fn scm_struct_ihashq(SCM, c_ulong, ?*anyopaque) c_ulong;
+pub extern fn scm_i_struct_inherit_vtable_magic(vtable: SCM, obj: SCM) void;
+pub extern fn scm_init_struct() void;
+pub extern var scm_sym_and: SCM;
+pub extern var scm_sym_begin: SCM;
+pub extern var scm_sym_case: SCM;
+pub extern var scm_sym_cond: SCM;
+pub extern var scm_sym_define: SCM;
+pub extern var scm_sym_do: SCM;
+pub extern var scm_sym_if: SCM;
+pub extern var scm_sym_lambda: SCM;
+pub extern var scm_sym_let: SCM;
+pub extern var scm_sym_letstar: SCM;
+pub extern var scm_sym_letrec: SCM;
+pub extern var scm_sym_quote: SCM;
+pub extern var scm_sym_quasiquote: SCM;
+pub extern var scm_sym_unquote: SCM;
+pub extern var scm_sym_uq_splicing: SCM;
+pub extern var scm_sym_at: SCM;
+pub extern var scm_sym_atat: SCM;
+pub extern var scm_sym_delay: SCM;
+pub extern var scm_sym_eval_when: SCM;
+pub extern var scm_sym_arrow: SCM;
+pub extern var scm_sym_else: SCM;
+pub extern var scm_sym_apply: SCM;
+pub extern var scm_sym_set_x: SCM;
+pub extern var scm_sym_args: SCM;
+pub const SCM_M_SEQ: c_int = 0;
+pub const SCM_M_IF: c_int = 1;
+pub const SCM_M_LAMBDA: c_int = 2;
+pub const SCM_M_CAPTURE_ENV: c_int = 3;
+pub const SCM_M_LET: c_int = 4;
+pub const SCM_M_QUOTE: c_int = 5;
+pub const SCM_M_CAPTURE_MODULE: c_int = 6;
+pub const SCM_M_APPLY: c_int = 7;
+pub const SCM_M_CONT: c_int = 8;
+pub const SCM_M_CALL_WITH_VALUES: c_int = 9;
+pub const SCM_M_CALL: c_int = 10;
+pub const SCM_M_LEXICAL_REF: c_int = 11;
+pub const SCM_M_LEXICAL_SET: c_int = 12;
+pub const SCM_M_BOX_REF: c_int = 13;
+pub const SCM_M_BOX_SET: c_int = 14;
+pub const SCM_M_RESOLVE: c_int = 15;
+pub const SCM_M_CALL_WITH_PROMPT: c_int = 16;
+const enum_unnamed_38 = c_uint;
+pub extern fn scm_memoize_expression(exp: SCM) SCM;
+pub extern fn scm_unmemoize_expression(memoized: SCM) SCM;
+pub extern fn scm_memoized_typecode(sym: SCM) SCM;
+pub extern fn scm_sys_resolve_variable(loc: SCM, module: SCM) SCM;
+pub extern fn scm_init_memoize() void;
+pub const scm_t_trampoline_0 = ?fn (SCM) callconv(.C) SCM;
+pub const scm_t_trampoline_1 = ?fn (SCM, SCM) callconv(.C) SCM;
+pub const scm_t_trampoline_2 = ?fn (SCM, SCM, SCM) callconv(.C) SCM;
+pub extern fn scm_call_0(proc: SCM) SCM;
+pub extern fn scm_call_1(proc: SCM, arg1: SCM) SCM;
+pub extern fn scm_call_2(proc: SCM, arg1: SCM, arg2: SCM) SCM;
+pub extern fn scm_call_3(proc: SCM, arg1: SCM, arg2: SCM, arg3: SCM) SCM;
+pub extern fn scm_call_4(proc: SCM, arg1: SCM, arg2: SCM, arg3: SCM, arg4: SCM) SCM;
+pub extern fn scm_call_5(proc: SCM, arg1: SCM, arg2: SCM, arg3: SCM, arg4: SCM, arg5: SCM) SCM;
+pub extern fn scm_call_6(proc: SCM, arg1: SCM, arg2: SCM, arg3: SCM, arg4: SCM, arg5: SCM, arg6: SCM) SCM;
+pub extern fn scm_call_7(proc: SCM, arg1: SCM, arg2: SCM, arg3: SCM, arg4: SCM, arg5: SCM, arg6: SCM, arg7: SCM) SCM;
+pub extern fn scm_call_8(proc: SCM, arg1: SCM, arg2: SCM, arg3: SCM, arg4: SCM, arg5: SCM, arg6: SCM, arg7: SCM, arg8: SCM) SCM;
+pub extern fn scm_call_9(proc: SCM, arg1: SCM, arg2: SCM, arg3: SCM, arg4: SCM, arg5: SCM, arg6: SCM, arg7: SCM, arg8: SCM, arg9: SCM) SCM;
+pub extern fn scm_call_n(proc: SCM, argv: [*c]SCM, nargs: usize) SCM;
+pub extern fn scm_call(proc: SCM, ...) SCM;
+pub extern fn scm_apply_0(proc: SCM, args: SCM) SCM;
+pub extern fn scm_apply_1(proc: SCM, arg1: SCM, args: SCM) SCM;
+pub extern fn scm_apply_2(proc: SCM, arg1: SCM, arg2: SCM, args: SCM) SCM;
+pub extern fn scm_apply_3(proc: SCM, arg1: SCM, arg2: SCM, arg3: SCM, args: SCM) SCM;
+pub extern fn scm_nconc2last(lst: SCM) SCM;
+pub extern fn scm_apply(proc: SCM, arg1: SCM, args: SCM) SCM;
+pub extern fn scm_map(proc: SCM, arg1: SCM, args: SCM) SCM;
+pub extern fn scm_for_each(proc: SCM, arg1: SCM, args: SCM) SCM;
+pub extern fn scm_primitive_eval(exp: SCM) SCM;
+pub extern fn scm_eval(exp: SCM, module: SCM) SCM;
+pub extern fn scm_init_eval() void;
+pub extern fn scm_defined_p(sym: SCM, env: SCM) SCM;
+pub extern fn scm_self_evaluating_p(obj: SCM) SCM;
+pub extern fn scm_init_evalext() void;
+pub const scm_t_extension_init_func = ?fn (?*anyopaque) callconv(.C) void;
+pub extern fn scm_c_register_extension(lib: [*c]const u8, init: [*c]const u8, func: ?fn (?*anyopaque) callconv(.C) void, data: ?*anyopaque) void;
+pub extern fn scm_c_load_extension(lib: [*c]const u8, init: [*c]const u8) void;
+pub extern fn scm_load_extension(lib: SCM, init: SCM) SCM;
+pub extern fn scm_init_extensions() void;
+pub extern fn scm_add_fdes_finalizer_x(fd: SCM, finalizer: SCM) SCM;
+pub extern fn scm_remove_fdes_finalizer_x(fd: SCM, finalizer: SCM) SCM;
+pub extern fn scm_run_fdes_finalizers(fd: c_int) void;
+pub extern fn scm_register_fdes_finalizers() void;
+pub extern fn scm_add_feature(str: [*c]const u8) void;
+pub extern fn scm_program_arguments() SCM;
+pub extern fn scm_set_program_arguments(argc: c_int, argv: [*c][*c]u8, first: [*c]u8) void;
+pub extern fn scm_set_program_arguments_scm(lst: SCM) SCM;
+pub extern var scm_program_arguments_fluid: SCM;
+pub extern fn scm_init_feature() void;
+pub extern var scm_tc16_dir: scm_t_bits;
+pub extern fn scm_chown(object: SCM, owner: SCM, group: SCM) SCM;
+pub extern fn scm_chmod(object: SCM, mode: SCM) SCM;
+pub extern fn scm_umask(mode: SCM) SCM;
+pub extern fn scm_open_fdes(path: SCM, flags: SCM, mode: SCM) SCM;
+pub extern fn scm_open(path: SCM, flags: SCM, mode: SCM) SCM;
+pub extern fn scm_close(fd_or_port: SCM) SCM;
+pub extern fn scm_close_fdes(fd: SCM) SCM;
+pub extern fn scm_stat(object: SCM, exception_on_error: SCM) SCM;
+pub extern fn scm_link(oldpath: SCM, newpath: SCM) SCM;
+pub extern fn scm_rename(oldname: SCM, newname: SCM) SCM;
+pub extern fn scm_delete_file(str: SCM) SCM;
+pub extern fn scm_mkdir(path: SCM, mode: SCM) SCM;
+pub extern fn scm_rmdir(path: SCM) SCM;
+pub extern fn scm_directory_stream_p(obj: SCM) SCM;
+pub extern fn scm_opendir(dirname: SCM) SCM;
+pub extern fn scm_readdir(port: SCM) SCM;
+pub extern fn scm_rewinddir(port: SCM) SCM;
+pub extern fn scm_closedir(port: SCM) SCM;
+pub extern fn scm_chdir(str: SCM) SCM;
+pub extern fn scm_getcwd() SCM;
+pub extern fn scm_select(reads: SCM, writes: SCM, excepts: SCM, secs: SCM, msecs: SCM) SCM;
+pub extern fn scm_fcntl(object: SCM, cmd: SCM, value: SCM) SCM;
+pub extern fn scm_fsync(object: SCM) SCM;
+pub extern fn scm_symlink(oldpath: SCM, newpath: SCM) SCM;
+pub extern fn scm_readlink(path: SCM) SCM;
+pub extern fn scm_lstat(str: SCM) SCM;
+pub extern fn scm_copy_file(oldfile: SCM, newfile: SCM) SCM;
+pub extern fn scm_mkstemp(tmpl: SCM) SCM;
+pub extern fn scm_mkdtemp(tmpl: SCM) SCM;
+pub extern fn scm_dirname(filename: SCM) SCM;
+pub extern fn scm_basename(filename: SCM, suffix: SCM) SCM;
+pub extern fn scm_canonicalize_path(path: SCM) SCM;
+pub extern fn scm_sendfile(out: SCM, in: SCM, count: SCM, offset: SCM) SCM;
+pub extern fn scm_i_relativize_path(path: SCM, in_path: SCM) SCM;
+pub extern fn scm_init_filesys() void;
+pub const scm_t_finalizer_proc = ?fn (?*anyopaque, ?*anyopaque) callconv(.C) void;
+pub extern fn scm_i_set_finalizer(obj: ?*anyopaque, scm_t_finalizer_proc, data: ?*anyopaque) void;
+pub extern fn scm_i_add_finalizer(obj: ?*anyopaque, scm_t_finalizer_proc, data: ?*anyopaque) void;
+pub extern fn scm_i_add_resuscitator(obj: ?*anyopaque, scm_t_finalizer_proc, data: ?*anyopaque) void;
+pub extern fn scm_i_finalizer_pre_fork() void;
+pub extern fn scm_i_register_async_gc_callback(callback: ?fn () callconv(.C) void) void;
+pub extern fn scm_set_automatic_finalization_enabled(enabled_p: c_int) c_int;
+pub extern fn scm_run_finalizers() c_int;
+pub extern fn scm_init_finalizers() void;
+pub extern fn scm_init_finalizer_thread() void;
+pub extern fn scm_vector_p(x: SCM) SCM;
+pub extern fn scm_vector_length(v: SCM) SCM;
+pub extern fn scm_vector(l: SCM) SCM;
+pub extern fn scm_vector_ref(v: SCM, k: SCM) SCM;
+pub extern fn scm_vector_set_x(v: SCM, k: SCM, obj: SCM) SCM;
+pub extern fn scm_make_vector(k: SCM, fill: SCM) SCM;
+pub extern fn scm_vector_to_list(v: SCM) SCM;
+pub extern fn scm_vector_fill_x(v: SCM, fill_x: SCM) SCM;
+pub extern fn scm_vector_move_left_x(vec1: SCM, start1: SCM, end1: SCM, vec2: SCM, start2: SCM) SCM;
+pub extern fn scm_vector_move_right_x(vec1: SCM, start1: SCM, end1: SCM, vec2: SCM, start2: SCM) SCM;
+pub extern fn scm_vector_copy(vec: SCM) SCM;
+pub extern fn scm_vector_copy_partial(vec: SCM, start: SCM, end: SCM) SCM;
+pub extern fn scm_vector_copy_x(dst: SCM, at: SCM, src: SCM, start: SCM, end: SCM) SCM;
+pub extern fn scm_is_vector(obj: SCM) c_int;
+pub extern fn scm_c_make_vector(len: usize, fill: SCM) SCM;
+pub extern fn scm_c_vector_length(vec: SCM) usize;
+pub extern fn scm_c_vector_ref(vec: SCM, k: usize) SCM;
+pub extern fn scm_c_vector_set_x(vec: SCM, k: usize, obj: SCM) void;
+pub extern fn scm_vector_elements(array: SCM, h: [*c]scm_t_array_handle, lenp: [*c]usize, incp: [*c]isize) [*c]const SCM;
+pub extern fn scm_vector_writable_elements(array: SCM, h: [*c]scm_t_array_handle, lenp: [*c]usize, incp: [*c]isize) [*c]SCM;
+pub extern fn scm_i_vector_equal_p(x: SCM, y: SCM) SCM;
+pub extern fn scm_init_vectors() void;
+pub extern fn scm_make_fluid() SCM;
+pub extern fn scm_make_fluid_with_default(dflt: SCM) SCM;
+pub extern fn scm_make_unbound_fluid() SCM;
+pub extern fn scm_make_thread_local_fluid(dflt: SCM) SCM;
+pub extern fn scm_is_fluid(obj: SCM) c_int;
+pub extern fn scm_fluid_p(fl: SCM) SCM;
+pub extern fn scm_fluid_thread_local_p(fluid: SCM) SCM;
+pub extern fn scm_fluid_ref(fluid: SCM) SCM;
+pub extern fn scm_fluid_ref_star(fluid: SCM, depth: SCM) SCM;
+pub extern fn scm_fluid_set_x(fluid: SCM, value: SCM) SCM;
+pub extern fn scm_fluid_unset_x(fluid: SCM) SCM;
+pub extern fn scm_fluid_bound_p(fluid: SCM) SCM;
+pub extern fn scm_i_fluid_ref(thread: [*c]scm_thread, fluid: SCM) SCM;
+pub extern fn scm_swap_fluid(fluid: SCM, value_box: SCM, dynamic_state: ?*scm_t_dynamic_state) void;
+pub extern fn scm_c_with_fluids(fluids: SCM, vals: SCM, cproc: ?fn (?*anyopaque) callconv(.C) SCM, cdata: ?*anyopaque) SCM;
+pub extern fn scm_c_with_fluid(fluid: SCM, val: SCM, cproc: ?fn (?*anyopaque) callconv(.C) SCM, cdata: ?*anyopaque) SCM;
+pub extern fn scm_with_fluids(fluids: SCM, vals: SCM, thunk: SCM) SCM;
+pub extern fn scm_with_fluid(fluid: SCM, val: SCM, thunk: SCM) SCM;
+pub extern fn scm_dynwind_fluid(fluid: SCM, value: SCM) void;
+pub extern fn scm_dynamic_state_p(obj: SCM) SCM;
+pub extern fn scm_is_dynamic_state(obj: SCM) c_int;
+pub extern fn scm_current_dynamic_state() SCM;
+pub extern fn scm_set_current_dynamic_state(state: SCM) SCM;
+pub extern fn scm_dynwind_current_dynamic_state(state: SCM) void;
+pub extern fn scm_c_with_dynamic_state(state: SCM, func: ?fn (?*anyopaque) callconv(.C) ?*anyopaque, data: ?*anyopaque) ?*anyopaque;
+pub extern fn scm_with_dynamic_state(state: SCM, proc: SCM) SCM;
+pub extern fn scm_dynamic_state_ref(state: SCM, fluid: SCM, dflt: SCM) SCM;
+pub extern fn scm_i_make_initial_dynamic_state() SCM;
+pub extern fn scm_i_fluid_print(exp: SCM, port: SCM, pstate: [*c]scm_print_state) void;
+pub extern fn scm_i_dynamic_state_print(exp: SCM, port: SCM, pstate: [*c]scm_print_state) void;
+pub extern fn scm_init_fluids() void;
+pub const SCM_FOREIGN_TYPE_VOID: c_int = 0;
+pub const SCM_FOREIGN_TYPE_FLOAT: c_int = 1;
+pub const SCM_FOREIGN_TYPE_DOUBLE: c_int = 2;
+pub const SCM_FOREIGN_TYPE_UINT8: c_int = 3;
+pub const SCM_FOREIGN_TYPE_INT8: c_int = 4;
+pub const SCM_FOREIGN_TYPE_UINT16: c_int = 5;
+pub const SCM_FOREIGN_TYPE_INT16: c_int = 6;
+pub const SCM_FOREIGN_TYPE_UINT32: c_int = 7;
+pub const SCM_FOREIGN_TYPE_INT32: c_int = 8;
+pub const SCM_FOREIGN_TYPE_UINT64: c_int = 9;
+pub const SCM_FOREIGN_TYPE_INT64: c_int = 10;
+pub const SCM_FOREIGN_TYPE_LAST: c_int = 10;
+pub const enum_scm_t_foreign_type = c_uint;
+pub const scm_t_foreign_type = enum_scm_t_foreign_type;
+pub const scm_t_pointer_finalizer = ?fn (?*anyopaque) callconv(.C) void;
+pub extern fn scm_to_pointer(pointer: SCM) ?*anyopaque;
+pub extern fn scm_from_pointer(?*anyopaque, scm_t_pointer_finalizer) SCM;
+pub extern fn scm_alignof(@"type": SCM) SCM;
+pub extern fn scm_sizeof(@"type": SCM) SCM;
+pub extern fn scm_pointer_address(pointer: SCM) SCM;
+pub extern fn scm_pointer_to_scm(pointer: SCM) SCM;
+pub extern fn scm_scm_to_pointer(scm: SCM) SCM;
+pub extern fn scm_pointer_to_bytevector(pointer: SCM, @"type": SCM, offset: SCM, len: SCM) SCM;
+pub extern fn scm_set_pointer_finalizer_x(pointer: SCM, finalizer: SCM) SCM;
+pub extern fn scm_bytevector_to_pointer(bv: SCM, offset: SCM) SCM;
+pub extern fn scm_pointer_p(obj: SCM) SCM;
+pub extern fn scm_make_pointer(address: SCM, finalizer: SCM) SCM;
+pub extern fn scm_i_pointer_print(pointer: SCM, port: SCM, pstate: [*c]scm_print_state) void;
+pub extern fn scm_dereference_pointer(pointer: SCM) SCM;
+pub extern fn scm_string_to_pointer(string: SCM, encoding: SCM) SCM;
+pub extern fn scm_pointer_to_string(pointer: SCM, length: SCM, encoding: SCM) SCM;
+pub extern fn scm_pointer_to_procedure(return_type: SCM, func_ptr: SCM, arg_types: SCM) SCM;
+pub extern fn scm_pointer_to_procedure_with_errno(return_type: SCM, func_ptr: SCM, arg_types: SCM) SCM;
+pub extern fn scm_procedure_to_pointer(return_type: SCM, func_ptr: SCM, arg_types: SCM) SCM;
+pub extern fn scm_i_foreign_call(cif_scm: SCM, pointer_scm: SCM, errno_ret: [*c]c_int, argv: [*c]const union_scm_vm_stack_element) SCM;
+pub extern fn scm_register_foreign() void;
+pub extern fn scm_make_foreign_object_type(name: SCM, slot_names: SCM, finalizer: scm_t_struct_finalize) SCM;
+pub extern fn scm_assert_foreign_object_type(@"type": SCM, val: SCM) void;
+pub extern fn scm_make_foreign_object_0(@"type": SCM) SCM;
+pub extern fn scm_make_foreign_object_1(@"type": SCM, val0: ?*anyopaque) SCM;
+pub extern fn scm_make_foreign_object_2(@"type": SCM, val0: ?*anyopaque, val1: ?*anyopaque) SCM;
+pub extern fn scm_make_foreign_object_3(@"type": SCM, val0: ?*anyopaque, val1: ?*anyopaque, val2: ?*anyopaque) SCM;
+pub extern fn scm_make_foreign_object_n(@"type": SCM, n: usize, vals: [*c]?*anyopaque) SCM;
+pub extern fn scm_foreign_object_ref(obj: SCM, n: usize) ?*anyopaque;
+pub extern fn scm_foreign_object_set_x(obj: SCM, n: usize, val: ?*anyopaque) void;
+pub extern fn scm_foreign_object_unsigned_ref(obj: SCM, n: usize) scm_t_bits;
+pub extern fn scm_foreign_object_unsigned_set_x(obj: SCM, n: usize, val: scm_t_bits) void;
+pub extern fn scm_foreign_object_signed_ref(obj: SCM, n: usize) scm_t_signed_bits;
+pub extern fn scm_foreign_object_signed_set_x(obj: SCM, n: usize, val: scm_t_signed_bits) void;
+pub extern fn scm_register_foreign_object() void;
+pub const SCM_FAILED_CONVERSION_ERROR: c_int = 0;
+pub const SCM_FAILED_CONVERSION_QUESTION_MARK: c_int = 1;
+pub const SCM_FAILED_CONVERSION_ESCAPE_SEQUENCE: c_int = 2;
+pub const scm_t_string_failed_conversion_handler = c_uint;
+pub extern var scm_nullstr: SCM;
+pub extern fn scm_i_default_string_failed_conversion_handler() scm_t_string_failed_conversion_handler;
+pub fn scm_is_string(arg_x: SCM) callconv(.C) c_int {
+ var x = arg_x;
+ return @boolToInt(!((@bitCast(c_ulong, @as(c_long, @as(c_int, 6))) & @intCast(scm_t_bits, @ptrToInt(if (false) blk: {
+ const tmp = x;
+ @intToPtr([*c]volatile SCM, @as(c_int, 0)).* = tmp;
+ break :blk tmp;
+ } else x))) != 0) and ((@bitCast(c_ulong, @as(c_long, @as(c_int, 127))) & @intCast(scm_t_bits, @ptrToInt(if (false) blk: {
+ const tmp = (blk_1: {
+ const tmp_2 = @as(c_int, 0);
+ if (tmp_2 >= 0) break :blk_1 @ptrCast([*c]SCM, @alignCast(@import("std").meta.alignment(SCM), @ptrCast([*c]scm_t_cell, @alignCast(@import("std").meta.alignment(scm_t_cell), @intToPtr([*c]scm_t_bits, @intCast(scm_t_bits, @ptrToInt(if (false) blk_2: {
+ const tmp_3 = x;
+ @intToPtr([*c]volatile SCM, @as(c_int, 0)).* = tmp_3;
+ break :blk_2 tmp_3;
+ } else x))))))) + @intCast(usize, tmp_2) else break :blk_1 @ptrCast([*c]SCM, @alignCast(@import("std").meta.alignment(SCM), @ptrCast([*c]scm_t_cell, @alignCast(@import("std").meta.alignment(scm_t_cell), @intToPtr([*c]scm_t_bits, @intCast(scm_t_bits, @ptrToInt(if (false) blk_2: {
+ const tmp_3 = x;
+ @intToPtr([*c]volatile SCM, @as(c_int, 0)).* = tmp_3;
+ break :blk_2 tmp_3;
+ } else x))))))) - ~@bitCast(usize, @intCast(isize, tmp_2) +% -1);
+ }).*;
+ @intToPtr([*c]volatile SCM, @as(c_int, 0)).* = tmp;
+ break :blk tmp;
+ } else (blk: {
+ const tmp = @as(c_int, 0);
+ if (tmp >= 0) break :blk @ptrCast([*c]SCM, @alignCast(@import("std").meta.alignment(SCM), @ptrCast([*c]scm_t_cell, @alignCast(@import("std").meta.alignment(scm_t_cell), @intToPtr([*c]scm_t_bits, @intCast(scm_t_bits, @ptrToInt(if (false) blk_1: {
+ const tmp_2 = x;
+ @intToPtr([*c]volatile SCM, @as(c_int, 0)).* = tmp_2;
+ break :blk_1 tmp_2;
+ } else x))))))) + @intCast(usize, tmp) else break :blk @ptrCast([*c]SCM, @alignCast(@import("std").meta.alignment(SCM), @ptrCast([*c]scm_t_cell, @alignCast(@import("std").meta.alignment(scm_t_cell), @intToPtr([*c]scm_t_bits, @intCast(scm_t_bits, @ptrToInt(if (false) blk_1: {
+ const tmp_2 = x;
+ @intToPtr([*c]volatile SCM, @as(c_int, 0)).* = tmp_2;
+ break :blk_1 tmp_2;
+ } else x))))))) - ~@bitCast(usize, @intCast(isize, tmp) +% -1);
+ }).*))) == @bitCast(c_ulong, @as(c_long, @as(c_int, 21)))));
+}
+pub extern fn scm_string_p(x: SCM) SCM;
+pub extern fn scm_string(chrs: SCM) SCM;
+pub extern fn scm_make_string(k: SCM, chr: SCM) SCM;
+pub extern fn scm_string_length(str: SCM) SCM;
+pub extern fn scm_string_utf8_length(str: SCM) SCM;
+pub extern fn scm_string_bytes_per_char(str: SCM) SCM;
+pub extern fn scm_string_ref(str: SCM, k: SCM) SCM;
+pub extern fn scm_string_set_x(str: SCM, k: SCM, chr: SCM) SCM;
+pub extern fn scm_substring(str: SCM, start: SCM, end: SCM) SCM;
+pub extern fn scm_substring_read_only(str: SCM, start: SCM, end: SCM) SCM;
+pub extern fn scm_substring_shared(str: SCM, start: SCM, end: SCM) SCM;
+pub extern fn scm_substring_copy(str: SCM, start: SCM, end: SCM) SCM;
+pub extern fn scm_string_append(args: SCM) SCM;
+pub extern fn scm_from_stringn(str: [*c]const u8, len: usize, encoding: [*c]const u8, handler: scm_t_string_failed_conversion_handler) SCM;
+pub extern fn scm_c_make_string(len: usize, chr: SCM) SCM;
+pub extern fn scm_c_string_length(str: SCM) usize;
+pub extern fn scm_c_string_utf8_length(str: SCM) usize;
+pub extern fn scm_c_symbol_length(sym: SCM) usize;
+pub extern fn scm_c_string_ref(str: SCM, pos: usize) SCM;
+pub extern fn scm_c_string_set_x(str: SCM, pos: usize, chr: SCM) void;
+pub extern fn scm_c_substring(str: SCM, start: usize, end: usize) SCM;
+pub extern fn scm_c_substring_read_only(str: SCM, start: usize, end: usize) SCM;
+pub extern fn scm_c_substring_shared(str: SCM, start: usize, end: usize) SCM;
+pub extern fn scm_c_substring_copy(str: SCM, start: usize, end: usize) SCM;
+pub extern fn scm_from_locale_string(str: [*c]const u8) SCM;
+pub extern fn scm_from_locale_stringn(str: [*c]const u8, len: usize) SCM;
+pub extern fn scm_take_locale_string(str: [*c]u8) SCM;
+pub extern fn scm_take_locale_stringn(str: [*c]u8, len: usize) SCM;
+pub extern fn scm_to_locale_string(str: SCM) [*c]u8;
+pub extern fn scm_to_locale_stringn(str: SCM, lenp: [*c]usize) [*c]u8;
+pub extern fn scm_from_latin1_string(str: [*c]const u8) SCM;
+pub extern fn scm_from_latin1_stringn(str: [*c]const u8, len: usize) SCM;
+pub extern fn scm_to_latin1_string(str: SCM) [*c]u8;
+pub extern fn scm_to_latin1_stringn(str: SCM, lenp: [*c]usize) [*c]u8;
+pub extern fn scm_to_utf8_string(str: SCM) [*c]u8;
+pub extern fn scm_to_utf8_stringn(str: SCM, lenp: [*c]usize) [*c]u8;
+pub extern fn scm_from_utf8_string(str: [*c]const u8) SCM;
+pub extern fn scm_from_utf8_stringn(str: [*c]const u8, len: usize) SCM;
+pub extern fn scm_to_utf32_string(str: SCM) [*c]scm_t_wchar;
+pub extern fn scm_to_utf32_stringn(str: SCM, lenp: [*c]usize) [*c]scm_t_wchar;
+pub extern fn scm_from_utf32_string(str: [*c]const scm_t_wchar) SCM;
+pub extern fn scm_from_utf32_stringn(str: [*c]const scm_t_wchar, len: usize) SCM;
+pub extern fn scm_to_port_string(str: SCM, port: SCM) [*c]u8;
+pub extern fn scm_to_port_stringn(str: SCM, lenp: [*c]usize, port: SCM) [*c]u8;
+pub extern fn scm_from_port_string(str: [*c]const u8, port: SCM) SCM;
+pub extern fn scm_from_port_stringn(str: [*c]const u8, len: usize, port: SCM) SCM;
+pub extern fn scm_to_stringn(str: SCM, lenp: [*c]usize, encoding: [*c]const u8, handler: scm_t_string_failed_conversion_handler) [*c]u8;
+pub extern fn scm_to_locale_stringbuf(str: SCM, buf: [*c]u8, max_len: usize) usize;
+pub extern fn scm_string_normalize_nfd(str: SCM) SCM;
+pub extern fn scm_string_normalize_nfkd(str: SCM) SCM;
+pub extern fn scm_string_normalize_nfc(str: SCM) SCM;
+pub extern fn scm_string_normalize_nfkc(str: SCM) SCM;
+pub extern fn scm_makfromstrs(argc: c_int, argv: [*c][*c]u8) SCM;
+pub extern fn scm_i_print_stringbuf(exp: SCM, port: SCM, pstate: [*c]scm_print_state) void;
+pub extern fn scm_i_make_string(len: usize, datap: [*c][*c]u8, read_only_p: c_int) SCM;
+pub extern fn scm_i_make_wide_string(len: usize, datap: [*c][*c]scm_t_wchar, read_only_p: c_int) SCM;
+pub extern fn scm_i_substring(str: SCM, start: usize, end: usize) SCM;
+pub extern fn scm_i_substring_read_only(str: SCM, start: usize, end: usize) SCM;
+pub extern fn scm_i_substring_shared(str: SCM, start: usize, end: usize) SCM;
+pub extern fn scm_i_substring_copy(str: SCM, start: usize, end: usize) SCM;
+pub extern fn scm_i_string_length(str: SCM) usize;
+pub extern fn scm_i_string_is_mutable(str: SCM) c_int;
+pub extern fn scm_i_string_chars(str: SCM) [*c]const u8;
+pub extern fn scm_i_string_writable_chars(str: SCM) [*c]u8;
+pub extern fn scm_i_string_wide_chars(str: SCM) [*c]const scm_t_wchar;
+pub extern fn scm_i_string_data(str: SCM) ?*const anyopaque;
+pub extern fn scm_i_string_start_writing(str: SCM) SCM;
+pub extern fn scm_i_string_stop_writing() void;
+pub extern fn scm_i_is_narrow_string(str: SCM) c_int;
+pub extern fn scm_i_string_ref(str: SCM, x: usize) scm_t_wchar;
+pub extern fn scm_i_string_contains_char(str: SCM, c: u8) c_int;
+pub extern fn scm_i_string_strcmp(sstr: SCM, start_x: usize, cstr: [*c]const u8) c_int;
+pub extern fn scm_i_string_set_x(str: SCM, p: usize, chr: scm_t_wchar) void;
+pub extern fn scm_i_make_symbol(name: SCM, flags: scm_t_bits, hash: c_ulong) SCM;
+pub extern fn scm_i_symbol_chars(sym: SCM) [*c]const u8;
+pub extern fn scm_i_symbol_wide_chars(sym: SCM) [*c]const scm_t_wchar;
+pub extern fn scm_i_symbol_length(sym: SCM) usize;
+pub extern fn scm_i_is_narrow_symbol(str: SCM) c_int;
+pub extern fn scm_i_try_narrow_string(str: SCM) c_int;
+pub extern fn scm_i_symbol_substring(sym: SCM, start: usize, end: usize) SCM;
+pub extern fn scm_i_symbol_ref(sym: SCM, x: usize) scm_t_wchar;
+pub extern fn scm_encoding_error(subr: [*c]const u8, err: c_int, message: [*c]const u8, port: SCM, chr: SCM) void;
+pub extern fn scm_decoding_error(subr: [*c]const u8, err: c_int, message: [*c]const u8, port: SCM) void;
+pub extern fn scm_i_allocate_string_pointers(list: SCM) [*c][*c]u8;
+pub extern fn scm_i_get_substring_spec(len: usize, start: SCM, cstart: [*c]usize, end: SCM, cend: [*c]usize) void;
+pub extern fn scm_sys_string_dump(SCM) SCM;
+pub extern fn scm_sys_symbol_dump(SCM) SCM;
+pub extern fn scm_init_strings() void;
+pub extern var scm_i_port_weak_set: SCM;
+pub const struct_scm_t_port_type = opaque {};
+pub const scm_t_port_type = struct_scm_t_port_type;
+pub const struct_scm_t_port = opaque {};
+pub const scm_t_port = struct_scm_t_port;
+pub extern fn scm_make_port_type(name: [*c]u8, read: ?fn (SCM, SCM, usize, usize) callconv(.C) usize, write: ?fn (SCM, SCM, usize, usize) callconv(.C) usize) ?*scm_t_port_type;
+pub extern fn scm_set_port_scm_read(ptob: ?*scm_t_port_type, read: SCM) void;
+pub extern fn scm_set_port_scm_write(ptob: ?*scm_t_port_type, write: SCM) void;
+pub extern fn scm_set_port_read_wait_fd(ptob: ?*scm_t_port_type, wait_fd: ?fn (SCM) callconv(.C) c_int) void;
+pub extern fn scm_set_port_write_wait_fd(ptob: ?*scm_t_port_type, wait_fd: ?fn (SCM) callconv(.C) c_int) void;
+pub extern fn scm_set_port_print(ptob: ?*scm_t_port_type, print: ?fn (SCM, SCM, [*c]scm_print_state) callconv(.C) c_int) void;
+pub extern fn scm_set_port_close(ptob: ?*scm_t_port_type, close: ?fn (SCM) callconv(.C) void) void;
+pub extern fn scm_set_port_needs_close_on_gc(ptob: ?*scm_t_port_type, needs_close_p: c_int) void;
+pub extern fn scm_set_port_seek(ptob: ?*scm_t_port_type, seek: ?fn (SCM, scm_t_off, c_int) callconv(.C) scm_t_off) void;
+pub extern fn scm_set_port_truncate(ptob: ?*scm_t_port_type, truncate: ?fn (SCM, scm_t_off) callconv(.C) void) void;
+pub extern fn scm_set_port_input_waiting(ptob: ?*scm_t_port_type, input_waiting: ?fn (SCM) callconv(.C) c_int) void;
+pub extern fn scm_set_port_get_natural_buffer_sizes(ptob: ?*scm_t_port_type, get_natural_buffer_sizes: ?fn (SCM, [*c]usize, [*c]usize) callconv(.C) void) void;
+pub extern fn scm_set_port_random_access_p(ptob: ?*scm_t_port_type, random_access_p: ?fn (SCM) callconv(.C) c_int) void;
+pub extern fn scm_current_input_port() SCM;
+pub extern fn scm_current_output_port() SCM;
+pub extern fn scm_current_error_port() SCM;
+pub extern fn scm_current_warning_port() SCM;
+pub extern fn scm_current_load_port() SCM;
+pub extern fn scm_set_current_input_port(port: SCM) SCM;
+pub extern fn scm_set_current_output_port(port: SCM) SCM;
+pub extern fn scm_set_current_error_port(port: SCM) SCM;
+pub extern fn scm_set_current_warning_port(port: SCM) SCM;
+pub extern fn scm_dynwind_current_input_port(port: SCM) void;
+pub extern fn scm_dynwind_current_output_port(port: SCM) void;
+pub extern fn scm_dynwind_current_error_port(port: SCM) void;
+pub extern fn scm_i_dynwind_current_load_port(port: SCM) void;
+pub extern fn scm_i_mode_bits(modes: SCM) c_long;
+pub extern fn scm_mode_bits(modes: [*c]u8) c_long;
+pub extern fn scm_port_mode(port: SCM) SCM;
+pub extern fn scm_c_make_port_with_encoding(ptob: ?*scm_t_port_type, mode_bits: c_ulong, encoding: SCM, conversion_strategy: SCM, stream: scm_t_bits) SCM;
+pub extern fn scm_c_make_port(ptob: ?*scm_t_port_type, mode_bits: c_ulong, stream: scm_t_bits) SCM;
+pub extern fn scm_port_p(x: SCM) SCM;
+pub extern fn scm_input_port_p(x: SCM) SCM;
+pub extern fn scm_output_port_p(x: SCM) SCM;
+pub extern fn scm_port_closed_p(port: SCM) SCM;
+pub extern fn scm_eof_object_p(x: SCM) SCM;
+pub extern fn scm_close_port(port: SCM) SCM;
+pub extern fn scm_close_input_port(port: SCM) SCM;
+pub extern fn scm_close_output_port(port: SCM) SCM;
+pub extern fn scm_i_string_failed_conversion_handler(conversion_strategy: SCM) scm_t_string_failed_conversion_handler;
+pub extern fn scm_i_default_port_encoding() SCM;
+pub extern fn scm_i_set_default_port_encoding(encoding: [*c]const u8) void;
+pub extern fn scm_i_default_port_conversion_strategy() SCM;
+pub extern fn scm_i_set_default_port_conversion_strategy(strategy: SCM) void;
+pub extern fn scm_i_set_port_encoding_x(port: SCM, str: [*c]const u8) void;
+pub extern fn scm_sys_port_encoding(port: SCM) SCM;
+pub extern fn scm_sys_set_port_encoding_x(port: SCM, encoding: SCM) SCM;
+pub extern fn scm_port_encoding(port: SCM) SCM;
+pub extern fn scm_set_port_encoding_x(port: SCM, encoding: SCM) SCM;
+pub extern fn scm_port_conversion_strategy(port: SCM) SCM;
+pub extern fn scm_set_port_conversion_strategy_x(port: SCM, behavior: SCM) SCM;
+pub extern fn scm_port_maybe_consume_initial_byte_order_mark(SCM, SCM, SCM) SCM;
+pub extern fn scm_get_byte_or_eof(port: SCM) c_int;
+pub extern fn scm_peek_byte_or_eof(port: SCM) c_int;
+pub extern fn scm_c_read(port: SCM, buffer: ?*anyopaque, size: usize) usize;
+pub extern fn scm_c_read_bytes(port: SCM, dst: SCM, start: usize, count: usize) usize;
+pub extern fn scm_getc(port: SCM) scm_t_wchar;
+pub extern fn scm_read_char(port: SCM) SCM;
+pub extern fn scm_unget_bytes(buf: [*c]const u8, len: usize, port: SCM) void;
+pub extern fn scm_unget_byte(c: c_int, port: SCM) void;
+pub extern fn scm_ungetc(c: scm_t_wchar, port: SCM) void;
+pub extern fn scm_ungets(s: [*c]const u8, n: c_int, port: SCM) void;
+pub extern fn scm_peek_char(port: SCM) SCM;
+pub extern fn scm_unread_char(cobj: SCM, port: SCM) SCM;
+pub extern fn scm_unread_string(str: SCM, port: SCM) SCM;
+pub extern fn scm_setvbuf(port: SCM, mode: SCM, size: SCM) SCM;
+pub extern fn scm_fill_input(port: SCM, minimum_size: usize, cur_out: [*c]usize, avail_out: [*c]usize) SCM;
+pub extern fn scm_take_from_input_buffers(port: SCM, dest: [*c]u8, read_len: usize) usize;
+pub extern fn scm_drain_input(port: SCM) SCM;
+pub extern fn scm_end_input(port: SCM) void;
+pub extern fn scm_force_output(port: SCM) SCM;
+pub extern fn scm_flush(port: SCM) void;
+pub extern fn scm_port_random_access_p(port: SCM) SCM;
+pub extern fn scm_port_read_buffering(port: SCM) SCM;
+pub extern fn scm_expand_port_read_buffer_x(port: SCM, size: SCM, putback_p: SCM) SCM;
+pub extern fn scm_port_read(port: SCM) SCM;
+pub extern fn scm_port_write(port: SCM) SCM;
+pub extern fn scm_port_read_buffer(port: SCM) SCM;
+pub extern fn scm_port_write_buffer(port: SCM) SCM;
+pub extern fn scm_port_auxiliary_write_buffer(port: SCM) SCM;
+pub extern fn scm_c_write(port: SCM, buffer: ?*const anyopaque, size: usize) void;
+pub extern fn scm_c_write_bytes(port: SCM, src: SCM, start: usize, count: usize) void;
+pub extern fn scm_c_put_latin1_chars(port: SCM, buf: [*c]const u8, len: usize) void;
+pub extern fn scm_c_put_utf32_chars(port: SCM, buf: [*c]const u32, len: usize) void;
+pub extern fn scm_c_put_string(port: SCM, str: SCM, start: usize, count: usize) void;
+pub extern fn scm_put_string(port: SCM, str: SCM, start: SCM, count: SCM) SCM;
+pub extern fn scm_c_put_char(port: SCM, ch: scm_t_wchar) void;
+pub extern fn scm_put_char(port: SCM, ch: SCM) SCM;
+pub extern fn scm_c_put_escaped_char(port: SCM, ch: scm_t_wchar) void;
+pub extern fn scm_c_can_put_char(port: SCM, ch: scm_t_wchar) c_int;
+pub extern fn scm_putc(c: u8, port: SCM) void;
+pub extern fn scm_puts(str_data: [*c]const u8, port: SCM) void;
+pub extern fn scm_lfwrite(ptr: [*c]const u8, size: usize, port: SCM) void;
+pub extern fn scm_lfwrite_substr(str: SCM, start: usize, end: usize, port: SCM) void;
+pub extern fn scm_char_ready_p(port: SCM) SCM;
+pub extern fn scm_seek(object: SCM, offset: SCM, whence: SCM) SCM;
+pub extern fn scm_truncate_file(object: SCM, length: SCM) SCM;
+pub extern fn scm_port_line(port: SCM) SCM;
+pub extern fn scm_set_port_line_x(port: SCM, line: SCM) SCM;
+pub extern fn scm_port_column(port: SCM) SCM;
+pub extern fn scm_set_port_column_x(port: SCM, line: SCM) SCM;
+pub extern fn scm_port_filename(port: SCM) SCM;
+pub extern fn scm_set_port_filename_x(port: SCM, filename: SCM) SCM;
+pub extern fn scm_i_port_property(port: SCM, key: SCM) SCM;
+pub extern fn scm_i_set_port_property_x(port: SCM, key: SCM, value: SCM) SCM;
+pub extern fn scm_port_print(exp: SCM, port: SCM, [*c]scm_print_state) c_int;
+pub extern fn scm_print_port_mode(exp: SCM, port: SCM) void;
+pub extern fn scm_port_for_each(proc: SCM) SCM;
+pub extern fn scm_c_port_for_each(proc: ?fn (?*anyopaque, SCM) callconv(.C) void, data: ?*anyopaque) void;
+pub extern fn scm_flush_all_ports() SCM;
+pub extern fn scm_void_port(mode_str: [*c]u8) SCM;
+pub extern fn scm_sys_make_void_port(mode: SCM) SCM;
+pub extern fn scm_init_ports() void;
+pub const struct_scm_t_fport = extern struct {
+ fdes: c_int,
+ revealed: c_uint,
+ options: c_uint,
+};
+pub const scm_t_fport = struct_scm_t_fport;
+pub extern var scm_file_port_type: ?*scm_t_port_type;
+pub extern fn scm_evict_ports(fd: c_int) void;
+pub extern fn scm_i_mode_to_open_flags(mode: SCM, is_binary: [*c]c_int, FUNC_NAME: [*c]const u8) c_int;
+pub extern fn scm_open_file_with_encoding(filename: SCM, modes: SCM, guess_encoding: SCM, encoding: SCM) SCM;
+pub extern fn scm_open_file(filename: SCM, modes: SCM) SCM;
+pub extern fn scm_fdes_to_port(fdes: c_int, mode: [*c]u8, name: SCM) SCM;
+pub extern fn scm_file_port_p(obj: SCM) SCM;
+pub extern fn scm_revealed_count(port: SCM) c_int;
+pub extern fn scm_port_revealed(port: SCM) SCM;
+pub extern fn scm_set_port_revealed_x(port: SCM, rcount: SCM) SCM;
+pub extern fn scm_adjust_port_revealed_x(port: SCM, addend: SCM) SCM;
+pub extern fn scm_init_fports_keywords() void;
+pub extern fn scm_init_fports() void;
+pub extern fn scm_frame_p(obj: SCM) SCM;
+pub extern fn scm_frame_procedure_name(frame: SCM) SCM;
+pub extern fn scm_frame_call_representation(frame: SCM) SCM;
+pub extern fn scm_frame_arguments(frame: SCM) SCM;
+pub extern fn scm_frame_source(frame: SCM) SCM;
+pub extern fn scm_frame_address(frame: SCM) SCM;
+pub extern fn scm_frame_stack_pointer(frame: SCM) SCM;
+pub extern fn scm_frame_instruction_pointer(frame: SCM) SCM;
+pub extern fn scm_frame_return_address(frame: SCM) SCM;
+pub extern fn scm_frame_dynamic_link(frame: SCM) SCM;
+pub extern fn scm_frame_previous(frame: SCM) SCM;
+pub extern fn scm_i_frame_print(frame: SCM, port: SCM, pstate: [*c]scm_print_state) void;
+pub extern fn scm_init_frames() void;
+pub extern fn scm_make_generalized_vector(@"type": SCM, len: SCM, fill: SCM) SCM;
+pub extern fn scm_i_register_vector_constructor(@"type": SCM, ctor: ?fn (SCM, SCM) callconv(.C) SCM) void;
+pub extern fn scm_init_generalized_vectors() void;
+pub extern fn scm_list_1(e1: SCM) SCM;
+pub extern fn scm_list_2(e1: SCM, e2: SCM) SCM;
+pub extern fn scm_list_3(e1: SCM, e2: SCM, e3: SCM) SCM;
+pub extern fn scm_list_4(e1: SCM, e2: SCM, e3: SCM, e4: SCM) SCM;
+pub extern fn scm_list_5(e1: SCM, e2: SCM, e3: SCM, e4: SCM, e5: SCM) SCM;
+pub extern fn scm_list_n(elt: SCM, ...) SCM;
+pub extern fn scm_list(objs: SCM) SCM;
+pub extern fn scm_list_head(lst: SCM, k: SCM) SCM;
+pub extern fn scm_make_list(n: SCM, init: SCM) SCM;
+pub extern fn scm_cons_star(arg: SCM, objs: SCM) SCM;
+pub extern fn scm_null_p(x: SCM) SCM;
+pub extern fn scm_list_p(x: SCM) SCM;
+pub extern fn scm_ilength(sx: SCM) c_long;
+pub extern fn scm_length(x: SCM) SCM;
+pub extern fn scm_append(args: SCM) SCM;
+pub extern fn scm_append_x(args: SCM) SCM;
+pub extern fn scm_reverse(lst: SCM) SCM;
+pub extern fn scm_reverse_x(lst: SCM, newtail: SCM) SCM;
+pub extern fn scm_list_ref(lst: SCM, k: SCM) SCM;
+pub extern fn scm_list_set_x(lst: SCM, k: SCM, val: SCM) SCM;
+pub extern fn scm_list_cdr_set_x(lst: SCM, k: SCM, val: SCM) SCM;
+pub extern fn scm_last_pair(sx: SCM) SCM;
+pub extern fn scm_list_tail(lst: SCM, k: SCM) SCM;
+pub extern fn scm_c_memq(x: SCM, lst: SCM) SCM;
+pub extern fn scm_memq(x: SCM, lst: SCM) SCM;
+pub extern fn scm_memv(x: SCM, lst: SCM) SCM;
+pub extern fn scm_member(x: SCM, lst: SCM) SCM;
+pub extern fn scm_delq_x(item: SCM, lst: SCM) SCM;
+pub extern fn scm_delv_x(item: SCM, lst: SCM) SCM;
+pub extern fn scm_delete_x(item: SCM, lst: SCM) SCM;
+pub extern fn scm_list_copy(lst: SCM) SCM;
+pub extern fn scm_delq(item: SCM, lst: SCM) SCM;
+pub extern fn scm_delv(item: SCM, lst: SCM) SCM;
+pub extern fn scm_delete(item: SCM, lst: SCM) SCM;
+pub extern fn scm_delq1_x(item: SCM, lst: SCM) SCM;
+pub extern fn scm_delv1_x(item: SCM, lst: SCM) SCM;
+pub extern fn scm_delete1_x(item: SCM, lst: SCM) SCM;
+pub extern fn scm_filter(pred: SCM, list: SCM) SCM;
+pub extern fn scm_filter_x(pred: SCM, list: SCM) SCM;
+pub extern fn scm_copy_tree(obj: SCM) SCM;
+pub extern fn scm_i_finite_list_copy(SCM) SCM;
+pub extern fn scm_init_list() void;
+pub extern var scm_i_smob_class: [*c]SCM;
+pub extern var scm_module_goops: SCM;
+pub extern fn scm_goops_version() SCM;
+pub extern fn scm_load_goops() void;
+pub extern fn scm_make_extended_class(type_name: [*c]const u8, applicablep: c_int) SCM;
+pub extern fn scm_make_port_classes(ptob: ?*scm_t_port_type) void;
+pub extern fn scm_ensure_accessor(name: SCM) SCM;
+pub extern fn scm_class_of(obj: SCM) SCM;
+pub extern fn scm_make_standard_class(meta: SCM, name: SCM, dsupers: SCM, dslots: SCM) SCM;
+pub extern fn scm_slot_ref(obj: SCM, slot_name: SCM) SCM;
+pub extern fn scm_slot_set_x(obj: SCM, slot_name: SCM, value: SCM) SCM;
+pub extern fn scm_i_inherit_applicable(c: SCM) void;
+pub extern fn scm_instance_p(obj: SCM) SCM;
+pub extern fn scm_is_generic(x: SCM) c_int;
+pub extern fn scm_is_method(x: SCM) c_int;
+pub extern fn scm_class_name(obj: SCM) SCM;
+pub extern fn scm_class_direct_supers(obj: SCM) SCM;
+pub extern fn scm_class_direct_slots(obj: SCM) SCM;
+pub extern fn scm_class_direct_subclasses(obj: SCM) SCM;
+pub extern fn scm_class_direct_methods(obj: SCM) SCM;
+pub extern fn scm_class_precedence_list(obj: SCM) SCM;
+pub extern fn scm_class_slots(obj: SCM) SCM;
+pub extern fn scm_generic_function_name(obj: SCM) SCM;
+pub extern fn scm_generic_function_methods(obj: SCM) SCM;
+pub extern fn scm_method_generic_function(obj: SCM) SCM;
+pub extern fn scm_method_specializers(obj: SCM) SCM;
+pub extern fn scm_method_procedure(obj: SCM) SCM;
+pub extern fn scm_slot_bound_p(obj: SCM, slot_name: SCM) SCM;
+pub extern fn scm_slot_exists_p(obj: SCM, slot_name: SCM) SCM;
+pub extern fn scm_sys_modify_instance(old: SCM, newinst: SCM) SCM;
+pub extern fn scm_generic_capability_p(proc: SCM) SCM;
+pub extern fn scm_enable_primitive_generic_x(subrs: SCM) SCM;
+pub extern fn scm_set_primitive_generic_x(subr: SCM, generic: SCM) SCM;
+pub extern fn scm_primitive_generic_generic(subr: SCM) SCM;
+pub extern fn scm_make(args: SCM) SCM;
+pub extern fn scm_wta_dispatch_0(gf: SCM, subr: [*c]const u8) SCM;
+pub extern fn scm_wta_dispatch_1(gf: SCM, a1: SCM, pos: c_int, subr: [*c]const u8) SCM;
+pub extern fn scm_wta_dispatch_2(gf: SCM, a1: SCM, a2: SCM, pos: c_int, subr: [*c]const u8) SCM;
+pub extern fn scm_wta_dispatch_n(gf: SCM, args: SCM, pos: c_int, subr: [*c]const u8) SCM;
+pub extern fn scm_i_define_class_for_vtable(vtable: SCM) SCM;
+pub extern fn scm_init_goops() void;
+pub extern fn scm_i_alloc_primitive_code_with_instrumentation(uint32_count: usize, write_ptr: [*c][*c]u32) [*c]u32;
+pub extern fn scm_i_primitive_code_p(code: [*c]const u32) c_int;
+pub extern fn scm_i_primitive_call_ip(subr: SCM) usize;
+pub extern fn scm_i_primitive_name(code: [*c]const u32) SCM;
+pub extern fn scm_subr_function(subr: SCM) scm_t_subr;
+pub extern fn scm_subr_function_by_index(subr_idx: u32) scm_t_subr;
+pub extern fn scm_subr_name(subr: SCM) SCM;
+pub extern fn scm_apply_subr(sp: [*c]union_scm_vm_stack_element, subr_idx: u32, nargs: ptrdiff_t) SCM;
+pub extern fn scm_c_make_gsubr(name: [*c]const u8, req: c_int, opt: c_int, rst: c_int, fcn: scm_t_subr) SCM;
+pub extern fn scm_c_make_gsubr_with_generic(name: [*c]const u8, req: c_int, opt: c_int, rst: c_int, fcn: scm_t_subr, gf: [*c]SCM) SCM;
+pub extern fn scm_c_define_gsubr(name: [*c]const u8, req: c_int, opt: c_int, rst: c_int, fcn: scm_t_subr) SCM;
+pub extern fn scm_c_define_gsubr_with_generic(name: [*c]const u8, req: c_int, opt: c_int, rst: c_int, fcn: scm_t_subr, gf: [*c]SCM) SCM;
+pub extern fn scm_init_gsubr() void;
+pub extern fn scm_make_guardian() SCM;
+pub extern fn scm_i_init_guardians_for_gc() void;
+pub extern fn scm_i_identify_inaccessible_guardeds() void;
+pub extern fn scm_i_mark_inaccessible_guardeds() c_int;
+pub extern fn scm_init_guardians() void;
+pub extern fn scm_i_locale_string_hash(str: [*c]const u8, len: usize) c_ulong;
+pub extern fn scm_i_latin1_string_hash(str: [*c]const u8, len: usize) c_ulong;
+pub extern fn scm_i_utf8_string_hash(str: [*c]const u8, len: usize) c_ulong;
+pub extern fn scm_i_string_hash(str: SCM) c_ulong;
+pub extern fn scm_ihashq(obj: SCM, n: c_ulong) c_ulong;
+pub extern fn scm_hashq(obj: SCM, n: SCM) SCM;
+pub extern fn scm_ihashv(obj: SCM, n: c_ulong) c_ulong;
+pub extern fn scm_hashv(obj: SCM, n: SCM) SCM;
+pub extern fn scm_ihash(obj: SCM, n: c_ulong) c_ulong;
+pub extern fn scm_hash(obj: SCM, n: SCM) SCM;
+pub extern fn scm_init_hash() void;
+pub const scm_t_hash_fn = ?fn (SCM, c_ulong, ?*anyopaque) callconv(.C) c_ulong;
+pub const scm_t_assoc_fn = ?fn (SCM, SCM, ?*anyopaque) callconv(.C) SCM;
+pub const scm_t_hash_fold_fn = ?fn (?*anyopaque, SCM, SCM, SCM) callconv(.C) SCM;
+pub const scm_t_hash_handle_fn = ?fn (?*anyopaque, SCM) callconv(.C) SCM;
+pub const struct_scm_t_hashtable = extern struct {
+ n_items: c_ulong,
+ lower: c_ulong,
+ upper: c_ulong,
+ size_index: c_int,
+ min_size_index: c_int,
+ hash_fn: scm_t_hash_fn,
+};
+pub const scm_t_hashtable = struct_scm_t_hashtable;
+pub extern fn scm_vector_to_hash_table(vector: SCM) SCM;
+pub extern fn scm_c_make_hash_table(k: c_ulong) SCM;
+pub extern fn scm_make_hash_table(n: SCM) SCM;
+pub extern fn scm_hash_table_p(h: SCM) SCM;
+pub extern fn scm_i_rehash(table: SCM, hash_fn: scm_t_hash_fn, closure: ?*anyopaque, func_name: [*c]const u8) void;
+pub extern fn scm_hash_fn_get_handle(table: SCM, obj: SCM, hash_fn: scm_t_hash_fn, assoc_fn: scm_t_assoc_fn, closure: ?*anyopaque) SCM;
+pub extern fn scm_hash_fn_create_handle_x(table: SCM, obj: SCM, init: SCM, hash_fn: scm_t_hash_fn, assoc_fn: scm_t_assoc_fn, closure: ?*anyopaque) SCM;
+pub extern fn scm_hash_fn_ref(table: SCM, obj: SCM, dflt: SCM, hash_fn: scm_t_hash_fn, assoc_fn: scm_t_assoc_fn, closure: ?*anyopaque) SCM;
+pub extern fn scm_hash_fn_set_x(table: SCM, obj: SCM, val: SCM, hash_fn: scm_t_hash_fn, assoc_fn: scm_t_assoc_fn, closure: ?*anyopaque) SCM;
+pub extern fn scm_hash_fn_remove_x(table: SCM, obj: SCM, hash_fn: scm_t_hash_fn, assoc_fn: scm_t_assoc_fn, closure: ?*anyopaque) SCM;
+pub extern fn scm_internal_hash_fold(@"fn": scm_t_hash_fold_fn, closure: ?*anyopaque, init: SCM, table: SCM) SCM;
+pub extern fn scm_internal_hash_for_each_handle(@"fn": scm_t_hash_handle_fn, closure: ?*anyopaque, table: SCM) void;
+pub extern fn scm_hash_clear_x(table: SCM) SCM;
+pub extern fn scm_hashq_get_handle(table: SCM, obj: SCM) SCM;
+pub extern fn scm_hashq_create_handle_x(table: SCM, obj: SCM, init: SCM) SCM;
+pub extern fn scm_hashq_ref(table: SCM, obj: SCM, dflt: SCM) SCM;
+pub extern fn scm_hashq_set_x(table: SCM, obj: SCM, val: SCM) SCM;
+pub extern fn scm_hashq_remove_x(table: SCM, obj: SCM) SCM;
+pub extern fn scm_hashv_get_handle(table: SCM, obj: SCM) SCM;
+pub extern fn scm_hashv_create_handle_x(table: SCM, obj: SCM, init: SCM) SCM;
+pub extern fn scm_hashv_ref(table: SCM, obj: SCM, dflt: SCM) SCM;
+pub extern fn scm_hashv_set_x(table: SCM, obj: SCM, val: SCM) SCM;
+pub extern fn scm_hashv_remove_x(table: SCM, obj: SCM) SCM;
+pub extern fn scm_hash_get_handle(table: SCM, obj: SCM) SCM;
+pub extern fn scm_hash_create_handle_x(table: SCM, obj: SCM, init: SCM) SCM;
+pub extern fn scm_hash_ref(table: SCM, obj: SCM, dflt: SCM) SCM;
+pub extern fn scm_hash_set_x(table: SCM, obj: SCM, val: SCM) SCM;
+pub extern fn scm_hash_remove_x(table: SCM, obj: SCM) SCM;
+pub extern fn scm_hashx_get_handle(hash: SCM, assoc: SCM, table: SCM, obj: SCM) SCM;
+pub extern fn scm_hashx_create_handle_x(hash: SCM, assoc: SCM, table: SCM, obj: SCM, init: SCM) SCM;
+pub extern fn scm_hashx_ref(hash: SCM, assoc: SCM, table: SCM, obj: SCM, dflt: SCM) SCM;
+pub extern fn scm_hashx_set_x(hash: SCM, assoc: SCM, table: SCM, obj: SCM, val: SCM) SCM;
+pub extern fn scm_hashx_remove_x(hash: SCM, assoc: SCM, table: SCM, obj: SCM) SCM;
+pub extern fn scm_hash_fold(proc: SCM, init: SCM, hash: SCM) SCM;
+pub extern fn scm_hash_for_each(proc: SCM, hash: SCM) SCM;
+pub extern fn scm_hash_for_each_handle(proc: SCM, hash: SCM) SCM;
+pub extern fn scm_hash_map_to_list(proc: SCM, hash: SCM) SCM;
+pub extern fn scm_hash_count(hash: SCM, pred: SCM) SCM;
+pub extern fn scm_i_hashtable_print(exp: SCM, port: SCM, pstate: [*c]scm_print_state) void;
+pub extern fn scm_init_hashtab() void;
+pub extern var scm_tc16_hook: scm_t_bits;
+pub extern fn scm_make_hook(n_args: SCM) SCM;
+pub extern fn scm_hook_p(x: SCM) SCM;
+pub extern fn scm_hook_empty_p(hook: SCM) SCM;
+pub extern fn scm_add_hook_x(hook: SCM, thunk: SCM, appendp: SCM) SCM;
+pub extern fn scm_remove_hook_x(hook: SCM, thunk: SCM) SCM;
+pub extern fn scm_reset_hook_x(hook: SCM) SCM;
+pub extern fn scm_run_hook(hook: SCM, args: SCM) SCM;
+pub extern fn scm_c_run_hook(hook: SCM, args: SCM) void;
+pub extern fn scm_c_run_hookn(hook: SCM, argv: [*c]SCM, nargs: usize) void;
+pub extern fn scm_hook_to_list(hook: SCM) SCM;
+pub extern fn scm_init_hooks() void;
+pub extern var scm_global_locale: SCM;
+pub extern fn scm_make_locale(category_mask: SCM, locale_name: SCM, base_locale: SCM) SCM;
+pub extern fn scm_locale_p(obj: SCM) SCM;
+pub extern fn scm_string_locale_lt(s1: SCM, s2: SCM, locale: SCM) SCM;
+pub extern fn scm_string_locale_gt(s1: SCM, s2: SCM, locale: SCM) SCM;
+pub extern fn scm_string_locale_ci_lt(s1: SCM, s2: SCM, locale: SCM) SCM;
+pub extern fn scm_string_locale_ci_gt(s1: SCM, s2: SCM, locale: SCM) SCM;
+pub extern fn scm_string_locale_ci_eq(s1: SCM, s2: SCM, locale: SCM) SCM;
+pub extern fn scm_char_locale_lt(c1: SCM, c2: SCM, locale: SCM) SCM;
+pub extern fn scm_char_locale_gt(c1: SCM, c2: SCM, locale: SCM) SCM;
+pub extern fn scm_char_locale_ci_lt(c1: SCM, c2: SCM, locale: SCM) SCM;
+pub extern fn scm_char_locale_ci_gt(c1: SCM, c2: SCM, locale: SCM) SCM;
+pub extern fn scm_char_locale_ci_eq(c1: SCM, c2: SCM, locale: SCM) SCM;
+pub extern fn scm_char_locale_upcase(chr: SCM, locale: SCM) SCM;
+pub extern fn scm_char_locale_downcase(chr: SCM, locale: SCM) SCM;
+pub extern fn scm_char_locale_titlecase(chr: SCM, locale: SCM) SCM;
+pub extern fn scm_string_locale_upcase(chr: SCM, locale: SCM) SCM;
+pub extern fn scm_string_locale_downcase(chr: SCM, locale: SCM) SCM;
+pub extern fn scm_string_locale_titlecase(chr: SCM, locale: SCM) SCM;
+pub extern fn scm_locale_string_to_integer(str: SCM, base: SCM, locale: SCM) SCM;
+pub extern fn scm_locale_string_to_inexact(str: SCM, locale: SCM) SCM;
+pub extern fn scm_nl_langinfo(item: SCM, locale: SCM) SCM;
+pub extern fn scm_init_i18n() void;
+pub extern fn scm_bootstrap_i18n() void;
+pub extern var scm_i_init_mutex: pthread_mutex_t;
+pub extern var scm_initialized_p: c_int;
+pub extern fn scm_init_guile() void;
+pub extern fn scm_boot_guile(argc: c_int, argv: [*c][*c]u8, main_func: ?fn (?*anyopaque, c_int, [*c][*c]u8) callconv(.C) void, closure: ?*anyopaque) void;
+pub extern fn scm_i_init_guile(base: ?*anyopaque) void;
+pub extern fn scm_load_startup_files() void;
+pub extern fn scm_ftell(object: SCM) SCM;
+pub extern fn scm_redirect_port(into_pt: SCM, from_pt: SCM) SCM;
+pub extern fn scm_dup_to_fdes(fd_or_port: SCM, newfd: SCM) SCM;
+pub extern fn scm_dup2(oldfd: SCM, newfd: SCM) SCM;
+pub extern fn scm_fileno(port: SCM) SCM;
+pub extern fn scm_isatty_p(port: SCM) SCM;
+pub extern fn scm_fdopen(fdes: SCM, modes: SCM) SCM;
+pub extern fn scm_primitive_move_to_fdes(port: SCM, fd: SCM) SCM;
+pub extern fn scm_fdes_to_ports(fd: SCM) SCM;
+pub extern fn scm_init_ioext() void;
+pub extern fn scm_read_delimited_x(delims: SCM, buf: SCM, gobble: SCM, port: SCM, offset: SCM, length: SCM) SCM;
+pub extern fn scm_read_line(port: SCM) SCM;
+pub extern fn scm_write_line(obj: SCM, port: SCM) SCM;
+pub extern fn scm_init_rdelim_builtins() SCM;
+pub extern fn scm_init_rdelim() void;
+pub extern fn scm_read_string_x_partial(str: SCM, port_or_fdes: SCM, start: SCM, end: SCM) SCM;
+pub extern fn scm_write_string_partial(str: SCM, port_or_fdes: SCM, start: SCM, end: SCM) SCM;
+pub extern fn scm_init_rw_builtins() SCM;
+pub extern fn scm_init_rw() void;
+pub extern fn scm_keyword_p(obj: SCM) SCM;
+pub extern fn scm_symbol_to_keyword(symbol: SCM) SCM;
+pub extern fn scm_keyword_to_symbol(keyword: SCM) SCM;
+pub extern fn scm_is_keyword(val: SCM) c_int;
+pub extern fn scm_from_locale_keyword(name: [*c]const u8) SCM;
+pub extern fn scm_from_locale_keywordn(name: [*c]const u8, len: usize) SCM;
+pub extern fn scm_from_latin1_keyword(name: [*c]const u8) SCM;
+pub extern fn scm_from_utf8_keyword(name: [*c]const u8) SCM;
+pub const SCM_ALLOW_OTHER_KEYS: c_int = 1;
+pub const SCM_ALLOW_NON_KEYWORD_ARGUMENTS: c_int = 2;
+pub const enum_scm_keyword_arguments_flags = c_uint;
+pub const scm_t_keyword_arguments_flags = enum_scm_keyword_arguments_flags;
+pub extern fn scm_c_bind_keyword_arguments(subr: [*c]const u8, rest: SCM, flags: scm_t_keyword_arguments_flags, ...) void;
+pub extern fn scm_init_keywords() void;
+pub extern fn scm_parse_path(path: SCM, tail: SCM) SCM;
+pub extern fn scm_parse_path_with_ellipsis(path: SCM, base: SCM) SCM;
+pub extern fn scm_primitive_load(filename: SCM) SCM;
+pub extern fn scm_c_primitive_load(filename: [*c]const u8) SCM;
+pub extern fn scm_sys_package_data_dir() SCM;
+pub extern fn scm_sys_library_dir() SCM;
+pub extern fn scm_sys_site_dir() SCM;
+pub extern fn scm_sys_global_site_dir() SCM;
+pub extern fn scm_sys_site_ccache_dir() SCM;
+pub extern fn scm_search_path(path: SCM, filename: SCM, rest: SCM) SCM;
+pub extern fn scm_sys_search_load_path(filename: SCM) SCM;
+pub extern fn scm_primitive_load_path(filename_and_exception_on_not_found: SCM) SCM;
+pub extern fn scm_c_primitive_load_path(filename: [*c]const u8) SCM;
+pub extern fn scm_sys_warn_auto_compilation_enabled() SCM;
+pub extern fn scm_init_load_path() void;
+pub extern fn scm_init_load() void;
+pub extern fn scm_init_load_should_auto_compile() void;
+pub extern fn scm_init_eval_in_scheme() void;
+pub extern fn scm_i_mirror_backslashes(path: [*c]u8) [*c]u8;
+pub const scm_t_macro_primitive = ?fn (SCM, SCM) callconv(.C) SCM;
+pub extern fn scm_make_syntax_transformer(name_or_existing_definition: SCM, @"type": SCM, binding: SCM) SCM;
+pub extern fn scm_macro_p(obj: SCM) SCM;
+pub extern fn scm_macro_type(m: SCM) SCM;
+pub extern fn scm_macro_name(m: SCM) SCM;
+pub extern fn scm_macro_binding(m: SCM) SCM;
+pub extern fn scm_macro_transformer(m: SCM) SCM;
+pub extern fn scm_i_make_primitive_macro(name: [*c]const u8, @"fn": scm_t_macro_primitive) SCM;
+pub extern fn scm_i_macro_primitive(m: SCM) scm_t_macro_primitive;
+pub extern fn scm_init_macros() void;
+pub extern var scm_tc16_malloc: scm_t_bits;
+pub extern fn scm_malloc_obj(n: usize) SCM;
+pub extern fn scm_init_mallocs() void;
+pub extern var scm_module_system_booted_p: c_int;
+pub extern var scm_module_tag: scm_t_bits;
+pub extern fn scm_current_module() SCM;
+pub extern fn scm_i_current_module(thread: [*c]scm_thread) SCM;
+pub extern fn scm_the_root_module() SCM;
+pub extern fn scm_interaction_environment() SCM;
+pub extern fn scm_set_current_module(module: SCM) SCM;
+pub extern fn scm_c_call_with_current_module(module: SCM, func: ?fn (?*anyopaque) callconv(.C) SCM, data: ?*anyopaque) SCM;
+pub extern fn scm_dynwind_current_module(module: SCM) void;
+pub extern fn scm_module_variable(module: SCM, sym: SCM) SCM;
+pub extern fn scm_module_local_variable(module: SCM, sym: SCM) SCM;
+pub extern fn scm_module_ensure_local_variable(module: SCM, sym: SCM) SCM;
+pub extern fn scm_c_lookup(name: [*c]const u8) SCM;
+pub extern fn scm_c_define(name: [*c]const u8, val: SCM) SCM;
+pub extern fn scm_lookup(symbol: SCM) SCM;
+pub extern fn scm_define(symbol: SCM, val: SCM) SCM;
+pub extern fn scm_c_module_lookup(module: SCM, name: [*c]const u8) SCM;
+pub extern fn scm_c_module_define(module: SCM, name: [*c]const u8, val: SCM) SCM;
+pub extern fn scm_module_lookup(module: SCM, symbol: SCM) SCM;
+pub extern fn scm_module_define(module: SCM, symbol: SCM, val: SCM) SCM;
+pub extern fn scm_module_export(module: SCM, symbol_list: SCM) SCM;
+pub extern fn scm_module_reverse_lookup(module: SCM, variable: SCM) SCM;
+pub extern fn scm_public_variable(module_name: SCM, name: SCM) SCM;
+pub extern fn scm_private_variable(module_name: SCM, name: SCM) SCM;
+pub extern fn scm_c_public_variable(module_name: [*c]const u8, name: [*c]const u8) SCM;
+pub extern fn scm_c_private_variable(module_name: [*c]const u8, name: [*c]const u8) SCM;
+pub extern fn scm_public_lookup(module_name: SCM, name: SCM) SCM;
+pub extern fn scm_private_lookup(module_name: SCM, name: SCM) SCM;
+pub extern fn scm_c_public_lookup(module_name: [*c]const u8, name: [*c]const u8) SCM;
+pub extern fn scm_c_private_lookup(module_name: [*c]const u8, name: [*c]const u8) SCM;
+pub extern fn scm_public_ref(module_name: SCM, name: SCM) SCM;
+pub extern fn scm_private_ref(module_name: SCM, name: SCM) SCM;
+pub extern fn scm_c_public_ref(module_name: [*c]const u8, name: [*c]const u8) SCM;
+pub extern fn scm_c_private_ref(module_name: [*c]const u8, name: [*c]const u8) SCM;
+pub extern fn scm_c_resolve_module(name: [*c]const u8) SCM;
+pub extern fn scm_resolve_module(name: SCM) SCM;
+pub extern fn scm_maybe_resolve_module(name: SCM) SCM;
+pub extern fn scm_c_define_module(name: [*c]const u8, init: ?fn (?*anyopaque) callconv(.C) void, data: ?*anyopaque) SCM;
+pub extern fn scm_c_use_module(name: [*c]const u8) void;
+pub extern fn scm_c_export(name: [*c]const u8, ...) void;
+pub extern fn scm_module_public_interface(module: SCM) SCM;
+pub extern fn scm_module_import_interface(module: SCM, sym: SCM) SCM;
+pub extern fn scm_module_transformer(module: SCM) SCM;
+pub extern fn scm_current_module_transformer() SCM;
+pub extern fn scm_get_pre_modules_obarray() SCM;
+pub extern fn scm_modules_prehistory() void;
+pub extern fn scm_init_modules() void;
+pub extern fn scm_gethost(host: SCM) SCM;
+pub extern fn scm_getnet(name: SCM) SCM;
+pub extern fn scm_getproto(name: SCM) SCM;
+pub extern fn scm_getserv(name: SCM, proto: SCM) SCM;
+pub extern fn scm_sethost(arg: SCM) SCM;
+pub extern fn scm_setnet(arg: SCM) SCM;
+pub extern fn scm_setproto(arg: SCM) SCM;
+pub extern fn scm_setserv(arg: SCM) SCM;
+pub extern fn scm_getaddrinfo(SCM, SCM, SCM, SCM, SCM, SCM) SCM;
+pub extern fn scm_gai_strerror(SCM) SCM;
+pub extern fn scm_init_net_db() void;
+pub extern fn scm_object_properties(obj: SCM) SCM;
+pub extern fn scm_set_object_properties_x(obj: SCM, plist: SCM) SCM;
+pub extern fn scm_object_property(obj: SCM, key: SCM) SCM;
+pub extern fn scm_set_object_property_x(obj: SCM, key: SCM, val: SCM) SCM;
+pub extern fn scm_init_objprop() void;
+pub extern fn scm_tcsetpgrp(port: SCM, pgid: SCM) SCM;
+pub extern fn scm_tcgetpgrp(port: SCM) SCM;
+pub extern fn scm_ctermid() SCM;
+pub extern fn scm_setsid() SCM;
+pub extern fn scm_getsid(pid: SCM) SCM;
+pub extern fn scm_setpgid(pid: SCM, pgid: SCM) SCM;
+pub extern fn scm_pipe() SCM;
+pub extern fn scm_getgroups() SCM;
+pub extern fn scm_setgroups(groups: SCM) SCM;
+pub extern fn scm_getpgrp() SCM;
+pub extern fn scm_getpwuid(user: SCM) SCM;
+pub extern fn scm_setpwent(arg: SCM) SCM;
+pub extern fn scm_getgrgid(name: SCM) SCM;
+pub extern fn scm_setgrent(arg: SCM) SCM;
+pub extern fn scm_getrlimit(resource: SCM) SCM;
+pub extern fn scm_setrlimit(resource: SCM, soft: SCM, hard: SCM) SCM;
+pub extern fn scm_kill(pid: SCM, sig: SCM) SCM;
+pub extern fn scm_waitpid(pid: SCM, options: SCM) SCM;
+pub extern fn scm_status_exit_val(status: SCM) SCM;
+pub extern fn scm_status_term_sig(status: SCM) SCM;
+pub extern fn scm_status_stop_sig(status: SCM) SCM;
+pub extern fn scm_getppid() SCM;
+pub extern fn scm_getuid() SCM;
+pub extern fn scm_getgid() SCM;
+pub extern fn scm_geteuid() SCM;
+pub extern fn scm_getegid() SCM;
+pub extern fn scm_setuid(uid: SCM) SCM;
+pub extern fn scm_setgid(gid: SCM) SCM;
+pub extern fn scm_seteuid(euid: SCM) SCM;
+pub extern fn scm_setegid(egid: SCM) SCM;
+pub extern fn scm_ttyname(port: SCM) SCM;
+pub extern fn scm_execl(filename: SCM, args: SCM) SCM;
+pub extern fn scm_execlp(filename: SCM, args: SCM) SCM;
+pub extern fn scm_execle(filename: SCM, env: SCM, args: SCM) SCM;
+pub extern fn scm_fork() SCM;
+pub extern fn scm_uname() SCM;
+pub extern fn scm_environ(env: SCM) SCM;
+pub extern fn scm_tmpnam() SCM;
+pub extern fn scm_tmpfile() SCM;
+pub extern fn scm_open_pipe(pipestr: SCM, modes: SCM) SCM;
+pub extern fn scm_close_pipe(port: SCM) SCM;
+pub extern fn scm_system_star(cmds: SCM) SCM;
+pub extern fn scm_utime(pathname: SCM, actime: SCM, modtime: SCM, actimens: SCM, modtimens: SCM, flags: SCM) SCM;
+pub extern fn scm_access(path: SCM, how: SCM) SCM;
+pub extern fn scm_getpid() SCM;
+pub extern fn scm_putenv(str: SCM) SCM;
+pub extern fn scm_setlocale(category: SCM, locale: SCM) SCM;
+pub extern fn scm_mknod(path: SCM, @"type": SCM, perms: SCM, dev: SCM) SCM;
+pub extern fn scm_nice(incr: SCM) SCM;
+pub extern fn scm_sync() SCM;
+pub extern fn scm_crypt(key: SCM, salt: SCM) SCM;
+pub extern fn scm_chroot(path: SCM) SCM;
+pub extern fn scm_getlogin() SCM;
+pub extern fn scm_getpriority(which: SCM, who: SCM) SCM;
+pub extern fn scm_setpriority(which: SCM, who: SCM, prio: SCM) SCM;
+pub extern fn scm_getpass(prompt: SCM) SCM;
+pub extern fn scm_flock(file: SCM, operation: SCM) SCM;
+pub extern fn scm_sethostname(name: SCM) SCM;
+pub extern fn scm_gethostname() SCM;
+pub extern fn scm_getaffinity(pid: SCM) SCM;
+pub extern fn scm_setaffinity(pid: SCM, cpu_set: SCM) SCM;
+pub extern fn scm_init_posix() void;
+pub extern var scm_i_locale_mutex: pthread_mutex_t;
+pub extern var scm_sym_name: SCM;
+pub extern var scm_sym_system_procedure: SCM;
+pub extern var scm_sym_documentation: SCM;
+pub extern fn scm_i_procedure_arity(proc: SCM, req: [*c]c_int, opt: [*c]c_int, rest: [*c]c_int) c_int;
+pub extern fn scm_set_procedure_minimum_arity_x(proc: SCM, req: SCM, opt: SCM, rest: SCM) SCM;
+pub extern fn scm_procedure_minimum_arity(proc: SCM) SCM;
+pub extern fn scm_procedure_properties(proc: SCM) SCM;
+pub extern fn scm_set_procedure_properties_x(proc: SCM, alist: SCM) SCM;
+pub extern fn scm_procedure_property(proc: SCM, key: SCM) SCM;
+pub extern fn scm_set_procedure_property_x(proc: SCM, key: SCM, val: SCM) SCM;
+pub extern fn scm_procedure_source(proc: SCM) SCM;
+pub extern fn scm_procedure_name(proc: SCM) SCM;
+pub extern fn scm_procedure_documentation(proc: SCM) SCM;
+pub extern fn scm_init_procprop() void;
+pub extern var scm_tc16_promise: scm_t_bits;
+pub extern fn scm_make_promise(thunk: SCM) SCM;
+pub extern fn scm_force(x: SCM) SCM;
+pub extern fn scm_promise_p(x: SCM) SCM;
+pub extern fn scm_init_promises() void;
+pub extern fn scm_eof_object() SCM;
+pub extern fn scm_open_bytevector_input_port(SCM, SCM) SCM;
+pub extern fn scm_make_custom_binary_input_port(SCM, SCM, SCM, SCM, SCM) SCM;
+pub extern fn scm_get_u8(SCM) SCM;
+pub extern fn scm_lookahead_u8(SCM) SCM;
+pub extern fn scm_get_bytevector_n(SCM, SCM) SCM;
+pub extern fn scm_get_bytevector_n_x(SCM, SCM, SCM, SCM) SCM;
+pub extern fn scm_get_bytevector_some(SCM) SCM;
+pub extern fn scm_get_bytevector_all(SCM) SCM;
+pub extern fn scm_put_u8(SCM, SCM) SCM;
+pub extern fn scm_put_bytevector(SCM, SCM, SCM, SCM) SCM;
+pub extern fn scm_open_bytevector_output_port(SCM) SCM;
+pub extern fn scm_make_custom_binary_output_port(SCM, SCM, SCM, SCM, SCM) SCM;
+pub extern fn scm_make_custom_binary_input_output_port(SCM, SCM, SCM, SCM, SCM, SCM) SCM;
+pub extern fn scm_get_string_n_x(SCM, SCM, SCM, SCM) SCM;
+pub extern fn scm_init_r6rs_ports() void;
+pub extern fn scm_register_r6rs_ports() void;
+pub extern fn scm_unget_bytevector(SCM, SCM, SCM, SCM) SCM;
+pub extern fn scm_get_bytevector_some_x(SCM, SCM, SCM, SCM) SCM;
+pub const scm_t_rstate = struct_scm_t_rstate;
+pub const struct_scm_t_rng = extern struct {
+ rstate_size: usize,
+ random_bits: ?fn ([*c]scm_t_rstate) callconv(.C) u32,
+ init_rstate: ?fn ([*c]scm_t_rstate, [*c]const u8, c_int) callconv(.C) void,
+ copy_rstate: ?fn ([*c]scm_t_rstate) callconv(.C) [*c]scm_t_rstate,
+ from_datum: ?fn ([*c]scm_t_rstate, SCM) callconv(.C) void,
+ to_datum: ?fn ([*c]scm_t_rstate) callconv(.C) SCM,
+};
+pub const struct_scm_t_rstate = extern struct {
+ rng: [*c]struct_scm_t_rng,
+ normal_next: f64,
+};
+pub const scm_t_rng = struct_scm_t_rng;
+pub extern var scm_the_rng: scm_t_rng;
+pub extern fn scm_c_make_rstate([*c]const u8, c_int) [*c]scm_t_rstate;
+pub extern fn scm_c_rstate_from_datum(datum: SCM) [*c]scm_t_rstate;
+pub extern fn scm_c_default_rstate() [*c]scm_t_rstate;
+pub extern fn scm_c_uniform01([*c]scm_t_rstate) f64;
+pub extern fn scm_c_normal01([*c]scm_t_rstate) f64;
+pub extern fn scm_c_exp1([*c]scm_t_rstate) f64;
+pub extern fn scm_c_random([*c]scm_t_rstate, m: u32) u32;
+pub extern fn scm_c_random64(state: [*c]scm_t_rstate, m: u64) u64;
+pub extern fn scm_c_random_bignum([*c]scm_t_rstate, m: SCM) SCM;
+pub extern var scm_tc16_rstate: scm_t_bits;
+pub extern var scm_masktab: [256]u8;
+pub extern var scm_var_random_state: SCM;
+pub extern fn scm_random(n: SCM, state: SCM) SCM;
+pub extern fn scm_copy_random_state(state: SCM) SCM;
+pub extern fn scm_seed_to_random_state(seed: SCM) SCM;
+pub extern fn scm_datum_to_random_state(datum: SCM) SCM;
+pub extern fn scm_random_state_to_datum(state: SCM) SCM;
+pub extern fn scm_random_state_from_platform() SCM;
+pub extern fn scm_random_uniform(state: SCM) SCM;
+pub extern fn scm_random_solid_sphere_x(v: SCM, state: SCM) SCM;
+pub extern fn scm_random_hollow_sphere_x(v: SCM, state: SCM) SCM;
+pub extern fn scm_random_normal(state: SCM) SCM;
+pub extern fn scm_random_normal_vector_x(v: SCM, state: SCM) SCM;
+pub extern fn scm_random_exp(state: SCM) SCM;
+pub extern fn scm_init_random() void;
+pub extern fn scm_i_random_bytes_from_platform(buf: [*c]u8, len: usize) void;
+pub extern var scm_sym_dot: SCM;
+pub extern fn scm_primitive_read(port: SCM) SCM;
+pub extern fn scm_read_options(setting: SCM) SCM;
+pub extern fn scm_read(port: SCM) SCM;
+pub extern fn scm_read_hash_extend(chr: SCM, proc: SCM) SCM;
+pub extern fn scm_i_scan_for_encoding(port: SCM) [*c]u8;
+pub extern fn scm_file_encoding(port: SCM) SCM;
+pub extern fn scm_i_input_error(func: [*c]const u8, port: SCM, message: [*c]const u8, arg: SCM) noreturn;
+pub extern fn scm_init_read() void;
+pub extern fn scm_sigaction(signum: SCM, handler: SCM, flags: SCM) SCM;
+pub extern fn scm_sigaction_for_thread(signum: SCM, handler: SCM, flags: SCM, thread: SCM) SCM;
+pub extern fn scm_restore_signals() SCM;
+pub extern fn scm_alarm(i: SCM) SCM;
+pub extern fn scm_setitimer(which_timer: SCM, interval_seconds: SCM, interval_microseconds: SCM, value_seconds: SCM, value_microseconds: SCM) SCM;
+pub extern fn scm_getitimer(which_timer: SCM) SCM;
+pub extern fn scm_pause() SCM;
+pub extern fn scm_sleep(i: SCM) SCM;
+pub extern fn scm_usleep(i: SCM) SCM;
+pub extern fn scm_raise(sig: SCM) SCM;
+pub extern fn scm_init_scmsigs() void;
+pub extern fn scm_i_close_signal_pipe() void;
+pub extern fn scm_i_ensure_signal_delivery_thread() void;
+pub extern var scm_i_signal_delivery_thread: [*c]scm_thread;
+pub extern fn scm_get_meta_args(argc: c_int, argv: [*c][*c]u8) [*c][*c]u8;
+pub extern fn scm_count_argv(argv: [*c][*c]u8) c_int;
+pub extern fn scm_shell_usage(fatal: c_int, message: [*c]u8) void;
+pub extern fn scm_compile_shell_switches(argc: c_int, argv: [*c][*c]u8) SCM;
+pub extern fn scm_shell(argc: c_int, argv: [*c][*c]u8) void;
+pub extern var scm_usage_name: [*c]u8;
+pub extern fn scm_i_set_boot_program_arguments(argc: c_int, argv: [*c][*c]u8) void;
+pub extern fn scm_init_script() void;
+pub extern fn scm_system(cmd: SCM) SCM;
+pub extern fn scm_getenv(nam: SCM) SCM;
+pub extern fn scm_primitive_exit(status: SCM) SCM;
+pub extern fn scm_primitive__exit(status: SCM) SCM;
+pub extern fn scm_getenv_int(@"var": [*c]const u8, def: c_int) c_int;
+pub extern fn scm_init_simpos() void;
+pub extern fn scm_inet_netof(address: SCM) SCM;
+pub extern fn scm_lnaof(address: SCM) SCM;
+pub extern fn scm_inet_makeaddr(net: SCM, lna: SCM) SCM;
+pub extern fn scm_inet_pton(family: SCM, address: SCM) SCM;
+pub extern fn scm_inet_ntop(family: SCM, address: SCM) SCM;
+pub extern fn scm_socket(family: SCM, style: SCM, proto: SCM) SCM;
+pub extern fn scm_socketpair(family: SCM, style: SCM, proto: SCM) SCM;
+pub extern fn scm_getsockopt(sfd: SCM, level: SCM, optname: SCM) SCM;
+pub extern fn scm_setsockopt(sfd: SCM, level: SCM, optname: SCM, value: SCM) SCM;
+pub extern fn scm_shutdown(sfd: SCM, how: SCM) SCM;
+pub extern fn scm_connect(sockfd: SCM, fam: SCM, address: SCM, args: SCM) SCM;
+pub extern fn scm_bind(sockfd: SCM, fam: SCM, address: SCM, args: SCM) SCM;
+pub extern fn scm_listen(sfd: SCM, backlog: SCM) SCM;
+pub extern fn scm_accept4(sockfd: SCM, flags: SCM) SCM;
+pub extern fn scm_accept(sockfd: SCM) SCM;
+pub extern fn scm_getsockname(sockfd: SCM) SCM;
+pub extern fn scm_getpeername(sockfd: SCM) SCM;
+pub extern fn scm_recv(sockfd: SCM, buff_or_size: SCM, flags: SCM) SCM;
+pub extern fn scm_send(sockfd: SCM, message: SCM, flags: SCM) SCM;
+pub extern fn scm_recvfrom(sockfd: SCM, buff_or_size: SCM, flags: SCM, offset: SCM, length: SCM) SCM;
+pub extern fn scm_sendto(sockfd: SCM, message: SCM, fam: SCM, address: SCM, args_and_flags: SCM) SCM;
+pub extern fn scm_init_socket() void;
+pub const struct_sockaddr = opaque {};
+pub extern fn scm_from_sockaddr(address: ?*const struct_sockaddr, addr_size: c_uint) SCM;
+pub extern fn scm_to_sockaddr(address: SCM, adress_size: [*c]usize) ?*struct_sockaddr;
+pub extern fn scm_c_make_socket_address(family: SCM, address: SCM, args: SCM, address_size: [*c]usize) ?*struct_sockaddr;
+pub extern fn scm_make_socket_address(family: SCM, address: SCM, args: SCM) SCM;
+pub extern fn scm_restricted_vector_sort_x(vec: SCM, less: SCM, startpos: SCM, endpos: SCM) SCM;
+pub extern fn scm_sorted_p(ls: SCM, less: SCM) SCM;
+pub extern fn scm_merge(ls1: SCM, ls2: SCM, less: SCM) SCM;
+pub extern fn scm_merge_x(ls1: SCM, ls2: SCM, less: SCM) SCM;
+pub extern fn scm_sort(ls: SCM, less: SCM) SCM;
+pub extern fn scm_sort_x(ls: SCM, less: SCM) SCM;
+pub extern fn scm_stable_sort(ls: SCM, less: SCM) SCM;
+pub extern fn scm_stable_sort_x(ls: SCM, less: SCM) SCM;
+pub extern fn scm_sort_list(ls: SCM, less: SCM) SCM;
+pub extern fn scm_sort_list_x(ls: SCM, less: SCM) SCM;
+pub extern fn scm_init_sort() void;
+pub extern var scm_sym_filename: SCM;
+pub extern var scm_sym_line: SCM;
+pub extern var scm_sym_column: SCM;
+pub extern fn scm_supports_source_properties_p(obj: SCM) SCM;
+pub extern fn scm_source_property(obj: SCM, key: SCM) SCM;
+pub extern fn scm_set_source_property_x(obj: SCM, key: SCM, datum: SCM) SCM;
+pub extern fn scm_source_properties(obj: SCM) SCM;
+pub extern fn scm_set_source_properties_x(obj: SCM, props: SCM) SCM;
+pub extern fn scm_i_make_srcprops(line: SCM, col: SCM, fname: SCM, alist: SCM) SCM;
+pub extern fn scm_i_has_source_properties(obj: SCM) c_int;
+pub extern fn scm_i_set_source_properties_x(obj: SCM, line: SCM, col: SCM, fname: SCM) void;
+pub extern fn scm_cons_source(xorig: SCM, x: SCM, y: SCM) SCM;
+pub extern fn scm_init_srcprop() void;
+pub extern fn scm_local_eval(exp: SCM, env: SCM) SCM;
+pub extern fn scm_reverse_lookup(env: SCM, data: SCM) SCM;
+pub extern fn scm_debug_options(setting: SCM) SCM;
+pub extern fn scm_init_debug() void;
+pub extern var scm_stack_checking_enabled_p: c_int;
+pub extern fn scm_stack_size(start: [*c]SCM_STACKITEM) c_long;
+pub extern fn scm_stack_report() void;
+pub extern fn scm_sys_get_stack_size() SCM;
+pub extern fn scm_init_stackchk() void;
+pub extern var scm_c_time_units_per_second: c_long;
+pub extern fn scm_c_get_internal_run_time() c_long;
+pub extern fn scm_get_internal_real_time() SCM;
+pub extern fn scm_get_internal_run_time() SCM;
+pub extern fn scm_current_time() SCM;
+pub extern fn scm_gettimeofday() SCM;
+pub extern fn scm_localtime(time: SCM, zone: SCM) SCM;
+pub extern fn scm_gmtime(time: SCM) SCM;
+pub extern fn scm_mktime(sbd_time: SCM, zone: SCM) SCM;
+pub extern fn scm_tzset() SCM;
+pub extern fn scm_times() SCM;
+pub extern fn scm_strftime(format: SCM, stime: SCM) SCM;
+pub extern fn scm_strptime(format: SCM, string: SCM) SCM;
+pub extern fn scm_init_stime() void;
+pub extern fn scm_string_null_p(s: SCM) SCM;
+pub extern fn scm_string_any(pred: SCM, s: SCM, start: SCM, end: SCM) SCM;
+pub extern fn scm_string_every(pred: SCM, s: SCM, start: SCM, end: SCM) SCM;
+pub extern fn scm_string_tabulate(proc: SCM, len: SCM) SCM;
+pub extern fn scm_string_to_list(str: SCM) SCM;
+pub extern fn scm_substring_to_list(str: SCM, start: SCM, end: SCM) SCM;
+pub extern fn scm_reverse_list_to_string(chrs: SCM) SCM;
+pub extern fn scm_string_join(ls: SCM, delimiter: SCM, grammar: SCM) SCM;
+pub extern fn scm_string_copy(str: SCM) SCM;
+pub extern fn scm_string_copy_x(target: SCM, tstart: SCM, s: SCM, start: SCM, end: SCM) SCM;
+pub extern fn scm_substring_move_x(str1: SCM, start1: SCM, end1: SCM, str2: SCM, start2: SCM) SCM;
+pub extern fn scm_string_take(s: SCM, n: SCM) SCM;
+pub extern fn scm_string_drop(s: SCM, n: SCM) SCM;
+pub extern fn scm_string_take_right(s: SCM, n: SCM) SCM;
+pub extern fn scm_string_drop_right(s: SCM, n: SCM) SCM;
+pub extern fn scm_string_pad(s: SCM, len: SCM, chr: SCM, start: SCM, end: SCM) SCM;
+pub extern fn scm_string_pad_right(s: SCM, len: SCM, chr: SCM, start: SCM, end: SCM) SCM;
+pub extern fn scm_string_trim(s: SCM, char_pred: SCM, start: SCM, end: SCM) SCM;
+pub extern fn scm_string_trim_right(s: SCM, char_pred: SCM, start: SCM, end: SCM) SCM;
+pub extern fn scm_string_trim_both(s: SCM, char_pred: SCM, start: SCM, end: SCM) SCM;
+pub extern fn scm_substring_fill_x(str: SCM, chr: SCM, start: SCM, end: SCM) SCM;
+pub extern fn scm_string_fill_x(str: SCM, chr: SCM) SCM;
+pub extern fn scm_string_compare(s1: SCM, s2: SCM, proc_lt: SCM, proc_eq: SCM, proc_gt: SCM, start1: SCM, end1: SCM, start2: SCM, end2: SCM) SCM;
+pub extern fn scm_string_compare_ci(s1: SCM, s2: SCM, proc_lt: SCM, proc_eq: SCM, proc_gt: SCM, start1: SCM, end1: SCM, start2: SCM, end2: SCM) SCM;
+pub extern fn scm_string_eq(s1: SCM, s2: SCM, start1: SCM, end1: SCM, start2: SCM, end2: SCM) SCM;
+pub extern fn scm_string_neq(s1: SCM, s2: SCM, start1: SCM, end1: SCM, start2: SCM, end2: SCM) SCM;
+pub extern fn scm_string_lt(s1: SCM, s2: SCM, start1: SCM, end1: SCM, start2: SCM, end2: SCM) SCM;
+pub extern fn scm_string_gt(s1: SCM, s2: SCM, start1: SCM, end1: SCM, start2: SCM, end2: SCM) SCM;
+pub extern fn scm_string_le(s1: SCM, s2: SCM, start1: SCM, end1: SCM, start2: SCM, end2: SCM) SCM;
+pub extern fn scm_string_ge(s1: SCM, s2: SCM, start1: SCM, end1: SCM, start2: SCM, end2: SCM) SCM;
+pub extern fn scm_string_ci_eq(s1: SCM, s2: SCM, start1: SCM, end1: SCM, start2: SCM, end2: SCM) SCM;
+pub extern fn scm_string_ci_neq(s1: SCM, s2: SCM, start1: SCM, end1: SCM, start2: SCM, end2: SCM) SCM;
+pub extern fn scm_string_ci_lt(s1: SCM, s2: SCM, start1: SCM, end1: SCM, start2: SCM, end2: SCM) SCM;
+pub extern fn scm_string_ci_gt(s1: SCM, s2: SCM, start1: SCM, end1: SCM, start2: SCM, end2: SCM) SCM;
+pub extern fn scm_string_ci_le(s1: SCM, s2: SCM, start1: SCM, end1: SCM, start2: SCM, end2: SCM) SCM;
+pub extern fn scm_string_ci_ge(s1: SCM, s2: SCM, start1: SCM, end1: SCM, start2: SCM, end2: SCM) SCM;
+pub extern fn scm_substring_hash(s: SCM, bound: SCM, start: SCM, end: SCM) SCM;
+pub extern fn scm_substring_hash_ci(s: SCM, bound: SCM, start: SCM, end: SCM) SCM;
+pub extern fn scm_string_prefix_length(s1: SCM, s2: SCM, start1: SCM, end1: SCM, start2: SCM, end2: SCM) SCM;
+pub extern fn scm_string_prefix_length_ci(s1: SCM, s2: SCM, start1: SCM, end1: SCM, start2: SCM, end2: SCM) SCM;
+pub extern fn scm_string_suffix_length(s1: SCM, s2: SCM, start1: SCM, end1: SCM, start2: SCM, end2: SCM) SCM;
+pub extern fn scm_string_suffix_length_ci(s1: SCM, s2: SCM, start1: SCM, end1: SCM, start2: SCM, end2: SCM) SCM;
+pub extern fn scm_string_prefix_p(s1: SCM, s2: SCM, start1: SCM, end1: SCM, start2: SCM, end2: SCM) SCM;
+pub extern fn scm_string_prefix_ci_p(s1: SCM, s2: SCM, start1: SCM, end1: SCM, start2: SCM, end2: SCM) SCM;
+pub extern fn scm_string_suffix_p(s1: SCM, s2: SCM, start1: SCM, end1: SCM, start2: SCM, end2: SCM) SCM;
+pub extern fn scm_string_suffix_ci_p(s1: SCM, s2: SCM, start1: SCM, end1: SCM, start2: SCM, end2: SCM) SCM;
+pub extern fn scm_string_index(s: SCM, char_pred: SCM, start: SCM, end: SCM) SCM;
+pub extern fn scm_string_index_right(s: SCM, char_pred: SCM, start: SCM, end: SCM) SCM;
+pub extern fn scm_string_rindex(s: SCM, char_pred: SCM, start: SCM, end: SCM) SCM;
+pub extern fn scm_string_skip(s: SCM, char_pred: SCM, start: SCM, end: SCM) SCM;
+pub extern fn scm_string_skip_right(s: SCM, char_pred: SCM, start: SCM, end: SCM) SCM;
+pub extern fn scm_string_count(s: SCM, char_pred: SCM, start: SCM, end: SCM) SCM;
+pub extern fn scm_string_contains(s1: SCM, s2: SCM, start1: SCM, end1: SCM, start2: SCM, end2: SCM) SCM;
+pub extern fn scm_string_contains_ci(s1: SCM, s2: SCM, start1: SCM, end1: SCM, start2: SCM, end2: SCM) SCM;
+pub extern fn scm_substring_upcase_x(str: SCM, start: SCM, end: SCM) SCM;
+pub extern fn scm_substring_upcase(str: SCM, start: SCM, end: SCM) SCM;
+pub extern fn scm_string_upcase_x(str: SCM) SCM;
+pub extern fn scm_string_upcase(str: SCM) SCM;
+pub extern fn scm_substring_downcase_x(str: SCM, start: SCM, end: SCM) SCM;
+pub extern fn scm_substring_downcase(str: SCM, start: SCM, end: SCM) SCM;
+pub extern fn scm_string_downcase_x(str: SCM) SCM;
+pub extern fn scm_string_downcase(str: SCM) SCM;
+pub extern fn scm_string_titlecase_x(str: SCM, start: SCM, end: SCM) SCM;
+pub extern fn scm_string_titlecase(str: SCM, start: SCM, end: SCM) SCM;
+pub extern fn scm_string_capitalize_x(str: SCM) SCM;
+pub extern fn scm_string_capitalize(str: SCM) SCM;
+pub extern fn scm_string_reverse(str: SCM, start: SCM, end: SCM) SCM;
+pub extern fn scm_string_reverse_x(str: SCM, start: SCM, end: SCM) SCM;
+pub extern fn scm_string_append_shared(ls: SCM) SCM;
+pub extern fn scm_string_concatenate(ls: SCM) SCM;
+pub extern fn scm_string_concatenate_shared(ls: SCM) SCM;
+pub extern fn scm_string_concatenate_reverse(ls: SCM, final_string: SCM, end: SCM) SCM;
+pub extern fn scm_string_concatenate_reverse_shared(ls: SCM, final_string: SCM, end: SCM) SCM;
+pub extern fn scm_string_map(proc: SCM, s: SCM, start: SCM, end: SCM) SCM;
+pub extern fn scm_string_map_x(proc: SCM, s: SCM, start: SCM, end: SCM) SCM;
+pub extern fn scm_string_fold(kons: SCM, knil: SCM, s: SCM, start: SCM, end: SCM) SCM;
+pub extern fn scm_string_fold_right(kons: SCM, knil: SCM, s: SCM, start: SCM, end: SCM) SCM;
+pub extern fn scm_string_unfold(p: SCM, f: SCM, g: SCM, seed: SCM, base: SCM, make_final: SCM) SCM;
+pub extern fn scm_string_unfold_right(p: SCM, f: SCM, g: SCM, seed: SCM, base: SCM, make_final: SCM) SCM;
+pub extern fn scm_string_for_each(proc: SCM, s: SCM, start: SCM, end: SCM) SCM;
+pub extern fn scm_string_for_each_index(proc: SCM, s: SCM, start: SCM, end: SCM) SCM;
+pub extern fn scm_xsubstring(s: SCM, from: SCM, to: SCM, start: SCM, end: SCM) SCM;
+pub extern fn scm_string_xcopy_x(target: SCM, tstart: SCM, s: SCM, sfrom: SCM, sto: SCM, start: SCM, end: SCM) SCM;
+pub extern fn scm_string_replace(s1: SCM, s2: SCM, start1: SCM, end1: SCM, start2: SCM, end2: SCM) SCM;
+pub extern fn scm_string_tokenize(s: SCM, token_char: SCM, start: SCM, end: SCM) SCM;
+pub extern fn scm_string_split(s: SCM, char_pred: SCM) SCM;
+pub extern fn scm_string_filter(char_pred: SCM, s: SCM, start: SCM, end: SCM) SCM;
+pub extern fn scm_string_delete(char_pred: SCM, s: SCM, start: SCM, end: SCM) SCM;
+pub extern fn scm_init_srfi_13() void;
+pub extern fn scm_init_srfi_13_14() void;
+pub const scm_t_char_range = extern struct {
+ lo: scm_t_wchar,
+ hi: scm_t_wchar,
+};
+pub const scm_t_char_set = extern struct {
+ len: usize,
+ ranges: [*c]scm_t_char_range,
+};
+pub const scm_t_char_set_cursor = extern struct {
+ range: usize,
+ n: scm_t_wchar,
+};
+pub extern var scm_tc16_charset: c_int;
+pub extern fn scm_i_charset_get(cs: [*c]scm_t_char_set, n: scm_t_wchar) c_int;
+pub extern fn scm_i_charset_set(cs: [*c]scm_t_char_set, n: scm_t_wchar) void;
+pub extern fn scm_i_charset_unset(cs: [*c]scm_t_char_set, n: scm_t_wchar) void;
+pub extern fn scm_char_set_p(obj: SCM) SCM;
+pub extern fn scm_char_set_eq(char_sets: SCM) SCM;
+pub extern fn scm_char_set_leq(char_sets: SCM) SCM;
+pub extern fn scm_char_set_hash(cs: SCM, bound: SCM) SCM;
+pub extern fn scm_char_set_cursor(cs: SCM) SCM;
+pub extern fn scm_char_set_ref(cs: SCM, cursor: SCM) SCM;
+pub extern fn scm_char_set_cursor_next(cs: SCM, cursor: SCM) SCM;
+pub extern fn scm_end_of_char_set_p(cursor: SCM) SCM;
+pub extern fn scm_char_set_fold(kons: SCM, knil: SCM, cs: SCM) SCM;
+pub extern fn scm_char_set_unfold(p: SCM, f: SCM, g: SCM, seed: SCM, base_cs: SCM) SCM;
+pub extern fn scm_char_set_unfold_x(p: SCM, f: SCM, g: SCM, seed: SCM, base_cs: SCM) SCM;
+pub extern fn scm_char_set_for_each(proc: SCM, cs: SCM) SCM;
+pub extern fn scm_char_set_map(proc: SCM, cs: SCM) SCM;
+pub extern fn scm_char_set_copy(cs: SCM) SCM;
+pub extern fn scm_char_set(rest: SCM) SCM;
+pub extern fn scm_list_to_char_set(list: SCM, base_cs: SCM) SCM;
+pub extern fn scm_list_to_char_set_x(list: SCM, base_cs: SCM) SCM;
+pub extern fn scm_string_to_char_set(str: SCM, base_cs: SCM) SCM;
+pub extern fn scm_string_to_char_set_x(str: SCM, base_cs: SCM) SCM;
+pub extern fn scm_char_set_filter(pred: SCM, cs: SCM, base_cs: SCM) SCM;
+pub extern fn scm_char_set_filter_x(pred: SCM, cs: SCM, base_cs: SCM) SCM;
+pub extern fn scm_ucs_range_to_char_set(lower: SCM, upper: SCM, @"error": SCM, base_cs: SCM) SCM;
+pub extern fn scm_ucs_range_to_char_set_x(lower: SCM, upper: SCM, @"error": SCM, base_cs: SCM) SCM;
+pub extern fn scm_to_char_set(x: SCM) SCM;
+pub extern fn scm_char_set_size(cs: SCM) SCM;
+pub extern fn scm_char_set_count(pred: SCM, cs: SCM) SCM;
+pub extern fn scm_char_set_to_list(cs: SCM) SCM;
+pub extern fn scm_char_set_to_string(cs: SCM) SCM;
+pub extern fn scm_char_set_contains_p(cs: SCM, ch: SCM) SCM;
+pub extern fn scm_char_set_every(pred: SCM, cs: SCM) SCM;
+pub extern fn scm_char_set_any(pred: SCM, cs: SCM) SCM;
+pub extern fn scm_char_set_adjoin(cs: SCM, rest: SCM) SCM;
+pub extern fn scm_char_set_delete(cs: SCM, rest: SCM) SCM;
+pub extern fn scm_char_set_adjoin_x(cs: SCM, rest: SCM) SCM;
+pub extern fn scm_char_set_delete_x(cs: SCM, rest: SCM) SCM;
+pub extern fn scm_char_set_complement(cs: SCM) SCM;
+pub extern fn scm_char_set_union(rest: SCM) SCM;
+pub extern fn scm_char_set_intersection(rest: SCM) SCM;
+pub extern fn scm_char_set_difference(cs1: SCM, rest: SCM) SCM;
+pub extern fn scm_char_set_xor(rest: SCM) SCM;
+pub extern fn scm_char_set_diff_plus_intersection(cs1: SCM, rest: SCM) SCM;
+pub extern fn scm_char_set_complement_x(cs: SCM) SCM;
+pub extern fn scm_char_set_union_x(cs1: SCM, rest: SCM) SCM;
+pub extern fn scm_char_set_intersection_x(cs1: SCM, rest: SCM) SCM;
+pub extern fn scm_char_set_difference_x(cs1: SCM, rest: SCM) SCM;
+pub extern fn scm_char_set_xor_x(cs1: SCM, rest: SCM) SCM;
+pub extern fn scm_char_set_diff_plus_intersection_x(cs1: SCM, cs2: SCM, rest: SCM) SCM;
+pub extern fn scm_sys_char_set_dump(charset: SCM) SCM;
+pub extern var scm_char_set_lower_case: SCM;
+pub extern var scm_char_set_upper_case: SCM;
+pub extern var scm_char_set_title_case: SCM;
+pub extern var scm_char_set_letter: SCM;
+pub extern var scm_char_set_digit: SCM;
+pub extern var scm_char_set_letter_and_digit: SCM;
+pub extern var scm_char_set_graphic: SCM;
+pub extern var scm_char_set_printing: SCM;
+pub extern var scm_char_set_whitespace: SCM;
+pub extern var scm_char_set_iso_control: SCM;
+pub extern var scm_char_set_punctuation: SCM;
+pub extern var scm_char_set_symbol: SCM;
+pub extern var scm_char_set_hex_digit: SCM;
+pub extern var scm_char_set_blank: SCM;
+pub extern var scm_char_set_ascii: SCM;
+pub extern var scm_char_set_empty: SCM;
+pub extern var scm_char_set_full: SCM;
+pub extern fn scm_init_srfi_14() void;
+pub extern fn scm_string_equal_p(s1: SCM, s2: SCM) SCM;
+pub extern fn scm_string_ci_equal_p(s1: SCM, s2: SCM) SCM;
+pub extern fn scm_string_less_p(s1: SCM, s2: SCM) SCM;
+pub extern fn scm_string_leq_p(s1: SCM, s2: SCM) SCM;
+pub extern fn scm_string_gr_p(s1: SCM, s2: SCM) SCM;
+pub extern fn scm_string_geq_p(s1: SCM, s2: SCM) SCM;
+pub extern fn scm_string_ci_less_p(s1: SCM, s2: SCM) SCM;
+pub extern fn scm_string_ci_leq_p(s1: SCM, s2: SCM) SCM;
+pub extern fn scm_string_ci_gr_p(s1: SCM, s2: SCM) SCM;
+pub extern fn scm_string_ci_geq_p(s1: SCM, s2: SCM) SCM;
+pub extern fn scm_init_strorder() void;
+pub extern var scm_string_port_type: ?*scm_t_port_type;
+pub extern fn scm_mkstrport(pos: SCM, str: SCM, modes: c_long, caller: [*c]const u8) SCM;
+pub extern fn scm_strport_to_string(port: SCM) SCM;
+pub extern fn scm_object_to_string(obj: SCM, printer: SCM) SCM;
+pub extern fn scm_call_with_output_string(proc: SCM) SCM;
+pub extern fn scm_call_with_input_string(str: SCM, proc: SCM) SCM;
+pub extern fn scm_open_input_string(str: SCM) SCM;
+pub extern fn scm_open_output_string() SCM;
+pub extern fn scm_get_output_string(port: SCM) SCM;
+pub extern fn scm_c_read_string(expr: [*c]const u8) SCM;
+pub extern fn scm_c_eval_string(expr: [*c]const u8) SCM;
+pub extern fn scm_c_eval_string_in_module(expr: [*c]const u8, module: SCM) SCM;
+pub extern fn scm_eval_string(string: SCM) SCM;
+pub extern fn scm_eval_string_in_module(string: SCM, module: SCM) SCM;
+pub extern fn scm_init_strports() void;
+pub extern fn scm_symbol_p(x: SCM) SCM;
+pub extern fn scm_symbol_interned_p(sym: SCM) SCM;
+pub extern fn scm_make_symbol(name: SCM) SCM;
+pub extern fn scm_symbol_to_string(s: SCM) SCM;
+pub extern fn scm_string_to_symbol(s: SCM) SCM;
+pub extern fn scm_string_ci_to_symbol(s: SCM) SCM;
+pub extern fn scm_symbol_hash(s: SCM) SCM;
+pub extern fn scm_gensym(prefix: SCM) SCM;
+pub extern fn scm_from_locale_symbol(str: [*c]const u8) SCM;
+pub extern fn scm_from_locale_symboln(str: [*c]const u8, len: usize) SCM;
+pub extern fn scm_take_locale_symbol(sym: [*c]u8) SCM;
+pub extern fn scm_take_locale_symboln(sym: [*c]u8, len: usize) SCM;
+pub extern fn scm_from_latin1_symbol(str: [*c]const u8) SCM;
+pub extern fn scm_from_latin1_symboln(str: [*c]const u8, len: usize) SCM;
+pub extern fn scm_take_latin1_symbol(sym: [*c]u8) SCM;
+pub extern fn scm_take_latin1_symboln(sym: [*c]u8, len: usize) SCM;
+pub extern fn scm_from_utf8_symbol(str: [*c]const u8) SCM;
+pub extern fn scm_from_utf8_symboln(str: [*c]const u8, len: usize) SCM;
+pub extern fn scm_take_utf8_symbol(sym: [*c]u8) SCM;
+pub extern fn scm_take_utf8_symboln(sym: [*c]u8, len: usize) SCM;
+pub extern fn scm_i_hash_symbol(obj: SCM, n: c_ulong, closure: ?*anyopaque) c_ulong;
+pub extern fn scm_symbols_prehistory() void;
+pub extern fn scm_init_symbols() void;
+pub fn scm_is_values(arg_x: SCM) callconv(.C) c_int {
+ var x = arg_x;
+ return @boolToInt(!((@bitCast(c_ulong, @as(c_long, @as(c_int, 6))) & @intCast(scm_t_bits, @ptrToInt(if (false) blk: {
+ const tmp = x;
+ @intToPtr([*c]volatile SCM, @as(c_int, 0)).* = tmp;
+ break :blk tmp;
+ } else x))) != 0) and ((@bitCast(c_ulong, @as(c_long, @as(c_int, 127))) & @intCast(scm_t_bits, @ptrToInt(if (false) blk: {
+ const tmp = (blk_1: {
+ const tmp_2 = @as(c_int, 0);
+ if (tmp_2 >= 0) break :blk_1 @ptrCast([*c]SCM, @alignCast(@import("std").meta.alignment(SCM), @ptrCast([*c]scm_t_cell, @alignCast(@import("std").meta.alignment(scm_t_cell), @intToPtr([*c]scm_t_bits, @intCast(scm_t_bits, @ptrToInt(if (false) blk_2: {
+ const tmp_3 = x;
+ @intToPtr([*c]volatile SCM, @as(c_int, 0)).* = tmp_3;
+ break :blk_2 tmp_3;
+ } else x))))))) + @intCast(usize, tmp_2) else break :blk_1 @ptrCast([*c]SCM, @alignCast(@import("std").meta.alignment(SCM), @ptrCast([*c]scm_t_cell, @alignCast(@import("std").meta.alignment(scm_t_cell), @intToPtr([*c]scm_t_bits, @intCast(scm_t_bits, @ptrToInt(if (false) blk_2: {
+ const tmp_3 = x;
+ @intToPtr([*c]volatile SCM, @as(c_int, 0)).* = tmp_3;
+ break :blk_2 tmp_3;
+ } else x))))))) - ~@bitCast(usize, @intCast(isize, tmp_2) +% -1);
+ }).*;
+ @intToPtr([*c]volatile SCM, @as(c_int, 0)).* = tmp;
+ break :blk tmp;
+ } else (blk: {
+ const tmp = @as(c_int, 0);
+ if (tmp >= 0) break :blk @ptrCast([*c]SCM, @alignCast(@import("std").meta.alignment(SCM), @ptrCast([*c]scm_t_cell, @alignCast(@import("std").meta.alignment(scm_t_cell), @intToPtr([*c]scm_t_bits, @intCast(scm_t_bits, @ptrToInt(if (false) blk_1: {
+ const tmp_2 = x;
+ @intToPtr([*c]volatile SCM, @as(c_int, 0)).* = tmp_2;
+ break :blk_1 tmp_2;
+ } else x))))))) + @intCast(usize, tmp) else break :blk @ptrCast([*c]SCM, @alignCast(@import("std").meta.alignment(SCM), @ptrCast([*c]scm_t_cell, @alignCast(@import("std").meta.alignment(scm_t_cell), @intToPtr([*c]scm_t_bits, @intCast(scm_t_bits, @ptrToInt(if (false) blk_1: {
+ const tmp_2 = x;
+ @intToPtr([*c]volatile SCM, @as(c_int, 0)).* = tmp_2;
+ break :blk_1 tmp_2;
+ } else x))))))) - ~@bitCast(usize, @intCast(isize, tmp) +% -1);
+ }).*))) == @bitCast(c_ulong, @as(c_long, @as(c_int, 63)))));
+}
+pub extern fn scm_i_extract_values_2(obj: SCM, p1: [*c]SCM, p2: [*c]SCM) void;
+pub extern fn scm_values(args: SCM) SCM;
+pub extern fn scm_c_values(base: [*c]SCM, n: usize) SCM;
+pub extern fn scm_values_2(a: SCM, b: SCM) SCM;
+pub extern fn scm_values_3(a: SCM, b: SCM, c: SCM) SCM;
+pub extern fn scm_c_nvalues(obj: SCM) usize;
+pub extern fn scm_c_value_ref(obj: SCM, idx: usize) SCM;
+pub extern fn scm_init_values() void;
+pub extern fn scm_make_variable(init: SCM) SCM;
+pub extern fn scm_make_undefined_variable() SCM;
+pub extern fn scm_variable_p(obj: SCM) SCM;
+pub extern fn scm_variable_ref(@"var": SCM) SCM;
+pub extern fn scm_variable_set_x(@"var": SCM, val: SCM) SCM;
+pub extern fn scm_variable_unset_x(@"var": SCM) SCM;
+pub extern fn scm_variable_bound_p(@"var": SCM) SCM;
+pub extern fn scm_i_variable_print(@"var": SCM, port: SCM, pstate: [*c]scm_print_state) void;
+pub extern fn scm_init_variable() void;
+pub extern fn scm_make_srfi_4_vector(@"type": SCM, len: SCM, fill: SCM) SCM;
+pub extern fn scm_srfi_4_vector_type_size(vec: SCM) SCM;
+pub extern fn scm_u8vector_p(obj: SCM) SCM;
+pub extern fn scm_make_u8vector(n: SCM, fill: SCM) SCM;
+pub extern fn scm_take_u8vector(data: [*c]u8, n: usize) SCM;
+pub extern fn scm_u8vector(l: SCM) SCM;
+pub extern fn scm_u8vector_length(uvec: SCM) SCM;
+pub extern fn scm_u8vector_ref(uvec: SCM, index: SCM) SCM;
+pub extern fn scm_u8vector_set_x(uvec: SCM, index: SCM, value: SCM) SCM;
+pub extern fn scm_u8vector_to_list(uvec: SCM) SCM;
+pub extern fn scm_list_to_u8vector(l: SCM) SCM;
+pub extern fn scm_any_to_u8vector(obj: SCM) SCM;
+pub extern fn scm_array_handle_u8_elements(h: [*c]scm_t_array_handle) [*c]const u8;
+pub extern fn scm_array_handle_u8_writable_elements(h: [*c]scm_t_array_handle) [*c]u8;
+pub extern fn scm_u8vector_elements(uvec: SCM, h: [*c]scm_t_array_handle, lenp: [*c]usize, incp: [*c]isize) [*c]const u8;
+pub extern fn scm_u8vector_writable_elements(uvec: SCM, h: [*c]scm_t_array_handle, lenp: [*c]usize, incp: [*c]isize) [*c]u8;
+pub extern fn scm_s8vector_p(obj: SCM) SCM;
+pub extern fn scm_make_s8vector(n: SCM, fill: SCM) SCM;
+pub extern fn scm_take_s8vector(data: [*c]i8, n: usize) SCM;
+pub extern fn scm_s8vector(l: SCM) SCM;
+pub extern fn scm_s8vector_length(uvec: SCM) SCM;
+pub extern fn scm_s8vector_ref(uvec: SCM, index: SCM) SCM;
+pub extern fn scm_s8vector_set_x(uvec: SCM, index: SCM, value: SCM) SCM;
+pub extern fn scm_s8vector_to_list(uvec: SCM) SCM;
+pub extern fn scm_list_to_s8vector(l: SCM) SCM;
+pub extern fn scm_any_to_s8vector(obj: SCM) SCM;
+pub extern fn scm_array_handle_s8_elements(h: [*c]scm_t_array_handle) [*c]const i8;
+pub extern fn scm_array_handle_s8_writable_elements(h: [*c]scm_t_array_handle) [*c]i8;
+pub extern fn scm_s8vector_elements(uvec: SCM, h: [*c]scm_t_array_handle, lenp: [*c]usize, incp: [*c]isize) [*c]const i8;
+pub extern fn scm_s8vector_writable_elements(uvec: SCM, h: [*c]scm_t_array_handle, lenp: [*c]usize, incp: [*c]isize) [*c]i8;
+pub extern fn scm_u16vector_p(obj: SCM) SCM;
+pub extern fn scm_make_u16vector(n: SCM, fill: SCM) SCM;
+pub extern fn scm_take_u16vector(data: [*c]u16, n: usize) SCM;
+pub extern fn scm_u16vector(l: SCM) SCM;
+pub extern fn scm_u16vector_length(uvec: SCM) SCM;
+pub extern fn scm_u16vector_ref(uvec: SCM, index: SCM) SCM;
+pub extern fn scm_u16vector_set_x(uvec: SCM, index: SCM, value: SCM) SCM;
+pub extern fn scm_u16vector_to_list(uvec: SCM) SCM;
+pub extern fn scm_list_to_u16vector(l: SCM) SCM;
+pub extern fn scm_any_to_u16vector(obj: SCM) SCM;
+pub extern fn scm_array_handle_u16_elements(h: [*c]scm_t_array_handle) [*c]const u16;
+pub extern fn scm_array_handle_u16_writable_elements(h: [*c]scm_t_array_handle) [*c]u16;
+pub extern fn scm_u16vector_elements(uvec: SCM, h: [*c]scm_t_array_handle, lenp: [*c]usize, incp: [*c]isize) [*c]const u16;
+pub extern fn scm_u16vector_writable_elements(uvec: SCM, h: [*c]scm_t_array_handle, lenp: [*c]usize, incp: [*c]isize) [*c]u16;
+pub extern fn scm_s16vector_p(obj: SCM) SCM;
+pub extern fn scm_make_s16vector(n: SCM, fill: SCM) SCM;
+pub extern fn scm_take_s16vector(data: [*c]i16, n: usize) SCM;
+pub extern fn scm_s16vector(l: SCM) SCM;
+pub extern fn scm_s16vector_length(uvec: SCM) SCM;
+pub extern fn scm_s16vector_ref(uvec: SCM, index: SCM) SCM;
+pub extern fn scm_s16vector_set_x(uvec: SCM, index: SCM, value: SCM) SCM;
+pub extern fn scm_s16vector_to_list(uvec: SCM) SCM;
+pub extern fn scm_list_to_s16vector(l: SCM) SCM;
+pub extern fn scm_any_to_s16vector(obj: SCM) SCM;
+pub extern fn scm_array_handle_s16_elements(h: [*c]scm_t_array_handle) [*c]const i16;
+pub extern fn scm_array_handle_s16_writable_elements(h: [*c]scm_t_array_handle) [*c]i16;
+pub extern fn scm_s16vector_elements(uvec: SCM, h: [*c]scm_t_array_handle, lenp: [*c]usize, incp: [*c]isize) [*c]const i16;
+pub extern fn scm_s16vector_writable_elements(uvec: SCM, h: [*c]scm_t_array_handle, lenp: [*c]usize, incp: [*c]isize) [*c]i16;
+pub extern fn scm_u32vector_p(obj: SCM) SCM;
+pub extern fn scm_make_u32vector(n: SCM, fill: SCM) SCM;
+pub extern fn scm_take_u32vector(data: [*c]u32, n: usize) SCM;
+pub extern fn scm_u32vector(l: SCM) SCM;
+pub extern fn scm_u32vector_length(uvec: SCM) SCM;
+pub extern fn scm_u32vector_ref(uvec: SCM, index: SCM) SCM;
+pub extern fn scm_u32vector_set_x(uvec: SCM, index: SCM, value: SCM) SCM;
+pub extern fn scm_u32vector_to_list(uvec: SCM) SCM;
+pub extern fn scm_list_to_u32vector(l: SCM) SCM;
+pub extern fn scm_any_to_u32vector(obj: SCM) SCM;
+pub extern fn scm_array_handle_u32_elements(h: [*c]scm_t_array_handle) [*c]const u32;
+pub extern fn scm_array_handle_u32_writable_elements(h: [*c]scm_t_array_handle) [*c]u32;
+pub extern fn scm_u32vector_elements(uvec: SCM, h: [*c]scm_t_array_handle, lenp: [*c]usize, incp: [*c]isize) [*c]const u32;
+pub extern fn scm_u32vector_writable_elements(uvec: SCM, h: [*c]scm_t_array_handle, lenp: [*c]usize, incp: [*c]isize) [*c]u32;
+pub extern fn scm_s32vector_p(obj: SCM) SCM;
+pub extern fn scm_make_s32vector(n: SCM, fill: SCM) SCM;
+pub extern fn scm_take_s32vector(data: [*c]i32, n: usize) SCM;
+pub extern fn scm_s32vector(l: SCM) SCM;
+pub extern fn scm_s32vector_length(uvec: SCM) SCM;
+pub extern fn scm_s32vector_ref(uvec: SCM, index: SCM) SCM;
+pub extern fn scm_s32vector_set_x(uvec: SCM, index: SCM, value: SCM) SCM;
+pub extern fn scm_s32vector_to_list(uvec: SCM) SCM;
+pub extern fn scm_list_to_s32vector(l: SCM) SCM;
+pub extern fn scm_any_to_s32vector(obj: SCM) SCM;
+pub extern fn scm_array_handle_s32_elements(h: [*c]scm_t_array_handle) [*c]const i32;
+pub extern fn scm_array_handle_s32_writable_elements(h: [*c]scm_t_array_handle) [*c]i32;
+pub extern fn scm_s32vector_elements(uvec: SCM, h: [*c]scm_t_array_handle, lenp: [*c]usize, incp: [*c]isize) [*c]const i32;
+pub extern fn scm_s32vector_writable_elements(uvec: SCM, h: [*c]scm_t_array_handle, lenp: [*c]usize, incp: [*c]isize) [*c]i32;
+pub extern fn scm_u64vector_p(obj: SCM) SCM;
+pub extern fn scm_make_u64vector(n: SCM, fill: SCM) SCM;
+pub extern fn scm_take_u64vector(data: [*c]u64, n: usize) SCM;
+pub extern fn scm_u64vector(l: SCM) SCM;
+pub extern fn scm_u64vector_length(uvec: SCM) SCM;
+pub extern fn scm_u64vector_ref(uvec: SCM, index: SCM) SCM;
+pub extern fn scm_u64vector_set_x(uvec: SCM, index: SCM, value: SCM) SCM;
+pub extern fn scm_u64vector_to_list(uvec: SCM) SCM;
+pub extern fn scm_list_to_u64vector(l: SCM) SCM;
+pub extern fn scm_any_to_u64vector(obj: SCM) SCM;
+pub extern fn scm_array_handle_u64_elements(h: [*c]scm_t_array_handle) [*c]const u64;
+pub extern fn scm_array_handle_u64_writable_elements(h: [*c]scm_t_array_handle) [*c]u64;
+pub extern fn scm_u64vector_elements(uvec: SCM, h: [*c]scm_t_array_handle, lenp: [*c]usize, incp: [*c]isize) [*c]const u64;
+pub extern fn scm_u64vector_writable_elements(uvec: SCM, h: [*c]scm_t_array_handle, lenp: [*c]usize, incp: [*c]isize) [*c]u64;
+pub extern fn scm_s64vector_p(obj: SCM) SCM;
+pub extern fn scm_make_s64vector(n: SCM, fill: SCM) SCM;
+pub extern fn scm_take_s64vector(data: [*c]i64, n: usize) SCM;
+pub extern fn scm_s64vector(l: SCM) SCM;
+pub extern fn scm_s64vector_length(uvec: SCM) SCM;
+pub extern fn scm_s64vector_ref(uvec: SCM, index: SCM) SCM;
+pub extern fn scm_s64vector_set_x(uvec: SCM, index: SCM, value: SCM) SCM;
+pub extern fn scm_s64vector_to_list(uvec: SCM) SCM;
+pub extern fn scm_list_to_s64vector(l: SCM) SCM;
+pub extern fn scm_any_to_s64vector(obj: SCM) SCM;
+pub extern fn scm_array_handle_s64_elements(h: [*c]scm_t_array_handle) [*c]const i64;
+pub extern fn scm_array_handle_s64_writable_elements(h: [*c]scm_t_array_handle) [*c]i64;
+pub extern fn scm_s64vector_elements(uvec: SCM, h: [*c]scm_t_array_handle, lenp: [*c]usize, incp: [*c]isize) [*c]const i64;
+pub extern fn scm_s64vector_writable_elements(uvec: SCM, h: [*c]scm_t_array_handle, lenp: [*c]usize, incp: [*c]isize) [*c]i64;
+pub extern fn scm_f32vector_p(obj: SCM) SCM;
+pub extern fn scm_make_f32vector(n: SCM, fill: SCM) SCM;
+pub extern fn scm_take_f32vector(data: [*c]f32, n: usize) SCM;
+pub extern fn scm_f32vector(l: SCM) SCM;
+pub extern fn scm_f32vector_length(uvec: SCM) SCM;
+pub extern fn scm_f32vector_ref(uvec: SCM, index: SCM) SCM;
+pub extern fn scm_f32vector_set_x(uvec: SCM, index: SCM, value: SCM) SCM;
+pub extern fn scm_f32vector_to_list(uvec: SCM) SCM;
+pub extern fn scm_list_to_f32vector(l: SCM) SCM;
+pub extern fn scm_any_to_f32vector(obj: SCM) SCM;
+pub extern fn scm_array_handle_f32_elements(h: [*c]scm_t_array_handle) [*c]const f32;
+pub extern fn scm_array_handle_f32_writable_elements(h: [*c]scm_t_array_handle) [*c]f32;
+pub extern fn scm_f32vector_elements(uvec: SCM, h: [*c]scm_t_array_handle, lenp: [*c]usize, incp: [*c]isize) [*c]const f32;
+pub extern fn scm_f32vector_writable_elements(uvec: SCM, h: [*c]scm_t_array_handle, lenp: [*c]usize, incp: [*c]isize) [*c]f32;
+pub extern fn scm_f64vector_p(obj: SCM) SCM;
+pub extern fn scm_make_f64vector(n: SCM, fill: SCM) SCM;
+pub extern fn scm_take_f64vector(data: [*c]f64, n: usize) SCM;
+pub extern fn scm_f64vector(l: SCM) SCM;
+pub extern fn scm_f64vector_length(uvec: SCM) SCM;
+pub extern fn scm_f64vector_ref(uvec: SCM, index: SCM) SCM;
+pub extern fn scm_f64vector_set_x(uvec: SCM, index: SCM, value: SCM) SCM;
+pub extern fn scm_f64vector_to_list(uvec: SCM) SCM;
+pub extern fn scm_list_to_f64vector(l: SCM) SCM;
+pub extern fn scm_any_to_f64vector(obj: SCM) SCM;
+pub extern fn scm_array_handle_f64_elements(h: [*c]scm_t_array_handle) [*c]const f64;
+pub extern fn scm_array_handle_f64_writable_elements(h: [*c]scm_t_array_handle) [*c]f64;
+pub extern fn scm_f64vector_elements(uvec: SCM, h: [*c]scm_t_array_handle, lenp: [*c]usize, incp: [*c]isize) [*c]const f64;
+pub extern fn scm_f64vector_writable_elements(uvec: SCM, h: [*c]scm_t_array_handle, lenp: [*c]usize, incp: [*c]isize) [*c]f64;
+pub extern fn scm_c32vector_p(obj: SCM) SCM;
+pub extern fn scm_make_c32vector(n: SCM, fill: SCM) SCM;
+pub extern fn scm_take_c32vector(data: [*c]f32, n: usize) SCM;
+pub extern fn scm_c32vector(l: SCM) SCM;
+pub extern fn scm_c32vector_length(uvec: SCM) SCM;
+pub extern fn scm_c32vector_ref(uvec: SCM, index: SCM) SCM;
+pub extern fn scm_c32vector_set_x(uvec: SCM, index: SCM, value: SCM) SCM;
+pub extern fn scm_c32vector_to_list(uvec: SCM) SCM;
+pub extern fn scm_list_to_c32vector(l: SCM) SCM;
+pub extern fn scm_any_to_c32vector(obj: SCM) SCM;
+pub extern fn scm_array_handle_c32_elements(h: [*c]scm_t_array_handle) [*c]const f32;
+pub extern fn scm_array_handle_c32_writable_elements(h: [*c]scm_t_array_handle) [*c]f32;
+pub extern fn scm_c32vector_elements(uvec: SCM, h: [*c]scm_t_array_handle, lenp: [*c]usize, incp: [*c]isize) [*c]const f32;
+pub extern fn scm_c32vector_writable_elements(uvec: SCM, h: [*c]scm_t_array_handle, lenp: [*c]usize, incp: [*c]isize) [*c]f32;
+pub extern fn scm_c64vector_p(obj: SCM) SCM;
+pub extern fn scm_make_c64vector(n: SCM, fill: SCM) SCM;
+pub extern fn scm_take_c64vector(data: [*c]f64, n: usize) SCM;
+pub extern fn scm_c64vector(l: SCM) SCM;
+pub extern fn scm_c64vector_length(uvec: SCM) SCM;
+pub extern fn scm_c64vector_ref(uvec: SCM, index: SCM) SCM;
+pub extern fn scm_c64vector_set_x(uvec: SCM, index: SCM, value: SCM) SCM;
+pub extern fn scm_c64vector_to_list(uvec: SCM) SCM;
+pub extern fn scm_list_to_c64vector(l: SCM) SCM;
+pub extern fn scm_any_to_c64vector(obj: SCM) SCM;
+pub extern fn scm_array_handle_c64_elements(h: [*c]scm_t_array_handle) [*c]const f64;
+pub extern fn scm_array_handle_c64_writable_elements(h: [*c]scm_t_array_handle) [*c]f64;
+pub extern fn scm_c64vector_elements(uvec: SCM, h: [*c]scm_t_array_handle, lenp: [*c]usize, incp: [*c]isize) [*c]const f64;
+pub extern fn scm_c64vector_writable_elements(uvec: SCM, h: [*c]scm_t_array_handle, lenp: [*c]usize, incp: [*c]isize) [*c]f64;
+pub extern fn scm_bootstrap_srfi_4() void;
+pub extern fn scm_init_srfi_4() void;
+pub extern fn scm_major_version() SCM;
+pub extern fn scm_minor_version() SCM;
+pub extern fn scm_micro_version() SCM;
+pub extern fn scm_effective_version() SCM;
+pub extern fn scm_version() SCM;
+pub extern fn scm_init_version() void;
+pub extern fn scm_make_soft_port(pv: SCM, modes: SCM) SCM;
+pub extern fn scm_init_vports() void;
+pub const scm_t_set_predicate_fn = ?fn (SCM, ?*anyopaque) callconv(.C) c_int;
+pub const scm_t_set_fold_fn = ?fn (?*anyopaque, SCM, SCM) callconv(.C) SCM;
+pub extern fn scm_c_make_weak_set(k: c_ulong) SCM;
+pub extern fn scm_weak_set_p(h: SCM) SCM;
+pub extern fn scm_c_weak_set_lookup(set: SCM, raw_hash: c_ulong, pred: scm_t_set_predicate_fn, closure: ?*anyopaque, dflt: SCM) SCM;
+pub extern fn scm_c_weak_set_add_x(set: SCM, raw_hash: c_ulong, pred: scm_t_set_predicate_fn, closure: ?*anyopaque, obj: SCM) SCM;
+pub extern fn scm_c_weak_set_remove_x(set: SCM, raw_hash: c_ulong, pred: scm_t_set_predicate_fn, closure: ?*anyopaque) void;
+pub extern fn scm_weak_set_add_x(set: SCM, obj: SCM) SCM;
+pub extern fn scm_weak_set_remove_x(set: SCM, obj: SCM) SCM;
+pub extern fn scm_weak_set_clear_x(set: SCM) SCM;
+pub extern fn scm_c_weak_set_fold(proc: scm_t_set_fold_fn, closure: ?*anyopaque, init: SCM, set: SCM) SCM;
+pub extern fn scm_weak_set_fold(proc: SCM, init: SCM, set: SCM) SCM;
+pub extern fn scm_weak_set_for_each(proc: SCM, set: SCM) SCM;
+pub extern fn scm_weak_set_map_to_list(proc: SCM, set: SCM) SCM;
+pub extern fn scm_i_weak_set_print(exp: SCM, port: SCM, pstate: [*c]scm_print_state) void;
+pub extern fn scm_init_weak_set() void;
+pub const SCM_WEAK_TABLE_KIND_KEY: c_int = 0;
+pub const SCM_WEAK_TABLE_KIND_VALUE: c_int = 1;
+pub const SCM_WEAK_TABLE_KIND_BOTH: c_int = 2;
+pub const scm_t_weak_table_kind = c_uint;
+pub const scm_t_table_predicate_fn = ?fn (SCM, SCM, ?*anyopaque) callconv(.C) c_int;
+pub const scm_t_table_fold_fn = ?fn (?*anyopaque, SCM, SCM, SCM) callconv(.C) SCM;
+pub extern fn scm_c_make_weak_table(k: c_ulong, kind: scm_t_weak_table_kind) SCM;
+pub extern fn scm_weak_table_p(h: SCM) SCM;
+pub extern fn scm_c_weak_table_ref(table: SCM, raw_hash: c_ulong, pred: scm_t_table_predicate_fn, closure: ?*anyopaque, dflt: SCM) SCM;
+pub extern fn scm_c_weak_table_put_x(table: SCM, raw_hash: c_ulong, pred: scm_t_table_predicate_fn, closure: ?*anyopaque, key: SCM, value: SCM) void;
+pub extern fn scm_c_weak_table_remove_x(table: SCM, raw_hash: c_ulong, pred: scm_t_table_predicate_fn, closure: ?*anyopaque) void;
+pub extern fn scm_weak_table_refq(table: SCM, key: SCM, dflt: SCM) SCM;
+pub extern fn scm_weak_table_putq_x(table: SCM, key: SCM, value: SCM) void;
+pub extern fn scm_weak_table_remq_x(table: SCM, key: SCM) void;
+pub extern fn scm_weak_table_clear_x(table: SCM) void;
+pub extern fn scm_c_weak_table_fold(proc: scm_t_table_fold_fn, closure: ?*anyopaque, init: SCM, table: SCM) SCM;
+pub extern fn scm_weak_table_fold(proc: SCM, init: SCM, table: SCM) SCM;
+pub extern fn scm_weak_table_for_each(proc: SCM, table: SCM) void;
+pub extern fn scm_weak_table_map_to_list(proc: SCM, table: SCM) SCM;
+pub extern fn scm_make_weak_key_hash_table(k: SCM) SCM;
+pub extern fn scm_make_weak_value_hash_table(k: SCM) SCM;
+pub extern fn scm_make_doubly_weak_hash_table(k: SCM) SCM;
+pub extern fn scm_weak_key_hash_table_p(h: SCM) SCM;
+pub extern fn scm_weak_value_hash_table_p(h: SCM) SCM;
+pub extern fn scm_doubly_weak_hash_table_p(h: SCM) SCM;
+pub extern fn scm_i_weak_table_print(exp: SCM, port: SCM, pstate: [*c]scm_print_state) void;
+pub extern fn scm_weak_table_prehistory() void;
+pub extern fn scm_init_weak_table() void;
+pub extern fn scm_make_weak_vector(len: SCM, fill: SCM) SCM;
+pub extern fn scm_weak_vector(l: SCM) SCM;
+pub extern fn scm_weak_vector_p(x: SCM) SCM;
+pub extern fn scm_weak_vector_length(v: SCM) SCM;
+pub extern fn scm_weak_vector_ref(v: SCM, k: SCM) SCM;
+pub extern fn scm_weak_vector_set_x(v: SCM, k: SCM, x: SCM) SCM;
+pub extern fn scm_c_make_weak_vector(len: usize, fill: SCM) SCM;
+pub extern fn scm_is_weak_vector(obj: SCM) c_int;
+pub extern fn scm_c_weak_vector_length(vec: SCM) usize;
+pub extern fn scm_c_weak_vector_ref(v: SCM, k: usize) SCM;
+pub extern fn scm_c_weak_vector_set_x(v: SCM, k: usize, x: SCM) void;
+pub extern fn scm_init_weak_vectors() void;
+pub extern fn scm_print_exception(port: SCM, frame: SCM, key: SCM, args: SCM) SCM;
+pub extern fn scm_display_error_message(message: SCM, args: SCM, port: SCM) void;
+pub extern fn scm_i_display_error(frame: SCM, port: SCM, subr: SCM, message: SCM, args: SCM, rest: SCM) void;
+pub extern fn scm_display_error(frame: SCM, port: SCM, subr: SCM, message: SCM, args: SCM, rest: SCM) SCM;
+pub extern fn scm_display_application(frame: SCM, port: SCM, indent: SCM) SCM;
+pub extern fn scm_display_backtrace(stack: SCM, port: SCM, first: SCM, depth: SCM) SCM;
+pub extern fn scm_display_backtrace_with_highlights(stack: SCM, port: SCM, first: SCM, depth: SCM, highlights: SCM) SCM;
+pub extern fn scm_backtrace() SCM;
+pub extern fn scm_backtrace_with_highlights(highlights: SCM) SCM;
+pub extern fn scm_init_backtrace() void;
+pub extern var scm_stack_type: SCM;
+pub extern fn scm_stack_p(obj: SCM) SCM;
+pub extern fn scm_make_stack(obj: SCM, args: SCM) SCM;
+pub extern fn scm_stack_id(stack: SCM) SCM;
+pub extern fn scm_stack_ref(stack: SCM, i: SCM) SCM;
+pub extern fn scm_stack_length(stack: SCM) SCM;
+pub extern fn scm_init_stacks() void;
+pub const scm_t_int8 = i8;
+pub const scm_t_uint8 = u8;
+pub const scm_t_int16 = i16;
+pub const scm_t_uint16 = u16;
+pub const scm_t_int32 = i32;
+pub const scm_t_uint32 = u32;
+pub const scm_t_intmax = intmax_t;
+pub const scm_t_uintmax = uintmax_t;
+pub const scm_t_intptr = isize;
+pub const scm_t_uintptr = usize;
+pub const scm_t_int64 = i64;
+pub const scm_t_uint64 = u64;
+pub const scm_t_ptrdiff = ptrdiff_t;
+pub const scm_i_thread = struct_scm_thread;
+pub extern fn scm_find_executable(name: [*c]const u8) [*c]u8;
+pub extern fn scm_is_simple_vector(obj: SCM) c_int;
+pub extern fn scm_bitvector_p(vec: SCM) SCM;
+pub extern fn scm_bitvector(bits: SCM) SCM;
+pub extern fn scm_make_bitvector(len: SCM, fill: SCM) SCM;
+pub extern fn scm_bitvector_length(vec: SCM) SCM;
+pub extern fn scm_c_bitvector_ref(vec: SCM, idx: usize) SCM;
+pub extern fn scm_bitvector_ref(vec: SCM, idx: SCM) SCM;
+pub extern fn scm_c_bitvector_set_x(vec: SCM, idx: usize, val: SCM) void;
+pub extern fn scm_bitvector_set_x(vec: SCM, idx: SCM, val: SCM) SCM;
+pub extern fn scm_bitvector_fill_x(vec: SCM, val: SCM) SCM;
+pub extern fn scm_bit_invert_x(vec: SCM) SCM;
+pub extern fn scm_bit_count(item: SCM, seq: SCM) SCM;
+pub extern fn scm_bit_count_star(v: SCM, kv: SCM, obj: SCM) SCM;
+pub extern fn scm_bit_position(item: SCM, v: SCM, k: SCM) SCM;
+pub extern fn scm_bit_set_star_x(v: SCM, kv: SCM, obj: SCM) SCM;
+pub extern fn scm_istr2bve(str: SCM) SCM;
+pub extern fn scm_from_contiguous_typed_array(@"type": SCM, bounds: SCM, bytes: ?*const anyopaque, byte_len: usize) SCM;
+pub extern var scm_tc16_srcprops: scm_t_bits;
+pub extern var scm_sym_copy: SCM;
+pub extern fn scm_make_srcprops(line: c_long, col: c_int, filename: SCM, copy: SCM, alist: SCM) SCM;
+pub extern fn scm_symbol_fref(s: SCM) SCM;
+pub extern fn scm_symbol_pref(s: SCM) SCM;
+pub extern fn scm_symbol_fset_x(s: SCM, val: SCM) SCM;
+pub extern fn scm_symbol_pset_x(s: SCM, val: SCM) SCM;
+pub extern fn scm_dynamic_unlink(obj: SCM) SCM;
+pub extern var scm_install_gmp_memory_functions: c_int;
+pub extern fn scm_i_normbig(x: SCM) SCM;
+pub extern fn scm_i_big2dbl(b: SCM) f64;
+pub extern fn scm_i_long2big(n: c_long) SCM;
+pub extern fn scm_i_ulong2big(n: c_ulong) SCM;
+pub extern fn scm_i_clonebig(src_big: SCM, same_sign_p: c_int) SCM;
+pub extern fn scm_i_init_deprecated() void;
+pub const __INTMAX_C_SUFFIX__ = @compileError("unable to translate macro: undefined identifier `L`"); // (no file):67:9
+pub const __UINTMAX_C_SUFFIX__ = @compileError("unable to translate macro: undefined identifier `UL`"); // (no file):73:9
+pub const __INT64_C_SUFFIX__ = @compileError("unable to translate macro: undefined identifier `L`"); // (no file):164:9
+pub const __UINT32_C_SUFFIX__ = @compileError("unable to translate macro: undefined identifier `U`"); // (no file):186:9
+pub const __UINT64_C_SUFFIX__ = @compileError("unable to translate macro: undefined identifier `UL`"); // (no file):194:9
+pub const __seg_gs = @compileError("unable to translate macro: undefined identifier `__attribute__`"); // (no file):312:9
+pub const __seg_fs = @compileError("unable to translate macro: undefined identifier `__attribute__`"); // (no file):313:9
+pub const __GLIBC_USE = @compileError("unable to translate macro: undefined identifier `__GLIBC_USE_`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/features.h:179:9
+pub const __THROW = @compileError("unable to translate macro: undefined identifier `__attribute__`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/sys/cdefs.h:55:11
+pub const __THROWNL = @compileError("unable to translate macro: undefined identifier `__attribute__`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/sys/cdefs.h:56:11
+pub const __NTH = @compileError("unable to translate macro: undefined identifier `__attribute__`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/sys/cdefs.h:57:11
+pub const __NTHNL = @compileError("unable to translate macro: undefined identifier `__attribute__`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/sys/cdefs.h:58:11
+pub const __glibc_clang_has_extension = @compileError("unable to translate macro: undefined identifier `__has_extension`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/sys/cdefs.h:96:10
+pub const __CONCAT = @compileError("unable to translate C expr: unexpected token .HashHash"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/sys/cdefs.h:109:9
+pub const __STRING = @compileError("unable to translate C expr: unexpected token .Hash"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/sys/cdefs.h:110:9
+pub const __warnattr = @compileError("unable to translate C expr: unexpected token .Eof"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/sys/cdefs.h:144:10
+pub const __errordecl = @compileError("unable to translate C expr: unexpected token .Keyword_extern"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/sys/cdefs.h:145:10
+pub const __flexarr = @compileError("unable to translate C expr: unexpected token .LBracket"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/sys/cdefs.h:153:10
+pub const __REDIRECT = @compileError("unable to translate macro: undefined identifier `__asm__`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/sys/cdefs.h:184:10
+pub const __REDIRECT_NTH = @compileError("unable to translate macro: undefined identifier `__asm__`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/sys/cdefs.h:191:11
+pub const __REDIRECT_NTHNL = @compileError("unable to translate macro: undefined identifier `__asm__`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/sys/cdefs.h:193:11
+pub const __ASMNAME2 = @compileError("unable to translate C expr: unexpected token .Identifier"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/sys/cdefs.h:197:10
+pub const __attribute_malloc__ = @compileError("unable to translate macro: undefined identifier `__attribute__`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/sys/cdefs.h:218:10
+pub const __attribute_alloc_size__ = @compileError("unable to translate C expr: unexpected token .Eof"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/sys/cdefs.h:229:10
+pub const __attribute_pure__ = @compileError("unable to translate macro: undefined identifier `__attribute__`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/sys/cdefs.h:236:10
+pub const __attribute_const__ = @compileError("unable to translate macro: undefined identifier `__attribute__`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/sys/cdefs.h:243:10
+pub const __attribute_used__ = @compileError("unable to translate macro: undefined identifier `__attribute__`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/sys/cdefs.h:252:10
+pub const __attribute_noinline__ = @compileError("unable to translate macro: undefined identifier `__attribute__`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/sys/cdefs.h:253:10
+pub const __attribute_deprecated__ = @compileError("unable to translate macro: undefined identifier `__attribute__`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/sys/cdefs.h:261:10
+pub const __attribute_deprecated_msg__ = @compileError("unable to translate macro: undefined identifier `__attribute__`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/sys/cdefs.h:271:10
+pub const __attribute_format_arg__ = @compileError("unable to translate macro: undefined identifier `__attribute__`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/sys/cdefs.h:284:10
+pub const __attribute_format_strfmon__ = @compileError("unable to translate macro: undefined identifier `__attribute__`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/sys/cdefs.h:294:10
+pub const __nonnull = @compileError("unable to translate macro: undefined identifier `__attribute__`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/sys/cdefs.h:303:10
+pub const __attribute_warn_unused_result__ = @compileError("unable to translate macro: undefined identifier `__attribute__`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/sys/cdefs.h:311:10
+pub const __always_inline = @compileError("unable to translate macro: undefined identifier `__inline`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/sys/cdefs.h:329:10
+pub const __extern_inline = @compileError("unable to translate macro: undefined identifier `__inline`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/sys/cdefs.h:356:11
+pub const __extern_always_inline = @compileError("unable to translate macro: undefined identifier `__attribute__`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/sys/cdefs.h:357:11
+pub const __restrict_arr = @compileError("unable to translate macro: undefined identifier `__restrict`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/sys/cdefs.h:397:10
+pub const __glibc_has_attribute = @compileError("unable to translate macro: undefined identifier `__has_attribute`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/sys/cdefs.h:420:10
+pub const __attribute_copy__ = @compileError("unable to translate C expr: unexpected token .Eof"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/sys/cdefs.h:451:10
+pub const __LDBL_REDIR2_DECL = @compileError("unable to translate C expr: unexpected token .Eof"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/sys/cdefs.h:522:10
+pub const __LDBL_REDIR_DECL = @compileError("unable to translate C expr: unexpected token .Eof"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/sys/cdefs.h:523:10
+pub const __glibc_macro_warning1 = @compileError("unable to translate macro: undefined identifier `_Pragma`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/sys/cdefs.h:537:10
+pub const __glibc_macro_warning = @compileError("unable to translate macro: undefined identifier `GCC`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/sys/cdefs.h:538:10
+pub const __attr_access = @compileError("unable to translate C expr: unexpected token .Eof"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/sys/cdefs.h:569:11
+pub const __attribute_returns_twice__ = @compileError("unable to translate macro: undefined identifier `__attribute__`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/sys/cdefs.h:575:10
+pub const __STD_TYPE = @compileError("unable to translate C expr: unexpected token .Keyword_typedef"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/types.h:137:10
+pub const __FSID_T_TYPE = @compileError("unable to translate macro: undefined identifier `__val`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/typesizes.h:73:9
+pub const __INT64_C = @compileError("unable to translate macro: undefined identifier `L`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/stdint.h:106:11
+pub const __UINT64_C = @compileError("unable to translate macro: undefined identifier `UL`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/stdint.h:107:11
+pub const INT64_C = @compileError("unable to translate macro: undefined identifier `L`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/stdint.h:252:11
+pub const UINT32_C = @compileError("unable to translate macro: undefined identifier `U`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/stdint.h:260:10
+pub const UINT64_C = @compileError("unable to translate macro: undefined identifier `UL`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/stdint.h:262:11
+pub const INTMAX_C = @compileError("unable to translate macro: undefined identifier `L`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/stdint.h:269:11
+pub const UINTMAX_C = @compileError("unable to translate macro: undefined identifier `UL`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/stdint.h:270:11
+pub const offsetof = @compileError("unable to translate macro: undefined identifier `__builtin_offsetof`"); // /gnu/store/r2bpgz9i5xansdxp4ix6q22fcd7r68y8-zig-0.9.1/lib/zig/include/stddef.h:104:9
+pub const __FD_ZERO = @compileError("unable to translate macro: undefined identifier `__i`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/select.h:25:9
+pub const __FD_SET = @compileError("unable to translate C expr: expected ')' instead got: PipeEqual"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/select.h:32:9
+pub const __FD_CLR = @compileError("unable to translate C expr: expected ')' instead got: AmpersandEqual"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/select.h:34:9
+pub const timerclear = @compileError("unable to translate C expr: expected ')' instead got: Equal"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/sys/time.h:161:10
+pub const timercmp = @compileError("unable to translate C expr: expected ')' instead got: Identifier"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/sys/time.h:162:10
+pub const timeradd = @compileError("unable to translate C expr: unexpected token .Keyword_do"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/sys/time.h:166:10
+pub const timersub = @compileError("unable to translate C expr: unexpected token .Keyword_do"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/sys/time.h:176:10
+pub const __f32 = @compileError("unable to translate macro: undefined identifier `f`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/floatn-common.h:91:12
+pub const __f64x = @compileError("unable to translate macro: undefined identifier `l`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/floatn-common.h:120:13
+pub const __CFLOAT32 = @compileError("unable to translate: TODO _Complex"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/floatn-common.h:149:12
+pub const __CFLOAT64 = @compileError("unable to translate: TODO _Complex"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/floatn-common.h:160:13
+pub const __CFLOAT32X = @compileError("unable to translate: TODO _Complex"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/floatn-common.h:169:12
+pub const __CFLOAT64X = @compileError("unable to translate: TODO _Complex"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/floatn-common.h:178:13
+pub const __builtin_nansf32 = @compileError("unable to translate macro: undefined identifier `__builtin_nansf`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/floatn-common.h:221:12
+pub const __builtin_huge_valf64 = @compileError("unable to translate macro: undefined identifier `__builtin_huge_val`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/floatn-common.h:255:13
+pub const __builtin_inff64 = @compileError("unable to translate macro: undefined identifier `__builtin_inf`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/floatn-common.h:256:13
+pub const __builtin_nanf64 = @compileError("unable to translate macro: undefined identifier `__builtin_nan`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/floatn-common.h:257:13
+pub const __builtin_nansf64 = @compileError("unable to translate macro: undefined identifier `__builtin_nans`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/floatn-common.h:258:13
+pub const __builtin_huge_valf32x = @compileError("unable to translate macro: undefined identifier `__builtin_huge_val`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/floatn-common.h:272:12
+pub const __builtin_inff32x = @compileError("unable to translate macro: undefined identifier `__builtin_inf`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/floatn-common.h:273:12
+pub const __builtin_nanf32x = @compileError("unable to translate macro: undefined identifier `__builtin_nan`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/floatn-common.h:274:12
+pub const __builtin_nansf32x = @compileError("unable to translate macro: undefined identifier `__builtin_nans`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/floatn-common.h:275:12
+pub const __builtin_huge_valf64x = @compileError("unable to translate macro: undefined identifier `__builtin_huge_vall`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/floatn-common.h:289:13
+pub const __builtin_inff64x = @compileError("unable to translate macro: undefined identifier `__builtin_infl`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/floatn-common.h:290:13
+pub const __builtin_nanf64x = @compileError("unable to translate macro: undefined identifier `__builtin_nanl`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/floatn-common.h:291:13
+pub const __builtin_nansf64x = @compileError("unable to translate macro: undefined identifier `__builtin_nansl`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/floatn-common.h:292:13
+pub const __PTHREAD_MUTEX_INITIALIZER = @compileError("unable to translate C expr: unexpected token .LBrace"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/struct_mutex.h:56:10
+pub const __PTHREAD_RWLOCK_ELISION_EXTRA = @compileError("unable to translate C expr: unexpected token .LBrace"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/struct_rwlock.h:40:11
+pub const __ONCE_FLAG_INIT = @compileError("unable to translate C expr: unexpected token .LBrace"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/thread-shared-types.h:127:9
+pub const SCM_C_INLINE = @compileError("unable to translate C expr: unexpected token .Keyword_inline"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/scmconfig.h:51:9
+pub const SCM_UNPACK = @compileError("unable to translate C expr: unexpected token .Keyword_volatile"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/scm.h:171:11
+pub const scm_tcs_cons_imcar = @compileError("unable to translate C expr: unexpected token .Colon"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/scm.h:651:9
+pub const scm_tcs_cons_nimcar = @compileError("unable to translate C expr: unexpected token .Colon"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/scm.h:670:9
+pub const scm_tcs_struct = @compileError("unable to translate C expr: unexpected token .Colon"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/scm.h:689:9
+pub const SCM_API = @compileError("unable to translate C expr: unexpected token .Keyword_extern"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/scm.h:728:10
+pub const SCM_INTERNAL = @compileError("unable to translate C expr: unexpected token .Keyword_extern"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/scm.h:735:9
+pub const SCM_DEPRECATED = @compileError("unable to translate macro: undefined identifier `__attribute__`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/scm.h:743:10
+pub const SCM_NORETURN = @compileError("unable to translate macro: undefined identifier `__attribute__`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/scm.h:752:10
+pub const SCM_UNUSED = @compileError("unable to translate macro: undefined identifier `__attribute__`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/scm.h:764:10
+pub const SCM_MALLOC = @compileError("unable to translate macro: undefined identifier `__attribute__`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/scm.h:774:10
+pub const SCM_ALIGNED = @compileError("unable to translate macro: undefined identifier `__attribute__`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/scm.h:795:10
+pub const SCM_THREAD_LOCAL = @compileError("unable to translate macro: undefined identifier `__thread`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/scm.h:804:10
+pub const SCM_ASSERT = @compileError("unable to translate C expr: unexpected token .Keyword_do"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/error.h:39:9
+pub const SCM_ASSERT_TYPE = @compileError("unable to translate C expr: unexpected token .Keyword_do"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/error.h:43:9
+pub const SCM_MAKE_VALIDATE = @compileError("unable to translate macro: undefined identifier `SCM_`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/error.h:99:9
+pub const SCM_I_MAKE_VALIDATE_MSG2 = @compileError("unable to translate macro: undefined identifier `FUNC_NAME`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/error.h:104:9
+pub const SCM_MAKE_VALIDATE_MSG = @compileError("unable to translate macro: undefined identifier `SCM_`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/error.h:109:9
+pub const SCM_SYSERROR = @compileError("unable to translate macro: undefined identifier `FUNC_NAME`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/error.h:112:9
+pub const SCM_SYSERROR_MSG = @compileError("unable to translate macro: undefined identifier `FUNC_NAME`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/error.h:114:9
+pub const SCM_MISC_ERROR = @compileError("unable to translate macro: undefined identifier `FUNC_NAME`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/error.h:117:9
+pub const SCM_WRONG_NUM_ARGS = @compileError("unable to translate macro: undefined identifier `FUNC_NAME`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/error.h:120:9
+pub const SCM_WRONG_TYPE_ARG = @compileError("unable to translate macro: undefined identifier `FUNC_NAME`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/error.h:123:9
+pub const SCM_C_EXTERN_INLINE = @compileError("unable to translate macro: undefined identifier `__inline__`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/inline.h:60:12
+pub const SCM_GC_SET_CELL_OBJECT = @compileError("unable to translate C expr: expected ')' instead got: Equal"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/gc.h:49:9
+pub const scm_gc_typed_calloc = @compileError("unable to translate C expr: unexpected token .RParen"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/gc.h:139:9
+pub const SCM_VALIDATE_NULL_OR_NIL = @compileError("unable to translate macro: undefined identifier `NULL_OR_NIL_P`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/pairs.h:113:9
+pub const SCM_VALIDATE_NULLORCONS = @compileError("unable to translate macro: undefined identifier `FUNC_NAME`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/pairs.h:131:9
+pub const SCM_VALIDATE_ALISTCELL = @compileError("unable to translate macro: undefined identifier `FUNC_NAME`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/alist.h:31:9
+pub const SCM_VALIDATE_ALISTCELL_COPYSCM = @compileError("unable to translate macro: undefined identifier `FUNC_NAME`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/alist.h:37:9
+pub const SCM_VALIDATE_CHAR = @compileError("unable to translate macro: undefined identifier `CHARP`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/chars.h:56:9
+pub const SCM_VALIDATE_CHAR_COPY = @compileError("unable to translate macro: undefined identifier `FUNC_NAME`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/chars.h:58:9
+pub const RESET_PRINT_STATE = @compileError("unable to translate C expr: unexpected token .Keyword_do"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/print.h:39:9
+pub const SCM_SET_WRITINGP = @compileError("unable to translate C expr: unexpected token .LBrace"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/print.h:46:9
+pub const SCM_VALIDATE_OPORT_VALUE = @compileError("unable to translate macro: undefined identifier `FUNC_NAME`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/print.h:55:9
+pub const SCM_VALIDATE_PRINTSTATE = @compileError("unable to translate macro: undefined identifier `PRINT_STATE_P`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/print.h:60:9
+pub const FLT_ROUNDS = @compileError("unable to translate macro: undefined identifier `__builtin_flt_rounds`"); // /gnu/store/r2bpgz9i5xansdxp4ix6q22fcd7r68y8-zig-0.9.1/lib/zig/include/float.h:83:9
+pub const SCM_OUT_OF_RANGE = @compileError("unable to translate macro: undefined identifier `FUNC_NAME`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/numbers.h:657:9
+pub const SCM_ASSERT_RANGE = @compileError("unable to translate macro: undefined identifier `FUNC_NAME`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/numbers.h:660:9
+pub const SCM_VALIDATE_REAL = @compileError("unable to translate macro: undefined identifier `REALP`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/numbers.h:665:9
+pub const SCM_VALIDATE_NUMBER = @compileError("unable to translate macro: undefined identifier `NUMBERP`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/numbers.h:667:9
+pub const SCM_VALIDATE_USHORT_COPY = @compileError("unable to translate C expr: unexpected token .Keyword_do"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/numbers.h:669:9
+pub const SCM_VALIDATE_SHORT_COPY = @compileError("unable to translate C expr: unexpected token .Keyword_do"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/numbers.h:674:9
+pub const SCM_VALIDATE_UINT_COPY = @compileError("unable to translate C expr: unexpected token .Keyword_do"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/numbers.h:679:9
+pub const SCM_VALIDATE_INT_COPY = @compileError("unable to translate C expr: unexpected token .Keyword_do"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/numbers.h:684:9
+pub const SCM_VALIDATE_ULONG_COPY = @compileError("unable to translate C expr: unexpected token .Keyword_do"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/numbers.h:689:9
+pub const SCM_VALIDATE_LONG_COPY = @compileError("unable to translate C expr: unexpected token .Keyword_do"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/numbers.h:694:9
+pub const SCM_VALIDATE_SIZE_COPY = @compileError("unable to translate C expr: unexpected token .Keyword_do"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/numbers.h:699:9
+pub const SCM_VALIDATE_FLOAT_COPY = @compileError("unable to translate C expr: unexpected token .Keyword_do"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/numbers.h:704:9
+pub const SCM_VALIDATE_DOUBLE_COPY = @compileError("unable to translate C expr: unexpected token .Keyword_do"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/numbers.h:709:9
+pub const SCM_VALIDATE_DOUBLE_DEF_COPY = @compileError("unable to translate C expr: expected ')'"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/numbers.h:714:9
+pub const SCM_VALIDATE_ARRAY = @compileError("unable to translate macro: undefined identifier `FUNC_NAME`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/arrays.h:33:9
+pub const SCM_VALIDATE_BOOL = @compileError("unable to translate macro: undefined identifier `FUNC_NAME`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/boolean.h:134:9
+pub const SCM_VALIDATE_BOOL_COPY = @compileError("unable to translate macro: undefined identifier `FUNC_NAME`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/boolean.h:139:9
+pub const SCM_VALIDATE_THUNK = @compileError("unable to translate macro: undefined identifier `FUNC_NAME`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/procs.h:30:9
+pub const SCM_VALIDATE_PROC = @compileError("unable to translate macro: undefined identifier `FUNC_NAME`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/procs.h:35:9
+pub const si_pid = @compileError("unable to translate macro: undefined identifier `_sifields`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/types/siginfo_t.h:128:9
+pub const si_uid = @compileError("unable to translate macro: undefined identifier `_sifields`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/types/siginfo_t.h:129:9
+pub const si_timerid = @compileError("unable to translate macro: undefined identifier `_sifields`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/types/siginfo_t.h:130:9
+pub const si_overrun = @compileError("unable to translate macro: undefined identifier `_sifields`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/types/siginfo_t.h:131:9
+pub const si_status = @compileError("unable to translate macro: undefined identifier `_sifields`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/types/siginfo_t.h:132:9
+pub const si_utime = @compileError("unable to translate macro: undefined identifier `_sifields`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/types/siginfo_t.h:133:9
+pub const si_stime = @compileError("unable to translate macro: undefined identifier `_sifields`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/types/siginfo_t.h:134:9
+pub const si_value = @compileError("unable to translate macro: undefined identifier `_sifields`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/types/siginfo_t.h:135:9
+pub const si_int = @compileError("unable to translate macro: undefined identifier `_sifields`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/types/siginfo_t.h:136:9
+pub const si_ptr = @compileError("unable to translate macro: undefined identifier `_sifields`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/types/siginfo_t.h:137:9
+pub const si_addr = @compileError("unable to translate macro: undefined identifier `_sifields`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/types/siginfo_t.h:138:9
+pub const si_addr_lsb = @compileError("unable to translate macro: undefined identifier `_sifields`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/types/siginfo_t.h:139:9
+pub const si_lower = @compileError("unable to translate macro: undefined identifier `_sifields`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/types/siginfo_t.h:140:9
+pub const si_upper = @compileError("unable to translate macro: undefined identifier `_sifields`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/types/siginfo_t.h:141:9
+pub const si_pkey = @compileError("unable to translate macro: undefined identifier `_sifields`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/types/siginfo_t.h:142:9
+pub const si_band = @compileError("unable to translate macro: undefined identifier `_sifields`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/types/siginfo_t.h:143:9
+pub const si_fd = @compileError("unable to translate macro: undefined identifier `_sifields`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/types/siginfo_t.h:144:9
+pub const si_call_addr = @compileError("unable to translate macro: undefined identifier `_sifields`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/types/siginfo_t.h:146:10
+pub const si_syscall = @compileError("unable to translate macro: undefined identifier `_sifields`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/types/siginfo_t.h:147:10
+pub const si_arch = @compileError("unable to translate macro: undefined identifier `_sifields`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/types/siginfo_t.h:148:10
+pub const sigev_notify_function = @compileError("unable to translate macro: undefined identifier `_sigev_un`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/types/sigevent_t.h:45:9
+pub const sigev_notify_attributes = @compileError("unable to translate macro: undefined identifier `_sigev_un`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/types/sigevent_t.h:46:9
+pub const sa_handler = @compileError("unable to translate macro: undefined identifier `__sigaction_handler`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/sigaction.h:39:10
+pub const sa_sigaction = @compileError("unable to translate macro: undefined identifier `__sigaction_handler`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/sigaction.h:40:10
+pub const SCM_DYNSTACK_SET_PREV_OFFSET = @compileError("unable to translate C expr: unexpected token .Equal"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/dynstack.h:73:9
+pub const SCM_DYNSTACK_SET_TAG = @compileError("unable to translate C expr: unexpected token .Equal"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/dynstack.h:76:9
+pub const scm_i_paste = @compileError("unable to translate C expr: unexpected token .HashHash"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/snarf.h:37:9
+pub const scm_i_paste3 = @compileError("unable to translate C expr: unexpected token .HashHash"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/snarf.h:38:9
+pub const SCM_SNARF_INIT = @compileError("unable to translate C expr: unexpected token .Eof"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/snarf.h:81:11
+pub const SCM_SNARF_DOCS = @compileError("unable to translate C expr: unexpected token .Eof"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/snarf.h:82:11
+pub const SCM_IMMUTABLE_CELL = @compileError("unable to translate macro: undefined identifier `_raw`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/snarf.h:91:9
+pub const SCM_IMMUTABLE_DOUBLE_CELL = @compileError("unable to translate macro: undefined identifier `_raw`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/snarf.h:96:9
+pub const SCM_VALIDATE_SMOB = @compileError("unable to translate macro: undefined identifier `scm_tc16_`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/smob.h:58:9
+pub const SCM_SMOB = @compileError("unable to translate C expr: unexpected token .Keyword_static"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/smob.h:73:9
+pub const SCM_GLOBAL_SMOB = @compileError("unable to translate C expr: unexpected token .Identifier"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/smob.h:77:9
+pub const SCM_SMOB_MARK = @compileError("unable to translate C expr: unexpected token .Keyword_static"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/smob.h:81:9
+pub const SCM_GLOBAL_SMOB_MARK = @compileError("unable to translate C expr: unexpected token .Identifier"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/smob.h:85:9
+pub const SCM_SMOB_FREE = @compileError("unable to translate C expr: unexpected token .Keyword_static"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/smob.h:89:9
+pub const SCM_GLOBAL_SMOB_FREE = @compileError("unable to translate C expr: unexpected token .Identifier"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/smob.h:93:9
+pub const SCM_SMOB_PRINT = @compileError("unable to translate C expr: unexpected token .Keyword_static"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/smob.h:97:9
+pub const SCM_GLOBAL_SMOB_PRINT = @compileError("unable to translate C expr: unexpected token .Identifier"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/smob.h:101:9
+pub const SCM_SMOB_EQUALP = @compileError("unable to translate C expr: unexpected token .Keyword_static"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/smob.h:105:9
+pub const SCM_GLOBAL_SMOB_EQUALP = @compileError("unable to translate C expr: unexpected token .Identifier"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/smob.h:109:9
+pub const SCM_SMOB_APPLY = @compileError("unable to translate C expr: unexpected token .Keyword_static"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/smob.h:113:9
+pub const SCM_GLOBAL_SMOB_APPLY = @compileError("unable to translate C expr: unexpected token .Identifier"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/smob.h:117:9
+pub const SCM_NEWSMOB = @compileError("unable to translate C expr: unexpected token .Equal"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/smob.h:158:9
+pub const SCM_RETURN_NEWSMOB = @compileError("unable to translate C expr: unexpected token .Keyword_return"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/smob.h:160:9
+pub const SCM_NEWSMOB2 = @compileError("unable to translate C expr: unexpected token .Equal"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/smob.h:163:9
+pub const SCM_RETURN_NEWSMOB2 = @compileError("unable to translate C expr: unexpected token .Keyword_return"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/smob.h:166:9
+pub const SCM_NEWSMOB3 = @compileError("unable to translate C expr: unexpected token .Equal"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/smob.h:170:9
+pub const SCM_RETURN_NEWSMOB3 = @compileError("unable to translate C expr: unexpected token .Keyword_return"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/smob.h:173:9
+pub const SCM_SMOB_APPLY_3 = @compileError("unable to translate macro: undefined identifier `a3`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/smob.h:221:9
+pub const SCM_PROGRAM_FREE_VARIABLE_SET = @compileError("unable to translate C expr: expected ')' instead got: Equal"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/programs.h:33:9
+pub const SCM_VALIDATE_PROGRAM = @compileError("unable to translate macro: undefined identifier `PROGRAM_P`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/programs.h:35:9
+pub const __CPU_ZERO_S = @compileError("unable to translate C expr: unexpected token .Keyword_do"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/cpu-set.h:46:10
+pub const __CPU_SET_S = @compileError("unable to translate macro: undefined identifier `__extension__`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/cpu-set.h:58:9
+pub const __CPU_CLR_S = @compileError("unable to translate macro: undefined identifier `__extension__`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/cpu-set.h:65:9
+pub const __CPU_ISSET_S = @compileError("unable to translate macro: undefined identifier `__extension__`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/cpu-set.h:72:9
+pub const __CPU_EQUAL_S = @compileError("unable to translate macro: undefined identifier `__builtin_memcmp`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/cpu-set.h:84:10
+pub const __CPU_OP_S = @compileError("unable to translate macro: undefined identifier `__extension__`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/bits/cpu-set.h:99:9
+pub const PTHREAD_MUTEX_INITIALIZER = @compileError("unable to translate C expr: unexpected token .LBrace"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/pthread.h:88:9
+pub const PTHREAD_RWLOCK_INITIALIZER = @compileError("unable to translate C expr: unexpected token .LBrace"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/pthread.h:112:10
+pub const PTHREAD_COND_INITIALIZER = @compileError("unable to translate C expr: unexpected token .LBrace"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/pthread.h:153:9
+pub const pthread_cleanup_push = @compileError("unable to translate macro: undefined identifier `__cancel_buf`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/pthread.h:658:10
+pub const pthread_cleanup_pop = @compileError("unable to translate macro: undefined identifier `__cancel_buf`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/pthread.h:679:10
+pub const SCM_VALIDATE_ATOMIC_BOX = @compileError("unable to translate macro: undefined identifier `FUNC_NAME`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/atomic.h:41:9
+pub const SCM_VALIDATE_BYTEVECTOR = @compileError("unable to translate macro: undefined identifier `FUNC_NAME`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/bytevectors.h:152:9
+pub const SCM_STRUCT_SLOT_SET = @compileError("unable to translate C expr: unexpected token .Equal"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/struct.h:115:9
+pub const SCM_STRUCT_DATA_SET = @compileError("unable to translate C expr: unexpected token .Equal"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/struct.h:118:9
+pub const SCM_VALIDATE_STRUCT = @compileError("unable to translate macro: undefined identifier `STRUCTP`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/struct.h:120:9
+pub const SCM_VALIDATE_VTABLE = @compileError("unable to translate macro: undefined identifier `FUNC_NAME`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/struct.h:122:9
+pub const SCM_SET_VTABLE_FLAGS = @compileError("unable to translate C expr: expected ')' instead got: PipeEqual"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/struct.h:132:9
+pub const SCM_CLEAR_VTABLE_FLAGS = @compileError("unable to translate C expr: expected ')' instead got: AmpersandEqual"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/struct.h:133:9
+pub const SCM_ILOCP = @compileError("unable to translate macro: undefined identifier `scm_tc8_iloc`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/eval.h:41:9
+pub const SCM_VALIDATE_DIR = @compileError("unable to translate macro: undefined identifier `DIRP`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/filesys.h:36:9
+pub const SCM_VALIDATE_VECTOR = @compileError("unable to translate macro: undefined identifier `FUNC_NAME`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/vectors.h:59:9
+pub const SCM_VALIDATE_VECTOR_LEN = @compileError("unable to translate macro: undefined identifier `FUNC_NAME`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/vectors.h:64:9
+pub const SCM_SIMPLE_VECTOR_SET = @compileError("unable to translate C expr: expected ')' instead got: Equal"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/vectors.h:73:9
+pub const SCM_I_VECTOR_ELTS = @compileError("unable to translate C expr: unexpected token .Keyword_const"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/vectors.h:87:9
+pub const SCM_VALIDATE_POINTER = @compileError("unable to translate macro: undefined identifier `POINTER_P`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/foreign.h:60:9
+pub const SCM_IMMUTABLE_STRINGBUF = @compileError("unable to translate macro: undefined identifier `word_0`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/strings.h:186:9
+pub const SCM_IMMUTABLE_STRING = @compileError("unable to translate macro: undefined identifier `_stringbuf`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/strings.h:201:9
+pub const SCM_VALIDATE_STRING = @compileError("unable to translate macro: undefined identifier `FUNC_NAME`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/strings.h:298:9
+pub const SCM_VALIDATE_PORT = @compileError("unable to translate macro: undefined identifier `PORTP`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/ports.h:78:9
+pub const SCM_VALIDATE_INPUT_PORT = @compileError("unable to translate macro: undefined identifier `INPUT_PORT_P`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/ports.h:81:9
+pub const SCM_VALIDATE_OUTPUT_PORT = @compileError("unable to translate macro: undefined identifier `OUTPUT_PORT_P`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/ports.h:84:9
+pub const SCM_VALIDATE_OPINPORT = @compileError("unable to translate macro: undefined identifier `OPINPORTP`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/ports.h:87:9
+pub const SCM_VALIDATE_OPENPORT = @compileError("unable to translate macro: undefined identifier `FUNC_NAME`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/ports.h:90:9
+pub const SCM_VALIDATE_OPPORT = @compileError("unable to translate macro: undefined identifier `OPPORTP`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/ports.h:96:9
+pub const SCM_VALIDATE_OPOUTPORT = @compileError("unable to translate macro: undefined identifier `OPOUTPORTP`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/ports.h:99:9
+pub const SCM_VALIDATE_FPORT = @compileError("unable to translate macro: undefined identifier `FPORTP`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/fports.h:51:9
+pub const SCM_VALIDATE_OPFPORT = @compileError("unable to translate macro: undefined identifier `OPFPORTP`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/fports.h:53:9
+pub const SCM_FRAME_SET_MACHINE_RETURN_ADDRESS = @compileError("unable to translate C expr: expected ')' instead got: Equal"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/frames.h:106:9
+pub const SCM_FRAME_SET_VIRTUAL_RETURN_ADDRESS = @compileError("unable to translate C expr: expected ')' instead got: Equal"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/frames.h:108:9
+pub const SCM_FRAME_SET_DYNAMIC_LINK = @compileError("unable to translate C expr: expected ')' instead got: Equal"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/frames.h:110:9
+pub const SCM_VALIDATE_REST_ARGUMENT = @compileError("unable to translate C expr: unexpected token .Keyword_do"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/list.h:72:9
+pub const SCM_VALIDATE_LIST = @compileError("unable to translate macro: undefined identifier `FUNC_NAME`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/list.h:81:9
+pub const SCM_VALIDATE_NONEMPTYLIST = @compileError("unable to translate macro: undefined identifier `FUNC_NAME`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/list.h:86:9
+pub const SCM_VALIDATE_LIST_COPYLEN = @compileError("unable to translate macro: undefined identifier `FUNC_NAME`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/list.h:93:9
+pub const SCM_VALIDATE_NONEMPTYLIST_COPYLEN = @compileError("unable to translate macro: undefined identifier `FUNC_NAME`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/list.h:101:9
+pub const SCM_VALIDATE_CLASS = @compileError("unable to translate macro: undefined identifier `CLASSP`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/goops.h:73:9
+pub const SCM_VALIDATE_INSTANCE = @compileError("unable to translate macro: undefined identifier `INSTANCEP`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/goops.h:77:9
+pub const SCM_VALIDATE_GENERIC = @compileError("unable to translate macro: undefined identifier `GENERICP`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/goops.h:88:9
+pub const SCM_VALIDATE_METHOD = @compileError("unable to translate macro: undefined identifier `METHODP`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/goops.h:91:9
+pub const SCM_SET_CLASS_DESTRUCTOR = @compileError("unable to translate macro: undefined identifier `SCM_SET_VTABLE_DESTRUCTOR`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/goops.h:93:9
+pub const SCM_SET_SUBR_GENERIC = @compileError("unable to translate C expr: expected ')' instead got: Equal"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/gsubr.h:47:9
+pub const SCM_DEFINE_GSUBR = @compileError("unable to translate macro: undefined identifier `s_`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/gsubr.h:82:9
+pub const SCM_PRIMITIVE_GENERIC = @compileError("unable to translate macro: undefined identifier `s_`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/gsubr.h:96:9
+pub const SCM_DEFINE_PUBLIC = @compileError("unable to translate macro: undefined identifier `s_`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/gsubr.h:110:9
+pub const SCM_DEFINE_STATIC = @compileError("unable to translate macro: undefined identifier `s_`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/gsubr.h:122:9
+pub const SCM_PROC = @compileError("unable to translate C expr: expected ',' or ')'"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/gsubr.h:133:9
+pub const SCM_REGISTER_PROC = @compileError("unable to translate C expr: expected ',' or ')'"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/gsubr.h:138:9
+pub const SCM_GPROC = @compileError("unable to translate C expr: expected ',' or ')'"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/gsubr.h:145:9
+pub const SCM_VALIDATE_HASHTABLE = @compileError("unable to translate macro: undefined identifier `HASHTABLE_P`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/hashtab.h:30:9
+pub const SCM_SET_HASHTABLE_N_ITEMS = @compileError("unable to translate C expr: expected ')' instead got: Equal"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/hashtab.h:36:9
+pub const SCM_HASHTABLE_INCREMENT = @compileError("TODO postfix inc/dec expr"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/hashtab.h:37:9
+pub const SCM_HASHTABLE_DECREMENT = @compileError("TODO postfix inc/dec expr"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/hashtab.h:38:9
+pub const SCM_VALIDATE_HOOK = @compileError("unable to translate macro: undefined identifier `HOOKP`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/hooks.h:39:9
+pub const SCM_VALIDATE_KEYWORD = @compileError("unable to translate macro: undefined identifier `KEYWORDP`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/keywords.h:40:9
+pub const SCM_KEYWORD = @compileError("unable to translate C expr: unexpected token .Keyword_static"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/keywords.h:43:9
+pub const SCM_GLOBAL_KEYWORD = @compileError("unable to translate C expr: unexpected token .Identifier"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/keywords.h:47:9
+pub const SCM_VALIDATE_MODULE = @compileError("unable to translate macro: undefined identifier `MODULEP`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/modules.h:36:9
+pub const SCM_VALIDATE_RSTATE = @compileError("unable to translate macro: undefined identifier `RSTATEP`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/random.h:80:9
+pub const SCM_SINGLE_SPACES = @compileError("unable to translate C expr: unexpected token .Colon"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/read.h:41:10
+pub const SCM_WHITE_SPACES = @compileError("unable to translate C expr: unexpected token .Colon"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/read.h:44:9
+pub const SCM_STACK_CHECKING_P = @compileError("unable to translate macro: undefined identifier `SCM_STACK_LIMIT`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/stackchk.h:32:9
+pub const SCM_VALIDATE_OPOUTSTRPORT = @compileError("unable to translate macro: undefined identifier `OPOUTSTRPORTP`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/strports.h:41:9
+pub const SCM_VALIDATE_SYMBOL = @compileError("unable to translate macro: undefined identifier `FUNC_NAME`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/symbols.h:40:9
+pub const SCM_SYMBOL = @compileError("unable to translate macro: undefined identifier `_string`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/symbols.h:50:10
+pub const SCM_GLOBAL_SYMBOL = @compileError("unable to translate macro: undefined identifier `_string`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/symbols.h:58:10
+pub const SCM_VALIDATE_VARIABLE = @compileError("unable to translate macro: undefined identifier `VARIABLEP`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/variable.h:38:9
+pub const SCM_VARIABLE = @compileError("unable to translate C expr: unexpected token .Keyword_static"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/variable.h:44:9
+pub const SCM_GLOBAL_VARIABLE = @compileError("unable to translate C expr: unexpected token .Identifier"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/variable.h:48:9
+pub const SCM_VARIABLE_INIT = @compileError("unable to translate C expr: unexpected token .Keyword_static"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/variable.h:52:9
+pub const SCM_GLOBAL_VARIABLE_INIT = @compileError("unable to translate C expr: unexpected token .Identifier"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/variable.h:56:9
+pub const SCM_SRFI4_DECL = @compileError("unable to translate macro: undefined identifier `scm_`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/srfi-4.h:33:9
+pub const SCM_FRAMEP = @compileError("unable to translate macro: undefined identifier `SCM_VM_FRAME_P`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/stacks.h:46:9
+pub const SCM_VALIDATE_STACK = @compileError("unable to translate macro: undefined identifier `STACKP`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/stacks.h:48:9
+pub const SCM_VALIDATE_FRAME = @compileError("unable to translate macro: undefined identifier `FRAMEP`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/stacks.h:50:9
+pub const scm_i_jmp_buf = @compileError("unable to translate macro: undefined identifier `scm_i_jmp_buf_GONE__USE_JMP_BUF_INSTEAD`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/deprecated.h:38:9
+pub const SCM_VALIDATE_VECTOR_OR_DVECTOR = @compileError("unable to translate macro: undefined identifier `FUNC_NAME`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/deprecated.h:40:9
+pub const SCM_STATIC_DOUBLE_CELL = @compileError("unable to translate macro: undefined identifier `_raw_cell`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/deprecated.h:47:9
+pub const SCM_DEPRECATED_TYPE = @compileError("unable to translate macro: undefined identifier `__attribute__`"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/deprecated.h:93:9
+pub const SCM_MEMORY_ERROR = @compileError("unable to translate C expr: unexpected token .Keyword_do"); // /gnu/store/dbzy1ml4il9mfm7wyr24fjjrwck87a8m-profile/include/guile/3.0/libguile/deprecated.h:114:9
+pub const __llvm__ = @as(c_int, 1);
+pub const __clang__ = @as(c_int, 1);
+pub const __clang_major__ = @as(c_int, 13);
+pub const __clang_minor__ = @as(c_int, 0);
+pub const __clang_patchlevel__ = @as(c_int, 1);
+pub const __clang_version__ = "13.0.1 ";
+pub const __GNUC__ = @as(c_int, 4);
+pub const __GNUC_MINOR__ = @as(c_int, 2);
+pub const __GNUC_PATCHLEVEL__ = @as(c_int, 1);
+pub const __GXX_ABI_VERSION = @as(c_int, 1002);
+pub const __ATOMIC_RELAXED = @as(c_int, 0);
+pub const __ATOMIC_CONSUME = @as(c_int, 1);
+pub const __ATOMIC_ACQUIRE = @as(c_int, 2);
+pub const __ATOMIC_RELEASE = @as(c_int, 3);
+pub const __ATOMIC_ACQ_REL = @as(c_int, 4);
+pub const __ATOMIC_SEQ_CST = @as(c_int, 5);
+pub const __OPENCL_MEMORY_SCOPE_WORK_ITEM = @as(c_int, 0);
+pub const __OPENCL_MEMORY_SCOPE_WORK_GROUP = @as(c_int, 1);
+pub const __OPENCL_MEMORY_SCOPE_DEVICE = @as(c_int, 2);
+pub const __OPENCL_MEMORY_SCOPE_ALL_SVM_DEVICES = @as(c_int, 3);
+pub const __OPENCL_MEMORY_SCOPE_SUB_GROUP = @as(c_int, 4);
+pub const __PRAGMA_REDEFINE_EXTNAME = @as(c_int, 1);
+pub const __VERSION__ = "Clang 13.0.1";
+pub const __OBJC_BOOL_IS_BOOL = @as(c_int, 0);
+pub const __CONSTANT_CFSTRINGS__ = @as(c_int, 1);
+pub const __clang_literal_encoding__ = "UTF-8";
+pub const __clang_wide_literal_encoding__ = "UTF-32";
+pub const __OPTIMIZE__ = @as(c_int, 1);
+pub const __ORDER_LITTLE_ENDIAN__ = @as(c_int, 1234);
+pub const __ORDER_BIG_ENDIAN__ = @as(c_int, 4321);
+pub const __ORDER_PDP_ENDIAN__ = @as(c_int, 3412);
+pub const __BYTE_ORDER__ = __ORDER_LITTLE_ENDIAN__;
+pub const __LITTLE_ENDIAN__ = @as(c_int, 1);
+pub const _LP64 = @as(c_int, 1);
+pub const __LP64__ = @as(c_int, 1);
+pub const __CHAR_BIT__ = @as(c_int, 8);
+pub const __SCHAR_MAX__ = @as(c_int, 127);
+pub const __SHRT_MAX__ = @as(c_int, 32767);
+pub const __INT_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_int, 2147483647, .decimal);
+pub const __LONG_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_long, 9223372036854775807, .decimal);
+pub const __LONG_LONG_MAX__ = @as(c_longlong, 9223372036854775807);
+pub const __WCHAR_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_int, 2147483647, .decimal);
+pub const __WINT_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_uint, 4294967295, .decimal);
+pub const __INTMAX_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_long, 9223372036854775807, .decimal);
+pub const __SIZE_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_ulong, 18446744073709551615, .decimal);
+pub const __UINTMAX_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_ulong, 18446744073709551615, .decimal);
+pub const __PTRDIFF_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_long, 9223372036854775807, .decimal);
+pub const __INTPTR_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_long, 9223372036854775807, .decimal);
+pub const __UINTPTR_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_ulong, 18446744073709551615, .decimal);
+pub const __SIZEOF_DOUBLE__ = @as(c_int, 8);
+pub const __SIZEOF_FLOAT__ = @as(c_int, 4);
+pub const __SIZEOF_INT__ = @as(c_int, 4);
+pub const __SIZEOF_LONG__ = @as(c_int, 8);
+pub const __SIZEOF_LONG_DOUBLE__ = @as(c_int, 16);
+pub const __SIZEOF_LONG_LONG__ = @as(c_int, 8);
+pub const __SIZEOF_POINTER__ = @as(c_int, 8);
+pub const __SIZEOF_SHORT__ = @as(c_int, 2);
+pub const __SIZEOF_PTRDIFF_T__ = @as(c_int, 8);
+pub const __SIZEOF_SIZE_T__ = @as(c_int, 8);
+pub const __SIZEOF_WCHAR_T__ = @as(c_int, 4);
+pub const __SIZEOF_WINT_T__ = @as(c_int, 4);
+pub const __SIZEOF_INT128__ = @as(c_int, 16);
+pub const __INTMAX_TYPE__ = c_long;
+pub const __INTMAX_FMTd__ = "ld";
+pub const __INTMAX_FMTi__ = "li";
+pub const __UINTMAX_TYPE__ = c_ulong;
+pub const __UINTMAX_FMTo__ = "lo";
+pub const __UINTMAX_FMTu__ = "lu";
+pub const __UINTMAX_FMTx__ = "lx";
+pub const __UINTMAX_FMTX__ = "lX";
+pub const __INTMAX_WIDTH__ = @as(c_int, 64);
+pub const __PTRDIFF_TYPE__ = c_long;
+pub const __PTRDIFF_FMTd__ = "ld";
+pub const __PTRDIFF_FMTi__ = "li";
+pub const __PTRDIFF_WIDTH__ = @as(c_int, 64);
+pub const __INTPTR_TYPE__ = c_long;
+pub const __INTPTR_FMTd__ = "ld";
+pub const __INTPTR_FMTi__ = "li";
+pub const __INTPTR_WIDTH__ = @as(c_int, 64);
+pub const __SIZE_TYPE__ = c_ulong;
+pub const __SIZE_FMTo__ = "lo";
+pub const __SIZE_FMTu__ = "lu";
+pub const __SIZE_FMTx__ = "lx";
+pub const __SIZE_FMTX__ = "lX";
+pub const __SIZE_WIDTH__ = @as(c_int, 64);
+pub const __WCHAR_TYPE__ = c_int;
+pub const __WCHAR_WIDTH__ = @as(c_int, 32);
+pub const __WINT_TYPE__ = c_uint;
+pub const __WINT_WIDTH__ = @as(c_int, 32);
+pub const __SIG_ATOMIC_WIDTH__ = @as(c_int, 32);
+pub const __SIG_ATOMIC_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_int, 2147483647, .decimal);
+pub const __CHAR16_TYPE__ = c_ushort;
+pub const __CHAR32_TYPE__ = c_uint;
+pub const __UINTMAX_WIDTH__ = @as(c_int, 64);
+pub const __UINTPTR_TYPE__ = c_ulong;
+pub const __UINTPTR_FMTo__ = "lo";
+pub const __UINTPTR_FMTu__ = "lu";
+pub const __UINTPTR_FMTx__ = "lx";
+pub const __UINTPTR_FMTX__ = "lX";
+pub const __UINTPTR_WIDTH__ = @as(c_int, 64);
+pub const __FLT_DENORM_MIN__ = @as(f32, 1.40129846e-45);
+pub const __FLT_HAS_DENORM__ = @as(c_int, 1);
+pub const __FLT_DIG__ = @as(c_int, 6);
+pub const __FLT_DECIMAL_DIG__ = @as(c_int, 9);
+pub const __FLT_EPSILON__ = @as(f32, 1.19209290e-7);
+pub const __FLT_HAS_INFINITY__ = @as(c_int, 1);
+pub const __FLT_HAS_QUIET_NAN__ = @as(c_int, 1);
+pub const __FLT_MANT_DIG__ = @as(c_int, 24);
+pub const __FLT_MAX_10_EXP__ = @as(c_int, 38);
+pub const __FLT_MAX_EXP__ = @as(c_int, 128);
+pub const __FLT_MAX__ = @as(f32, 3.40282347e+38);
+pub const __FLT_MIN_10_EXP__ = -@as(c_int, 37);
+pub const __FLT_MIN_EXP__ = -@as(c_int, 125);
+pub const __FLT_MIN__ = @as(f32, 1.17549435e-38);
+pub const __DBL_DENORM_MIN__ = 4.9406564584124654e-324;
+pub const __DBL_HAS_DENORM__ = @as(c_int, 1);
+pub const __DBL_DIG__ = @as(c_int, 15);
+pub const __DBL_DECIMAL_DIG__ = @as(c_int, 17);
+pub const __DBL_EPSILON__ = 2.2204460492503131e-16;
+pub const __DBL_HAS_INFINITY__ = @as(c_int, 1);
+pub const __DBL_HAS_QUIET_NAN__ = @as(c_int, 1);
+pub const __DBL_MANT_DIG__ = @as(c_int, 53);
+pub const __DBL_MAX_10_EXP__ = @as(c_int, 308);
+pub const __DBL_MAX_EXP__ = @as(c_int, 1024);
+pub const __DBL_MAX__ = 1.7976931348623157e+308;
+pub const __DBL_MIN_10_EXP__ = -@as(c_int, 307);
+pub const __DBL_MIN_EXP__ = -@as(c_int, 1021);
+pub const __DBL_MIN__ = 2.2250738585072014e-308;
+pub const __LDBL_DENORM_MIN__ = @as(c_longdouble, 3.64519953188247460253e-4951);
+pub const __LDBL_HAS_DENORM__ = @as(c_int, 1);
+pub const __LDBL_DIG__ = @as(c_int, 18);
+pub const __LDBL_DECIMAL_DIG__ = @as(c_int, 21);
+pub const __LDBL_EPSILON__ = @as(c_longdouble, 1.08420217248550443401e-19);
+pub const __LDBL_HAS_INFINITY__ = @as(c_int, 1);
+pub const __LDBL_HAS_QUIET_NAN__ = @as(c_int, 1);
+pub const __LDBL_MANT_DIG__ = @as(c_int, 64);
+pub const __LDBL_MAX_10_EXP__ = @as(c_int, 4932);
+pub const __LDBL_MAX_EXP__ = @as(c_int, 16384);
+pub const __LDBL_MAX__ = @as(c_longdouble, 1.18973149535723176502e+4932);
+pub const __LDBL_MIN_10_EXP__ = -@as(c_int, 4931);
+pub const __LDBL_MIN_EXP__ = -@as(c_int, 16381);
+pub const __LDBL_MIN__ = @as(c_longdouble, 3.36210314311209350626e-4932);
+pub const __POINTER_WIDTH__ = @as(c_int, 64);
+pub const __BIGGEST_ALIGNMENT__ = @as(c_int, 16);
+pub const __WINT_UNSIGNED__ = @as(c_int, 1);
+pub const __INT8_TYPE__ = i8;
+pub const __INT8_FMTd__ = "hhd";
+pub const __INT8_FMTi__ = "hhi";
+pub const __INT8_C_SUFFIX__ = "";
+pub const __INT16_TYPE__ = c_short;
+pub const __INT16_FMTd__ = "hd";
+pub const __INT16_FMTi__ = "hi";
+pub const __INT16_C_SUFFIX__ = "";
+pub const __INT32_TYPE__ = c_int;
+pub const __INT32_FMTd__ = "d";
+pub const __INT32_FMTi__ = "i";
+pub const __INT32_C_SUFFIX__ = "";
+pub const __INT64_TYPE__ = c_long;
+pub const __INT64_FMTd__ = "ld";
+pub const __INT64_FMTi__ = "li";
+pub const __UINT8_TYPE__ = u8;
+pub const __UINT8_FMTo__ = "hho";
+pub const __UINT8_FMTu__ = "hhu";
+pub const __UINT8_FMTx__ = "hhx";
+pub const __UINT8_FMTX__ = "hhX";
+pub const __UINT8_C_SUFFIX__ = "";
+pub const __UINT8_MAX__ = @as(c_int, 255);
+pub const __INT8_MAX__ = @as(c_int, 127);
+pub const __UINT16_TYPE__ = c_ushort;
+pub const __UINT16_FMTo__ = "ho";
+pub const __UINT16_FMTu__ = "hu";
+pub const __UINT16_FMTx__ = "hx";
+pub const __UINT16_FMTX__ = "hX";
+pub const __UINT16_C_SUFFIX__ = "";
+pub const __UINT16_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_int, 65535, .decimal);
+pub const __INT16_MAX__ = @as(c_int, 32767);
+pub const __UINT32_TYPE__ = c_uint;
+pub const __UINT32_FMTo__ = "o";
+pub const __UINT32_FMTu__ = "u";
+pub const __UINT32_FMTx__ = "x";
+pub const __UINT32_FMTX__ = "X";
+pub const __UINT32_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_uint, 4294967295, .decimal);
+pub const __INT32_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_int, 2147483647, .decimal);
+pub const __UINT64_TYPE__ = c_ulong;
+pub const __UINT64_FMTo__ = "lo";
+pub const __UINT64_FMTu__ = "lu";
+pub const __UINT64_FMTx__ = "lx";
+pub const __UINT64_FMTX__ = "lX";
+pub const __UINT64_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_ulong, 18446744073709551615, .decimal);
+pub const __INT64_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_long, 9223372036854775807, .decimal);
+pub const __INT_LEAST8_TYPE__ = i8;
+pub const __INT_LEAST8_MAX__ = @as(c_int, 127);
+pub const __INT_LEAST8_FMTd__ = "hhd";
+pub const __INT_LEAST8_FMTi__ = "hhi";
+pub const __UINT_LEAST8_TYPE__ = u8;
+pub const __UINT_LEAST8_MAX__ = @as(c_int, 255);
+pub const __UINT_LEAST8_FMTo__ = "hho";
+pub const __UINT_LEAST8_FMTu__ = "hhu";
+pub const __UINT_LEAST8_FMTx__ = "hhx";
+pub const __UINT_LEAST8_FMTX__ = "hhX";
+pub const __INT_LEAST16_TYPE__ = c_short;
+pub const __INT_LEAST16_MAX__ = @as(c_int, 32767);
+pub const __INT_LEAST16_FMTd__ = "hd";
+pub const __INT_LEAST16_FMTi__ = "hi";
+pub const __UINT_LEAST16_TYPE__ = c_ushort;
+pub const __UINT_LEAST16_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_int, 65535, .decimal);
+pub const __UINT_LEAST16_FMTo__ = "ho";
+pub const __UINT_LEAST16_FMTu__ = "hu";
+pub const __UINT_LEAST16_FMTx__ = "hx";
+pub const __UINT_LEAST16_FMTX__ = "hX";
+pub const __INT_LEAST32_TYPE__ = c_int;
+pub const __INT_LEAST32_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_int, 2147483647, .decimal);
+pub const __INT_LEAST32_FMTd__ = "d";
+pub const __INT_LEAST32_FMTi__ = "i";
+pub const __UINT_LEAST32_TYPE__ = c_uint;
+pub const __UINT_LEAST32_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_uint, 4294967295, .decimal);
+pub const __UINT_LEAST32_FMTo__ = "o";
+pub const __UINT_LEAST32_FMTu__ = "u";
+pub const __UINT_LEAST32_FMTx__ = "x";
+pub const __UINT_LEAST32_FMTX__ = "X";
+pub const __INT_LEAST64_TYPE__ = c_long;
+pub const __INT_LEAST64_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_long, 9223372036854775807, .decimal);
+pub const __INT_LEAST64_FMTd__ = "ld";
+pub const __INT_LEAST64_FMTi__ = "li";
+pub const __UINT_LEAST64_TYPE__ = c_ulong;
+pub const __UINT_LEAST64_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_ulong, 18446744073709551615, .decimal);
+pub const __UINT_LEAST64_FMTo__ = "lo";
+pub const __UINT_LEAST64_FMTu__ = "lu";
+pub const __UINT_LEAST64_FMTx__ = "lx";
+pub const __UINT_LEAST64_FMTX__ = "lX";
+pub const __INT_FAST8_TYPE__ = i8;
+pub const __INT_FAST8_MAX__ = @as(c_int, 127);
+pub const __INT_FAST8_FMTd__ = "hhd";
+pub const __INT_FAST8_FMTi__ = "hhi";
+pub const __UINT_FAST8_TYPE__ = u8;
+pub const __UINT_FAST8_MAX__ = @as(c_int, 255);
+pub const __UINT_FAST8_FMTo__ = "hho";
+pub const __UINT_FAST8_FMTu__ = "hhu";
+pub const __UINT_FAST8_FMTx__ = "hhx";
+pub const __UINT_FAST8_FMTX__ = "hhX";
+pub const __INT_FAST16_TYPE__ = c_short;
+pub const __INT_FAST16_MAX__ = @as(c_int, 32767);
+pub const __INT_FAST16_FMTd__ = "hd";
+pub const __INT_FAST16_FMTi__ = "hi";
+pub const __UINT_FAST16_TYPE__ = c_ushort;
+pub const __UINT_FAST16_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_int, 65535, .decimal);
+pub const __UINT_FAST16_FMTo__ = "ho";
+pub const __UINT_FAST16_FMTu__ = "hu";
+pub const __UINT_FAST16_FMTx__ = "hx";
+pub const __UINT_FAST16_FMTX__ = "hX";
+pub const __INT_FAST32_TYPE__ = c_int;
+pub const __INT_FAST32_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_int, 2147483647, .decimal);
+pub const __INT_FAST32_FMTd__ = "d";
+pub const __INT_FAST32_FMTi__ = "i";
+pub const __UINT_FAST32_TYPE__ = c_uint;
+pub const __UINT_FAST32_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_uint, 4294967295, .decimal);
+pub const __UINT_FAST32_FMTo__ = "o";
+pub const __UINT_FAST32_FMTu__ = "u";
+pub const __UINT_FAST32_FMTx__ = "x";
+pub const __UINT_FAST32_FMTX__ = "X";
+pub const __INT_FAST64_TYPE__ = c_long;
+pub const __INT_FAST64_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_long, 9223372036854775807, .decimal);
+pub const __INT_FAST64_FMTd__ = "ld";
+pub const __INT_FAST64_FMTi__ = "li";
+pub const __UINT_FAST64_TYPE__ = c_ulong;
+pub const __UINT_FAST64_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_ulong, 18446744073709551615, .decimal);
+pub const __UINT_FAST64_FMTo__ = "lo";
+pub const __UINT_FAST64_FMTu__ = "lu";
+pub const __UINT_FAST64_FMTx__ = "lx";
+pub const __UINT_FAST64_FMTX__ = "lX";
+pub const __USER_LABEL_PREFIX__ = "";
+pub const __FINITE_MATH_ONLY__ = @as(c_int, 0);
+pub const __GNUC_STDC_INLINE__ = @as(c_int, 1);
+pub const __GCC_ATOMIC_TEST_AND_SET_TRUEVAL = @as(c_int, 1);
+pub const __CLANG_ATOMIC_BOOL_LOCK_FREE = @as(c_int, 2);
+pub const __CLANG_ATOMIC_CHAR_LOCK_FREE = @as(c_int, 2);
+pub const __CLANG_ATOMIC_CHAR16_T_LOCK_FREE = @as(c_int, 2);
+pub const __CLANG_ATOMIC_CHAR32_T_LOCK_FREE = @as(c_int, 2);
+pub const __CLANG_ATOMIC_WCHAR_T_LOCK_FREE = @as(c_int, 2);
+pub const __CLANG_ATOMIC_SHORT_LOCK_FREE = @as(c_int, 2);
+pub const __CLANG_ATOMIC_INT_LOCK_FREE = @as(c_int, 2);
+pub const __CLANG_ATOMIC_LONG_LOCK_FREE = @as(c_int, 2);
+pub const __CLANG_ATOMIC_LLONG_LOCK_FREE = @as(c_int, 2);
+pub const __CLANG_ATOMIC_POINTER_LOCK_FREE = @as(c_int, 2);
+pub const __GCC_ATOMIC_BOOL_LOCK_FREE = @as(c_int, 2);
+pub const __GCC_ATOMIC_CHAR_LOCK_FREE = @as(c_int, 2);
+pub const __GCC_ATOMIC_CHAR16_T_LOCK_FREE = @as(c_int, 2);
+pub const __GCC_ATOMIC_CHAR32_T_LOCK_FREE = @as(c_int, 2);
+pub const __GCC_ATOMIC_WCHAR_T_LOCK_FREE = @as(c_int, 2);
+pub const __GCC_ATOMIC_SHORT_LOCK_FREE = @as(c_int, 2);
+pub const __GCC_ATOMIC_INT_LOCK_FREE = @as(c_int, 2);
+pub const __GCC_ATOMIC_LONG_LOCK_FREE = @as(c_int, 2);
+pub const __GCC_ATOMIC_LLONG_LOCK_FREE = @as(c_int, 2);
+pub const __GCC_ATOMIC_POINTER_LOCK_FREE = @as(c_int, 2);
+pub const __FLT_EVAL_METHOD__ = @as(c_int, 0);
+pub const __FLT_RADIX__ = @as(c_int, 2);
+pub const __DECIMAL_DIG__ = __LDBL_DECIMAL_DIG__;
+pub const __GCC_ASM_FLAG_OUTPUTS__ = @as(c_int, 1);
+pub const __code_model_small__ = @as(c_int, 1);
+pub const __amd64__ = @as(c_int, 1);
+pub const __amd64 = @as(c_int, 1);
+pub const __x86_64 = @as(c_int, 1);
+pub const __x86_64__ = @as(c_int, 1);
+pub const __SEG_GS = @as(c_int, 1);
+pub const __SEG_FS = @as(c_int, 1);
+pub const __corei7 = @as(c_int, 1);
+pub const __corei7__ = @as(c_int, 1);
+pub const __tune_corei7__ = @as(c_int, 1);
+pub const __REGISTER_PREFIX__ = "";
+pub const __NO_MATH_INLINES = @as(c_int, 1);
+pub const __AES__ = @as(c_int, 1);
+pub const __PCLMUL__ = @as(c_int, 1);
+pub const __LAHF_SAHF__ = @as(c_int, 1);
+pub const __LZCNT__ = @as(c_int, 1);
+pub const __RDRND__ = @as(c_int, 1);
+pub const __FSGSBASE__ = @as(c_int, 1);
+pub const __BMI__ = @as(c_int, 1);
+pub const __BMI2__ = @as(c_int, 1);
+pub const __POPCNT__ = @as(c_int, 1);
+pub const __RTM__ = @as(c_int, 1);
+pub const __PRFCHW__ = @as(c_int, 1);
+pub const __RDSEED__ = @as(c_int, 1);
+pub const __ADX__ = @as(c_int, 1);
+pub const __MOVBE__ = @as(c_int, 1);
+pub const __FMA__ = @as(c_int, 1);
+pub const __F16C__ = @as(c_int, 1);
+pub const __FXSR__ = @as(c_int, 1);
+pub const __XSAVE__ = @as(c_int, 1);
+pub const __XSAVEOPT__ = @as(c_int, 1);
+pub const __XSAVEC__ = @as(c_int, 1);
+pub const __XSAVES__ = @as(c_int, 1);
+pub const __CLFLUSHOPT__ = @as(c_int, 1);
+pub const __SGX__ = @as(c_int, 1);
+pub const __INVPCID__ = @as(c_int, 1);
+pub const __AVX2__ = @as(c_int, 1);
+pub const __AVX__ = @as(c_int, 1);
+pub const __SSE4_2__ = @as(c_int, 1);
+pub const __SSE4_1__ = @as(c_int, 1);
+pub const __SSSE3__ = @as(c_int, 1);
+pub const __SSE3__ = @as(c_int, 1);
+pub const __SSE2__ = @as(c_int, 1);
+pub const __SSE2_MATH__ = @as(c_int, 1);
+pub const __SSE__ = @as(c_int, 1);
+pub const __SSE_MATH__ = @as(c_int, 1);
+pub const __MMX__ = @as(c_int, 1);
+pub const __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 = @as(c_int, 1);
+pub const __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 = @as(c_int, 1);
+pub const __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 = @as(c_int, 1);
+pub const __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 = @as(c_int, 1);
+pub const __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 = @as(c_int, 1);
+pub const __SIZEOF_FLOAT128__ = @as(c_int, 16);
+pub const unix = @as(c_int, 1);
+pub const __unix = @as(c_int, 1);
+pub const __unix__ = @as(c_int, 1);
+pub const linux = @as(c_int, 1);
+pub const __linux = @as(c_int, 1);
+pub const __linux__ = @as(c_int, 1);
+pub const __ELF__ = @as(c_int, 1);
+pub const __gnu_linux__ = @as(c_int, 1);
+pub const __FLOAT128__ = @as(c_int, 1);
+pub const __STDC__ = @as(c_int, 1);
+pub const __STDC_HOSTED__ = @as(c_int, 1);
+pub const __STDC_VERSION__ = @as(c_long, 201710);
+pub const __STDC_UTF_16__ = @as(c_int, 1);
+pub const __STDC_UTF_32__ = @as(c_int, 1);
+pub const _DEBUG = @as(c_int, 1);
+pub const __GCC_HAVE_DWARF2_CFI_ASM = @as(c_int, 1);
+pub const SCM_LIBGUILE_H = "";
+pub const SCM_SCM_H = "";
+pub const __CLANG_STDINT_H = "";
+pub const _STDINT_H = @as(c_int, 1);
+pub const __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION = "";
+pub const _FEATURES_H = @as(c_int, 1);
+pub const __KERNEL_STRICT_NAMES = "";
+pub inline fn __GNUC_PREREQ(maj: anytype, min: anytype) @TypeOf(((__GNUC__ << @as(c_int, 16)) + __GNUC_MINOR__) >= ((maj << @as(c_int, 16)) + min)) {
+ return ((__GNUC__ << @as(c_int, 16)) + __GNUC_MINOR__) >= ((maj << @as(c_int, 16)) + min);
+}
+pub inline fn __glibc_clang_prereq(maj: anytype, min: anytype) @TypeOf(((__clang_major__ << @as(c_int, 16)) + __clang_minor__) >= ((maj << @as(c_int, 16)) + min)) {
+ return ((__clang_major__ << @as(c_int, 16)) + __clang_minor__) >= ((maj << @as(c_int, 16)) + min);
+}
+pub const _DEFAULT_SOURCE = @as(c_int, 1);
+pub const __GLIBC_USE_ISOC2X = @as(c_int, 0);
+pub const __USE_ISOC11 = @as(c_int, 1);
+pub const __USE_ISOC99 = @as(c_int, 1);
+pub const __USE_ISOC95 = @as(c_int, 1);
+pub const __USE_POSIX_IMPLICITLY = @as(c_int, 1);
+pub const _POSIX_SOURCE = @as(c_int, 1);
+pub const _POSIX_C_SOURCE = @as(c_long, 200809);
+pub const __USE_POSIX = @as(c_int, 1);
+pub const __USE_POSIX2 = @as(c_int, 1);
+pub const __USE_POSIX199309 = @as(c_int, 1);
+pub const __USE_POSIX199506 = @as(c_int, 1);
+pub const __USE_XOPEN2K = @as(c_int, 1);
+pub const __USE_XOPEN2K8 = @as(c_int, 1);
+pub const _ATFILE_SOURCE = @as(c_int, 1);
+pub const __USE_MISC = @as(c_int, 1);
+pub const __USE_ATFILE = @as(c_int, 1);
+pub const __USE_FORTIFY_LEVEL = @as(c_int, 0);
+pub const __GLIBC_USE_DEPRECATED_GETS = @as(c_int, 0);
+pub const __GLIBC_USE_DEPRECATED_SCANF = @as(c_int, 0);
+pub const _STDC_PREDEF_H = @as(c_int, 1);
+pub const __STDC_IEC_559__ = @as(c_int, 1);
+pub const __STDC_IEC_559_COMPLEX__ = @as(c_int, 1);
+pub const __STDC_ISO_10646__ = @as(c_long, 201706);
+pub const __GNU_LIBRARY__ = @as(c_int, 6);
+pub const __GLIBC__ = @as(c_int, 2);
+pub const __GLIBC_MINOR__ = @as(c_int, 33);
+pub inline fn __GLIBC_PREREQ(maj: anytype, min: anytype) @TypeOf(((__GLIBC__ << @as(c_int, 16)) + __GLIBC_MINOR__) >= ((maj << @as(c_int, 16)) + min)) {
+ return ((__GLIBC__ << @as(c_int, 16)) + __GLIBC_MINOR__) >= ((maj << @as(c_int, 16)) + min);
+}
+pub const _SYS_CDEFS_H = @as(c_int, 1);
+pub const __LEAF = "";
+pub const __LEAF_ATTR = "";
+pub inline fn __P(args: anytype) @TypeOf(args) {
+ return args;
+}
+pub inline fn __PMT(args: anytype) @TypeOf(args) {
+ return args;
+}
+pub const __ptr_t = ?*anyopaque;
+pub const __BEGIN_DECLS = "";
+pub const __END_DECLS = "";
+pub inline fn __bos(ptr: anytype) @TypeOf(__builtin_object_size(ptr, __USE_FORTIFY_LEVEL > @as(c_int, 1))) {
+ return __builtin_object_size(ptr, __USE_FORTIFY_LEVEL > @as(c_int, 1));
+}
+pub inline fn __bos0(ptr: anytype) @TypeOf(__builtin_object_size(ptr, @as(c_int, 0))) {
+ return __builtin_object_size(ptr, @as(c_int, 0));
+}
+pub inline fn __glibc_objsize0(__o: anytype) @TypeOf(__bos0(__o)) {
+ return __bos0(__o);
+}
+pub inline fn __glibc_objsize(__o: anytype) @TypeOf(__bos(__o)) {
+ return __bos(__o);
+}
+pub const __glibc_c99_flexarr_available = @as(c_int, 1);
+pub inline fn __ASMNAME(cname: anytype) @TypeOf(__ASMNAME2(__USER_LABEL_PREFIX__, cname)) {
+ return __ASMNAME2(__USER_LABEL_PREFIX__, cname);
+}
+pub const __wur = "";
+pub const __attribute_artificial__ = "";
+pub const __fortify_function = __extern_always_inline ++ __attribute_artificial__;
+pub inline fn __glibc_unlikely(cond: anytype) @TypeOf(__builtin_expect(cond, @as(c_int, 0))) {
+ return __builtin_expect(cond, @as(c_int, 0));
+}
+pub inline fn __glibc_likely(cond: anytype) @TypeOf(__builtin_expect(cond, @as(c_int, 1))) {
+ return __builtin_expect(cond, @as(c_int, 1));
+}
+pub const __attribute_nonstring__ = "";
+pub const __WORDSIZE = @as(c_int, 64);
+pub const __WORDSIZE_TIME64_COMPAT32 = @as(c_int, 1);
+pub const __SYSCALL_WORDSIZE = @as(c_int, 64);
+pub const __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI = @as(c_int, 0);
+pub inline fn __LDBL_REDIR1(name: anytype, proto: anytype, alias: anytype) @TypeOf(name ++ proto) {
+ _ = alias;
+ return name ++ proto;
+}
+pub inline fn __LDBL_REDIR(name: anytype, proto: anytype) @TypeOf(name ++ proto) {
+ return name ++ proto;
+}
+pub inline fn __LDBL_REDIR1_NTH(name: anytype, proto: anytype, alias: anytype) @TypeOf(name ++ proto ++ __THROW) {
+ _ = alias;
+ return name ++ proto ++ __THROW;
+}
+pub inline fn __LDBL_REDIR_NTH(name: anytype, proto: anytype) @TypeOf(name ++ proto ++ __THROW) {
+ return name ++ proto ++ __THROW;
+}
+pub inline fn __REDIRECT_LDBL(name: anytype, proto: anytype, alias: anytype) @TypeOf(__REDIRECT(name, proto, alias)) {
+ return __REDIRECT(name, proto, alias);
+}
+pub inline fn __REDIRECT_NTH_LDBL(name: anytype, proto: anytype, alias: anytype) @TypeOf(__REDIRECT_NTH(name, proto, alias)) {
+ return __REDIRECT_NTH(name, proto, alias);
+}
+pub const __HAVE_GENERIC_SELECTION = @as(c_int, 1);
+pub const __USE_EXTERN_INLINES = @as(c_int, 1);
+pub const __stub___compat_bdflush = "";
+pub const __stub_chflags = "";
+pub const __stub_fchflags = "";
+pub const __stub_gtty = "";
+pub const __stub_revoke = "";
+pub const __stub_setlogin = "";
+pub const __stub_sigreturn = "";
+pub const __stub_stty = "";
+pub const __GLIBC_USE_LIB_EXT2 = @as(c_int, 0);
+pub const __GLIBC_USE_IEC_60559_BFP_EXT = @as(c_int, 0);
+pub const __GLIBC_USE_IEC_60559_BFP_EXT_C2X = @as(c_int, 0);
+pub const __GLIBC_USE_IEC_60559_FUNCS_EXT = @as(c_int, 0);
+pub const __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X = @as(c_int, 0);
+pub const __GLIBC_USE_IEC_60559_TYPES_EXT = @as(c_int, 0);
+pub const _BITS_TYPES_H = @as(c_int, 1);
+pub const __TIMESIZE = __WORDSIZE;
+pub const __S16_TYPE = c_short;
+pub const __U16_TYPE = c_ushort;
+pub const __S32_TYPE = c_int;
+pub const __U32_TYPE = c_uint;
+pub const __SLONGWORD_TYPE = c_long;
+pub const __ULONGWORD_TYPE = c_ulong;
+pub const __SQUAD_TYPE = c_long;
+pub const __UQUAD_TYPE = c_ulong;
+pub const __SWORD_TYPE = c_long;
+pub const __UWORD_TYPE = c_ulong;
+pub const __SLONG32_TYPE = c_int;
+pub const __ULONG32_TYPE = c_uint;
+pub const __S64_TYPE = c_long;
+pub const __U64_TYPE = c_ulong;
+pub const _BITS_TYPESIZES_H = @as(c_int, 1);
+pub const __SYSCALL_SLONG_TYPE = __SLONGWORD_TYPE;
+pub const __SYSCALL_ULONG_TYPE = __ULONGWORD_TYPE;
+pub const __DEV_T_TYPE = __UQUAD_TYPE;
+pub const __UID_T_TYPE = __U32_TYPE;
+pub const __GID_T_TYPE = __U32_TYPE;
+pub const __INO_T_TYPE = __SYSCALL_ULONG_TYPE;
+pub const __INO64_T_TYPE = __UQUAD_TYPE;
+pub const __MODE_T_TYPE = __U32_TYPE;
+pub const __NLINK_T_TYPE = __SYSCALL_ULONG_TYPE;
+pub const __FSWORD_T_TYPE = __SYSCALL_SLONG_TYPE;
+pub const __OFF_T_TYPE = __SYSCALL_SLONG_TYPE;
+pub const __OFF64_T_TYPE = __SQUAD_TYPE;
+pub const __PID_T_TYPE = __S32_TYPE;
+pub const __RLIM_T_TYPE = __SYSCALL_ULONG_TYPE;
+pub const __RLIM64_T_TYPE = __UQUAD_TYPE;
+pub const __BLKCNT_T_TYPE = __SYSCALL_SLONG_TYPE;
+pub const __BLKCNT64_T_TYPE = __SQUAD_TYPE;
+pub const __FSBLKCNT_T_TYPE = __SYSCALL_ULONG_TYPE;
+pub const __FSBLKCNT64_T_TYPE = __UQUAD_TYPE;
+pub const __FSFILCNT_T_TYPE = __SYSCALL_ULONG_TYPE;
+pub const __FSFILCNT64_T_TYPE = __UQUAD_TYPE;
+pub const __ID_T_TYPE = __U32_TYPE;
+pub const __CLOCK_T_TYPE = __SYSCALL_SLONG_TYPE;
+pub const __TIME_T_TYPE = __SYSCALL_SLONG_TYPE;
+pub const __USECONDS_T_TYPE = __U32_TYPE;
+pub const __SUSECONDS_T_TYPE = __SYSCALL_SLONG_TYPE;
+pub const __SUSECONDS64_T_TYPE = __SQUAD_TYPE;
+pub const __DADDR_T_TYPE = __S32_TYPE;
+pub const __KEY_T_TYPE = __S32_TYPE;
+pub const __CLOCKID_T_TYPE = __S32_TYPE;
+pub const __TIMER_T_TYPE = ?*anyopaque;
+pub const __BLKSIZE_T_TYPE = __SYSCALL_SLONG_TYPE;
+pub const __SSIZE_T_TYPE = __SWORD_TYPE;
+pub const __CPU_MASK_TYPE = __SYSCALL_ULONG_TYPE;
+pub const __OFF_T_MATCHES_OFF64_T = @as(c_int, 1);
+pub const __INO_T_MATCHES_INO64_T = @as(c_int, 1);
+pub const __RLIM_T_MATCHES_RLIM64_T = @as(c_int, 1);
+pub const __STATFS_MATCHES_STATFS64 = @as(c_int, 1);
+pub const __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 = @as(c_int, 1);
+pub const __FD_SETSIZE = @as(c_int, 1024);
+pub const _BITS_TIME64_H = @as(c_int, 1);
+pub const __TIME64_T_TYPE = __TIME_T_TYPE;
+pub const _BITS_WCHAR_H = @as(c_int, 1);
+pub const __WCHAR_MAX = __WCHAR_MAX__;
+pub const __WCHAR_MIN = -__WCHAR_MAX - @as(c_int, 1);
+pub const _BITS_STDINT_INTN_H = @as(c_int, 1);
+pub const _BITS_STDINT_UINTN_H = @as(c_int, 1);
+pub const __intptr_t_defined = "";
+pub const INT8_MIN = -@as(c_int, 128);
+pub const INT16_MIN = -@as(c_int, 32767) - @as(c_int, 1);
+pub const INT32_MIN = -@import("std").zig.c_translation.promoteIntLiteral(c_int, 2147483647, .decimal) - @as(c_int, 1);
+pub const INT64_MIN = -__INT64_C(@import("std").zig.c_translation.promoteIntLiteral(c_int, 9223372036854775807, .decimal)) - @as(c_int, 1);
+pub const INT8_MAX = @as(c_int, 127);
+pub const INT16_MAX = @as(c_int, 32767);
+pub const INT32_MAX = @import("std").zig.c_translation.promoteIntLiteral(c_int, 2147483647, .decimal);
+pub const INT64_MAX = __INT64_C(@import("std").zig.c_translation.promoteIntLiteral(c_int, 9223372036854775807, .decimal));
+pub const UINT8_MAX = @as(c_int, 255);
+pub const UINT16_MAX = @import("std").zig.c_translation.promoteIntLiteral(c_int, 65535, .decimal);
+pub const UINT32_MAX = @import("std").zig.c_translation.promoteIntLiteral(c_uint, 4294967295, .decimal);
+pub const UINT64_MAX = __UINT64_C(@import("std").zig.c_translation.promoteIntLiteral(c_int, 18446744073709551615, .decimal));
+pub const INT_LEAST8_MIN = -@as(c_int, 128);
+pub const INT_LEAST16_MIN = -@as(c_int, 32767) - @as(c_int, 1);
+pub const INT_LEAST32_MIN = -@import("std").zig.c_translation.promoteIntLiteral(c_int, 2147483647, .decimal) - @as(c_int, 1);
+pub const INT_LEAST64_MIN = -__INT64_C(@import("std").zig.c_translation.promoteIntLiteral(c_int, 9223372036854775807, .decimal)) - @as(c_int, 1);
+pub const INT_LEAST8_MAX = @as(c_int, 127);
+pub const INT_LEAST16_MAX = @as(c_int, 32767);
+pub const INT_LEAST32_MAX = @import("std").zig.c_translation.promoteIntLiteral(c_int, 2147483647, .decimal);
+pub const INT_LEAST64_MAX = __INT64_C(@import("std").zig.c_translation.promoteIntLiteral(c_int, 9223372036854775807, .decimal));
+pub const UINT_LEAST8_MAX = @as(c_int, 255);
+pub const UINT_LEAST16_MAX = @import("std").zig.c_translation.promoteIntLiteral(c_int, 65535, .decimal);
+pub const UINT_LEAST32_MAX = @import("std").zig.c_translation.promoteIntLiteral(c_uint, 4294967295, .decimal);
+pub const UINT_LEAST64_MAX = __UINT64_C(@import("std").zig.c_translation.promoteIntLiteral(c_int, 18446744073709551615, .decimal));
+pub const INT_FAST8_MIN = -@as(c_int, 128);
+pub const INT_FAST16_MIN = -@import("std").zig.c_translation.promoteIntLiteral(c_long, 9223372036854775807, .decimal) - @as(c_int, 1);
+pub const INT_FAST32_MIN = -@import("std").zig.c_translation.promoteIntLiteral(c_long, 9223372036854775807, .decimal) - @as(c_int, 1);
+pub const INT_FAST64_MIN = -__INT64_C(@import("std").zig.c_translation.promoteIntLiteral(c_int, 9223372036854775807, .decimal)) - @as(c_int, 1);
+pub const INT_FAST8_MAX = @as(c_int, 127);
+pub const INT_FAST16_MAX = @import("std").zig.c_translation.promoteIntLiteral(c_long, 9223372036854775807, .decimal);
+pub const INT_FAST32_MAX = @import("std").zig.c_translation.promoteIntLiteral(c_long, 9223372036854775807, .decimal);
+pub const INT_FAST64_MAX = __INT64_C(@import("std").zig.c_translation.promoteIntLiteral(c_int, 9223372036854775807, .decimal));
+pub const UINT_FAST8_MAX = @as(c_int, 255);
+pub const UINT_FAST16_MAX = @import("std").zig.c_translation.promoteIntLiteral(c_ulong, 18446744073709551615, .decimal);
+pub const UINT_FAST32_MAX = @import("std").zig.c_translation.promoteIntLiteral(c_ulong, 18446744073709551615, .decimal);
+pub const UINT_FAST64_MAX = __UINT64_C(@import("std").zig.c_translation.promoteIntLiteral(c_int, 18446744073709551615, .decimal));
+pub const INTPTR_MIN = -@import("std").zig.c_translation.promoteIntLiteral(c_long, 9223372036854775807, .decimal) - @as(c_int, 1);
+pub const INTPTR_MAX = @import("std").zig.c_translation.promoteIntLiteral(c_long, 9223372036854775807, .decimal);
+pub const UINTPTR_MAX = @import("std").zig.c_translation.promoteIntLiteral(c_ulong, 18446744073709551615, .decimal);
+pub const INTMAX_MIN = -__INT64_C(@import("std").zig.c_translation.promoteIntLiteral(c_int, 9223372036854775807, .decimal)) - @as(c_int, 1);
+pub const INTMAX_MAX = __INT64_C(@import("std").zig.c_translation.promoteIntLiteral(c_int, 9223372036854775807, .decimal));
+pub const UINTMAX_MAX = __UINT64_C(@import("std").zig.c_translation.promoteIntLiteral(c_int, 18446744073709551615, .decimal));
+pub const PTRDIFF_MIN = -@import("std").zig.c_translation.promoteIntLiteral(c_long, 9223372036854775807, .decimal) - @as(c_int, 1);
+pub const PTRDIFF_MAX = @import("std").zig.c_translation.promoteIntLiteral(c_long, 9223372036854775807, .decimal);
+pub const SIG_ATOMIC_MIN = -@import("std").zig.c_translation.promoteIntLiteral(c_int, 2147483647, .decimal) - @as(c_int, 1);
+pub const SIG_ATOMIC_MAX = @import("std").zig.c_translation.promoteIntLiteral(c_int, 2147483647, .decimal);
+pub const SIZE_MAX = @import("std").zig.c_translation.promoteIntLiteral(c_ulong, 18446744073709551615, .decimal);
+pub const WCHAR_MIN = __WCHAR_MIN;
+pub const WCHAR_MAX = __WCHAR_MAX;
+pub const WINT_MIN = @as(c_uint, 0);
+pub const WINT_MAX = @import("std").zig.c_translation.promoteIntLiteral(c_uint, 4294967295, .decimal);
+pub inline fn INT8_C(c: anytype) @TypeOf(c) {
+ return c;
+}
+pub inline fn INT16_C(c: anytype) @TypeOf(c) {
+ return c;
+}
+pub inline fn INT32_C(c: anytype) @TypeOf(c) {
+ return c;
+}
+pub inline fn UINT8_C(c: anytype) @TypeOf(c) {
+ return c;
+}
+pub inline fn UINT16_C(c: anytype) @TypeOf(c) {
+ return c;
+}
+pub const SCM_SCMCONFIG_H = "";
+pub const __STDDEF_H = "";
+pub const __need_ptrdiff_t = "";
+pub const __need_size_t = "";
+pub const __need_wchar_t = "";
+pub const __need_NULL = "";
+pub const __need_STDDEF_H_misc = "";
+pub const _PTRDIFF_T = "";
+pub const _SIZE_T = "";
+pub const _WCHAR_T = "";
+pub const NULL = @import("std").zig.c_translation.cast(?*anyopaque, @as(c_int, 0));
+pub const __CLANG_MAX_ALIGN_T_DEFINED = "";
+pub const __CLANG_LIMITS_H = "";
+pub const _GCC_LIMITS_H_ = "";
+pub const _LIBC_LIMITS_H_ = @as(c_int, 1);
+pub const MB_LEN_MAX = @as(c_int, 16);
+pub const LLONG_MIN = -LLONG_MAX - @as(c_int, 1);
+pub const LLONG_MAX = __LONG_LONG_MAX__;
+pub const ULLONG_MAX = (LLONG_MAX * @as(c_ulonglong, 2)) + @as(c_int, 1);
+pub const _BITS_POSIX1_LIM_H = @as(c_int, 1);
+pub const _POSIX_AIO_LISTIO_MAX = @as(c_int, 2);
+pub const _POSIX_AIO_MAX = @as(c_int, 1);
+pub const _POSIX_ARG_MAX = @as(c_int, 4096);
+pub const _POSIX_CHILD_MAX = @as(c_int, 25);
+pub const _POSIX_DELAYTIMER_MAX = @as(c_int, 32);
+pub const _POSIX_HOST_NAME_MAX = @as(c_int, 255);
+pub const _POSIX_LINK_MAX = @as(c_int, 8);
+pub const _POSIX_LOGIN_NAME_MAX = @as(c_int, 9);
+pub const _POSIX_MAX_CANON = @as(c_int, 255);
+pub const _POSIX_MAX_INPUT = @as(c_int, 255);
+pub const _POSIX_MQ_OPEN_MAX = @as(c_int, 8);
+pub const _POSIX_MQ_PRIO_MAX = @as(c_int, 32);
+pub const _POSIX_NAME_MAX = @as(c_int, 14);
+pub const _POSIX_NGROUPS_MAX = @as(c_int, 8);
+pub const _POSIX_OPEN_MAX = @as(c_int, 20);
+pub const _POSIX_PATH_MAX = @as(c_int, 256);
+pub const _POSIX_PIPE_BUF = @as(c_int, 512);
+pub const _POSIX_RE_DUP_MAX = @as(c_int, 255);
+pub const _POSIX_RTSIG_MAX = @as(c_int, 8);
+pub const _POSIX_SEM_NSEMS_MAX = @as(c_int, 256);
+pub const _POSIX_SEM_VALUE_MAX = @as(c_int, 32767);
+pub const _POSIX_SIGQUEUE_MAX = @as(c_int, 32);
+pub const _POSIX_SSIZE_MAX = @as(c_int, 32767);
+pub const _POSIX_STREAM_MAX = @as(c_int, 8);
+pub const _POSIX_SYMLINK_MAX = @as(c_int, 255);
+pub const _POSIX_SYMLOOP_MAX = @as(c_int, 8);
+pub const _POSIX_TIMER_MAX = @as(c_int, 32);
+pub const _POSIX_TTY_NAME_MAX = @as(c_int, 9);
+pub const _POSIX_TZNAME_MAX = @as(c_int, 6);
+pub const _POSIX_CLOCKRES_MIN = @import("std").zig.c_translation.promoteIntLiteral(c_int, 20000000, .decimal);
+pub const __undef_NR_OPEN = "";
+pub const __undef_LINK_MAX = "";
+pub const __undef_OPEN_MAX = "";
+pub const __undef_ARG_MAX = "";
+pub const _LINUX_LIMITS_H = "";
+pub const NR_OPEN = @as(c_int, 1024);
+pub const NGROUPS_MAX = @import("std").zig.c_translation.promoteIntLiteral(c_int, 65536, .decimal);
+pub const ARG_MAX = @import("std").zig.c_translation.promoteIntLiteral(c_int, 131072, .decimal);
+pub const LINK_MAX = @as(c_int, 127);
+pub const MAX_CANON = @as(c_int, 255);
+pub const MAX_INPUT = @as(c_int, 255);
+pub const NAME_MAX = @as(c_int, 255);
+pub const PATH_MAX = @as(c_int, 4096);
+pub const PIPE_BUF = @as(c_int, 4096);
+pub const XATTR_NAME_MAX = @as(c_int, 255);
+pub const XATTR_SIZE_MAX = @import("std").zig.c_translation.promoteIntLiteral(c_int, 65536, .decimal);
+pub const XATTR_LIST_MAX = @import("std").zig.c_translation.promoteIntLiteral(c_int, 65536, .decimal);
+pub const RTSIG_MAX = @as(c_int, 32);
+pub const _POSIX_THREAD_KEYS_MAX = @as(c_int, 128);
+pub const PTHREAD_KEYS_MAX = @as(c_int, 1024);
+pub const _POSIX_THREAD_DESTRUCTOR_ITERATIONS = @as(c_int, 4);
+pub const PTHREAD_DESTRUCTOR_ITERATIONS = _POSIX_THREAD_DESTRUCTOR_ITERATIONS;
+pub const _POSIX_THREAD_THREADS_MAX = @as(c_int, 64);
+pub const AIO_PRIO_DELTA_MAX = @as(c_int, 20);
+pub const PTHREAD_STACK_MIN = @as(c_int, 16384);
+pub const DELAYTIMER_MAX = @import("std").zig.c_translation.promoteIntLiteral(c_int, 2147483647, .decimal);
+pub const TTY_NAME_MAX = @as(c_int, 32);
+pub const LOGIN_NAME_MAX = @as(c_int, 256);
+pub const HOST_NAME_MAX = @as(c_int, 64);
+pub const MQ_PRIO_MAX = @import("std").zig.c_translation.promoteIntLiteral(c_int, 32768, .decimal);
+pub const SEM_VALUE_MAX = @import("std").zig.c_translation.promoteIntLiteral(c_int, 2147483647, .decimal);
+pub const SSIZE_MAX = LONG_MAX;
+pub const _BITS_POSIX2_LIM_H = @as(c_int, 1);
+pub const _POSIX2_BC_BASE_MAX = @as(c_int, 99);
+pub const _POSIX2_BC_DIM_MAX = @as(c_int, 2048);
+pub const _POSIX2_BC_SCALE_MAX = @as(c_int, 99);
+pub const _POSIX2_BC_STRING_MAX = @as(c_int, 1000);
+pub const _POSIX2_COLL_WEIGHTS_MAX = @as(c_int, 2);
+pub const _POSIX2_EXPR_NEST_MAX = @as(c_int, 32);
+pub const _POSIX2_LINE_MAX = @as(c_int, 2048);
+pub const _POSIX2_RE_DUP_MAX = @as(c_int, 255);
+pub const _POSIX2_CHARCLASS_NAME_MAX = @as(c_int, 14);
+pub const BC_BASE_MAX = _POSIX2_BC_BASE_MAX;
+pub const BC_DIM_MAX = _POSIX2_BC_DIM_MAX;
+pub const BC_SCALE_MAX = _POSIX2_BC_SCALE_MAX;
+pub const BC_STRING_MAX = _POSIX2_BC_STRING_MAX;
+pub const COLL_WEIGHTS_MAX = @as(c_int, 255);
+pub const EXPR_NEST_MAX = _POSIX2_EXPR_NEST_MAX;
+pub const LINE_MAX = _POSIX2_LINE_MAX;
+pub const CHARCLASS_NAME_MAX = @as(c_int, 2048);
+pub const RE_DUP_MAX = @as(c_int, 0x7fff);
+pub const SCHAR_MAX = __SCHAR_MAX__;
+pub const SHRT_MAX = __SHRT_MAX__;
+pub const INT_MAX = __INT_MAX__;
+pub const LONG_MAX = __LONG_MAX__;
+pub const SCHAR_MIN = -__SCHAR_MAX__ - @as(c_int, 1);
+pub const SHRT_MIN = -__SHRT_MAX__ - @as(c_int, 1);
+pub const INT_MIN = -__INT_MAX__ - @as(c_int, 1);
+pub const LONG_MIN = -__LONG_MAX__ - @as(c_long, 1);
+pub const UCHAR_MAX = (__SCHAR_MAX__ * @as(c_int, 2)) + @as(c_int, 1);
+pub const USHRT_MAX = (__SHRT_MAX__ * @as(c_int, 2)) + @as(c_int, 1);
+pub const UINT_MAX = (__INT_MAX__ * @as(c_uint, 2)) + @as(c_uint, 1);
+pub const ULONG_MAX = (__LONG_MAX__ * @as(c_ulong, 2)) + @as(c_ulong, 1);
+pub const CHAR_BIT = __CHAR_BIT__;
+pub const CHAR_MIN = SCHAR_MIN;
+pub const CHAR_MAX = __SCHAR_MAX__;
+pub const _SYS_TIME_H = @as(c_int, 1);
+pub const __time_t_defined = @as(c_int, 1);
+pub const __timeval_defined = @as(c_int, 1);
+pub const __suseconds_t_defined = "";
+pub const _SYS_SELECT_H = @as(c_int, 1);
+pub inline fn __FD_ISSET(d: anytype, s: anytype) @TypeOf((__FDS_BITS(s)[__FD_ELT(d)] & __FD_MASK(d)) != @as(c_int, 0)) {
+ return (__FDS_BITS(s)[__FD_ELT(d)] & __FD_MASK(d)) != @as(c_int, 0);
+}
+pub const __sigset_t_defined = @as(c_int, 1);
+pub const ____sigset_t_defined = "";
+pub const _SIGSET_NWORDS = @as(c_int, 1024) / (@as(c_int, 8) * @import("std").zig.c_translation.sizeof(c_ulong));
+pub const _STRUCT_TIMESPEC = @as(c_int, 1);
+pub const _BITS_ENDIAN_H = @as(c_int, 1);
+pub const __LITTLE_ENDIAN = @as(c_int, 1234);
+pub const __BIG_ENDIAN = @as(c_int, 4321);
+pub const __PDP_ENDIAN = @as(c_int, 3412);
+pub const _BITS_ENDIANNESS_H = @as(c_int, 1);
+pub const __BYTE_ORDER = __LITTLE_ENDIAN;
+pub const __FLOAT_WORD_ORDER = __BYTE_ORDER;
+pub inline fn __LONG_LONG_PAIR(HI: anytype, LO: anytype) @TypeOf(HI) {
+ return blk: {
+ _ = LO;
+ break :blk HI;
+ };
+}
+pub const __NFDBITS = @as(c_int, 8) * @import("std").zig.c_translation.cast(c_int, @import("std").zig.c_translation.sizeof(__fd_mask));
+pub inline fn __FD_ELT(d: anytype) @TypeOf(d / __NFDBITS) {
+ return d / __NFDBITS;
+}
+pub inline fn __FD_MASK(d: anytype) __fd_mask {
+ return @import("std").zig.c_translation.cast(__fd_mask, @as(c_ulong, 1) << (d % __NFDBITS));
+}
+pub inline fn __FDS_BITS(set: anytype) @TypeOf(set.*.__fds_bits) {
+ return set.*.__fds_bits;
+}
+pub const FD_SETSIZE = __FD_SETSIZE;
+pub const NFDBITS = __NFDBITS;
+pub inline fn FD_SET(fd: anytype, fdsetp: anytype) @TypeOf(__FD_SET(fd, fdsetp)) {
+ return __FD_SET(fd, fdsetp);
+}
+pub inline fn FD_CLR(fd: anytype, fdsetp: anytype) @TypeOf(__FD_CLR(fd, fdsetp)) {
+ return __FD_CLR(fd, fdsetp);
+}
+pub inline fn FD_ISSET(fd: anytype, fdsetp: anytype) @TypeOf(__FD_ISSET(fd, fdsetp)) {
+ return __FD_ISSET(fd, fdsetp);
+}
+pub inline fn FD_ZERO(fdsetp: anytype) @TypeOf(__FD_ZERO(fdsetp)) {
+ return __FD_ZERO(fdsetp);
+}
+pub inline fn timerisset(tvp: anytype) @TypeOf((tvp.*.tv_sec != 0) or (tvp.*.tv_usec != 0)) {
+ return (tvp.*.tv_sec != 0) or (tvp.*.tv_usec != 0);
+}
+pub const _TIME_H = @as(c_int, 1);
+pub const _BITS_TIME_H = @as(c_int, 1);
+pub const CLOCKS_PER_SEC = @import("std").zig.c_translation.cast(__clock_t, @import("std").zig.c_translation.promoteIntLiteral(c_int, 1000000, .decimal));
+pub const CLOCK_REALTIME = @as(c_int, 0);
+pub const CLOCK_MONOTONIC = @as(c_int, 1);
+pub const CLOCK_PROCESS_CPUTIME_ID = @as(c_int, 2);
+pub const CLOCK_THREAD_CPUTIME_ID = @as(c_int, 3);
+pub const CLOCK_MONOTONIC_RAW = @as(c_int, 4);
+pub const CLOCK_REALTIME_COARSE = @as(c_int, 5);
+pub const CLOCK_MONOTONIC_COARSE = @as(c_int, 6);
+pub const CLOCK_BOOTTIME = @as(c_int, 7);
+pub const CLOCK_REALTIME_ALARM = @as(c_int, 8);
+pub const CLOCK_BOOTTIME_ALARM = @as(c_int, 9);
+pub const CLOCK_TAI = @as(c_int, 11);
+pub const TIMER_ABSTIME = @as(c_int, 1);
+pub const __clock_t_defined = @as(c_int, 1);
+pub const __struct_tm_defined = @as(c_int, 1);
+pub const __clockid_t_defined = @as(c_int, 1);
+pub const __timer_t_defined = @as(c_int, 1);
+pub const __itimerspec_defined = @as(c_int, 1);
+pub const __pid_t_defined = "";
+pub const _BITS_TYPES_LOCALE_T_H = @as(c_int, 1);
+pub const _BITS_TYPES___LOCALE_T_H = @as(c_int, 1);
+pub const TIME_UTC = @as(c_int, 1);
+pub inline fn __isleap(year: anytype) @TypeOf(((year % @as(c_int, 4)) == @as(c_int, 0)) and (((year % @as(c_int, 100)) != @as(c_int, 0)) or ((year % @as(c_int, 400)) == @as(c_int, 0)))) {
+ return ((year % @as(c_int, 4)) == @as(c_int, 0)) and (((year % @as(c_int, 100)) != @as(c_int, 0)) or ((year % @as(c_int, 400)) == @as(c_int, 0)));
+}
+pub const SCM_HAVE_STDC_HEADERS = @as(c_int, 1);
+pub const _STDLIB_H = @as(c_int, 1);
+pub const WNOHANG = @as(c_int, 1);
+pub const WUNTRACED = @as(c_int, 2);
+pub const WSTOPPED = @as(c_int, 2);
+pub const WEXITED = @as(c_int, 4);
+pub const WCONTINUED = @as(c_int, 8);
+pub const WNOWAIT = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x01000000, .hexadecimal);
+pub const __WNOTHREAD = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x20000000, .hexadecimal);
+pub const __WALL = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x40000000, .hexadecimal);
+pub const __WCLONE = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x80000000, .hexadecimal);
+pub inline fn __WEXITSTATUS(status: anytype) @TypeOf((status & @import("std").zig.c_translation.promoteIntLiteral(c_int, 0xff00, .hexadecimal)) >> @as(c_int, 8)) {
+ return (status & @import("std").zig.c_translation.promoteIntLiteral(c_int, 0xff00, .hexadecimal)) >> @as(c_int, 8);
+}
+pub inline fn __WTERMSIG(status: anytype) @TypeOf(status & @as(c_int, 0x7f)) {
+ return status & @as(c_int, 0x7f);
+}
+pub inline fn __WSTOPSIG(status: anytype) @TypeOf(__WEXITSTATUS(status)) {
+ return __WEXITSTATUS(status);
+}
+pub inline fn __WIFEXITED(status: anytype) @TypeOf(__WTERMSIG(status) == @as(c_int, 0)) {
+ return __WTERMSIG(status) == @as(c_int, 0);
+}
+pub inline fn __WIFSIGNALED(status: anytype) @TypeOf((@import("std").zig.c_translation.cast(i8, (status & @as(c_int, 0x7f)) + @as(c_int, 1)) >> @as(c_int, 1)) > @as(c_int, 0)) {
+ return (@import("std").zig.c_translation.cast(i8, (status & @as(c_int, 0x7f)) + @as(c_int, 1)) >> @as(c_int, 1)) > @as(c_int, 0);
+}
+pub inline fn __WIFSTOPPED(status: anytype) @TypeOf((status & @as(c_int, 0xff)) == @as(c_int, 0x7f)) {
+ return (status & @as(c_int, 0xff)) == @as(c_int, 0x7f);
+}
+pub inline fn __WIFCONTINUED(status: anytype) @TypeOf(status == __W_CONTINUED) {
+ return status == __W_CONTINUED;
+}
+pub inline fn __WCOREDUMP(status: anytype) @TypeOf(status & __WCOREFLAG) {
+ return status & __WCOREFLAG;
+}
+pub inline fn __W_EXITCODE(ret: anytype, sig: anytype) @TypeOf((ret << @as(c_int, 8)) | sig) {
+ return (ret << @as(c_int, 8)) | sig;
+}
+pub inline fn __W_STOPCODE(sig: anytype) @TypeOf((sig << @as(c_int, 8)) | @as(c_int, 0x7f)) {
+ return (sig << @as(c_int, 8)) | @as(c_int, 0x7f);
+}
+pub const __W_CONTINUED = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0xffff, .hexadecimal);
+pub const __WCOREFLAG = @as(c_int, 0x80);
+pub inline fn WEXITSTATUS(status: anytype) @TypeOf(__WEXITSTATUS(status)) {
+ return __WEXITSTATUS(status);
+}
+pub inline fn WTERMSIG(status: anytype) @TypeOf(__WTERMSIG(status)) {
+ return __WTERMSIG(status);
+}
+pub inline fn WSTOPSIG(status: anytype) @TypeOf(__WSTOPSIG(status)) {
+ return __WSTOPSIG(status);
+}
+pub inline fn WIFEXITED(status: anytype) @TypeOf(__WIFEXITED(status)) {
+ return __WIFEXITED(status);
+}
+pub inline fn WIFSIGNALED(status: anytype) @TypeOf(__WIFSIGNALED(status)) {
+ return __WIFSIGNALED(status);
+}
+pub inline fn WIFSTOPPED(status: anytype) @TypeOf(__WIFSTOPPED(status)) {
+ return __WIFSTOPPED(status);
+}
+pub inline fn WIFCONTINUED(status: anytype) @TypeOf(__WIFCONTINUED(status)) {
+ return __WIFCONTINUED(status);
+}
+pub const _BITS_FLOATN_H = "";
+pub const __HAVE_FLOAT128 = @as(c_int, 0);
+pub const __HAVE_DISTINCT_FLOAT128 = @as(c_int, 0);
+pub const __HAVE_FLOAT64X = @as(c_int, 1);
+pub const __HAVE_FLOAT64X_LONG_DOUBLE = @as(c_int, 1);
+pub const _BITS_FLOATN_COMMON_H = "";
+pub const __HAVE_FLOAT16 = @as(c_int, 0);
+pub const __HAVE_FLOAT32 = @as(c_int, 1);
+pub const __HAVE_FLOAT64 = @as(c_int, 1);
+pub const __HAVE_FLOAT32X = @as(c_int, 1);
+pub const __HAVE_FLOAT128X = @as(c_int, 0);
+pub const __HAVE_DISTINCT_FLOAT16 = __HAVE_FLOAT16;
+pub const __HAVE_DISTINCT_FLOAT32 = @as(c_int, 0);
+pub const __HAVE_DISTINCT_FLOAT64 = @as(c_int, 0);
+pub const __HAVE_DISTINCT_FLOAT32X = @as(c_int, 0);
+pub const __HAVE_DISTINCT_FLOAT64X = @as(c_int, 0);
+pub const __HAVE_DISTINCT_FLOAT128X = __HAVE_FLOAT128X;
+pub const __HAVE_FLOAT128_UNLIKE_LDBL = (__HAVE_DISTINCT_FLOAT128 != 0) and (__LDBL_MANT_DIG__ != @as(c_int, 113));
+pub const __HAVE_FLOATN_NOT_TYPEDEF = @as(c_int, 0);
+pub inline fn __f64(x: anytype) @TypeOf(x) {
+ return x;
+}
+pub inline fn __f32x(x: anytype) @TypeOf(x) {
+ return x;
+}
+pub inline fn __builtin_huge_valf32() @TypeOf(__builtin_huge_valf()) {
+ return __builtin_huge_valf();
+}
+pub inline fn __builtin_inff32() @TypeOf(__builtin_inff()) {
+ return __builtin_inff();
+}
+pub inline fn __builtin_nanf32(x: anytype) @TypeOf(__builtin_nanf(x)) {
+ return __builtin_nanf(x);
+}
+pub const __ldiv_t_defined = @as(c_int, 1);
+pub const __lldiv_t_defined = @as(c_int, 1);
+pub const RAND_MAX = @import("std").zig.c_translation.promoteIntLiteral(c_int, 2147483647, .decimal);
+pub const EXIT_FAILURE = @as(c_int, 1);
+pub const EXIT_SUCCESS = @as(c_int, 0);
+pub const MB_CUR_MAX = __ctype_get_mb_cur_max();
+pub const _SYS_TYPES_H = @as(c_int, 1);
+pub const __u_char_defined = "";
+pub const __ino_t_defined = "";
+pub const __dev_t_defined = "";
+pub const __gid_t_defined = "";
+pub const __mode_t_defined = "";
+pub const __nlink_t_defined = "";
+pub const __uid_t_defined = "";
+pub const __off_t_defined = "";
+pub const __id_t_defined = "";
+pub const __ssize_t_defined = "";
+pub const __daddr_t_defined = "";
+pub const __key_t_defined = "";
+pub const __BIT_TYPES_DEFINED__ = @as(c_int, 1);
+pub const _ENDIAN_H = @as(c_int, 1);
+pub const LITTLE_ENDIAN = __LITTLE_ENDIAN;
+pub const BIG_ENDIAN = __BIG_ENDIAN;
+pub const PDP_ENDIAN = __PDP_ENDIAN;
+pub const BYTE_ORDER = __BYTE_ORDER;
+pub const _BITS_BYTESWAP_H = @as(c_int, 1);
+pub inline fn __bswap_constant_16(x: anytype) __uint16_t {
+ return @import("std").zig.c_translation.cast(__uint16_t, ((x >> @as(c_int, 8)) & @as(c_int, 0xff)) | ((x & @as(c_int, 0xff)) << @as(c_int, 8)));
+}
+pub inline fn __bswap_constant_32(x: anytype) @TypeOf(((((x & @import("std").zig.c_translation.promoteIntLiteral(c_uint, 0xff000000, .hexadecimal)) >> @as(c_int, 24)) | ((x & @import("std").zig.c_translation.promoteIntLiteral(c_uint, 0x00ff0000, .hexadecimal)) >> @as(c_int, 8))) | ((x & @as(c_uint, 0x0000ff00)) << @as(c_int, 8))) | ((x & @as(c_uint, 0x000000ff)) << @as(c_int, 24))) {
+ return ((((x & @import("std").zig.c_translation.promoteIntLiteral(c_uint, 0xff000000, .hexadecimal)) >> @as(c_int, 24)) | ((x & @import("std").zig.c_translation.promoteIntLiteral(c_uint, 0x00ff0000, .hexadecimal)) >> @as(c_int, 8))) | ((x & @as(c_uint, 0x0000ff00)) << @as(c_int, 8))) | ((x & @as(c_uint, 0x000000ff)) << @as(c_int, 24));
+}
+pub inline fn __bswap_constant_64(x: anytype) @TypeOf(((((((((x & @as(c_ulonglong, 0xff00000000000000)) >> @as(c_int, 56)) | ((x & @as(c_ulonglong, 0x00ff000000000000)) >> @as(c_int, 40))) | ((x & @as(c_ulonglong, 0x0000ff0000000000)) >> @as(c_int, 24))) | ((x & @as(c_ulonglong, 0x000000ff00000000)) >> @as(c_int, 8))) | ((x & @as(c_ulonglong, 0x00000000ff000000)) << @as(c_int, 8))) | ((x & @as(c_ulonglong, 0x0000000000ff0000)) << @as(c_int, 24))) | ((x & @as(c_ulonglong, 0x000000000000ff00)) << @as(c_int, 40))) | ((x & @as(c_ulonglong, 0x00000000000000ff)) << @as(c_int, 56))) {
+ return ((((((((x & @as(c_ulonglong, 0xff00000000000000)) >> @as(c_int, 56)) | ((x & @as(c_ulonglong, 0x00ff000000000000)) >> @as(c_int, 40))) | ((x & @as(c_ulonglong, 0x0000ff0000000000)) >> @as(c_int, 24))) | ((x & @as(c_ulonglong, 0x000000ff00000000)) >> @as(c_int, 8))) | ((x & @as(c_ulonglong, 0x00000000ff000000)) << @as(c_int, 8))) | ((x & @as(c_ulonglong, 0x0000000000ff0000)) << @as(c_int, 24))) | ((x & @as(c_ulonglong, 0x000000000000ff00)) << @as(c_int, 40))) | ((x & @as(c_ulonglong, 0x00000000000000ff)) << @as(c_int, 56));
+}
+pub const _BITS_UINTN_IDENTITY_H = @as(c_int, 1);
+pub inline fn htobe16(x: anytype) @TypeOf(__bswap_16(x)) {
+ return __bswap_16(x);
+}
+pub inline fn htole16(x: anytype) @TypeOf(__uint16_identity(x)) {
+ return __uint16_identity(x);
+}
+pub inline fn be16toh(x: anytype) @TypeOf(__bswap_16(x)) {
+ return __bswap_16(x);
+}
+pub inline fn le16toh(x: anytype) @TypeOf(__uint16_identity(x)) {
+ return __uint16_identity(x);
+}
+pub inline fn htobe32(x: anytype) @TypeOf(__bswap_32(x)) {
+ return __bswap_32(x);
+}
+pub inline fn htole32(x: anytype) @TypeOf(__uint32_identity(x)) {
+ return __uint32_identity(x);
+}
+pub inline fn be32toh(x: anytype) @TypeOf(__bswap_32(x)) {
+ return __bswap_32(x);
+}
+pub inline fn le32toh(x: anytype) @TypeOf(__uint32_identity(x)) {
+ return __uint32_identity(x);
+}
+pub inline fn htobe64(x: anytype) @TypeOf(__bswap_64(x)) {
+ return __bswap_64(x);
+}
+pub inline fn htole64(x: anytype) @TypeOf(__uint64_identity(x)) {
+ return __uint64_identity(x);
+}
+pub inline fn be64toh(x: anytype) @TypeOf(__bswap_64(x)) {
+ return __bswap_64(x);
+}
+pub inline fn le64toh(x: anytype) @TypeOf(__uint64_identity(x)) {
+ return __uint64_identity(x);
+}
+pub const __blksize_t_defined = "";
+pub const __blkcnt_t_defined = "";
+pub const __fsblkcnt_t_defined = "";
+pub const __fsfilcnt_t_defined = "";
+pub const _BITS_PTHREADTYPES_COMMON_H = @as(c_int, 1);
+pub const _THREAD_SHARED_TYPES_H = @as(c_int, 1);
+pub const _BITS_PTHREADTYPES_ARCH_H = @as(c_int, 1);
+pub const __SIZEOF_PTHREAD_MUTEX_T = @as(c_int, 40);
+pub const __SIZEOF_PTHREAD_ATTR_T = @as(c_int, 56);
+pub const __SIZEOF_PTHREAD_RWLOCK_T = @as(c_int, 56);
+pub const __SIZEOF_PTHREAD_BARRIER_T = @as(c_int, 32);
+pub const __SIZEOF_PTHREAD_MUTEXATTR_T = @as(c_int, 4);
+pub const __SIZEOF_PTHREAD_COND_T = @as(c_int, 48);
+pub const __SIZEOF_PTHREAD_CONDATTR_T = @as(c_int, 4);
+pub const __SIZEOF_PTHREAD_RWLOCKATTR_T = @as(c_int, 8);
+pub const __SIZEOF_PTHREAD_BARRIERATTR_T = @as(c_int, 4);
+pub const __LOCK_ALIGNMENT = "";
+pub const __ONCE_ALIGNMENT = "";
+pub const _THREAD_MUTEX_INTERNAL_H = @as(c_int, 1);
+pub const __PTHREAD_MUTEX_HAVE_PREV = @as(c_int, 1);
+pub const _RWLOCK_INTERNAL_H = "";
+pub inline fn __PTHREAD_RWLOCK_INITIALIZER(__flags: anytype) @TypeOf(__flags) {
+ return blk: {
+ _ = @as(c_int, 0);
+ _ = @as(c_int, 0);
+ _ = @as(c_int, 0);
+ _ = @as(c_int, 0);
+ _ = @as(c_int, 0);
+ _ = @as(c_int, 0);
+ _ = @as(c_int, 0);
+ _ = @as(c_int, 0);
+ _ = __PTHREAD_RWLOCK_ELISION_EXTRA;
+ _ = @as(c_int, 0);
+ break :blk __flags;
+ };
+}
+pub const __have_pthread_attr_t = @as(c_int, 1);
+pub const _ALLOCA_H = @as(c_int, 1);
+pub const __COMPAR_FN_T = "";
+pub const SCM_HAVE_SYS_SELECT_H = @as(c_int, 1);
+pub const SCM_HAVE_WINSOCK2_H = @as(c_int, 0);
+pub const SCM_ENABLE_DEPRECATED = @as(c_int, 1);
+pub const SCM_STACK_GROWS_UP = @as(c_int, 0);
+pub const SCM_SIZEOF_CHAR = @as(c_int, 1);
+pub const SCM_SIZEOF_UNSIGNED_CHAR = @as(c_int, 1);
+pub const SCM_SIZEOF_SHORT = @as(c_int, 2);
+pub const SCM_SIZEOF_UNSIGNED_SHORT = @as(c_int, 2);
+pub const SCM_SIZEOF_LONG = @as(c_int, 8);
+pub const SCM_SIZEOF_UNSIGNED_LONG = @as(c_int, 8);
+pub const SCM_SIZEOF_INT = @as(c_int, 4);
+pub const SCM_SIZEOF_UNSIGNED_INT = @as(c_int, 4);
+pub const SCM_SIZEOF_SIZE_T = @as(c_int, 8);
+pub const SCM_SIZEOF_LONG_LONG = @as(c_int, 8);
+pub const SCM_SIZEOF_UNSIGNED_LONG_LONG = @as(c_int, 8);
+pub const SCM_SIZEOF_INTMAX = @as(c_int, 8);
+pub const SCM_SIZEOF_SCM_T_PTRDIFF = @as(c_int, 8);
+pub const SCM_SIZEOF_INTPTR_T = @as(c_int, 8);
+pub const SCM_SIZEOF_UINTPTR_T = @as(c_int, 8);
+pub const SCM_USE_PTHREAD_THREADS = @as(c_int, 1);
+pub const SCM_USE_NULL_THREADS = @as(c_int, 0);
+pub const SCM_NEED_BRACES_ON_PTHREAD_ONCE_INIT = @as(c_int, 0);
+pub const SCM_NEED_BRACES_ON_PTHREAD_MUTEX_INITIALIZER = @as(c_int, 0);
+pub const SCM_HAVE_PTHREAD_SIGMASK = @as(c_int, 1);
+pub const SCM_HAVE_GC_PTHREAD_CANCEL = @as(c_int, 1);
+pub const SCM_HAVE_GC_PTHREAD_EXIT = @as(c_int, 1);
+pub const SCM_HAVE_GC_PTHREAD_SIGMASK = @as(c_int, 1);
+pub const SCM_HAVE_STRUCT_DIRENT64 = @as(c_int, 1);
+pub const SCM_HAVE_READDIR64_R = @as(c_int, 0);
+pub const SCM_T_OFF_MAX = INT64_MAX;
+pub const SCM_T_OFF_MIN = INT64_MIN;
+pub const SCM_HAVE_THREAD_STORAGE_CLASS = "";
+pub const SCM_ICONVEH_ERROR = @as(c_int, 0);
+pub const SCM_ICONVEH_QUESTION_MARK = @as(c_int, 1);
+pub const SCM_ICONVEH_ESCAPE_SEQUENCE = @as(c_int, 2);
+pub const SCM_HAVE_AUXILIARY_STACK = @as(c_int, 0);
+pub const SCM_ENABLE_MINI_GMP = @as(c_int, 1);
+pub const SCM_DEBUG = @as(c_int, 0);
+pub const SCM_DEBUG_PAIR_ACCESSES = SCM_DEBUG;
+pub const SCM_DEBUG_REST_ARGUMENT = SCM_DEBUG;
+pub const SCM_DEBUG_TYPING_STRICTNESS = @as(c_int, 1);
+pub const SCM_T_SIGNED_BITS_MAX = INTPTR_MAX;
+pub const SCM_T_SIGNED_BITS_MIN = INTPTR_MIN;
+pub const SCM_T_BITS_MAX = UINTPTR_MAX;
+pub inline fn SCM_PACK(x: anytype) SCM {
+ return @import("std").zig.c_translation.cast(SCM, x);
+}
+pub inline fn SCM_UNPACK_POINTER(x: anytype) [*c]scm_t_bits {
+ return @import("std").zig.c_translation.cast([*c]scm_t_bits, SCM_UNPACK(x));
+}
+pub inline fn SCM_PACK_POINTER(x: anytype) @TypeOf(SCM_PACK(@import("std").zig.c_translation.cast(scm_t_bits, x))) {
+ return SCM_PACK(@import("std").zig.c_translation.cast(scm_t_bits, x));
+}
+pub inline fn scm_is_eq(x: anytype, y: anytype) @TypeOf(SCM_UNPACK(x) == SCM_UNPACK(y)) {
+ return SCM_UNPACK(x) == SCM_UNPACK(y);
+}
+pub inline fn SCM_IMP(x: anytype) @TypeOf(@as(c_int, 6) & SCM_UNPACK(x)) {
+ return @as(c_int, 6) & SCM_UNPACK(x);
+}
+pub inline fn SCM_NIMP(x: anytype) @TypeOf(!(SCM_IMP(x) != 0)) {
+ return !(SCM_IMP(x) != 0);
+}
+pub inline fn SCM_HEAP_OBJECT_P(x: anytype) @TypeOf(SCM_NIMP(x)) {
+ return SCM_NIMP(x);
+}
+pub inline fn SCM_I_CONSP(x: anytype) @TypeOf(!(SCM_IMP(x) != 0) and ((@as(c_int, 1) & SCM_CELL_TYPE(x)) == @as(c_int, 0))) {
+ return !(SCM_IMP(x) != 0) and ((@as(c_int, 1) & SCM_CELL_TYPE(x)) == @as(c_int, 0));
+}
+pub const scm_tc2_int = @as(c_int, 2);
+pub inline fn SCM_ITAG3(x: anytype) @TypeOf(@as(c_int, 7) & SCM_UNPACK(x)) {
+ return @as(c_int, 7) & SCM_UNPACK(x);
+}
+pub inline fn SCM_TYP3(x: anytype) @TypeOf(@as(c_int, 7) & SCM_CELL_TYPE(x)) {
+ return @as(c_int, 7) & SCM_CELL_TYPE(x);
+}
+pub const scm_tc3_cons = @as(c_int, 0);
+pub const scm_tc3_struct = @as(c_int, 1);
+pub const scm_tc3_int_1 = scm_tc2_int + @as(c_int, 0);
+pub const scm_tc3_unused = @as(c_int, 3);
+pub const scm_tc3_imm24 = @as(c_int, 4);
+pub const scm_tc3_tc7_1 = @as(c_int, 5);
+pub const scm_tc3_int_2 = scm_tc2_int + @as(c_int, 4);
+pub const scm_tc3_tc7_2 = @as(c_int, 7);
+pub inline fn SCM_ITAG7(x: anytype) @TypeOf(@as(c_int, 0x7f) & SCM_UNPACK(x)) {
+ return @as(c_int, 0x7f) & SCM_UNPACK(x);
+}
+pub inline fn SCM_TYP7(x: anytype) @TypeOf(@as(c_int, 0x7f) & SCM_CELL_TYPE(x)) {
+ return @as(c_int, 0x7f) & SCM_CELL_TYPE(x);
+}
+pub inline fn SCM_HAS_HEAP_TYPE(x: anytype, @"type": anytype, tag: anytype) @TypeOf((SCM_NIMP(x) != 0) and (@"type"(x) == tag)) {
+ return (SCM_NIMP(x) != 0) and (@"type"(x) == tag);
+}
+pub inline fn SCM_HAS_TYP7(x: anytype, tag: anytype) @TypeOf(SCM_HAS_HEAP_TYPE(x, SCM_TYP7, tag)) {
+ return SCM_HAS_HEAP_TYPE(x, SCM_TYP7, tag);
+}
+pub const scm_tc7_symbol = @as(c_int, 0x05);
+pub const scm_tc7_variable = @as(c_int, 0x07);
+pub const scm_tc7_vector = @as(c_int, 0x0d);
+pub const scm_tc7_wvect = @as(c_int, 0x0f);
+pub const scm_tc7_string = @as(c_int, 0x15);
+pub const scm_tc7_number = @as(c_int, 0x17);
+pub const scm_tc7_hashtable = @as(c_int, 0x1d);
+pub const scm_tc7_pointer = @as(c_int, 0x1f);
+pub const scm_tc7_fluid = @as(c_int, 0x25);
+pub const scm_tc7_stringbuf = @as(c_int, 0x27);
+pub const scm_tc7_dynamic_state = @as(c_int, 0x2d);
+pub const scm_tc7_frame = @as(c_int, 0x2f);
+pub const scm_tc7_keyword = @as(c_int, 0x35);
+pub const scm_tc7_atomic_box = @as(c_int, 0x37);
+pub const scm_tc7_syntax = @as(c_int, 0x3d);
+pub const scm_tc7_values = @as(c_int, 0x3f);
+pub const scm_tc7_program = @as(c_int, 0x45);
+pub const scm_tc7_vm_cont = @as(c_int, 0x47);
+pub const scm_tc7_bytevector = @as(c_int, 0x4d);
+pub const scm_tc7_unused_4f = @as(c_int, 0x4f);
+pub const scm_tc7_weak_set = @as(c_int, 0x55);
+pub const scm_tc7_weak_table = @as(c_int, 0x57);
+pub const scm_tc7_array = @as(c_int, 0x5d);
+pub const scm_tc7_bitvector = @as(c_int, 0x5f);
+pub const scm_tc7_unused_65 = @as(c_int, 0x65);
+pub const scm_tc7_unused_67 = @as(c_int, 0x67);
+pub const scm_tc7_unused_6d = @as(c_int, 0x6d);
+pub const scm_tc7_unused_6f = @as(c_int, 0x6f);
+pub const scm_tc7_unused_75 = @as(c_int, 0x75);
+pub const scm_tc7_smob = @as(c_int, 0x77);
+pub const scm_tc7_port = @as(c_int, 0x7d);
+pub const scm_tc7_unused_7f = @as(c_int, 0x7f);
+pub inline fn SCM_TYP16(x: anytype) @TypeOf(@import("std").zig.c_translation.promoteIntLiteral(c_int, 0xffff, .hexadecimal) & SCM_CELL_TYPE(x)) {
+ return @import("std").zig.c_translation.promoteIntLiteral(c_int, 0xffff, .hexadecimal) & SCM_CELL_TYPE(x);
+}
+pub inline fn SCM_HAS_TYP16(x: anytype, tag: anytype) @TypeOf(SCM_HAS_HEAP_TYPE(x, SCM_TYP16, tag)) {
+ return SCM_HAS_HEAP_TYPE(x, SCM_TYP16, tag);
+}
+pub inline fn SCM_TYP16_PREDICATE(tag: anytype, x: anytype) @TypeOf(SCM_HAS_TYP16(x, tag)) {
+ return SCM_HAS_TYP16(x, tag);
+}
+pub inline fn SCM_ITAG8(X: anytype) @TypeOf(SCM_UNPACK(X) & @as(c_int, 0xff)) {
+ return SCM_UNPACK(X) & @as(c_int, 0xff);
+}
+pub inline fn SCM_MAKE_ITAG8_BITS(X: anytype, TAG: anytype) @TypeOf((X << @as(c_int, 8)) + TAG) {
+ return (X << @as(c_int, 8)) + TAG;
+}
+pub inline fn SCM_MAKE_ITAG8(X: anytype, TAG: anytype) @TypeOf(SCM_PACK(SCM_MAKE_ITAG8_BITS(X, TAG))) {
+ return SCM_PACK(SCM_MAKE_ITAG8_BITS(X, TAG));
+}
+pub inline fn SCM_ITAG8_DATA(X: anytype) @TypeOf(SCM_UNPACK(X) >> @as(c_int, 8)) {
+ return SCM_UNPACK(X) >> @as(c_int, 8);
+}
+pub inline fn SCM_IFLAGP(n: anytype) @TypeOf(SCM_ITAG8(n) == scm_tc8_flag) {
+ return SCM_ITAG8(n) == scm_tc8_flag;
+}
+pub inline fn SCM_MAKIFLAG_BITS(n: anytype) @TypeOf(SCM_MAKE_ITAG8_BITS(n, scm_tc8_flag)) {
+ return SCM_MAKE_ITAG8_BITS(n, scm_tc8_flag);
+}
+pub inline fn SCM_IFLAGNUM(n: anytype) @TypeOf(SCM_ITAG8_DATA(n)) {
+ return SCM_ITAG8_DATA(n);
+}
+pub const SCM_BOOL_F_BITS = SCM_MAKIFLAG_BITS(@as(c_int, 0));
+pub const SCM_ELISP_NIL_BITS = SCM_MAKIFLAG_BITS(@as(c_int, 1));
+pub const SCM_BOOL_F = SCM_PACK(SCM_BOOL_F_BITS);
+pub const SCM_ELISP_NIL = SCM_PACK(SCM_ELISP_NIL_BITS);
+pub const SCM_EOL_BITS = SCM_MAKIFLAG_BITS(@as(c_int, 3));
+pub const SCM_BOOL_T_BITS = SCM_MAKIFLAG_BITS(@as(c_int, 4));
+pub const SCM_EOL = SCM_PACK(SCM_EOL_BITS);
+pub const SCM_BOOL_T = SCM_PACK(SCM_BOOL_T_BITS);
+pub const SCM_UNSPECIFIED_BITS = SCM_MAKIFLAG_BITS(@as(c_int, 8));
+pub const SCM_UNDEFINED_BITS = SCM_MAKIFLAG_BITS(@as(c_int, 9));
+pub const SCM_EOF_VAL_BITS = SCM_MAKIFLAG_BITS(@as(c_int, 10));
+pub const SCM_UNSPECIFIED = SCM_PACK(SCM_UNSPECIFIED_BITS);
+pub const SCM_UNDEFINED = SCM_PACK(SCM_UNDEFINED_BITS);
+pub const SCM_EOF_VAL = SCM_PACK(SCM_EOF_VAL_BITS);
+pub inline fn SCM_UNBNDP(x: anytype) @TypeOf(scm_is_eq(x, SCM_UNDEFINED)) {
+ return scm_is_eq(x, SCM_UNDEFINED);
+}
+pub inline fn SCM_MATCHES_BITS_IN_COMMON(x: anytype, a: anytype, b: anytype) @TypeOf((SCM_UNPACK(x) & ~(SCM_UNPACK(a) ^ SCM_UNPACK(b))) == (SCM_UNPACK(a) & SCM_UNPACK(b))) {
+ return (SCM_UNPACK(x) & ~(SCM_UNPACK(a) ^ SCM_UNPACK(b))) == (SCM_UNPACK(a) & SCM_UNPACK(b));
+}
+pub const SCM_EXPECT = __builtin_expect;
+pub inline fn SCM_LIKELY(_expr: anytype) @TypeOf(SCM_EXPECT(_expr, @as(c_int, 1))) {
+ return SCM_EXPECT(_expr, @as(c_int, 1));
+}
+pub inline fn SCM_UNLIKELY(_expr: anytype) @TypeOf(SCM_EXPECT(_expr, @as(c_int, 0))) {
+ return SCM_EXPECT(_expr, @as(c_int, 0));
+}
+pub const SCM_CHAR_BIT = CHAR_BIT;
+pub const SCM_LONG_BIT = SCM_SIZEOF_LONG * @as(c_int, 8);
+pub inline fn SCM_STACK_PTR(ptr: anytype) [*c]SCM_STACKITEM {
+ return @import("std").zig.c_translation.cast([*c]SCM_STACKITEM, @import("std").zig.c_translation.cast(?*anyopaque, ptr));
+}
+pub const SCM_ALIST_H = "";
+pub const SCM_ERROR_H = "";
+pub const SCM_ARGn = @as(c_int, 0);
+pub const SCM_ARG1 = @as(c_int, 1);
+pub const SCM_ARG2 = @as(c_int, 2);
+pub const SCM_ARG3 = @as(c_int, 3);
+pub const SCM_ARG4 = @as(c_int, 4);
+pub const SCM_ARG5 = @as(c_int, 5);
+pub const SCM_ARG6 = @as(c_int, 6);
+pub const SCM_ARG7 = @as(c_int, 7);
+pub const SCM_PAIRS_H = "";
+pub const SCM_GC_H = "";
+pub const SCM_INLINE_H = "";
+pub const SCM_C_INLINE_KEYWORD = SCM_C_INLINE;
+pub const SCM_CAN_INLINE = @as(c_int, 1);
+pub const SCM_INLINE = SCM_C_EXTERN_INLINE;
+pub const SCM_INLINE_IMPLEMENTATION = SCM_INLINE;
+pub const SCM_CHOOKS_H = "";
+pub inline fn PTR2SCM(x: anytype) @TypeOf(SCM_PACK_POINTER(x)) {
+ return SCM_PACK_POINTER(x);
+}
+pub inline fn SCM2PTR(x: anytype) [*c]scm_t_cell {
+ return @import("std").zig.c_translation.cast([*c]scm_t_cell, SCM_UNPACK_POINTER(x));
+}
+pub inline fn SCM_GC_CELL_OBJECT(x: anytype, n: anytype) @TypeOf(@import("std").zig.c_translation.cast([*c]SCM, SCM2PTR(x))[n]) {
+ return @import("std").zig.c_translation.cast([*c]SCM, SCM2PTR(x))[n];
+}
+pub inline fn SCM_GC_CELL_WORD(x: anytype, n: anytype) @TypeOf(SCM_UNPACK(SCM_GC_CELL_OBJECT(x, n))) {
+ return SCM_UNPACK(SCM_GC_CELL_OBJECT(x, n));
+}
+pub inline fn SCM_GC_SET_CELL_WORD(x: anytype, n: anytype, v: anytype) @TypeOf(SCM_GC_SET_CELL_OBJECT(x, n, SCM_PACK(v))) {
+ return SCM_GC_SET_CELL_OBJECT(x, n, SCM_PACK(v));
+}
+pub inline fn SCM_GC_CELL_TYPE(x: anytype) @TypeOf(SCM_GC_CELL_OBJECT(x, @as(c_int, 0))) {
+ return SCM_GC_CELL_OBJECT(x, @as(c_int, 0));
+}
+pub inline fn SCM_CELL_WORD(x: anytype, n: anytype) @TypeOf(SCM_GC_CELL_WORD(x, n)) {
+ return SCM_GC_CELL_WORD(x, n);
+}
+pub inline fn SCM_CELL_WORD_0(x: anytype) @TypeOf(SCM_CELL_WORD(x, @as(c_int, 0))) {
+ return SCM_CELL_WORD(x, @as(c_int, 0));
+}
+pub inline fn SCM_CELL_WORD_1(x: anytype) @TypeOf(SCM_CELL_WORD(x, @as(c_int, 1))) {
+ return SCM_CELL_WORD(x, @as(c_int, 1));
+}
+pub inline fn SCM_CELL_WORD_2(x: anytype) @TypeOf(SCM_CELL_WORD(x, @as(c_int, 2))) {
+ return SCM_CELL_WORD(x, @as(c_int, 2));
+}
+pub inline fn SCM_CELL_WORD_3(x: anytype) @TypeOf(SCM_CELL_WORD(x, @as(c_int, 3))) {
+ return SCM_CELL_WORD(x, @as(c_int, 3));
+}
+pub inline fn SCM_CELL_OBJECT(x: anytype, n: anytype) @TypeOf(SCM_GC_CELL_OBJECT(x, n)) {
+ return SCM_GC_CELL_OBJECT(x, n);
+}
+pub inline fn SCM_CELL_OBJECT_0(x: anytype) @TypeOf(SCM_CELL_OBJECT(x, @as(c_int, 0))) {
+ return SCM_CELL_OBJECT(x, @as(c_int, 0));
+}
+pub inline fn SCM_CELL_OBJECT_1(x: anytype) @TypeOf(SCM_CELL_OBJECT(x, @as(c_int, 1))) {
+ return SCM_CELL_OBJECT(x, @as(c_int, 1));
+}
+pub inline fn SCM_CELL_OBJECT_2(x: anytype) @TypeOf(SCM_CELL_OBJECT(x, @as(c_int, 2))) {
+ return SCM_CELL_OBJECT(x, @as(c_int, 2));
+}
+pub inline fn SCM_CELL_OBJECT_3(x: anytype) @TypeOf(SCM_CELL_OBJECT(x, @as(c_int, 3))) {
+ return SCM_CELL_OBJECT(x, @as(c_int, 3));
+}
+pub inline fn SCM_SET_CELL_WORD(x: anytype, n: anytype, v: anytype) @TypeOf(SCM_GC_SET_CELL_WORD(x, n, v)) {
+ return SCM_GC_SET_CELL_WORD(x, n, v);
+}
+pub inline fn SCM_SET_CELL_WORD_0(x: anytype, v: anytype) @TypeOf(SCM_SET_CELL_WORD(x, @as(c_int, 0), v)) {
+ return SCM_SET_CELL_WORD(x, @as(c_int, 0), v);
+}
+pub inline fn SCM_SET_CELL_WORD_1(x: anytype, v: anytype) @TypeOf(SCM_SET_CELL_WORD(x, @as(c_int, 1), v)) {
+ return SCM_SET_CELL_WORD(x, @as(c_int, 1), v);
+}
+pub inline fn SCM_SET_CELL_WORD_2(x: anytype, v: anytype) @TypeOf(SCM_SET_CELL_WORD(x, @as(c_int, 2), v)) {
+ return SCM_SET_CELL_WORD(x, @as(c_int, 2), v);
+}
+pub inline fn SCM_SET_CELL_WORD_3(x: anytype, v: anytype) @TypeOf(SCM_SET_CELL_WORD(x, @as(c_int, 3), v)) {
+ return SCM_SET_CELL_WORD(x, @as(c_int, 3), v);
+}
+pub inline fn SCM_SET_CELL_OBJECT(x: anytype, n: anytype, v: anytype) @TypeOf(SCM_GC_SET_CELL_OBJECT(x, n, v)) {
+ return SCM_GC_SET_CELL_OBJECT(x, n, v);
+}
+pub inline fn SCM_SET_CELL_OBJECT_0(x: anytype, v: anytype) @TypeOf(SCM_SET_CELL_OBJECT(x, @as(c_int, 0), v)) {
+ return SCM_SET_CELL_OBJECT(x, @as(c_int, 0), v);
+}
+pub inline fn SCM_SET_CELL_OBJECT_1(x: anytype, v: anytype) @TypeOf(SCM_SET_CELL_OBJECT(x, @as(c_int, 1), v)) {
+ return SCM_SET_CELL_OBJECT(x, @as(c_int, 1), v);
+}
+pub inline fn SCM_SET_CELL_OBJECT_2(x: anytype, v: anytype) @TypeOf(SCM_SET_CELL_OBJECT(x, @as(c_int, 2), v)) {
+ return SCM_SET_CELL_OBJECT(x, @as(c_int, 2), v);
+}
+pub inline fn SCM_SET_CELL_OBJECT_3(x: anytype, v: anytype) @TypeOf(SCM_SET_CELL_OBJECT(x, @as(c_int, 3), v)) {
+ return SCM_SET_CELL_OBJECT(x, @as(c_int, 3), v);
+}
+pub inline fn SCM_CELL_OBJECT_LOC(x: anytype, n: anytype) @TypeOf(&SCM_GC_CELL_OBJECT(x, n)) {
+ return &SCM_GC_CELL_OBJECT(x, n);
+}
+pub inline fn SCM_CARLOC(x: anytype) @TypeOf(SCM_CELL_OBJECT_LOC(x, @as(c_int, 0))) {
+ return SCM_CELL_OBJECT_LOC(x, @as(c_int, 0));
+}
+pub inline fn SCM_CDRLOC(x: anytype) @TypeOf(SCM_CELL_OBJECT_LOC(x, @as(c_int, 1))) {
+ return SCM_CELL_OBJECT_LOC(x, @as(c_int, 1));
+}
+pub inline fn SCM_CELL_TYPE(x: anytype) @TypeOf(SCM_CELL_WORD_0(x)) {
+ return SCM_CELL_WORD_0(x);
+}
+pub inline fn SCM_SET_CELL_TYPE(x: anytype, t: anytype) @TypeOf(SCM_SET_CELL_WORD_0(x, t)) {
+ return SCM_SET_CELL_WORD_0(x, t);
+}
+pub inline fn SCM_GC_MALLOC(size: anytype) @TypeOf(scm_gc_malloc(size, NULL)) {
+ return scm_gc_malloc(size, NULL);
+}
+pub inline fn SCM_GC_MALLOC_POINTERLESS(size: anytype) @TypeOf(scm_gc_malloc_pointerless(size, NULL)) {
+ return scm_gc_malloc_pointerless(size, NULL);
+}
+pub inline fn scm_is_null_and_not_nil(x: anytype) @TypeOf(scm_is_eq(x, SCM_EOL)) {
+ return scm_is_eq(x, SCM_EOL);
+}
+pub inline fn scm_is_null_assume_not_nil(x: anytype) @TypeOf(scm_is_eq(x, SCM_EOL)) {
+ return scm_is_eq(x, SCM_EOL);
+}
+pub inline fn scm_is_null_or_nil(x: anytype) @TypeOf(SCM_MATCHES_BITS_IN_COMMON(x, SCM_ELISP_NIL, SCM_EOL)) {
+ return SCM_MATCHES_BITS_IN_COMMON(x, SCM_ELISP_NIL, SCM_EOL);
+}
+pub inline fn SCM_NILP(x: anytype) @TypeOf(scm_is_eq(x, SCM_ELISP_NIL)) {
+ return scm_is_eq(x, SCM_ELISP_NIL);
+}
+pub inline fn SCM_NULL_OR_NIL_P(x: anytype) @TypeOf(scm_is_null_or_nil(x)) {
+ return scm_is_null_or_nil(x);
+}
+pub inline fn SCM_NULLP(x: anytype) @TypeOf(scm_is_null(x)) {
+ return scm_is_null(x);
+}
+pub inline fn SCM_NNULLP(x: anytype) @TypeOf(!(scm_is_null(x) != 0)) {
+ return !(scm_is_null(x) != 0);
+}
+pub inline fn SCM_CONSP(x: anytype) @TypeOf(scm_is_pair(x)) {
+ return scm_is_pair(x);
+}
+pub inline fn SCM_NCONSP(x: anytype) @TypeOf(!(SCM_CONSP(x) != 0)) {
+ return !(SCM_CONSP(x) != 0);
+}
+pub inline fn scm_is_null(x: anytype) @TypeOf(scm_is_null_or_nil(x)) {
+ return scm_is_null_or_nil(x);
+}
+pub inline fn SCM_CAR(x: anytype) @TypeOf(SCM_VALIDATE_PAIR(x, SCM_CELL_OBJECT_0(x))) {
+ return SCM_VALIDATE_PAIR(x, SCM_CELL_OBJECT_0(x));
+}
+pub inline fn SCM_CDR(x: anytype) @TypeOf(SCM_VALIDATE_PAIR(x, SCM_CELL_OBJECT_1(x))) {
+ return SCM_VALIDATE_PAIR(x, SCM_CELL_OBJECT_1(x));
+}
+pub inline fn SCM_SETCAR(x: anytype, v: anytype) @TypeOf(SCM_VALIDATE_PAIR(x, SCM_SET_CELL_OBJECT_0(x, v))) {
+ return SCM_VALIDATE_PAIR(x, SCM_SET_CELL_OBJECT_0(x, v));
+}
+pub inline fn SCM_SETCDR(x: anytype, v: anytype) @TypeOf(SCM_VALIDATE_PAIR(x, SCM_SET_CELL_OBJECT_1(x, v))) {
+ return SCM_VALIDATE_PAIR(x, SCM_SET_CELL_OBJECT_1(x, v));
+}
+pub inline fn SCM_CAAR(OBJ: anytype) @TypeOf(SCM_CAR(SCM_CAR(OBJ))) {
+ return SCM_CAR(SCM_CAR(OBJ));
+}
+pub inline fn SCM_CDAR(OBJ: anytype) @TypeOf(SCM_CDR(SCM_CAR(OBJ))) {
+ return SCM_CDR(SCM_CAR(OBJ));
+}
+pub inline fn SCM_CADR(OBJ: anytype) @TypeOf(SCM_CAR(SCM_CDR(OBJ))) {
+ return SCM_CAR(SCM_CDR(OBJ));
+}
+pub inline fn SCM_CDDR(OBJ: anytype) @TypeOf(SCM_CDR(SCM_CDR(OBJ))) {
+ return SCM_CDR(SCM_CDR(OBJ));
+}
+pub inline fn SCM_CAAAR(OBJ: anytype) @TypeOf(SCM_CAR(SCM_CAR(SCM_CAR(OBJ)))) {
+ return SCM_CAR(SCM_CAR(SCM_CAR(OBJ)));
+}
+pub inline fn SCM_CDAAR(OBJ: anytype) @TypeOf(SCM_CDR(SCM_CAR(SCM_CAR(OBJ)))) {
+ return SCM_CDR(SCM_CAR(SCM_CAR(OBJ)));
+}
+pub inline fn SCM_CADAR(OBJ: anytype) @TypeOf(SCM_CAR(SCM_CDR(SCM_CAR(OBJ)))) {
+ return SCM_CAR(SCM_CDR(SCM_CAR(OBJ)));
+}
+pub inline fn SCM_CDDAR(OBJ: anytype) @TypeOf(SCM_CDR(SCM_CDR(SCM_CAR(OBJ)))) {
+ return SCM_CDR(SCM_CDR(SCM_CAR(OBJ)));
+}
+pub inline fn SCM_CAADR(OBJ: anytype) @TypeOf(SCM_CAR(SCM_CAR(SCM_CDR(OBJ)))) {
+ return SCM_CAR(SCM_CAR(SCM_CDR(OBJ)));
+}
+pub inline fn SCM_CDADR(OBJ: anytype) @TypeOf(SCM_CDR(SCM_CAR(SCM_CDR(OBJ)))) {
+ return SCM_CDR(SCM_CAR(SCM_CDR(OBJ)));
+}
+pub inline fn SCM_CADDR(OBJ: anytype) @TypeOf(SCM_CAR(SCM_CDR(SCM_CDR(OBJ)))) {
+ return SCM_CAR(SCM_CDR(SCM_CDR(OBJ)));
+}
+pub inline fn SCM_CDDDR(OBJ: anytype) @TypeOf(SCM_CDR(SCM_CDR(SCM_CDR(OBJ)))) {
+ return SCM_CDR(SCM_CDR(SCM_CDR(OBJ)));
+}
+pub inline fn SCM_CAAAAR(OBJ: anytype) @TypeOf(SCM_CAR(SCM_CAR(SCM_CAR(SCM_CAR(OBJ))))) {
+ return SCM_CAR(SCM_CAR(SCM_CAR(SCM_CAR(OBJ))));
+}
+pub inline fn SCM_CDAAAR(OBJ: anytype) @TypeOf(SCM_CDR(SCM_CAR(SCM_CAR(SCM_CAR(OBJ))))) {
+ return SCM_CDR(SCM_CAR(SCM_CAR(SCM_CAR(OBJ))));
+}
+pub inline fn SCM_CADAAR(OBJ: anytype) @TypeOf(SCM_CAR(SCM_CDR(SCM_CAR(SCM_CAR(OBJ))))) {
+ return SCM_CAR(SCM_CDR(SCM_CAR(SCM_CAR(OBJ))));
+}
+pub inline fn SCM_CDDAAR(OBJ: anytype) @TypeOf(SCM_CDR(SCM_CDR(SCM_CAR(SCM_CAR(OBJ))))) {
+ return SCM_CDR(SCM_CDR(SCM_CAR(SCM_CAR(OBJ))));
+}
+pub inline fn SCM_CAADAR(OBJ: anytype) @TypeOf(SCM_CAR(SCM_CAR(SCM_CDR(SCM_CAR(OBJ))))) {
+ return SCM_CAR(SCM_CAR(SCM_CDR(SCM_CAR(OBJ))));
+}
+pub inline fn SCM_CDADAR(OBJ: anytype) @TypeOf(SCM_CDR(SCM_CAR(SCM_CDR(SCM_CAR(OBJ))))) {
+ return SCM_CDR(SCM_CAR(SCM_CDR(SCM_CAR(OBJ))));
+}
+pub inline fn SCM_CADDAR(OBJ: anytype) @TypeOf(SCM_CAR(SCM_CDR(SCM_CDR(SCM_CAR(OBJ))))) {
+ return SCM_CAR(SCM_CDR(SCM_CDR(SCM_CAR(OBJ))));
+}
+pub inline fn SCM_CDDDAR(OBJ: anytype) @TypeOf(SCM_CDR(SCM_CDR(SCM_CDR(SCM_CAR(OBJ))))) {
+ return SCM_CDR(SCM_CDR(SCM_CDR(SCM_CAR(OBJ))));
+}
+pub inline fn SCM_CAAADR(OBJ: anytype) @TypeOf(SCM_CAR(SCM_CAR(SCM_CAR(SCM_CDR(OBJ))))) {
+ return SCM_CAR(SCM_CAR(SCM_CAR(SCM_CDR(OBJ))));
+}
+pub inline fn SCM_CDAADR(OBJ: anytype) @TypeOf(SCM_CDR(SCM_CAR(SCM_CAR(SCM_CDR(OBJ))))) {
+ return SCM_CDR(SCM_CAR(SCM_CAR(SCM_CDR(OBJ))));
+}
+pub inline fn SCM_CADADR(OBJ: anytype) @TypeOf(SCM_CAR(SCM_CDR(SCM_CAR(SCM_CDR(OBJ))))) {
+ return SCM_CAR(SCM_CDR(SCM_CAR(SCM_CDR(OBJ))));
+}
+pub inline fn SCM_CDDADR(OBJ: anytype) @TypeOf(SCM_CDR(SCM_CDR(SCM_CAR(SCM_CDR(OBJ))))) {
+ return SCM_CDR(SCM_CDR(SCM_CAR(SCM_CDR(OBJ))));
+}
+pub inline fn SCM_CAADDR(OBJ: anytype) @TypeOf(SCM_CAR(SCM_CAR(SCM_CDR(SCM_CDR(OBJ))))) {
+ return SCM_CAR(SCM_CAR(SCM_CDR(SCM_CDR(OBJ))));
+}
+pub inline fn SCM_CDADDR(OBJ: anytype) @TypeOf(SCM_CDR(SCM_CAR(SCM_CDR(SCM_CDR(OBJ))))) {
+ return SCM_CDR(SCM_CAR(SCM_CDR(SCM_CDR(OBJ))));
+}
+pub inline fn SCM_CADDDR(OBJ: anytype) @TypeOf(SCM_CAR(SCM_CDR(SCM_CDR(SCM_CDR(OBJ))))) {
+ return SCM_CAR(SCM_CDR(SCM_CDR(SCM_CDR(OBJ))));
+}
+pub inline fn SCM_CDDDDR(OBJ: anytype) @TypeOf(SCM_CDR(SCM_CDR(SCM_CDR(SCM_CDR(OBJ))))) {
+ return SCM_CDR(SCM_CDR(SCM_CDR(SCM_CDR(OBJ))));
+}
+pub inline fn SCM_VALIDATE_NULL(pos: anytype, scm: anytype) @TypeOf(SCM_I_MAKE_VALIDATE_MSG2(pos, scm, scm_is_null, "empty list")) {
+ return SCM_I_MAKE_VALIDATE_MSG2(pos, scm, scm_is_null, "empty list");
+}
+pub inline fn SCM_VALIDATE_CONS(pos: anytype, scm: anytype) @TypeOf(SCM_I_MAKE_VALIDATE_MSG2(pos, scm, scm_is_pair, "pair")) {
+ return SCM_I_MAKE_VALIDATE_MSG2(pos, scm, scm_is_pair, "pair");
+}
+pub inline fn SCM_VALIDATE_PAIR(cell: anytype, expr: anytype) @TypeOf(expr) {
+ _ = cell;
+ return expr;
+}
+pub const SCM_ARRAY_HANDLE_H = "";
+pub const SCM_NUMBERS_H = "";
+pub const SCM_PRINT_H = "";
+pub const SCM_CHARS_H = "";
+pub inline fn SCM_CHARP(x: anytype) @TypeOf(SCM_ITAG8(x) == scm_tc8_char) {
+ return SCM_ITAG8(x) == scm_tc8_char;
+}
+pub inline fn SCM_CHAR(x: anytype) scm_t_wchar {
+ return @import("std").zig.c_translation.cast(scm_t_wchar, SCM_ITAG8_DATA(x));
+}
+pub inline fn SCM_MAKE_CHAR(x: anytype) @TypeOf(if (x <= @as(c_int, 1)) SCM_MAKE_ITAG8(@import("std").zig.c_translation.cast(scm_t_bits, @import("std").zig.c_translation.cast(u8, x)), scm_tc8_char) else SCM_MAKE_ITAG8(@import("std").zig.c_translation.cast(scm_t_bits, x), scm_tc8_char)) {
+ return if (x <= @as(c_int, 1)) SCM_MAKE_ITAG8(@import("std").zig.c_translation.cast(scm_t_bits, @import("std").zig.c_translation.cast(u8, x)), scm_tc8_char) else SCM_MAKE_ITAG8(@import("std").zig.c_translation.cast(scm_t_bits, x), scm_tc8_char);
+}
+pub const SCM_CODEPOINT_DOTTED_CIRCLE = @as(c_int, 0x25cc);
+pub const SCM_CODEPOINT_SURROGATE_START = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0xd800, .hexadecimal);
+pub const SCM_CODEPOINT_SURROGATE_END = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0xdfff, .hexadecimal);
+pub const SCM_CODEPOINT_MAX = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x10ffff, .hexadecimal);
+pub inline fn SCM_IS_UNICODE_CHAR(c: anytype) @TypeOf(((@import("std").zig.c_translation.cast(scm_t_wchar, c) >= @as(c_int, 0)) and (@import("std").zig.c_translation.cast(scm_t_wchar, c) < SCM_CODEPOINT_SURROGATE_START)) or ((@import("std").zig.c_translation.cast(scm_t_wchar, c) > SCM_CODEPOINT_SURROGATE_END) and (@import("std").zig.c_translation.cast(scm_t_wchar, c) <= SCM_CODEPOINT_MAX))) {
+ return ((@import("std").zig.c_translation.cast(scm_t_wchar, c) >= @as(c_int, 0)) and (@import("std").zig.c_translation.cast(scm_t_wchar, c) < SCM_CODEPOINT_SURROGATE_START)) or ((@import("std").zig.c_translation.cast(scm_t_wchar, c) > SCM_CODEPOINT_SURROGATE_END) and (@import("std").zig.c_translation.cast(scm_t_wchar, c) <= SCM_CODEPOINT_MAX));
+}
+pub const SCM_OPTIONS_H = "";
+pub const SCM_OPTION_BOOLEAN = @as(c_int, 0);
+pub const SCM_OPTION_INTEGER = @as(c_int, 1);
+pub const SCM_OPTION_SCM = @as(c_int, 2);
+pub inline fn SCM_PRINT_STATE_P(obj: anytype) @TypeOf((SCM_STRUCTP(obj) != 0) and (scm_is_eq(SCM_STRUCT_VTABLE(obj), scm_print_state_vtable) != 0)) {
+ return (SCM_STRUCTP(obj) != 0) and (scm_is_eq(SCM_STRUCT_VTABLE(obj), scm_print_state_vtable) != 0);
+}
+pub inline fn SCM_PRINT_STATE(obj: anytype) [*c]scm_print_state {
+ return @import("std").zig.c_translation.cast([*c]scm_print_state, SCM_STRUCT_DATA(obj));
+}
+pub inline fn SCM_WRITINGP(pstate: anytype) @TypeOf(pstate.*.writingp) {
+ return pstate.*.writingp;
+}
+pub inline fn SCM_PORT_WITH_PS_P(p: anytype) @TypeOf(SCM_TYP16_PREDICATE(scm_tc16_port_with_ps, p)) {
+ return SCM_TYP16_PREDICATE(scm_tc16_port_with_ps, p);
+}
+pub inline fn SCM_PORT_WITH_PS_PORT(p: anytype) @TypeOf(SCM_CELL_OBJECT_1(p)) {
+ return SCM_CELL_OBJECT_1(p);
+}
+pub inline fn SCM_PORT_WITH_PS_PS(p: anytype) @TypeOf(SCM_CELL_OBJECT_2(p)) {
+ return SCM_CELL_OBJECT_2(p);
+}
+pub inline fn SCM_COERCE_OUTPORT(p: anytype) @TypeOf(if (SCM_PORT_WITH_PS_P(p)) SCM_PORT_WITH_PS_PORT(p) else p) {
+ return if (SCM_PORT_WITH_PS_P(p)) SCM_PORT_WITH_PS_PORT(p) else p;
+}
+pub const SCM_PRINT_STATE_LAYOUT = "pwuwuwuwuwuwpwuwuwuwpwpw";
+pub const SCM_I_FIXNUM_BIT = SCM_LONG_BIT - @as(c_int, 2);
+pub const SCM_MOST_NEGATIVE_FIXNUM = -@as(c_long, 1) << (SCM_I_FIXNUM_BIT - @as(c_int, 1));
+pub const SCM_MOST_POSITIVE_FIXNUM = -(SCM_MOST_NEGATIVE_FIXNUM + @as(c_int, 1));
+pub inline fn SCM_SRS(x: anytype, y: anytype) @TypeOf(x >> y) {
+ return x >> y;
+}
+pub inline fn SCM_I_INUM(x: anytype) @TypeOf(SCM_SRS(@import("std").zig.c_translation.cast(scm_t_inum, SCM_UNPACK(x)), @as(c_int, 2))) {
+ return SCM_SRS(@import("std").zig.c_translation.cast(scm_t_inum, SCM_UNPACK(x)), @as(c_int, 2));
+}
+pub inline fn SCM_I_INUMP(x: anytype) @TypeOf(@as(c_int, 2) & SCM_UNPACK(x)) {
+ return @as(c_int, 2) & SCM_UNPACK(x);
+}
+pub inline fn SCM_I_NINUMP(x: anytype) @TypeOf(!(SCM_I_INUMP(x) != 0)) {
+ return !(SCM_I_INUMP(x) != 0);
+}
+pub inline fn SCM_I_MAKINUM(x: anytype) @TypeOf(SCM_PACK((@import("std").zig.c_translation.cast(scm_t_bits, x) << @as(c_int, 2)) + scm_tc2_int)) {
+ return SCM_PACK((@import("std").zig.c_translation.cast(scm_t_bits, x) << @as(c_int, 2)) + scm_tc2_int);
+}
+pub inline fn SCM_POSFIXABLE(n: anytype) @TypeOf(n <= SCM_MOST_POSITIVE_FIXNUM) {
+ return n <= SCM_MOST_POSITIVE_FIXNUM;
+}
+pub inline fn SCM_NEGFIXABLE(n: anytype) @TypeOf(n >= SCM_MOST_NEGATIVE_FIXNUM) {
+ return n >= SCM_MOST_NEGATIVE_FIXNUM;
+}
+pub inline fn SCM_FIXABLE(n: anytype) @TypeOf((SCM_POSFIXABLE(n) != 0) and (SCM_NEGFIXABLE(n) != 0)) {
+ return (SCM_POSFIXABLE(n) != 0) and (SCM_NEGFIXABLE(n) != 0);
+}
+pub const SCM_INUM0 = SCM_I_MAKINUM(@as(c_int, 0));
+pub const SCM_INUM1 = SCM_I_MAKINUM(@as(c_int, 1));
+pub const __CLANG_FLOAT_H = "";
+pub const FLT_EVAL_METHOD = __FLT_EVAL_METHOD__;
+pub const FLT_RADIX = __FLT_RADIX__;
+pub const FLT_MANT_DIG = __FLT_MANT_DIG__;
+pub const DBL_MANT_DIG = __DBL_MANT_DIG__;
+pub const LDBL_MANT_DIG = __LDBL_MANT_DIG__;
+pub const DECIMAL_DIG = __DECIMAL_DIG__;
+pub const FLT_DIG = __FLT_DIG__;
+pub const DBL_DIG = __DBL_DIG__;
+pub const LDBL_DIG = __LDBL_DIG__;
+pub const FLT_MIN_EXP = __FLT_MIN_EXP__;
+pub const DBL_MIN_EXP = __DBL_MIN_EXP__;
+pub const LDBL_MIN_EXP = __LDBL_MIN_EXP__;
+pub const FLT_MIN_10_EXP = __FLT_MIN_10_EXP__;
+pub const DBL_MIN_10_EXP = __DBL_MIN_10_EXP__;
+pub const LDBL_MIN_10_EXP = __LDBL_MIN_10_EXP__;
+pub const FLT_MAX_EXP = __FLT_MAX_EXP__;
+pub const DBL_MAX_EXP = __DBL_MAX_EXP__;
+pub const LDBL_MAX_EXP = __LDBL_MAX_EXP__;
+pub const FLT_MAX_10_EXP = __FLT_MAX_10_EXP__;
+pub const DBL_MAX_10_EXP = __DBL_MAX_10_EXP__;
+pub const LDBL_MAX_10_EXP = __LDBL_MAX_10_EXP__;
+pub const FLT_MAX = __FLT_MAX__;
+pub const DBL_MAX = __DBL_MAX__;
+pub const LDBL_MAX = __LDBL_MAX__;
+pub const FLT_EPSILON = __FLT_EPSILON__;
+pub const DBL_EPSILON = __DBL_EPSILON__;
+pub const LDBL_EPSILON = __LDBL_EPSILON__;
+pub const FLT_MIN = __FLT_MIN__;
+pub const DBL_MIN = __DBL_MIN__;
+pub const LDBL_MIN = __LDBL_MIN__;
+pub const FLT_TRUE_MIN = __FLT_DENORM_MIN__;
+pub const DBL_TRUE_MIN = __DBL_DENORM_MIN__;
+pub const LDBL_TRUE_MIN = __LDBL_DENORM_MIN__;
+pub const FLT_DECIMAL_DIG = __FLT_DECIMAL_DIG__;
+pub const DBL_DECIMAL_DIG = __DBL_DECIMAL_DIG__;
+pub const LDBL_DECIMAL_DIG = __LDBL_DECIMAL_DIG__;
+pub const FLT_HAS_SUBNORM = __FLT_HAS_DENORM__;
+pub const DBL_HAS_SUBNORM = __DBL_HAS_DENORM__;
+pub const LDBL_HAS_SUBNORM = __LDBL_HAS_DENORM__;
+pub const SCM_MAXEXP = DBL_MAX_10_EXP;
+pub const SCM_FLTMAX = FLT_MAX;
+pub const SCM_INTBUFLEN = @as(c_int, 5) + (SCM_CHAR_BIT * @import("std").zig.c_translation.sizeof(intmax_t));
+pub const scm_tc16_big = scm_tc7_number + (@as(c_int, 1) * @as(c_long, 256));
+pub const scm_tc16_real = scm_tc7_number + (@as(c_int, 2) * @as(c_long, 256));
+pub const scm_tc16_complex = scm_tc7_number + (@as(c_int, 3) * @as(c_long, 256));
+pub const scm_tc16_fraction = scm_tc7_number + (@as(c_int, 4) * @as(c_long, 256));
+pub inline fn SCM_INEXACTP(x: anytype) @TypeOf(!(SCM_IMP(x) != 0) and ((@import("std").zig.c_translation.promoteIntLiteral(c_int, 0xfeff, .hexadecimal) & SCM_CELL_TYPE(x)) == scm_tc16_real)) {
+ return !(SCM_IMP(x) != 0) and ((@import("std").zig.c_translation.promoteIntLiteral(c_int, 0xfeff, .hexadecimal) & SCM_CELL_TYPE(x)) == scm_tc16_real);
+}
+pub inline fn SCM_REALP(x: anytype) @TypeOf(SCM_HAS_TYP16(x, scm_tc16_real)) {
+ return SCM_HAS_TYP16(x, scm_tc16_real);
+}
+pub inline fn SCM_COMPLEXP(x: anytype) @TypeOf(SCM_HAS_TYP16(x, scm_tc16_complex)) {
+ return SCM_HAS_TYP16(x, scm_tc16_complex);
+}
+pub inline fn SCM_REAL_VALUE(x: anytype) @TypeOf(@import("std").zig.c_translation.cast([*c]scm_t_double, SCM2PTR(x)).*.real) {
+ return @import("std").zig.c_translation.cast([*c]scm_t_double, SCM2PTR(x)).*.real;
+}
+pub inline fn SCM_COMPLEX_REAL(x: anytype) @TypeOf(@import("std").zig.c_translation.cast([*c]scm_t_complex, SCM2PTR(x)).*.real) {
+ return @import("std").zig.c_translation.cast([*c]scm_t_complex, SCM2PTR(x)).*.real;
+}
+pub inline fn SCM_COMPLEX_IMAG(x: anytype) @TypeOf(@import("std").zig.c_translation.cast([*c]scm_t_complex, SCM2PTR(x)).*.imag) {
+ return @import("std").zig.c_translation.cast([*c]scm_t_complex, SCM2PTR(x)).*.imag;
+}
+pub inline fn SCM_BIGP(x: anytype) @TypeOf(SCM_HAS_TYP16(x, scm_tc16_big)) {
+ return SCM_HAS_TYP16(x, scm_tc16_big);
+}
+pub inline fn SCM_NUMBERP(x: anytype) @TypeOf((SCM_I_INUMP(x) != 0) or (SCM_NUMP(x) != 0)) {
+ return (SCM_I_INUMP(x) != 0) or (SCM_NUMP(x) != 0);
+}
+pub inline fn SCM_NUMP(x: anytype) @TypeOf(SCM_HAS_TYP7(x, scm_tc7_number)) {
+ return SCM_HAS_TYP7(x, scm_tc7_number);
+}
+pub inline fn SCM_FRACTIONP(x: anytype) @TypeOf(SCM_HAS_TYP16(x, scm_tc16_fraction)) {
+ return SCM_HAS_TYP16(x, scm_tc16_fraction);
+}
+pub inline fn SCM_FRACTION_NUMERATOR(x: anytype) @TypeOf(SCM_CELL_OBJECT_1(x)) {
+ return SCM_CELL_OBJECT_1(x);
+}
+pub inline fn SCM_FRACTION_DENOMINATOR(x: anytype) @TypeOf(SCM_CELL_OBJECT_2(x)) {
+ return SCM_CELL_OBJECT_2(x);
+}
+pub const scm_to_schar = scm_to_int8;
+pub const scm_from_schar = scm_from_int8;
+pub const scm_to_uchar = scm_to_uint8;
+pub const scm_from_uchar = scm_from_uint8;
+pub const scm_to_char = scm_to_int8;
+pub const scm_from_char = scm_from_int8;
+pub const scm_to_short = scm_to_int16;
+pub const scm_from_short = scm_from_int16;
+pub const scm_to_ushort = scm_to_uint16;
+pub const scm_from_ushort = scm_from_uint16;
+pub const scm_to_int = scm_to_int32;
+pub const scm_from_int = scm_from_int32;
+pub const scm_to_uint = scm_to_uint32;
+pub const scm_from_uint = scm_from_uint32;
+pub const scm_to_long = scm_to_int64;
+pub const scm_from_long = scm_from_int64;
+pub const scm_to_ulong = scm_to_uint64;
+pub const scm_from_ulong = scm_from_uint64;
+pub const scm_to_intmax = scm_to_int64;
+pub const scm_from_intmax = scm_from_int64;
+pub const scm_to_uintmax = scm_to_uint64;
+pub const scm_from_uintmax = scm_from_uint64;
+pub const scm_to_long_long = scm_to_int64;
+pub const scm_from_long_long = scm_from_int64;
+pub const scm_to_ulong_long = scm_to_uint64;
+pub const scm_from_ulong_long = scm_from_uint64;
+pub const scm_to_ssize_t = scm_to_int64;
+pub const scm_from_ssize_t = scm_from_int64;
+pub const scm_to_size_t = scm_to_uint64;
+pub const scm_from_size_t = scm_from_uint64;
+pub const scm_to_ptrdiff_t = scm_to_int64;
+pub const scm_from_ptrdiff_t = scm_from_int64;
+pub const scm_to_intptr_t = scm_to_int64;
+pub const scm_from_intptr_t = scm_from_int64;
+pub const scm_to_uintptr_t = scm_to_uint64;
+pub const scm_from_uintptr_t = scm_from_uint64;
+pub inline fn SCM_NUM2SIZE(pos: anytype, arg: anytype) @TypeOf(scm_to_size_t(arg)) {
+ _ = pos;
+ return scm_to_size_t(arg);
+}
+pub inline fn SCM_NUM2SIZE_DEF(pos: anytype, arg: anytype, def: anytype) @TypeOf(if (SCM_UNBNDP(arg)) def else scm_to_size_t(arg)) {
+ _ = pos;
+ return if (SCM_UNBNDP(arg)) def else scm_to_size_t(arg);
+}
+pub inline fn SCM_NUM2PTRDIFF(pos: anytype, arg: anytype) @TypeOf(scm_to_ssize_t(arg)) {
+ _ = pos;
+ return scm_to_ssize_t(arg);
+}
+pub inline fn SCM_NUM2PTRDIFF_DEF(pos: anytype, arg: anytype, def: anytype) @TypeOf(if (SCM_UNBNDP(arg)) def else scm_to_ssize_t(arg)) {
+ _ = pos;
+ return if (SCM_UNBNDP(arg)) def else scm_to_ssize_t(arg);
+}
+pub inline fn SCM_NUM2SHORT(pos: anytype, arg: anytype) @TypeOf(scm_to_short(arg)) {
+ _ = pos;
+ return scm_to_short(arg);
+}
+pub inline fn SCM_NUM2SHORT_DEF(pos: anytype, arg: anytype, def: anytype) @TypeOf(if (SCM_UNBNDP(arg)) def else scm_to_short(arg)) {
+ _ = pos;
+ return if (SCM_UNBNDP(arg)) def else scm_to_short(arg);
+}
+pub inline fn SCM_NUM2USHORT(pos: anytype, arg: anytype) @TypeOf(scm_to_ushort(arg)) {
+ _ = pos;
+ return scm_to_ushort(arg);
+}
+pub inline fn SCM_NUM2USHORT_DEF(pos: anytype, arg: anytype, def: anytype) @TypeOf(if (SCM_UNBNDP(arg)) def else scm_to_ushort(arg)) {
+ _ = pos;
+ return if (SCM_UNBNDP(arg)) def else scm_to_ushort(arg);
+}
+pub inline fn SCM_NUM2INT(pos: anytype, arg: anytype) @TypeOf(scm_to_int(arg)) {
+ _ = pos;
+ return scm_to_int(arg);
+}
+pub inline fn SCM_NUM2INT_DEF(pos: anytype, arg: anytype, def: anytype) @TypeOf(if (SCM_UNBNDP(arg)) def else scm_to_int(arg)) {
+ _ = pos;
+ return if (SCM_UNBNDP(arg)) def else scm_to_int(arg);
+}
+pub inline fn SCM_NUM2UINT(pos: anytype, arg: anytype) @TypeOf(scm_to_uint(arg)) {
+ _ = pos;
+ return scm_to_uint(arg);
+}
+pub inline fn SCM_NUM2UINT_DEF(pos: anytype, arg: anytype, def: anytype) @TypeOf(if (SCM_UNBNDP(arg)) def else scm_to_uint(arg)) {
+ _ = pos;
+ return if (SCM_UNBNDP(arg)) def else scm_to_uint(arg);
+}
+pub inline fn SCM_NUM2ULONG(pos: anytype, arg: anytype) @TypeOf(scm_to_ulong(arg)) {
+ _ = pos;
+ return scm_to_ulong(arg);
+}
+pub inline fn SCM_NUM2ULONG_DEF(pos: anytype, arg: anytype, def: anytype) @TypeOf(if (SCM_UNBNDP(arg)) def else scm_to_ulong(arg)) {
+ _ = pos;
+ return if (SCM_UNBNDP(arg)) def else scm_to_ulong(arg);
+}
+pub inline fn SCM_NUM2LONG(pos: anytype, arg: anytype) @TypeOf(scm_to_long(arg)) {
+ _ = pos;
+ return scm_to_long(arg);
+}
+pub inline fn SCM_NUM2LONG_DEF(pos: anytype, arg: anytype, def: anytype) @TypeOf(if (SCM_UNBNDP(arg)) def else scm_to_long(arg)) {
+ _ = pos;
+ return if (SCM_UNBNDP(arg)) def else scm_to_long(arg);
+}
+pub inline fn SCM_NUM2LONG_LONG(pos: anytype, arg: anytype) @TypeOf(scm_to_long_long(arg)) {
+ _ = pos;
+ return scm_to_long_long(arg);
+}
+pub inline fn SCM_NUM2LONG_LONG_DEF(pos: anytype, arg: anytype, def: anytype) @TypeOf(if (SCM_UNBNDP(arg)) def else scm_to_long_long(arg)) {
+ _ = pos;
+ return if (SCM_UNBNDP(arg)) def else scm_to_long_long(arg);
+}
+pub inline fn SCM_NUM2ULONG_LONG(pos: anytype, arg: anytype) @TypeOf(scm_to_ulong_long(arg)) {
+ _ = pos;
+ return scm_to_ulong_long(arg);
+}
+pub inline fn SCM_NUM2ULONG_LONG_DEF(pos: anytype, arg: anytype, def: anytype) @TypeOf(if (SCM_UNBNDP(arg)) def else scm_to_ulong_long(arg)) {
+ _ = pos;
+ return if (SCM_UNBNDP(arg)) def else scm_to_ulong_long(arg);
+}
+pub inline fn SCM_NUM2FLOAT(pos: anytype, arg: anytype) f32 {
+ _ = pos;
+ return @import("std").zig.c_translation.cast(f32, scm_to_double(arg));
+}
+pub inline fn SCM_NUM2DOUBLE(pos: anytype, arg: anytype) @TypeOf(scm_to_double(arg)) {
+ _ = pos;
+ return scm_to_double(arg);
+}
+pub const SCM_ARRAY_H = "";
+pub inline fn SCM_I_ARRAYP(a: anytype) @TypeOf(SCM_TYP16_PREDICATE(scm_tc7_array, a)) {
+ return SCM_TYP16_PREDICATE(scm_tc7_array, a);
+}
+pub inline fn SCM_I_ARRAY_NDIM(x: anytype) usize {
+ return @import("std").zig.c_translation.cast(usize, SCM_CELL_WORD_0(x) >> @as(c_int, 17));
+}
+pub inline fn SCM_I_ARRAY_V(a: anytype) @TypeOf(SCM_CELL_OBJECT_1(a)) {
+ return SCM_CELL_OBJECT_1(a);
+}
+pub inline fn SCM_I_ARRAY_BASE(a: anytype) usize {
+ return @import("std").zig.c_translation.cast(usize, SCM_CELL_WORD_2(a));
+}
+pub inline fn SCM_I_ARRAY_DIMS(a: anytype) [*c]scm_t_array_dim {
+ return @import("std").zig.c_translation.cast([*c]scm_t_array_dim, SCM_CELL_OBJECT_LOC(a, @as(c_int, 3)));
+}
+pub inline fn SCM_I_ARRAY_SET_V(a: anytype, v: anytype) @TypeOf(SCM_SET_CELL_OBJECT_1(a, v)) {
+ return SCM_SET_CELL_OBJECT_1(a, v);
+}
+pub inline fn SCM_I_ARRAY_SET_BASE(a: anytype, base: anytype) @TypeOf(SCM_SET_CELL_WORD_2(a, base)) {
+ return SCM_SET_CELL_WORD_2(a, base);
+}
+pub inline fn scm_array_handle_rank(h: anytype) @TypeOf(h.*.ndims) {
+ return h.*.ndims;
+}
+pub inline fn scm_array_handle_dims(h: anytype) @TypeOf(h.*.dims) {
+ return h.*.dims;
+}
+pub const SCM_ARRAY_MAP_H = "";
+pub const SCM_ASYNC_H = "";
+pub const SCM_THREADS_H = "";
+pub const SCM_PROCS_H = "";
+pub const SCM_BOOLEAN_H = "";
+pub inline fn scm_is_false_and_not_nil(x: anytype) @TypeOf(scm_is_eq(x, SCM_BOOL_F)) {
+ return scm_is_eq(x, SCM_BOOL_F);
+}
+pub inline fn scm_is_true_or_nil(x: anytype) @TypeOf(!(scm_is_eq(x, SCM_BOOL_F) != 0)) {
+ return !(scm_is_eq(x, SCM_BOOL_F) != 0);
+}
+pub inline fn scm_is_false_assume_not_nil(x: anytype) @TypeOf(scm_is_eq(x, SCM_BOOL_F)) {
+ return scm_is_eq(x, SCM_BOOL_F);
+}
+pub inline fn scm_is_true_assume_not_nil(x: anytype) @TypeOf(!(scm_is_eq(x, SCM_BOOL_F) != 0)) {
+ return !(scm_is_eq(x, SCM_BOOL_F) != 0);
+}
+pub inline fn scm_is_false_or_nil(x: anytype) @TypeOf(SCM_MATCHES_BITS_IN_COMMON(x, SCM_ELISP_NIL, SCM_BOOL_F)) {
+ return SCM_MATCHES_BITS_IN_COMMON(x, SCM_ELISP_NIL, SCM_BOOL_F);
+}
+pub inline fn scm_is_true_and_not_nil(x: anytype) @TypeOf(!(scm_is_false_or_nil(x) != 0)) {
+ return !(scm_is_false_or_nil(x) != 0);
+}
+pub inline fn scm_is_false(x: anytype) @TypeOf(scm_is_false_or_nil(x)) {
+ return scm_is_false_or_nil(x);
+}
+pub inline fn scm_is_true(x: anytype) @TypeOf(!(scm_is_false(x) != 0)) {
+ return !(scm_is_false(x) != 0);
+}
+pub inline fn scm_is_bool_or_nil(x: anytype) @TypeOf(SCM_MATCHES_BITS_IN_COMMON(x, SCM_BOOL_T, SCM_ELISP_NIL)) {
+ return SCM_MATCHES_BITS_IN_COMMON(x, SCM_BOOL_T, SCM_ELISP_NIL);
+}
+pub inline fn scm_is_bool_and_not_nil(x: anytype) @TypeOf(SCM_MATCHES_BITS_IN_COMMON(x, SCM_BOOL_F, SCM_BOOL_T)) {
+ return SCM_MATCHES_BITS_IN_COMMON(x, SCM_BOOL_F, SCM_BOOL_T);
+}
+pub inline fn scm_from_bool(x: anytype) @TypeOf(if (x) SCM_BOOL_T else SCM_BOOL_F) {
+ return if (x) SCM_BOOL_T else SCM_BOOL_F;
+}
+pub inline fn SCM_FALSEP(x: anytype) @TypeOf(scm_is_false(x)) {
+ return scm_is_false(x);
+}
+pub inline fn SCM_NFALSEP(x: anytype) @TypeOf(scm_is_true(x)) {
+ return scm_is_true(x);
+}
+pub inline fn SCM_BOOLP(x: anytype) @TypeOf(scm_is_bool(x)) {
+ return scm_is_bool(x);
+}
+pub inline fn SCM_BOOL(x: anytype) @TypeOf(scm_from_bool(x)) {
+ return scm_from_bool(x);
+}
+pub inline fn SCM_NEGATE_BOOL(f: anytype) @TypeOf(scm_from_bool(!(f != 0))) {
+ return scm_from_bool(!(f != 0));
+}
+pub inline fn SCM_BOOL_NOT(x: anytype) @TypeOf(scm_not(x)) {
+ return scm_not(x);
+}
+pub inline fn scm_is_lisp_false(x: anytype) @TypeOf(SCM_MATCHES_BITS_IN_COMMON(x, SCM_BOOL_F, SCM_EOL)) {
+ return SCM_MATCHES_BITS_IN_COMMON(x, SCM_BOOL_F, SCM_EOL);
+}
+pub const SCM_THROW_H = "";
+pub const SCM_EXCEPTIONS_H = "";
+pub const SCM_DYNSTACK_H = "";
+pub const _SETJMP_H = @as(c_int, 1);
+pub const _BITS_SETJMP_H = @as(c_int, 1);
+pub const __jmp_buf_tag_defined = @as(c_int, 1);
+pub inline fn sigsetjmp(env: anytype, savemask: anytype) @TypeOf(__sigsetjmp(env, savemask)) {
+ return __sigsetjmp(env, savemask);
+}
+pub const _SIGNAL_H = "";
+pub const _BITS_SIGNUM_GENERIC_H = @as(c_int, 1);
+pub const SIG_ERR = @import("std").zig.c_translation.cast(__sighandler_t, -@as(c_int, 1));
+pub const SIG_DFL = @import("std").zig.c_translation.cast(__sighandler_t, @as(c_int, 0));
+pub const SIG_IGN = @import("std").zig.c_translation.cast(__sighandler_t, @as(c_int, 1));
+pub const SIGINT = @as(c_int, 2);
+pub const SIGILL = @as(c_int, 4);
+pub const SIGABRT = @as(c_int, 6);
+pub const SIGFPE = @as(c_int, 8);
+pub const SIGSEGV = @as(c_int, 11);
+pub const SIGTERM = @as(c_int, 15);
+pub const SIGHUP = @as(c_int, 1);
+pub const SIGQUIT = @as(c_int, 3);
+pub const SIGTRAP = @as(c_int, 5);
+pub const SIGKILL = @as(c_int, 9);
+pub const SIGPIPE = @as(c_int, 13);
+pub const SIGALRM = @as(c_int, 14);
+pub const SIGIO = SIGPOLL;
+pub const SIGIOT = SIGABRT;
+pub const SIGCLD = SIGCHLD;
+pub const _BITS_SIGNUM_ARCH_H = @as(c_int, 1);
+pub const SIGSTKFLT = @as(c_int, 16);
+pub const SIGPWR = @as(c_int, 30);
+pub const SIGBUS = @as(c_int, 7);
+pub const SIGSYS = @as(c_int, 31);
+pub const SIGURG = @as(c_int, 23);
+pub const SIGSTOP = @as(c_int, 19);
+pub const SIGTSTP = @as(c_int, 20);
+pub const SIGCONT = @as(c_int, 18);
+pub const SIGCHLD = @as(c_int, 17);
+pub const SIGTTIN = @as(c_int, 21);
+pub const SIGTTOU = @as(c_int, 22);
+pub const SIGPOLL = @as(c_int, 29);
+pub const SIGXFSZ = @as(c_int, 25);
+pub const SIGXCPU = @as(c_int, 24);
+pub const SIGVTALRM = @as(c_int, 26);
+pub const SIGPROF = @as(c_int, 27);
+pub const SIGUSR1 = @as(c_int, 10);
+pub const SIGUSR2 = @as(c_int, 12);
+pub const SIGWINCH = @as(c_int, 28);
+pub const __SIGRTMIN = @as(c_int, 32);
+pub const __SIGRTMAX = @as(c_int, 64);
+pub const _NSIG = __SIGRTMAX + @as(c_int, 1);
+pub const __sig_atomic_t_defined = @as(c_int, 1);
+pub const __siginfo_t_defined = @as(c_int, 1);
+pub const ____sigval_t_defined = "";
+pub const __SI_MAX_SIZE = @as(c_int, 128);
+pub const __SI_PAD_SIZE = (__SI_MAX_SIZE / @import("std").zig.c_translation.sizeof(c_int)) - @as(c_int, 4);
+pub const _BITS_SIGINFO_ARCH_H = @as(c_int, 1);
+pub const __SI_ALIGNMENT = "";
+pub const __SI_BAND_TYPE = c_long;
+pub const __SI_CLOCK_T = __clock_t;
+pub const __SI_ERRNO_THEN_CODE = @as(c_int, 1);
+pub const __SI_HAVE_SIGSYS = @as(c_int, 1);
+pub const __SI_SIGFAULT_ADDL = "";
+pub const _BITS_SIGINFO_CONSTS_H = @as(c_int, 1);
+pub const __SI_ASYNCIO_AFTER_SIGIO = @as(c_int, 1);
+pub const __sigval_t_defined = "";
+pub const __sigevent_t_defined = @as(c_int, 1);
+pub const __SIGEV_MAX_SIZE = @as(c_int, 64);
+pub const __SIGEV_PAD_SIZE = (__SIGEV_MAX_SIZE / @import("std").zig.c_translation.sizeof(c_int)) - @as(c_int, 4);
+pub const _BITS_SIGEVENT_CONSTS_H = @as(c_int, 1);
+pub inline fn sigmask(sig: anytype) @TypeOf(__glibc_macro_warning("sigmask is deprecated")(@import("std").zig.c_translation.cast(c_int, @as(c_uint, 1) << (sig - @as(c_int, 1))))) {
+ return __glibc_macro_warning("sigmask is deprecated")(@import("std").zig.c_translation.cast(c_int, @as(c_uint, 1) << (sig - @as(c_int, 1))));
+}
+pub const NSIG = _NSIG;
+pub const _BITS_SIGACTION_H = @as(c_int, 1);
+pub const SA_NOCLDSTOP = @as(c_int, 1);
+pub const SA_NOCLDWAIT = @as(c_int, 2);
+pub const SA_SIGINFO = @as(c_int, 4);
+pub const SA_ONSTACK = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x08000000, .hexadecimal);
+pub const SA_RESTART = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x10000000, .hexadecimal);
+pub const SA_NODEFER = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x40000000, .hexadecimal);
+pub const SA_RESETHAND = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x80000000, .hexadecimal);
+pub const SA_INTERRUPT = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x20000000, .hexadecimal);
+pub const SA_NOMASK = SA_NODEFER;
+pub const SA_ONESHOT = SA_RESETHAND;
+pub const SA_STACK = SA_ONSTACK;
+pub const SIG_BLOCK = @as(c_int, 0);
+pub const SIG_UNBLOCK = @as(c_int, 1);
+pub const SIG_SETMASK = @as(c_int, 2);
+pub const _BITS_SIGCONTEXT_H = @as(c_int, 1);
+pub const FP_XSTATE_MAGIC1 = @import("std").zig.c_translation.promoteIntLiteral(c_uint, 0x46505853, .hexadecimal);
+pub const FP_XSTATE_MAGIC2 = @import("std").zig.c_translation.promoteIntLiteral(c_uint, 0x46505845, .hexadecimal);
+pub const FP_XSTATE_MAGIC2_SIZE = @import("std").zig.c_translation.sizeof(FP_XSTATE_MAGIC2);
+pub const __stack_t_defined = @as(c_int, 1);
+pub const _SYS_UCONTEXT_H = @as(c_int, 1);
+pub inline fn __ctx(fld: anytype) @TypeOf(fld) {
+ return fld;
+}
+pub const __NGREG = @as(c_int, 23);
+pub const NGREG = __NGREG;
+pub const _BITS_SIGSTACK_H = @as(c_int, 1);
+pub const MINSIGSTKSZ = @as(c_int, 2048);
+pub const SIGSTKSZ = @as(c_int, 8192);
+pub const _BITS_SS_FLAGS_H = @as(c_int, 1);
+pub const __sigstack_defined = @as(c_int, 1);
+pub const _BITS_SIGTHREAD_H = @as(c_int, 1);
+pub const SIGRTMIN = __libc_current_sigrtmin();
+pub const SIGRTMAX = __libc_current_sigrtmax();
+pub const SCM_DYNSTACK_HEADER_LEN = @as(c_int, 2);
+pub inline fn SCM_DYNSTACK_PREV_OFFSET(top: anytype) @TypeOf(top[-@as(c_int, 2)]) {
+ return top[-@as(c_int, 2)];
+}
+pub inline fn SCM_DYNSTACK_TAG(top: anytype) @TypeOf(top[-@as(c_int, 1)]) {
+ return top[-@as(c_int, 1)];
+}
+pub const SCM_DYNSTACK_TAG_TYPE_MASK = @as(c_int, 0xf);
+pub const SCM_DYNSTACK_TAG_FLAGS_MASK = @as(c_int, 0xf0);
+pub const SCM_DYNSTACK_TAG_FLAGS_SHIFT = @as(c_int, 4);
+pub const SCM_DYNSTACK_TAG_LEN_SHIFT = @as(c_int, 8);
+pub inline fn SCM_MAKE_DYNSTACK_TAG(@"type": anytype, flags: anytype, len: anytype) @TypeOf((@"type" | flags) | (len << SCM_DYNSTACK_TAG_LEN_SHIFT)) {
+ return (@"type" | flags) | (len << SCM_DYNSTACK_TAG_LEN_SHIFT);
+}
+pub inline fn SCM_DYNSTACK_TAG_TYPE(tag: anytype) @TypeOf(tag & SCM_DYNSTACK_TAG_TYPE_MASK) {
+ return tag & SCM_DYNSTACK_TAG_TYPE_MASK;
+}
+pub inline fn SCM_DYNSTACK_TAG_FLAGS(tag: anytype) @TypeOf(tag & SCM_DYNSTACK_TAG_FLAGS_MASK) {
+ return tag & SCM_DYNSTACK_TAG_FLAGS_MASK;
+}
+pub inline fn SCM_DYNSTACK_TAG_LEN(tag: anytype) @TypeOf(tag >> SCM_DYNSTACK_TAG_LEN_SHIFT) {
+ return tag >> SCM_DYNSTACK_TAG_LEN_SHIFT;
+}
+pub inline fn SCM_DYNSTACK_PREV(top: anytype) @TypeOf(if (SCM_DYNSTACK_PREV_OFFSET(top)) top - SCM_DYNSTACK_PREV_OFFSET(top) else NULL) {
+ return if (SCM_DYNSTACK_PREV_OFFSET(top)) top - SCM_DYNSTACK_PREV_OFFSET(top) else NULL;
+}
+pub inline fn SCM_DYNSTACK_NEXT(top: anytype) @TypeOf(if (SCM_DYNSTACK_TAG(top)) (top + SCM_DYNSTACK_TAG_LEN(SCM_DYNSTACK_TAG(top))) + SCM_DYNSTACK_HEADER_LEN else NULL) {
+ return if (SCM_DYNSTACK_TAG(top)) (top + SCM_DYNSTACK_TAG_LEN(SCM_DYNSTACK_TAG(top))) + SCM_DYNSTACK_HEADER_LEN else NULL;
+}
+pub inline fn SCM_DYNSTACK_FIRST(dynstack: anytype) @TypeOf(dynstack.*.base + SCM_DYNSTACK_HEADER_LEN) {
+ return dynstack.*.base + SCM_DYNSTACK_HEADER_LEN;
+}
+pub inline fn SCM_DYNSTACK_CAPACITY(dynstack: anytype) @TypeOf(dynstack.*.limit - dynstack.*.base) {
+ return dynstack.*.limit - dynstack.*.base;
+}
+pub inline fn SCM_DYNSTACK_SPACE(dynstack: anytype) @TypeOf(dynstack.*.limit - dynstack.*.top) {
+ return dynstack.*.limit - dynstack.*.top;
+}
+pub inline fn SCM_DYNSTACK_HEIGHT(dynstack: anytype) @TypeOf(dynstack.*.top - dynstack.*.base) {
+ return dynstack.*.top - dynstack.*.base;
+}
+pub inline fn SCM_DYNSTACK_HAS_SPACE(dynstack: anytype, n: anytype) @TypeOf(SCM_DYNSTACK_SPACE(dynstack) >= (n + SCM_DYNSTACK_HEADER_LEN)) {
+ return SCM_DYNSTACK_SPACE(dynstack) >= (n + SCM_DYNSTACK_HEADER_LEN);
+}
+pub const SCM_ISELECT_H = "";
+pub const SELECT_TYPE = fd_set;
+pub const SCM_SMOB_H = "";
+pub const SCM_SNARF_H = "";
+pub const SCM_SUPPORT_STATIC_ALLOCATION = "";
+pub inline fn SCM_SNARF_HERE(X: anytype) @TypeOf(X) {
+ return X;
+}
+pub const SCM_SMOB_TYPE_MASK = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0xffff, .hexadecimal);
+pub inline fn SCM_SMOB_TYPE_BITS(tc: anytype) @TypeOf(tc) {
+ return tc;
+}
+pub inline fn SCM_TC2SMOBNUM(x: anytype) @TypeOf(@as(c_int, 0x0ff) & (x >> @as(c_int, 8))) {
+ return @as(c_int, 0x0ff) & (x >> @as(c_int, 8));
+}
+pub inline fn SCM_SMOBNUM(x: anytype) @TypeOf(SCM_TC2SMOBNUM(SCM_CELL_TYPE(x))) {
+ return SCM_TC2SMOBNUM(SCM_CELL_TYPE(x));
+}
+pub inline fn SCM_SMOBNAME(smobnum: anytype) @TypeOf(scm_smobs[smobnum].name) {
+ return scm_smobs[smobnum].name;
+}
+pub inline fn SCM_SMOB_PREDICATE(tag: anytype, obj: anytype) @TypeOf(SCM_HAS_TYP16(obj, tag)) {
+ return SCM_HAS_TYP16(obj, tag);
+}
+pub inline fn SCM_SMOB_DESCRIPTOR(x: anytype) @TypeOf(scm_smobs[SCM_SMOBNUM(x)]) {
+ return scm_smobs[SCM_SMOBNUM(x)];
+}
+pub inline fn SCM_SMOB_APPLICABLE_P(x: anytype) @TypeOf(SCM_SMOB_DESCRIPTOR(x).apply) {
+ return SCM_SMOB_DESCRIPTOR(x).apply;
+}
+pub const SCM_I_MAX_SMOB_TYPE_COUNT = @as(c_int, 256);
+pub inline fn SCM_SMOB_DATA_N(x: anytype, n: anytype) @TypeOf(SCM_CELL_WORD(x, n)) {
+ return SCM_CELL_WORD(x, n);
+}
+pub inline fn SCM_SET_SMOB_DATA_N(x: anytype, n: anytype, data: anytype) @TypeOf(SCM_SET_CELL_WORD(x, n, data)) {
+ return SCM_SET_CELL_WORD(x, n, data);
+}
+pub inline fn SCM_SMOB_DATA_0(x: anytype) @TypeOf(SCM_SMOB_DATA_N(x, @as(c_int, 0))) {
+ return SCM_SMOB_DATA_N(x, @as(c_int, 0));
+}
+pub inline fn SCM_SMOB_DATA_1(x: anytype) @TypeOf(SCM_SMOB_DATA_N(x, @as(c_int, 1))) {
+ return SCM_SMOB_DATA_N(x, @as(c_int, 1));
+}
+pub inline fn SCM_SMOB_DATA_2(x: anytype) @TypeOf(SCM_SMOB_DATA_N(x, @as(c_int, 2))) {
+ return SCM_SMOB_DATA_N(x, @as(c_int, 2));
+}
+pub inline fn SCM_SMOB_DATA_3(x: anytype) @TypeOf(SCM_SMOB_DATA_N(x, @as(c_int, 3))) {
+ return SCM_SMOB_DATA_N(x, @as(c_int, 3));
+}
+pub inline fn SCM_SET_SMOB_DATA_0(x: anytype, data: anytype) @TypeOf(SCM_SET_SMOB_DATA_N(x, @as(c_int, 0), data)) {
+ return SCM_SET_SMOB_DATA_N(x, @as(c_int, 0), data);
+}
+pub inline fn SCM_SET_SMOB_DATA_1(x: anytype, data: anytype) @TypeOf(SCM_SET_SMOB_DATA_N(x, @as(c_int, 1), data)) {
+ return SCM_SET_SMOB_DATA_N(x, @as(c_int, 1), data);
+}
+pub inline fn SCM_SET_SMOB_DATA_2(x: anytype, data: anytype) @TypeOf(SCM_SET_SMOB_DATA_N(x, @as(c_int, 2), data)) {
+ return SCM_SET_SMOB_DATA_N(x, @as(c_int, 2), data);
+}
+pub inline fn SCM_SET_SMOB_DATA_3(x: anytype, data: anytype) @TypeOf(SCM_SET_SMOB_DATA_N(x, @as(c_int, 3), data)) {
+ return SCM_SET_SMOB_DATA_N(x, @as(c_int, 3), data);
+}
+pub inline fn SCM_SMOB_FLAGS(x: anytype) @TypeOf(SCM_SMOB_DATA_0(x) >> @as(c_int, 16)) {
+ return SCM_SMOB_DATA_0(x) >> @as(c_int, 16);
+}
+pub inline fn SCM_SMOB_DATA(x: anytype) @TypeOf(SCM_SMOB_DATA_1(x)) {
+ return SCM_SMOB_DATA_1(x);
+}
+pub inline fn SCM_SET_SMOB_FLAGS(x: anytype, data: anytype) @TypeOf(SCM_SET_SMOB_DATA_0(x, (SCM_CELL_TYPE(x) & @import("std").zig.c_translation.promoteIntLiteral(c_int, 0xffff, .hexadecimal)) | (data << @as(c_int, 16)))) {
+ return SCM_SET_SMOB_DATA_0(x, (SCM_CELL_TYPE(x) & @import("std").zig.c_translation.promoteIntLiteral(c_int, 0xffff, .hexadecimal)) | (data << @as(c_int, 16)));
+}
+pub inline fn SCM_SET_SMOB_DATA(x: anytype, data: anytype) @TypeOf(SCM_SET_SMOB_DATA_1(x, data)) {
+ return SCM_SET_SMOB_DATA_1(x, data);
+}
+pub inline fn SCM_SMOB_OBJECT_N(x: anytype, n: anytype) @TypeOf(SCM_CELL_OBJECT(x, n)) {
+ return SCM_CELL_OBJECT(x, n);
+}
+pub inline fn SCM_SET_SMOB_OBJECT_N(x: anytype, n: anytype, obj: anytype) @TypeOf(SCM_SET_CELL_OBJECT(x, n, obj)) {
+ return SCM_SET_CELL_OBJECT(x, n, obj);
+}
+pub inline fn SCM_SMOB_OBJECT_N_LOC(x: anytype, n: anytype) @TypeOf(SCM_CELL_OBJECT_LOC(x, n)) {
+ return SCM_CELL_OBJECT_LOC(x, n);
+}
+pub inline fn SCM_SMOB_OBJECT_1(x: anytype) @TypeOf(SCM_SMOB_OBJECT_N(x, @as(c_int, 1))) {
+ return SCM_SMOB_OBJECT_N(x, @as(c_int, 1));
+}
+pub inline fn SCM_SMOB_OBJECT_2(x: anytype) @TypeOf(SCM_SMOB_OBJECT_N(x, @as(c_int, 2))) {
+ return SCM_SMOB_OBJECT_N(x, @as(c_int, 2));
+}
+pub inline fn SCM_SMOB_OBJECT_3(x: anytype) @TypeOf(SCM_SMOB_OBJECT_N(x, @as(c_int, 3))) {
+ return SCM_SMOB_OBJECT_N(x, @as(c_int, 3));
+}
+pub inline fn SCM_SET_SMOB_OBJECT_1(x: anytype, obj: anytype) @TypeOf(SCM_SET_SMOB_OBJECT_N(x, @as(c_int, 1), obj)) {
+ return SCM_SET_SMOB_OBJECT_N(x, @as(c_int, 1), obj);
+}
+pub inline fn SCM_SET_SMOB_OBJECT_2(x: anytype, obj: anytype) @TypeOf(SCM_SET_SMOB_OBJECT_N(x, @as(c_int, 2), obj)) {
+ return SCM_SET_SMOB_OBJECT_N(x, @as(c_int, 2), obj);
+}
+pub inline fn SCM_SET_SMOB_OBJECT_3(x: anytype, obj: anytype) @TypeOf(SCM_SET_SMOB_OBJECT_N(x, @as(c_int, 3), obj)) {
+ return SCM_SET_SMOB_OBJECT_N(x, @as(c_int, 3), obj);
+}
+pub inline fn SCM_SMOB_OBJECT_0_LOC(x: anytype) @TypeOf(SCM_SMOB_OBJECT_N_LOC(x, @as(c_int, 0))) {
+ return SCM_SMOB_OBJECT_N_LOC(x, @as(c_int, 0));
+}
+pub inline fn SCM_SMOB_OBJECT_1_LOC(x: anytype) @TypeOf(SCM_SMOB_OBJECT_N_LOC(x, @as(c_int, 1))) {
+ return SCM_SMOB_OBJECT_N_LOC(x, @as(c_int, 1));
+}
+pub inline fn SCM_SMOB_OBJECT_2_LOC(x: anytype) @TypeOf(SCM_SMOB_OBJECT_N_LOC(x, @as(c_int, 2))) {
+ return SCM_SMOB_OBJECT_N_LOC(x, @as(c_int, 2));
+}
+pub inline fn SCM_SMOB_OBJECT_3_LOC(x: anytype) @TypeOf(SCM_SMOB_OBJECT_N_LOC(x, @as(c_int, 3))) {
+ return SCM_SMOB_OBJECT_N_LOC(x, @as(c_int, 3));
+}
+pub inline fn SCM_SMOB_OBJECT(x: anytype) @TypeOf(SCM_SMOB_OBJECT_1(x)) {
+ return SCM_SMOB_OBJECT_1(x);
+}
+pub inline fn SCM_SET_SMOB_OBJECT(x: anytype, obj: anytype) @TypeOf(SCM_SET_SMOB_OBJECT_1(x, obj)) {
+ return SCM_SET_SMOB_OBJECT_1(x, obj);
+}
+pub inline fn SCM_SMOB_OBJECT_LOC(x: anytype) @TypeOf(SCM_SMOB_OBJECT_1_LOC(x)) {
+ return SCM_SMOB_OBJECT_1_LOC(x);
+}
+pub inline fn SCM_SMOB_APPLY_0(x: anytype) @TypeOf(scm_call_0(x)) {
+ return scm_call_0(x);
+}
+pub inline fn SCM_SMOB_APPLY_1(x: anytype, a1: anytype) @TypeOf(scm_call_1(x, a1)) {
+ return scm_call_1(x, a1);
+}
+pub inline fn SCM_SMOB_APPLY_2(x: anytype, a1: anytype, a2: anytype) @TypeOf(scm_call_2(x, a1, a2)) {
+ return scm_call_2(x, a1, a2);
+}
+pub const _SCM_VM_H_ = "";
+pub const _SCM_PROGRAMS_H_ = "";
+pub inline fn SCM_PROGRAM_P(x: anytype) @TypeOf(SCM_HAS_TYP7(x, scm_tc7_program)) {
+ return SCM_HAS_TYP7(x, scm_tc7_program);
+}
+pub inline fn SCM_PROGRAM_CODE(x: anytype) [*c]u32 {
+ return @import("std").zig.c_translation.cast([*c]u32, SCM_CELL_WORD_1(x));
+}
+pub inline fn SCM_PROGRAM_FREE_VARIABLES(x: anytype) @TypeOf(SCM_CELL_OBJECT_LOC(x, @as(c_int, 2))) {
+ return SCM_CELL_OBJECT_LOC(x, @as(c_int, 2));
+}
+pub inline fn SCM_PROGRAM_FREE_VARIABLE_REF(x: anytype, i: anytype) @TypeOf(SCM_PROGRAM_FREE_VARIABLES(x)[i]) {
+ return SCM_PROGRAM_FREE_VARIABLES(x)[i];
+}
+pub inline fn SCM_PROGRAM_NUM_FREE_VARIABLES(x: anytype) @TypeOf(SCM_CELL_WORD_0(x) >> @as(c_int, 16)) {
+ return SCM_CELL_WORD_0(x) >> @as(c_int, 16);
+}
+pub const SCM_F_PROGRAM_IS_BOOT = @as(c_int, 0x100);
+pub const SCM_F_PROGRAM_IS_PRIMITIVE = @as(c_int, 0x200);
+pub const SCM_F_PROGRAM_IS_PRIMITIVE_GENERIC = @as(c_int, 0x400);
+pub const SCM_F_PROGRAM_IS_CONTINUATION = @as(c_int, 0x800);
+pub const SCM_F_PROGRAM_IS_PARTIAL_CONTINUATION = @as(c_int, 0x1000);
+pub const SCM_F_PROGRAM_IS_FOREIGN = @as(c_int, 0x2000);
+pub inline fn SCM_PROGRAM_IS_BOOT(x: anytype) @TypeOf(SCM_CELL_WORD_0(x) & SCM_F_PROGRAM_IS_BOOT) {
+ return SCM_CELL_WORD_0(x) & SCM_F_PROGRAM_IS_BOOT;
+}
+pub inline fn SCM_PROGRAM_IS_PRIMITIVE(x: anytype) @TypeOf(SCM_CELL_WORD_0(x) & SCM_F_PROGRAM_IS_PRIMITIVE) {
+ return SCM_CELL_WORD_0(x) & SCM_F_PROGRAM_IS_PRIMITIVE;
+}
+pub inline fn SCM_PROGRAM_IS_PRIMITIVE_GENERIC(x: anytype) @TypeOf(SCM_CELL_WORD_0(x) & SCM_F_PROGRAM_IS_PRIMITIVE_GENERIC) {
+ return SCM_CELL_WORD_0(x) & SCM_F_PROGRAM_IS_PRIMITIVE_GENERIC;
+}
+pub inline fn SCM_PROGRAM_IS_CONTINUATION(x: anytype) @TypeOf(SCM_CELL_WORD_0(x) & SCM_F_PROGRAM_IS_CONTINUATION) {
+ return SCM_CELL_WORD_0(x) & SCM_F_PROGRAM_IS_CONTINUATION;
+}
+pub inline fn SCM_PROGRAM_IS_PARTIAL_CONTINUATION(x: anytype) @TypeOf(SCM_CELL_WORD_0(x) & SCM_F_PROGRAM_IS_PARTIAL_CONTINUATION) {
+ return SCM_CELL_WORD_0(x) & SCM_F_PROGRAM_IS_PARTIAL_CONTINUATION;
+}
+pub inline fn SCM_PROGRAM_IS_FOREIGN(x: anytype) @TypeOf(SCM_CELL_WORD_0(x) & SCM_F_PROGRAM_IS_FOREIGN) {
+ return SCM_CELL_WORD_0(x) & SCM_F_PROGRAM_IS_FOREIGN;
+}
+pub const SCM_VM_REGULAR_ENGINE = @as(c_int, 0);
+pub const SCM_VM_DEBUG_ENGINE = @as(c_int, 1);
+pub const SCM_VM_NUM_ENGINES = @as(c_int, 2);
+pub const SCM_F_VM_CONT_PARTIAL = @as(c_int, 0x1);
+pub const SCM_F_VM_CONT_REWINDABLE = @as(c_int, 0x2);
+pub inline fn SCM_VM_CONT_P(OBJ: anytype) @TypeOf(SCM_HAS_TYP7(OBJ, scm_tc7_vm_cont)) {
+ return SCM_HAS_TYP7(OBJ, scm_tc7_vm_cont);
+}
+pub inline fn SCM_VM_CONT_DATA(CONT: anytype) [*c]struct_scm_vm_cont {
+ return @import("std").zig.c_translation.cast([*c]struct_scm_vm_cont, SCM_CELL_WORD_1(CONT));
+}
+pub inline fn SCM_VM_CONT_PARTIAL_P(CONT: anytype) @TypeOf(SCM_VM_CONT_DATA(CONT).*.flags & SCM_F_VM_CONT_PARTIAL) {
+ return SCM_VM_CONT_DATA(CONT).*.flags & SCM_F_VM_CONT_PARTIAL;
+}
+pub inline fn SCM_VM_CONT_REWINDABLE_P(CONT: anytype) @TypeOf(SCM_VM_CONT_DATA(CONT).*.flags & SCM_F_VM_CONT_REWINDABLE) {
+ return SCM_VM_CONT_DATA(CONT).*.flags & SCM_F_VM_CONT_REWINDABLE;
+}
+pub const SCM_PTHREADS_THREADS_H = "";
+pub const _PTHREAD_H = @as(c_int, 1);
+pub const _SCHED_H = @as(c_int, 1);
+pub const _BITS_SCHED_H = @as(c_int, 1);
+pub const SCHED_OTHER = @as(c_int, 0);
+pub const SCHED_FIFO = @as(c_int, 1);
+pub const SCHED_RR = @as(c_int, 2);
+pub const _BITS_TYPES_STRUCT_SCHED_PARAM = @as(c_int, 1);
+pub const _BITS_CPU_SET_H = @as(c_int, 1);
+pub const __CPU_SETSIZE = @as(c_int, 1024);
+pub const __NCPUBITS = @as(c_int, 8) * @import("std").zig.c_translation.sizeof(__cpu_mask);
+pub inline fn __CPUELT(cpu: anytype) @TypeOf(cpu / __NCPUBITS) {
+ return cpu / __NCPUBITS;
+}
+pub inline fn __CPUMASK(cpu: anytype) @TypeOf(@import("std").zig.c_translation.cast(__cpu_mask, @as(c_int, 1)) << (cpu % __NCPUBITS)) {
+ return @import("std").zig.c_translation.cast(__cpu_mask, @as(c_int, 1)) << (cpu % __NCPUBITS);
+}
+pub inline fn __CPU_COUNT_S(setsize: anytype, cpusetp: anytype) @TypeOf(__sched_cpucount(setsize, cpusetp)) {
+ return __sched_cpucount(setsize, cpusetp);
+}
+pub inline fn __CPU_ALLOC_SIZE(count: anytype) @TypeOf((((count + __NCPUBITS) - @as(c_int, 1)) / __NCPUBITS) * @import("std").zig.c_translation.sizeof(__cpu_mask)) {
+ return (((count + __NCPUBITS) - @as(c_int, 1)) / __NCPUBITS) * @import("std").zig.c_translation.sizeof(__cpu_mask);
+}
+pub inline fn __CPU_ALLOC(count: anytype) @TypeOf(__sched_cpualloc(count)) {
+ return __sched_cpualloc(count);
+}
+pub inline fn __CPU_FREE(cpuset: anytype) @TypeOf(__sched_cpufree(cpuset)) {
+ return __sched_cpufree(cpuset);
+}
+// pub const __sched_priority = sched_priority;
+pub const PTHREAD_CANCELED = @import("std").zig.c_translation.cast(?*anyopaque, -@as(c_int, 1));
+pub const PTHREAD_ONCE_INIT = @as(c_int, 0);
+pub const PTHREAD_BARRIER_SERIAL_THREAD = -@as(c_int, 1);
+pub const __cleanup_fct_attribute = "";
+pub inline fn __sigsetjmp_cancel(env: anytype, savemask: anytype) @TypeOf(__sigsetjmp(@import("std").zig.c_translation.cast([*c]struct___jmp_buf_tag, @import("std").zig.c_translation.cast(?*anyopaque, env)), savemask)) {
+ return __sigsetjmp(@import("std").zig.c_translation.cast([*c]struct___jmp_buf_tag, @import("std").zig.c_translation.cast(?*anyopaque, env)), savemask);
+}
+pub const scm_i_pthread_t = pthread_t;
+pub const scm_i_pthread_self = pthread_self;
+pub const scm_i_pthread_create = pthread_create;
+pub const scm_i_pthread_detach = pthread_detach;
+pub const scm_i_pthread_exit = pthread_exit;
+pub const scm_i_pthread_cancel = pthread_cancel;
+pub const scm_i_pthread_cleanup_push = pthread_cleanup_push;
+pub const scm_i_pthread_cleanup_pop = pthread_cleanup_pop;
+pub const scm_i_sched_yield = sched_yield;
+pub const scm_i_pthread_sigmask = pthread_sigmask;
+pub const SCM_I_PTHREAD_MUTEX_INITIALIZER = PTHREAD_MUTEX_INITIALIZER;
+pub const scm_i_pthread_mutex_t = pthread_mutex_t;
+pub const scm_i_pthread_mutex_init = pthread_mutex_init;
+pub const scm_i_pthread_mutex_destroy = pthread_mutex_destroy;
+pub const scm_i_pthread_mutex_trylock = pthread_mutex_trylock;
+pub const scm_i_pthread_mutex_lock = pthread_mutex_lock;
+pub const scm_i_pthread_mutex_unlock = pthread_mutex_unlock;
+pub const SCM_I_PTHREAD_COND_INITIALIZER = PTHREAD_COND_INITIALIZER;
+pub const scm_i_pthread_cond_t = pthread_cond_t;
+pub const scm_i_pthread_cond_init = pthread_cond_init;
+pub const scm_i_pthread_cond_destroy = pthread_cond_destroy;
+pub const scm_i_pthread_cond_signal = pthread_cond_signal;
+pub const scm_i_pthread_cond_broadcast = pthread_cond_broadcast;
+pub const scm_i_pthread_cond_wait = pthread_cond_wait;
+pub const scm_i_pthread_cond_timedwait = pthread_cond_timedwait;
+pub const scm_i_pthread_once_t = pthread_once_t;
+pub const scm_i_pthread_once = pthread_once;
+pub const SCM_I_PTHREAD_ONCE_INIT = PTHREAD_ONCE_INIT;
+pub const scm_i_pthread_key_t = pthread_key_t;
+pub const scm_i_pthread_key_create = pthread_key_create;
+pub const scm_i_pthread_setspecific = pthread_setspecific;
+pub const scm_i_pthread_getspecific = pthread_getspecific;
+pub const scm_i_scm_pthread_mutex_lock = scm_pthread_mutex_lock;
+pub const scm_i_dynwind_pthread_mutex_lock = scm_dynwind_pthread_mutex_lock;
+pub const scm_i_scm_pthread_cond_wait = scm_pthread_cond_wait;
+pub const scm_i_scm_pthread_cond_timedwait = scm_pthread_cond_timedwait;
+pub const SCM_INLINE_GC_GRANULE_WORDS = @as(c_int, 2);
+pub const SCM_INLINE_GC_GRANULE_BYTES = @import("std").zig.c_translation.sizeof(?*anyopaque) * SCM_INLINE_GC_GRANULE_WORDS;
+pub const SCM_INLINE_GC_FREELIST_COUNT = @as(c_uint, 256) / SCM_INLINE_GC_GRANULE_BYTES;
+pub inline fn SCM_I_IS_THREAD(x: anytype) @TypeOf(SCM_SMOB_PREDICATE(scm_tc16_thread, x)) {
+ return SCM_SMOB_PREDICATE(scm_tc16_thread, x);
+}
+pub inline fn SCM_I_THREAD_DATA(x: anytype) [*c]scm_thread {
+ return @import("std").zig.c_translation.cast([*c]scm_thread, SCM_SMOB_DATA(x));
+}
+pub inline fn SCM_VALIDATE_THREAD(pos: anytype, a: anytype) @TypeOf(scm_assert_smob_type(scm_tc16_thread, a)) {
+ _ = pos;
+ return scm_assert_smob_type(scm_tc16_thread, a);
+}
+pub inline fn SCM_VALIDATE_MUTEX(pos: anytype, a: anytype) @TypeOf(scm_assert_smob_type(scm_tc16_mutex, a)) {
+ _ = pos;
+ return scm_assert_smob_type(scm_tc16_mutex, a);
+}
+pub inline fn SCM_VALIDATE_CONDVAR(pos: anytype, a: anytype) @TypeOf(scm_assert_smob_type(scm_tc16_condvar, a)) {
+ _ = pos;
+ return scm_assert_smob_type(scm_tc16_condvar, a);
+}
+pub const SCM_TICK = scm_async_tick();
+pub const SCM_ATOMIC_H = "";
+pub const SCM_BITVECTORS_H = "";
+pub const SCM_BYTEVECTORS_H = "";
+pub const SCM_UNIFORM_H = "";
+pub inline fn SCM_ARRAY_ELEMENT_TYPE_IS_UNBOXED(t: anytype) @TypeOf(scm_i_array_element_type_sizes[t] != @as(c_int, 0)) {
+ return scm_i_array_element_type_sizes[t] != @as(c_int, 0);
+}
+pub const SCM_BYTEVECTOR_HEADER_SIZE = @as(c_uint, 4);
+pub inline fn SCM_BYTEVECTOR_LENGTH(_bv: anytype) usize {
+ return @import("std").zig.c_translation.cast(usize, SCM_CELL_WORD_1(_bv));
+}
+pub inline fn SCM_BYTEVECTOR_CONTENTS(_bv: anytype) [*c]i8 {
+ return @import("std").zig.c_translation.cast([*c]i8, SCM_CELL_WORD_2(_bv));
+}
+pub inline fn SCM_BYTEVECTOR_PARENT(_bv: anytype) @TypeOf(SCM_CELL_OBJECT_3(_bv)) {
+ return SCM_CELL_OBJECT_3(_bv);
+}
+pub inline fn SCM_BYTEVECTOR_P(x: anytype) @TypeOf(SCM_HAS_TYP7(x, scm_tc7_bytevector)) {
+ return SCM_HAS_TYP7(x, scm_tc7_bytevector);
+}
+pub inline fn SCM_BYTEVECTOR_FLAGS(_bv: anytype) @TypeOf(SCM_CELL_TYPE(_bv) >> @as(c_ulong, 7)) {
+ return SCM_CELL_TYPE(_bv) >> @as(c_ulong, 7);
+}
+pub inline fn SCM_SET_BYTEVECTOR_FLAGS(_bv: anytype, _f: anytype) @TypeOf(SCM_SET_CELL_TYPE(_bv, scm_tc7_bytevector | (@import("std").zig.c_translation.cast(scm_t_bits, _f) << @as(c_ulong, 7)))) {
+ return SCM_SET_CELL_TYPE(_bv, scm_tc7_bytevector | (@import("std").zig.c_translation.cast(scm_t_bits, _f) << @as(c_ulong, 7)));
+}
+pub const SCM_F_BYTEVECTOR_CONTIGUOUS = @as(c_ulong, 0x100);
+pub const SCM_F_BYTEVECTOR_IMMUTABLE = @as(c_ulong, 0x200);
+pub inline fn SCM_MUTABLE_BYTEVECTOR_P(x: anytype) @TypeOf((SCM_NIMP(x) != 0) and ((SCM_CELL_TYPE(x) & (@as(c_ulong, 0x7f) | (SCM_F_BYTEVECTOR_IMMUTABLE << @as(c_ulong, 7)))) == scm_tc7_bytevector)) {
+ return (SCM_NIMP(x) != 0) and ((SCM_CELL_TYPE(x) & (@as(c_ulong, 0x7f) | (SCM_F_BYTEVECTOR_IMMUTABLE << @as(c_ulong, 7)))) == scm_tc7_bytevector);
+}
+pub inline fn SCM_BYTEVECTOR_ELEMENT_TYPE(_bv: anytype) @TypeOf(SCM_BYTEVECTOR_FLAGS(_bv) & @as(c_ulong, 0xff)) {
+ return SCM_BYTEVECTOR_FLAGS(_bv) & @as(c_ulong, 0xff);
+}
+pub inline fn SCM_BYTEVECTOR_CONTIGUOUS_P(_bv: anytype) @TypeOf(SCM_BYTEVECTOR_FLAGS(_bv) & SCM_F_BYTEVECTOR_CONTIGUOUS) {
+ return SCM_BYTEVECTOR_FLAGS(_bv) & SCM_F_BYTEVECTOR_CONTIGUOUS;
+}
+pub inline fn SCM_BYTEVECTOR_TYPE_SIZE(@"var": anytype) @TypeOf(scm_i_array_element_type_sizes[SCM_BYTEVECTOR_ELEMENT_TYPE(@"var")] / @as(c_int, 8)) {
+ return scm_i_array_element_type_sizes[SCM_BYTEVECTOR_ELEMENT_TYPE(@"var")] / @as(c_int, 8);
+}
+pub inline fn SCM_BYTEVECTOR_TYPED_LENGTH(@"var": anytype) @TypeOf(SCM_BYTEVECTOR_LENGTH(@"var") / SCM_BYTEVECTOR_TYPE_SIZE(@"var")) {
+ return SCM_BYTEVECTOR_LENGTH(@"var") / SCM_BYTEVECTOR_TYPE_SIZE(@"var");
+}
+pub const SCM_GC_BYTEVECTOR = "bytevector";
+pub const SCM_CONTINUATIONS_H = "";
+pub inline fn SCM_CONTINUATIONP(x: anytype) @TypeOf((SCM_PROGRAM_P(x) != 0) and (SCM_PROGRAM_IS_CONTINUATION(x) != 0)) {
+ return (SCM_PROGRAM_P(x) != 0) and (SCM_PROGRAM_IS_CONTINUATION(x) != 0);
+}
+pub const SCM_DYNL_H = "";
+pub const SCM_DYNWIND_H = "";
+pub const SCM_EQ_H = "";
+pub inline fn SCM_EQ_P(x: anytype, y: anytype) @TypeOf(scm_is_eq(x, y)) {
+ return scm_is_eq(x, y);
+}
+pub const SCM_EVAL_H = "";
+pub const SCM_STRUCT_H = "";
+pub const SCM_VTABLE_BASE_LAYOUT = "pw" ++ "uh" ++ "uh" ++ "pw" ++ "ph" ++ "uh" ++ "uh" ++ "uh";
+pub const scm_vtable_index_layout = @as(c_int, 0);
+pub const scm_vtable_index_flags = @as(c_int, 1);
+pub const scm_vtable_index_instance_finalize = @as(c_int, 2);
+pub const scm_vtable_index_instance_printer = @as(c_int, 3);
+pub const scm_vtable_index_name = @as(c_int, 4);
+pub const scm_vtable_index_size = @as(c_int, 5);
+pub const scm_vtable_index_unboxed_fields = @as(c_int, 6);
+pub const scm_vtable_index_reserved_7 = @as(c_int, 7);
+pub const scm_vtable_offset_user = @as(c_int, 8);
+pub const SCM_APPLICABLE_BASE_LAYOUT = "pw";
+pub const SCM_APPLICABLE_WITH_SETTER_BASE_LAYOUT = "pw" ++ "pw";
+pub const scm_applicable_struct_index_procedure = @as(c_int, 0);
+pub const scm_applicable_struct_index_setter = @as(c_int, 1);
+pub const SCM_VTABLE_FLAG_VALIDATED = @as(c_long, 1) << @as(c_int, 0);
+pub const SCM_VTABLE_FLAG_VTABLE = @as(c_long, 1) << @as(c_int, 1);
+pub const SCM_VTABLE_FLAG_APPLICABLE_VTABLE = @as(c_long, 1) << @as(c_int, 2);
+pub const SCM_VTABLE_FLAG_APPLICABLE = @as(c_long, 1) << @as(c_int, 3);
+pub const SCM_VTABLE_FLAG_SETTER_VTABLE = @as(c_long, 1) << @as(c_int, 4);
+pub const SCM_VTABLE_FLAG_SETTER = @as(c_long, 1) << @as(c_int, 5);
+pub const SCM_VTABLE_FLAG_RESERVED_0 = @as(c_long, 1) << @as(c_int, 6);
+pub const SCM_VTABLE_FLAG_RESERVED_1 = @as(c_long, 1) << @as(c_int, 7);
+pub const SCM_VTABLE_FLAG_SMOB_0 = @as(c_long, 1) << @as(c_int, 8);
+pub const SCM_VTABLE_FLAG_GOOPS_0 = @as(c_long, 1) << @as(c_int, 9);
+pub const SCM_VTABLE_FLAG_GOOPS_1 = @as(c_long, 1) << @as(c_int, 10);
+pub const SCM_VTABLE_FLAG_GOOPS_2 = @as(c_long, 1) << @as(c_int, 11);
+pub const SCM_VTABLE_FLAG_GOOPS_3 = @as(c_long, 1) << @as(c_int, 12);
+pub const SCM_VTABLE_FLAG_GOOPS_4 = @as(c_long, 1) << @as(c_int, 13);
+pub const SCM_VTABLE_FLAG_RESERVED_2 = @as(c_long, 1) << @as(c_int, 14);
+pub const SCM_VTABLE_FLAG_RESERVED_3 = @as(c_long, 1) << @as(c_int, 15);
+pub const SCM_VTABLE_USER_FLAG_SHIFT = @as(c_int, 16);
+pub inline fn SCM_STRUCTP(X: anytype) @TypeOf(!(SCM_IMP(X) != 0) and (SCM_TYP3(X) == scm_tc3_struct)) {
+ return !(SCM_IMP(X) != 0) and (SCM_TYP3(X) == scm_tc3_struct);
+}
+pub inline fn SCM_STRUCT_SLOTS(X: anytype) @TypeOf(SCM_CELL_OBJECT_LOC(X, @as(c_int, 1))) {
+ return SCM_CELL_OBJECT_LOC(X, @as(c_int, 1));
+}
+pub inline fn SCM_STRUCT_SLOT_REF(X: anytype, I: anytype) @TypeOf(SCM_STRUCT_SLOTS(X)[I]) {
+ return SCM_STRUCT_SLOTS(X)[I];
+}
+pub inline fn SCM_STRUCT_DATA(X: anytype) [*c]scm_t_bits {
+ return @import("std").zig.c_translation.cast([*c]scm_t_bits, SCM_STRUCT_SLOTS(X));
+}
+pub inline fn SCM_STRUCT_DATA_REF(X: anytype, I: anytype) @TypeOf(SCM_STRUCT_DATA(X)[I]) {
+ return SCM_STRUCT_DATA(X)[I];
+}
+pub inline fn SCM_VTABLE_LAYOUT(X: anytype) @TypeOf(SCM_STRUCT_SLOT_REF(X, scm_vtable_index_layout)) {
+ return SCM_STRUCT_SLOT_REF(X, scm_vtable_index_layout);
+}
+pub inline fn SCM_SET_VTABLE_LAYOUT(X: anytype, L: anytype) @TypeOf(SCM_STRUCT_SLOT_SET(X, scm_vtable_index_layout, L)) {
+ return SCM_STRUCT_SLOT_SET(X, scm_vtable_index_layout, L);
+}
+pub inline fn SCM_VTABLE_FLAGS(X: anytype) @TypeOf(SCM_STRUCT_DATA_REF(X, scm_vtable_index_flags)) {
+ return SCM_STRUCT_DATA_REF(X, scm_vtable_index_flags);
+}
+pub inline fn SCM_VTABLE_FLAG_IS_SET(X: anytype, F: anytype) @TypeOf(SCM_STRUCT_DATA_REF(X, scm_vtable_index_flags) & F) {
+ return SCM_STRUCT_DATA_REF(X, scm_vtable_index_flags) & F;
+}
+pub inline fn SCM_VTABLE_INSTANCE_FINALIZER(X: anytype) scm_t_struct_finalize {
+ return @import("std").zig.c_translation.cast(scm_t_struct_finalize, SCM_STRUCT_DATA_REF(X, scm_vtable_index_instance_finalize));
+}
+pub inline fn SCM_SET_VTABLE_INSTANCE_FINALIZER(X: anytype, P: anytype) @TypeOf(SCM_STRUCT_DATA_SET(X, scm_vtable_index_instance_finalize, @import("std").zig.c_translation.cast(scm_t_bits, P))) {
+ return SCM_STRUCT_DATA_SET(X, scm_vtable_index_instance_finalize, @import("std").zig.c_translation.cast(scm_t_bits, P));
+}
+pub inline fn SCM_VTABLE_INSTANCE_PRINTER(X: anytype) @TypeOf(SCM_STRUCT_SLOT_REF(X, scm_vtable_index_instance_printer)) {
+ return SCM_STRUCT_SLOT_REF(X, scm_vtable_index_instance_printer);
+}
+pub inline fn SCM_SET_VTABLE_INSTANCE_PRINTER(X: anytype, P: anytype) @TypeOf(SCM_STRUCT_SLOT_SET(X, scm_vtable_index_instance_printer, P)) {
+ return SCM_STRUCT_SLOT_SET(X, scm_vtable_index_instance_printer, P);
+}
+pub inline fn SCM_VTABLE_NAME(X: anytype) @TypeOf(SCM_STRUCT_SLOT_REF(X, scm_vtable_index_name)) {
+ return SCM_STRUCT_SLOT_REF(X, scm_vtable_index_name);
+}
+pub inline fn SCM_SET_VTABLE_NAME(X: anytype, V: anytype) @TypeOf(SCM_STRUCT_SLOT_SET(X, scm_vtable_index_name, V)) {
+ return SCM_STRUCT_SLOT_SET(X, scm_vtable_index_name, V);
+}
+pub inline fn SCM_VTABLE_SIZE(X: anytype) @TypeOf(SCM_STRUCT_DATA_REF(X, scm_vtable_index_size)) {
+ return SCM_STRUCT_DATA_REF(X, scm_vtable_index_size);
+}
+pub inline fn SCM_VTABLE_UNBOXED_FIELDS(X: anytype) [*c]u32 {
+ return @import("std").zig.c_translation.cast([*c]u32, SCM_STRUCT_DATA_REF(X, scm_vtable_index_unboxed_fields));
+}
+pub inline fn SCM_VTABLE_FIELD_IS_UNBOXED(X: anytype, F: anytype) @TypeOf(SCM_VTABLE_UNBOXED_FIELDS(X)[F >> @as(c_int, 5)] & (@as(c_uint, 1) << (F & @as(c_int, 31)))) {
+ return SCM_VTABLE_UNBOXED_FIELDS(X)[F >> @as(c_int, 5)] & (@as(c_uint, 1) << (F & @as(c_int, 31)));
+}
+pub inline fn SCM_STRUCT_VTABLE(X: anytype) @TypeOf(SCM_PACK(SCM_CELL_WORD_0(X) - scm_tc3_struct)) {
+ return SCM_PACK(SCM_CELL_WORD_0(X) - scm_tc3_struct);
+}
+pub inline fn SCM_STRUCT_LAYOUT(X: anytype) @TypeOf(SCM_VTABLE_LAYOUT(SCM_STRUCT_VTABLE(X))) {
+ return SCM_VTABLE_LAYOUT(SCM_STRUCT_VTABLE(X));
+}
+pub inline fn SCM_STRUCT_SIZE(X: anytype) @TypeOf(SCM_VTABLE_SIZE(SCM_STRUCT_VTABLE(X))) {
+ return SCM_VTABLE_SIZE(SCM_STRUCT_VTABLE(X));
+}
+pub inline fn SCM_STRUCT_PRINTER(X: anytype) @TypeOf(SCM_VTABLE_INSTANCE_PRINTER(SCM_STRUCT_VTABLE(X))) {
+ return SCM_VTABLE_INSTANCE_PRINTER(SCM_STRUCT_VTABLE(X));
+}
+pub inline fn SCM_STRUCT_FINALIZER(X: anytype) @TypeOf(SCM_VTABLE_INSTANCE_FINALIZER(SCM_STRUCT_VTABLE(X))) {
+ return SCM_VTABLE_INSTANCE_FINALIZER(SCM_STRUCT_VTABLE(X));
+}
+pub inline fn SCM_STRUCT_VTABLE_FLAGS(X: anytype) @TypeOf(SCM_VTABLE_FLAGS(SCM_STRUCT_VTABLE(X))) {
+ return SCM_VTABLE_FLAGS(SCM_STRUCT_VTABLE(X));
+}
+pub inline fn SCM_STRUCT_VTABLE_FLAG_IS_SET(X: anytype, F: anytype) @TypeOf(SCM_VTABLE_FLAG_IS_SET(SCM_STRUCT_VTABLE(X), F)) {
+ return SCM_VTABLE_FLAG_IS_SET(SCM_STRUCT_VTABLE(X), F);
+}
+pub inline fn SCM_STRUCT_FIELD_IS_UNBOXED(X: anytype, F: anytype) @TypeOf(SCM_VTABLE_FIELD_IS_UNBOXED(SCM_STRUCT_VTABLE(X), F)) {
+ return SCM_VTABLE_FIELD_IS_UNBOXED(SCM_STRUCT_VTABLE(X), F);
+}
+pub inline fn SCM_STRUCT_APPLICABLE_P(X: anytype) @TypeOf(SCM_STRUCT_VTABLE_FLAG_IS_SET(X, SCM_VTABLE_FLAG_APPLICABLE)) {
+ return SCM_STRUCT_VTABLE_FLAG_IS_SET(X, SCM_VTABLE_FLAG_APPLICABLE);
+}
+pub inline fn SCM_STRUCT_SETTER_P(X: anytype) @TypeOf(SCM_STRUCT_VTABLE_FLAG_IS_SET(X, SCM_VTABLE_FLAG_SETTER)) {
+ return SCM_STRUCT_VTABLE_FLAG_IS_SET(X, SCM_VTABLE_FLAG_SETTER);
+}
+pub inline fn SCM_STRUCT_PROCEDURE(X: anytype) @TypeOf(SCM_STRUCT_SLOT_REF(X, scm_applicable_struct_index_procedure)) {
+ return SCM_STRUCT_SLOT_REF(X, scm_applicable_struct_index_procedure);
+}
+pub inline fn SCM_SET_STRUCT_PROCEDURE(X: anytype, P: anytype) @TypeOf(SCM_STRUCT_SLOT_SET(X, scm_applicable_struct_index_procedure, P)) {
+ return SCM_STRUCT_SLOT_SET(X, scm_applicable_struct_index_procedure, P);
+}
+pub inline fn SCM_STRUCT_SETTER(X: anytype) @TypeOf(SCM_STRUCT_SLOT_REF(X, scm_applicable_struct_index_setter)) {
+ return SCM_STRUCT_SLOT_REF(X, scm_applicable_struct_index_setter);
+}
+pub inline fn SCM_SET_STRUCT_SETTER(X: anytype, P: anytype) @TypeOf(SCM_STRUCT_SLOT_SET(X, scm_applicable_struct_index_setter, P)) {
+ return SCM_STRUCT_SLOT_SET(X, scm_applicable_struct_index_setter, P);
+}
+pub const SCM_MEMOIZE_H = "";
+pub inline fn SCM_MEMOIZED_TAG(x: anytype) @TypeOf(scm_to_uint16(scm_car(x))) {
+ return scm_to_uint16(scm_car(x));
+}
+pub inline fn SCM_MEMOIZED_ARGS(x: anytype) @TypeOf(scm_cdr(x)) {
+ return scm_cdr(x);
+}
+pub const SCM_EXTEND_ENV = scm_acons;
+pub inline fn scm_dapply(proc: anytype, arg1: anytype, args: anytype) @TypeOf(scm_apply(proc, arg1, args)) {
+ return scm_apply(proc, arg1, args);
+}
+pub inline fn scm_primitive_eval_x(exp: anytype) @TypeOf(scm_primitive_eval(exp)) {
+ return scm_primitive_eval(exp);
+}
+pub inline fn scm_eval_x(exp: anytype, module: anytype) @TypeOf(scm_eval(exp, module)) {
+ return scm_eval(exp, module);
+}
+pub const SCM_EVALEXT_H = "";
+pub const SCM_EXTENSIONS_H = "";
+pub const SCM_FDES_FINALIZERS_H = "";
+pub const SCM_FEATURE_H = "";
+pub const SCM_FILESYS_H = "";
+pub const SCM_DIR_FLAG_OPEN = @as(c_long, 1) << @as(c_int, 0);
+pub inline fn SCM_DIRP(x: anytype) @TypeOf(SCM_HAS_TYP16(x, scm_tc16_dir)) {
+ return SCM_HAS_TYP16(x, scm_tc16_dir);
+}
+pub inline fn SCM_DIR_OPEN_P(x: anytype) @TypeOf(SCM_SMOB_FLAGS(x) & SCM_DIR_FLAG_OPEN) {
+ return SCM_SMOB_FLAGS(x) & SCM_DIR_FLAG_OPEN;
+}
+pub const SCM_FINALIZERS_H = "";
+pub const SCM_FLUIDS_H = "";
+pub const SCM_VECTORS_H = "";
+pub inline fn SCM_SIMPLE_VECTOR_LENGTH(x: anytype) @TypeOf(SCM_I_VECTOR_LENGTH(x)) {
+ return SCM_I_VECTOR_LENGTH(x);
+}
+pub inline fn SCM_SIMPLE_VECTOR_REF(x: anytype, idx: anytype) @TypeOf(SCM_I_VECTOR_ELTS(x)[idx]) {
+ return SCM_I_VECTOR_ELTS(x)[idx];
+}
+pub const SCM_F_VECTOR_IMMUTABLE = @as(c_ulong, 0x80);
+pub inline fn SCM_I_IS_MUTABLE_VECTOR(x: anytype) @TypeOf((SCM_NIMP(x) != 0) and ((SCM_CELL_TYPE(x) & (@as(c_int, 0x7f) | SCM_F_VECTOR_IMMUTABLE)) == scm_tc7_vector)) {
+ return (SCM_NIMP(x) != 0) and ((SCM_CELL_TYPE(x) & (@as(c_int, 0x7f) | SCM_F_VECTOR_IMMUTABLE)) == scm_tc7_vector);
+}
+pub inline fn SCM_I_IS_VECTOR(x: anytype) @TypeOf(SCM_HAS_TYP7(x, scm_tc7_vector)) {
+ return SCM_HAS_TYP7(x, scm_tc7_vector);
+}
+pub inline fn SCM_I_VECTOR_WELTS(x: anytype) @TypeOf(SCM_CELL_OBJECT_LOC(x, @as(c_int, 1))) {
+ return SCM_CELL_OBJECT_LOC(x, @as(c_int, 1));
+}
+pub inline fn SCM_I_VECTOR_LENGTH(x: anytype) @TypeOf(@import("std").zig.c_translation.cast(usize, SCM_CELL_WORD_0(x)) >> @as(c_int, 8)) {
+ return @import("std").zig.c_translation.cast(usize, SCM_CELL_WORD_0(x)) >> @as(c_int, 8);
+}
+pub inline fn SCM_FLUID_P(x: anytype) @TypeOf(SCM_HAS_TYP7(x, scm_tc7_fluid)) {
+ return SCM_HAS_TYP7(x, scm_tc7_fluid);
+}
+pub inline fn SCM_VALIDATE_FLUID(pos: anytype, fluid: anytype) @TypeOf(SCM_I_MAKE_VALIDATE_MSG2(pos, fluid, scm_is_fluid, "fluid")) {
+ return SCM_I_MAKE_VALIDATE_MSG2(pos, fluid, scm_is_fluid, "fluid");
+}
+pub const SCM_FOREIGN_H = "";
+pub inline fn SCM_POINTER_P(x: anytype) @TypeOf(SCM_HAS_TYP7(x, scm_tc7_pointer)) {
+ return SCM_HAS_TYP7(x, scm_tc7_pointer);
+}
+pub inline fn SCM_POINTER_VALUE(x: anytype) ?*anyopaque {
+ return @import("std").zig.c_translation.cast(?*anyopaque, SCM_CELL_WORD_1(x));
+}
+pub inline fn SCM_IMMUTABLE_POINTER(c_name: anytype, ptr: anytype) @TypeOf(SCM_IMMUTABLE_CELL(c_name, scm_tc7_pointer, ptr)) {
+ return SCM_IMMUTABLE_CELL(c_name, scm_tc7_pointer, ptr);
+}
+pub const SCM_FOREIGN_OBJECT_H = "";
+pub const SCM_FPORTS_H = "";
+pub const SCM_PORTS_H = "";
+pub const SCM_STRINGS_H = "";
+pub const scm_tc7_ro_string = scm_tc7_string + @as(c_int, 0x200);
+pub const SCM_I_STRINGBUF_F_WIDE = @as(c_int, 0x400);
+pub const SCM_I_STRINGBUF_F_MUTABLE = @as(c_int, 0x800);
+pub inline fn SCM_EOF_OBJECT_P(x: anytype) @TypeOf(scm_is_eq(x, SCM_EOF_VAL)) {
+ return scm_is_eq(x, SCM_EOF_VAL);
+}
+pub const SCM_OPN = @as(c_uint, 1) << @as(c_int, 8);
+pub const SCM_RDNG = @as(c_uint, 1) << @as(c_int, 9);
+pub const SCM_WRTNG = @as(c_uint, 1) << @as(c_int, 10);
+pub const SCM_BUF0 = @as(c_uint, 1) << @as(c_int, 11);
+pub const SCM_BUFLINE = @as(c_uint, 1) << @as(c_int, 12);
+pub inline fn SCM_PORTP(x: anytype) @TypeOf(SCM_HAS_TYP7(x, scm_tc7_port)) {
+ return SCM_HAS_TYP7(x, scm_tc7_port);
+}
+pub inline fn SCM_OPPORTP(x: anytype) @TypeOf((SCM_PORTP(x) != 0) and ((SCM_CELL_WORD_0(x) & SCM_OPN) != 0)) {
+ return (SCM_PORTP(x) != 0) and ((SCM_CELL_WORD_0(x) & SCM_OPN) != 0);
+}
+pub inline fn SCM_INPUT_PORT_P(x: anytype) @TypeOf((SCM_PORTP(x) != 0) and ((SCM_CELL_WORD_0(x) & SCM_RDNG) != 0)) {
+ return (SCM_PORTP(x) != 0) and ((SCM_CELL_WORD_0(x) & SCM_RDNG) != 0);
+}
+pub inline fn SCM_OUTPUT_PORT_P(x: anytype) @TypeOf((SCM_PORTP(x) != 0) and ((SCM_CELL_WORD_0(x) & SCM_WRTNG) != 0)) {
+ return (SCM_PORTP(x) != 0) and ((SCM_CELL_WORD_0(x) & SCM_WRTNG) != 0);
+}
+pub inline fn SCM_OPINPORTP(x: anytype) @TypeOf((SCM_OPPORTP(x) != 0) and (SCM_INPUT_PORT_P(x) != 0)) {
+ return (SCM_OPPORTP(x) != 0) and (SCM_INPUT_PORT_P(x) != 0);
+}
+pub inline fn SCM_OPOUTPORTP(x: anytype) @TypeOf((SCM_OPPORTP(x) != 0) and (SCM_OUTPUT_PORT_P(x) != 0)) {
+ return (SCM_OPPORTP(x) != 0) and (SCM_OUTPUT_PORT_P(x) != 0);
+}
+pub inline fn SCM_OPENP(x: anytype) @TypeOf(SCM_OPPORTP(x)) {
+ return SCM_OPPORTP(x);
+}
+pub inline fn SCM_CLOSEDP(x: anytype) @TypeOf(!(SCM_OPENP(x) != 0)) {
+ return !(SCM_OPENP(x) != 0);
+}
+pub inline fn SCM_CLR_PORT_OPEN_FLAG(p: anytype) @TypeOf(SCM_SET_CELL_WORD_0(p, SCM_CELL_WORD_0(p) & ~SCM_OPN)) {
+ return SCM_SET_CELL_WORD_0(p, SCM_CELL_WORD_0(p) & ~SCM_OPN);
+}
+pub inline fn SCM_STREAM(port: anytype) @TypeOf(SCM_CELL_WORD_1(port)) {
+ return SCM_CELL_WORD_1(port);
+}
+pub inline fn SCM_SETSTREAM(port: anytype, stream: anytype) @TypeOf(SCM_SET_CELL_WORD_1(port, stream)) {
+ return SCM_SET_CELL_WORD_1(port, stream);
+}
+pub inline fn SCM_PORT(x: anytype) [*c]scm_t_port {
+ return @import("std").zig.c_translation.cast([*c]scm_t_port, SCM_CELL_WORD_2(x));
+}
+pub inline fn SCM_PORT_TYPE(port: anytype) [*c]scm_t_port_type {
+ return @import("std").zig.c_translation.cast([*c]scm_t_port_type, SCM_CELL_WORD_3(port));
+}
+pub inline fn SCM_FSTREAM(x: anytype) [*c]scm_t_fport {
+ return @import("std").zig.c_translation.cast([*c]scm_t_fport, SCM_STREAM(x));
+}
+pub inline fn SCM_FPORT_FDES(x: anytype) @TypeOf(SCM_FSTREAM(x).*.fdes) {
+ return SCM_FSTREAM(x).*.fdes;
+}
+pub inline fn SCM_FPORTP(x: anytype) @TypeOf((SCM_PORTP(x) != 0) and (SCM_PORT_TYPE(x) == scm_file_port_type)) {
+ return (SCM_PORTP(x) != 0) and (SCM_PORT_TYPE(x) == scm_file_port_type);
+}
+pub inline fn SCM_OPFPORTP(x: anytype) @TypeOf((SCM_FPORTP(x) != 0) and ((SCM_CELL_WORD_0(x) & SCM_OPN) != 0)) {
+ return (SCM_FPORTP(x) != 0) and ((SCM_CELL_WORD_0(x) & SCM_OPN) != 0);
+}
+pub inline fn SCM_OPINFPORTP(x: anytype) @TypeOf((SCM_OPFPORTP(x) != 0) and ((SCM_CELL_WORD_0(x) & SCM_RDNG) != 0)) {
+ return (SCM_OPFPORTP(x) != 0) and ((SCM_CELL_WORD_0(x) & SCM_RDNG) != 0);
+}
+pub inline fn SCM_OPOUTFPORTP(x: anytype) @TypeOf((SCM_OPFPORTP(x) != 0) and ((SCM_CELL_WORD_0(x) & SCM_WRTNG) != 0)) {
+ return (SCM_OPFPORTP(x) != 0) and ((SCM_CELL_WORD_0(x) & SCM_WRTNG) != 0);
+}
+pub const _SCM_FRAMES_H_ = "";
+pub inline fn SCM_FRAME_PREVIOUS_SP(fp: anytype) @TypeOf(fp + @as(c_int, 3)) {
+ return fp + @as(c_int, 3);
+}
+pub inline fn SCM_FRAME_MACHINE_RETURN_ADDRESS(fp: anytype) @TypeOf(fp[@as(c_int, 0)].as_mcode) {
+ return fp[@as(c_int, 0)].as_mcode;
+}
+pub inline fn SCM_FRAME_VIRTUAL_RETURN_ADDRESS(fp: anytype) @TypeOf(fp[@as(c_int, 1)].as_vcode) {
+ return fp[@as(c_int, 1)].as_vcode;
+}
+pub inline fn SCM_FRAME_DYNAMIC_LINK(fp: anytype) @TypeOf(fp + fp[@as(c_int, 2)].as_uint) {
+ return fp + fp[@as(c_int, 2)].as_uint;
+}
+pub inline fn SCM_FRAME_SLOT(fp: anytype, i: anytype) @TypeOf((fp - i) - @as(c_int, 1)) {
+ return (fp - i) - @as(c_int, 1);
+}
+pub inline fn SCM_FRAME_LOCAL(fp: anytype, i: anytype) @TypeOf(SCM_FRAME_SLOT(fp, i).*.as_scm) {
+ return SCM_FRAME_SLOT(fp, i).*.as_scm;
+}
+pub inline fn SCM_FRAME_NUM_LOCALS(fp: anytype, sp: anytype) @TypeOf(fp - sp) {
+ return fp - sp;
+}
+pub const SCM_GENERALIZED_VECTORS_H = "";
+pub inline fn SCM_VECTOR_IMPLEMENTATION(@"type": anytype, ctor: anytype) @TypeOf(SCM_SNARF_INIT(scm_i_register_vector_constructor(scm_i_array_element_types[@"type"], ctor))) {
+ return SCM_SNARF_INIT(scm_i_register_vector_constructor(scm_i_array_element_types[@"type"], ctor));
+}
+pub const SCM_GOOPS_H = "";
+pub const SCM_LIST_H = "";
+pub const SCM_VTABLE_FLAG_GOOPS_CLASS = SCM_VTABLE_FLAG_GOOPS_0;
+pub const SCM_VTABLE_FLAG_GOOPS_SLOT = SCM_VTABLE_FLAG_GOOPS_1;
+pub const SCM_VTABLE_FLAG_GOOPS_STATIC_SLOT_ALLOCATION = SCM_VTABLE_FLAG_GOOPS_2;
+pub const SCM_VTABLE_FLAG_GOOPS_INDIRECT = SCM_VTABLE_FLAG_GOOPS_3;
+pub const SCM_VTABLE_FLAG_GOOPS_NEEDS_MIGRATION = SCM_VTABLE_FLAG_GOOPS_4;
+pub inline fn SCM_CLASS_OF(x: anytype) @TypeOf(SCM_STRUCT_VTABLE(x)) {
+ return SCM_STRUCT_VTABLE(x);
+}
+pub inline fn SCM_CLASS_FLAGS(class: anytype) @TypeOf(SCM_VTABLE_FLAGS(class)) {
+ return SCM_VTABLE_FLAGS(class);
+}
+pub inline fn SCM_OBJ_CLASS_FLAGS(obj: anytype) @TypeOf(SCM_STRUCT_VTABLE_FLAGS(obj)) {
+ return SCM_STRUCT_VTABLE_FLAGS(obj);
+}
+pub inline fn SCM_SET_CLASS_FLAGS(c: anytype, f: anytype) @TypeOf(SCM_SET_VTABLE_FLAGS(c, f)) {
+ return SCM_SET_VTABLE_FLAGS(c, f);
+}
+pub inline fn SCM_CLEAR_CLASS_FLAGS(c: anytype, f: anytype) @TypeOf(SCM_CLEAR_VTABLE_FLAGS(c, f)) {
+ return SCM_CLEAR_VTABLE_FLAGS(c, f);
+}
+pub const SCM_CLASSF_METACLASS = SCM_VTABLE_FLAG_GOOPS_CLASS | SCM_VTABLE_FLAG_VTABLE;
+pub const SCM_CLASSF_GOOPS = SCM_VTABLE_FLAG_GOOPS_CLASS;
+pub inline fn SCM_CLASSP(x: anytype) @TypeOf((SCM_STRUCTP(x) != 0) and ((SCM_STRUCT_VTABLE_FLAGS(x) & SCM_CLASSF_METACLASS) != 0)) {
+ return (SCM_STRUCTP(x) != 0) and ((SCM_STRUCT_VTABLE_FLAGS(x) & SCM_CLASSF_METACLASS) != 0);
+}
+pub inline fn SCM_INSTANCEP(x: anytype) @TypeOf((SCM_STRUCTP(x) != 0) and ((SCM_STRUCT_VTABLE_FLAGS(x) & SCM_CLASSF_GOOPS) != 0)) {
+ return (SCM_STRUCTP(x) != 0) and ((SCM_STRUCT_VTABLE_FLAGS(x) & SCM_CLASSF_GOOPS) != 0);
+}
+pub inline fn SCM_SLOT(x: anytype, i: anytype) @TypeOf(SCM_STRUCT_SLOT_REF(x, i)) {
+ return SCM_STRUCT_SLOT_REF(x, i);
+}
+pub inline fn SCM_SET_SLOT(x: anytype, i: anytype, v: anytype) @TypeOf(SCM_STRUCT_SLOT_SET(x, i, v)) {
+ return SCM_STRUCT_SLOT_SET(x, i, v);
+}
+pub inline fn SCM_SUBCLASSP(c1: anytype, c2: anytype) @TypeOf(scm_is_true(scm_c_memq(c2, scm_class_precedence_list(c1)))) {
+ return scm_is_true(scm_c_memq(c2, scm_class_precedence_list(c1)));
+}
+pub inline fn SCM_IS_A_P(x: anytype, c: anytype) @TypeOf((SCM_INSTANCEP(x) != 0) and (SCM_SUBCLASSP(scm_class_of(x), c) != 0)) {
+ return (SCM_INSTANCEP(x) != 0) and (SCM_SUBCLASSP(scm_class_of(x), c) != 0);
+}
+pub inline fn SCM_GENERICP(x: anytype) @TypeOf(scm_is_generic(x)) {
+ return scm_is_generic(x);
+}
+pub inline fn SCM_METHODP(x: anytype) @TypeOf(scm_is_method(x)) {
+ return scm_is_method(x);
+}
+pub const SCM_GSUBR_H = "";
+pub const SCM_GSUBR_MAX = @as(c_int, 10);
+pub inline fn SCM_PRIMITIVE_P(x: anytype) @TypeOf((SCM_PROGRAM_P(x) != 0) and (SCM_PROGRAM_IS_PRIMITIVE(x) != 0)) {
+ return (SCM_PROGRAM_P(x) != 0) and (SCM_PROGRAM_IS_PRIMITIVE(x) != 0);
+}
+pub inline fn SCM_PRIMITIVE_GENERIC_P(x: anytype) @TypeOf((SCM_PROGRAM_P(x) != 0) and (SCM_PROGRAM_IS_PRIMITIVE_GENERIC(x) != 0)) {
+ return (SCM_PROGRAM_P(x) != 0) and (SCM_PROGRAM_IS_PRIMITIVE_GENERIC(x) != 0);
+}
+pub inline fn SCM_SUBRF(x: anytype) @TypeOf(scm_subr_function(x)) {
+ return scm_subr_function(x);
+}
+pub inline fn SCM_SUBR_NAME(x: anytype) @TypeOf(scm_subr_name(x)) {
+ return scm_subr_name(x);
+}
+pub inline fn SCM_SUBR_GENERIC(x: anytype) [*c]SCM {
+ return @import("std").zig.c_translation.cast([*c]SCM, SCM_POINTER_VALUE(SCM_PROGRAM_FREE_VARIABLE_REF(x, @as(c_int, 0))));
+}
+pub const SCM_FUNC_CAST_ARBITRARY_ARGS = scm_t_subr;
+pub const SCM_DEFINE = SCM_DEFINE_GSUBR;
+pub const SCM_GUARDIANS_H = "";
+pub const SCM_HASH_H = "";
+pub const SCM_HASHTAB_H = "";
+pub inline fn SCM_HASHTABLE_P(x: anytype) @TypeOf(SCM_HAS_TYP7(x, scm_tc7_hashtable)) {
+ return SCM_HAS_TYP7(x, scm_tc7_hashtable);
+}
+pub inline fn SCM_HASHTABLE_VECTOR(h: anytype) @TypeOf(SCM_CELL_OBJECT_1(h)) {
+ return SCM_CELL_OBJECT_1(h);
+}
+pub inline fn SCM_SET_HASHTABLE_VECTOR(x: anytype, v: anytype) @TypeOf(SCM_SET_CELL_OBJECT_1(x, v)) {
+ return SCM_SET_CELL_OBJECT_1(x, v);
+}
+pub inline fn SCM_HASHTABLE(x: anytype) [*c]scm_t_hashtable {
+ return @import("std").zig.c_translation.cast([*c]scm_t_hashtable, SCM_CELL_WORD_2(x));
+}
+pub inline fn SCM_HASHTABLE_N_ITEMS(x: anytype) @TypeOf(SCM_HASHTABLE(x).*.n_items) {
+ return SCM_HASHTABLE(x).*.n_items;
+}
+pub inline fn SCM_HASHTABLE_UPPER(x: anytype) @TypeOf(SCM_HASHTABLE(x).*.upper) {
+ return SCM_HASHTABLE(x).*.upper;
+}
+pub inline fn SCM_HASHTABLE_LOWER(x: anytype) @TypeOf(SCM_HASHTABLE(x).*.lower) {
+ return SCM_HASHTABLE(x).*.lower;
+}
+pub inline fn SCM_HASHTABLE_N_BUCKETS(h: anytype) @TypeOf(SCM_SIMPLE_VECTOR_LENGTH(SCM_HASHTABLE_VECTOR(h))) {
+ return SCM_SIMPLE_VECTOR_LENGTH(SCM_HASHTABLE_VECTOR(h));
+}
+pub inline fn SCM_HASHTABLE_BUCKET(h: anytype, i: anytype) @TypeOf(SCM_SIMPLE_VECTOR_REF(SCM_HASHTABLE_VECTOR(h), i)) {
+ return SCM_SIMPLE_VECTOR_REF(SCM_HASHTABLE_VECTOR(h), i);
+}
+pub inline fn SCM_SET_HASHTABLE_BUCKET(h: anytype, i: anytype, x: anytype) @TypeOf(SCM_SIMPLE_VECTOR_SET(SCM_HASHTABLE_VECTOR(h), i, x)) {
+ return SCM_SIMPLE_VECTOR_SET(SCM_HASHTABLE_VECTOR(h), i, x);
+}
+pub const SCM_HOOKS_H = "";
+pub inline fn SCM_HOOKP(x: anytype) @TypeOf(SCM_SMOB_PREDICATE(scm_tc16_hook, x)) {
+ return SCM_SMOB_PREDICATE(scm_tc16_hook, x);
+}
+pub inline fn SCM_HOOK_ARITY(hook: anytype) @TypeOf(SCM_SMOB_FLAGS(hook)) {
+ return SCM_SMOB_FLAGS(hook);
+}
+pub inline fn SCM_HOOK_PROCEDURES(hook: anytype) @TypeOf(SCM_SMOB_OBJECT(hook)) {
+ return SCM_SMOB_OBJECT(hook);
+}
+pub inline fn SCM_SET_HOOK_PROCEDURES(hook: anytype, procs: anytype) @TypeOf(SCM_SET_SMOB_OBJECT(hook, procs)) {
+ return SCM_SET_SMOB_OBJECT(hook, procs);
+}
+pub const SCM_I18N_H = "";
+pub const SCM_INIT_H = "";
+pub const SCM_IOEXT_H = "";
+pub const SCM_RDELIM_H = "";
+pub const SCM_RW_H = "";
+pub const SCM_KEYWORDS_H = "";
+pub inline fn SCM_I_KEYWORD_HASH(x: anytype) @TypeOf(scm_i_symbol_hash(SCM_CELL_OBJECT_1(x))) {
+ return scm_i_symbol_hash(SCM_CELL_OBJECT_1(x));
+}
+pub const SCM_LOAD_H = "";
+pub const SCM_MACROS_H = "";
+pub const SCM_MALLOCS_H = "";
+pub inline fn SCM_MALLOCP(X: anytype) @TypeOf(SCM_SMOB_PREDICATE(scm_tc16_malloc, X)) {
+ return SCM_SMOB_PREDICATE(scm_tc16_malloc, X);
+}
+pub inline fn SCM_MALLOCDATA(obj: anytype) [*c]u8 {
+ return @import("std").zig.c_translation.cast([*c]u8, SCM_SMOB_DATA(obj));
+}
+pub inline fn SCM_SETMALLOCDATA(obj: anytype, val: anytype) @TypeOf(SCM_SET_SMOB_DATA(obj, val)) {
+ return SCM_SET_SMOB_DATA(obj, val);
+}
+pub const SCM_MODULES_H = "";
+pub inline fn SCM_MODULEP(OBJ: anytype) @TypeOf(!(SCM_IMP(OBJ) != 0) and (SCM_CELL_TYPE(OBJ) == scm_module_tag)) {
+ return !(SCM_IMP(OBJ) != 0) and (SCM_CELL_TYPE(OBJ) == scm_module_tag);
+}
+pub const scm_module_index_obarray = @as(c_int, 0);
+pub const scm_module_index_uses = @as(c_int, 1);
+pub const scm_module_index_binder = @as(c_int, 2);
+pub const scm_module_index_eval_closure = @as(c_int, 3);
+pub const scm_module_index_transformer = @as(c_int, 4);
+pub const scm_module_index_duplicate_handlers = @as(c_int, 7);
+pub const scm_module_index_import_obarray = @as(c_int, 8);
+pub inline fn SCM_MODULE_OBARRAY(module: anytype) @TypeOf(SCM_PACK(SCM_STRUCT_DATA(module)[scm_module_index_obarray])) {
+ return SCM_PACK(SCM_STRUCT_DATA(module)[scm_module_index_obarray]);
+}
+pub inline fn SCM_MODULE_USES(module: anytype) @TypeOf(SCM_PACK(SCM_STRUCT_DATA(module)[scm_module_index_uses])) {
+ return SCM_PACK(SCM_STRUCT_DATA(module)[scm_module_index_uses]);
+}
+pub inline fn SCM_MODULE_BINDER(module: anytype) @TypeOf(SCM_PACK(SCM_STRUCT_DATA(module)[scm_module_index_binder])) {
+ return SCM_PACK(SCM_STRUCT_DATA(module)[scm_module_index_binder]);
+}
+pub inline fn SCM_MODULE_EVAL_CLOSURE(module: anytype) @TypeOf(SCM_PACK(SCM_STRUCT_DATA(module)[scm_module_index_eval_closure])) {
+ return SCM_PACK(SCM_STRUCT_DATA(module)[scm_module_index_eval_closure]);
+}
+pub inline fn SCM_MODULE_TRANSFORMER(module: anytype) @TypeOf(SCM_PACK(SCM_STRUCT_DATA(module)[scm_module_index_transformer])) {
+ return SCM_PACK(SCM_STRUCT_DATA(module)[scm_module_index_transformer]);
+}
+pub inline fn SCM_MODULE_DUPLICATE_HANDLERS(module: anytype) @TypeOf(SCM_PACK(SCM_STRUCT_DATA(module)[scm_module_index_duplicate_handlers])) {
+ return SCM_PACK(SCM_STRUCT_DATA(module)[scm_module_index_duplicate_handlers]);
+}
+pub inline fn SCM_MODULE_IMPORT_OBARRAY(module: anytype) @TypeOf(SCM_PACK(SCM_STRUCT_DATA(module)[scm_module_index_import_obarray])) {
+ return SCM_PACK(SCM_STRUCT_DATA(module)[scm_module_index_import_obarray]);
+}
+pub const SCM_NET_DB_H = "";
+pub const SCM_OBJPROP_H = "";
+pub const SCM_POSIX_H = "";
+pub const SCM_PROCPROP_H = "";
+pub const SCM_PROMISES_H = "";
+pub const SCM_F_PROMISE_COMPUTED = @as(c_long, 1) << @as(c_int, 0);
+pub inline fn SCM_PROMISE_COMPUTED_P(promise: anytype) @TypeOf(SCM_F_PROMISE_COMPUTED & SCM_SMOB_FLAGS(promise)) {
+ return SCM_F_PROMISE_COMPUTED & SCM_SMOB_FLAGS(promise);
+}
+pub inline fn SCM_SET_PROMISE_COMPUTED(promise: anytype) @TypeOf(SCM_SET_SMOB_FLAGS(promise, SCM_F_PROMISE_COMPUTED)) {
+ return SCM_SET_SMOB_FLAGS(promise, SCM_F_PROMISE_COMPUTED);
+}
+pub const SCM_PROMISE_MUTEX = SCM_SMOB_OBJECT_2;
+pub const SCM_PROMISE_DATA = SCM_SMOB_OBJECT;
+pub const SCM_SET_PROMISE_DATA = SCM_SET_SMOB_OBJECT;
+pub const SCM_R6RS_PORTS_H = "";
+pub const SCM_RANDOM_H = "";
+pub inline fn scm_c_uniform32(RSTATE: anytype) @TypeOf(RSTATE.*.rng.*.random_bits(RSTATE)) {
+ return RSTATE.*.rng.*.random_bits(RSTATE);
+}
+pub inline fn SCM_RSTATEP(obj: anytype) @TypeOf(SCM_SMOB_PREDICATE(scm_tc16_rstate, obj)) {
+ return SCM_SMOB_PREDICATE(scm_tc16_rstate, obj);
+}
+pub inline fn SCM_RSTATE(obj: anytype) [*c]scm_t_rstate {
+ return @import("std").zig.c_translation.cast([*c]scm_t_rstate, SCM_SMOB_DATA(obj));
+}
+pub const SCM_READ_H = "";
+pub const SCM_LINE_INCREMENTORS = '\n';
+pub const SCM_SCMSIGS_H = "";
+pub const SCM_SCRIPT_H = "";
+pub const SCM_SIMPOS_H = "";
+pub const SCM_SOCKET_H = "";
+pub const SCM_SORT_H = "";
+pub const SCM_SRCPROP_H = "";
+pub const SCM_STACKCHK_H = "";
+pub const SCM_DEBUG_H = "";
+pub const SCM_CHECK_STACK = "";
+pub const SCM_STIME_H = "";
+pub const SCM_TIME_UNITS_PER_SECOND = scm_c_time_units_per_second;
+pub const SCM_SRFI_13_H = "";
+pub const SCM_SRFI_14_H = "";
+pub inline fn SCM_CHARSET_GET(cs: anytype, idx: anytype) @TypeOf(scm_i_charset_get(@import("std").zig.c_translation.cast([*c]scm_t_char_set, SCM_SMOB_DATA(cs)), idx)) {
+ return scm_i_charset_get(@import("std").zig.c_translation.cast([*c]scm_t_char_set, SCM_SMOB_DATA(cs)), idx);
+}
+pub inline fn SCM_CHARSETP(x: anytype) @TypeOf(SCM_HAS_TYP16(x, scm_tc16_charset)) {
+ return SCM_HAS_TYP16(x, scm_tc16_charset);
+}
+pub const SCM_STRORDER_H = "";
+pub const SCM_STRPORTS_H = "";
+pub inline fn SCM_STRPORTP(x: anytype) @TypeOf((SCM_PORTP(x) != 0) and (SCM_PORT_TYPE(x) == scm_string_port_type)) {
+ return (SCM_PORTP(x) != 0) and (SCM_PORT_TYPE(x) == scm_string_port_type);
+}
+pub inline fn SCM_OPSTRPORTP(x: anytype) @TypeOf((SCM_STRPORTP(x) != 0) and ((SCM_CELL_WORD_0(x) & SCM_OPN) != 0)) {
+ return (SCM_STRPORTP(x) != 0) and ((SCM_CELL_WORD_0(x) & SCM_OPN) != 0);
+}
+pub inline fn SCM_OPINSTRPORTP(x: anytype) @TypeOf((SCM_OPSTRPORTP(x) != 0) and ((SCM_CELL_WORD_0(x) & SCM_RDNG) != 0)) {
+ return (SCM_OPSTRPORTP(x) != 0) and ((SCM_CELL_WORD_0(x) & SCM_RDNG) != 0);
+}
+pub inline fn SCM_OPOUTSTRPORTP(x: anytype) @TypeOf((SCM_OPSTRPORTP(x) != 0) and ((SCM_CELL_WORD_0(x) & SCM_WRTNG) != 0)) {
+ return (SCM_OPSTRPORTP(x) != 0) and ((SCM_CELL_WORD_0(x) & SCM_WRTNG) != 0);
+}
+pub const SCM_SYMBOLS_H = "";
+pub inline fn scm_is_symbol(x: anytype) @TypeOf(SCM_HAS_TYP7(x, scm_tc7_symbol)) {
+ return SCM_HAS_TYP7(x, scm_tc7_symbol);
+}
+pub inline fn scm_i_symbol_hash(x: anytype) c_ulong {
+ return @import("std").zig.c_translation.cast(c_ulong, SCM_CELL_WORD_2(x));
+}
+pub inline fn scm_i_symbol_is_interned(x: anytype) @TypeOf(!((SCM_CELL_WORD_0(x) & SCM_I_F_SYMBOL_UNINTERNED) != 0)) {
+ return !((SCM_CELL_WORD_0(x) & SCM_I_F_SYMBOL_UNINTERNED) != 0);
+}
+pub const SCM_I_F_SYMBOL_UNINTERNED = @as(c_int, 0x100);
+pub inline fn SCM_SYMBOLP(x: anytype) @TypeOf(scm_is_symbol(x)) {
+ return scm_is_symbol(x);
+}
+pub inline fn SCM_SYMBOL_HASH(x: anytype) @TypeOf(scm_i_symbol_hash(x)) {
+ return scm_i_symbol_hash(x);
+}
+pub inline fn SCM_SYMBOL_INTERNED_P(x: anytype) @TypeOf(scm_i_symbol_is_interned(x)) {
+ return scm_i_symbol_is_interned(x);
+}
+pub const SCM_VALUES_H = "";
+pub inline fn SCM_VALUESP(x: anytype) @TypeOf(scm_is_values(x)) {
+ return scm_is_values(x);
+}
+pub const SCM_VARIABLE_H = "";
+pub inline fn SCM_VARIABLEP(X: anytype) @TypeOf(SCM_HAS_TYP7(X, scm_tc7_variable)) {
+ return SCM_HAS_TYP7(X, scm_tc7_variable);
+}
+pub inline fn SCM_VARIABLE_REF(V: anytype) @TypeOf(SCM_CELL_OBJECT_1(V)) {
+ return SCM_CELL_OBJECT_1(V);
+}
+pub inline fn SCM_VARIABLE_SET(V: anytype, X: anytype) @TypeOf(SCM_SET_CELL_OBJECT_1(V, X)) {
+ return SCM_SET_CELL_OBJECT_1(V, X);
+}
+pub inline fn SCM_VARIABLE_LOC(V: anytype) @TypeOf(SCM_CELL_OBJECT_LOC(V, @as(c_int, 1))) {
+ return SCM_CELL_OBJECT_LOC(V, @as(c_int, 1));
+}
+pub const SCM_SRFI_4_H = "";
+pub const SCM_VERSION_H = "";
+pub const SCM_MAJOR_VERSION = @as(c_int, 3);
+pub const SCM_MINOR_VERSION = @as(c_int, 0);
+pub const SCM_MICRO_VERSION = @as(c_int, 8);
+pub const SCM_EFFECTIVE_VERSION = "3.0";
+pub const SCM_VPORTS_H = "";
+pub const SCM_WEAK_SET_H = "";
+pub const SCM_WEAK_TABLE_H = "";
+pub const SCM_WEAK_VECTOR_H = "";
+pub inline fn SCM_I_WVECTP(x: anytype) @TypeOf(SCM_HAS_TYP7(x, scm_tc7_wvect)) {
+ return SCM_HAS_TYP7(x, scm_tc7_wvect);
+}
+pub const SCM_BACKTRACE_H = "";
+pub const SCM_STACKS_H = "";
+pub const SCM_STACK_LAYOUT = "pw" ++ "pw" ++ "pw";
+pub inline fn SCM_STACKP(obj: anytype) @TypeOf((SCM_STRUCTP(obj) != 0) and (scm_is_eq(SCM_STRUCT_VTABLE(obj), scm_stack_type) != 0)) {
+ return (SCM_STRUCTP(obj) != 0) and (scm_is_eq(SCM_STRUCT_VTABLE(obj), scm_stack_type) != 0);
+}
+pub inline fn SCM_STACK_LENGTH(obj: anytype) @TypeOf(scm_to_long(SCM_STRUCT_SLOT_REF(obj, @as(c_int, 0)))) {
+ return scm_to_long(SCM_STRUCT_SLOT_REF(obj, @as(c_int, 0)));
+}
+pub inline fn SCM_SET_STACK_LENGTH(obj: anytype, f: anytype) @TypeOf(SCM_STRUCT_SLOT_SET(obj, @as(c_int, 0), scm_from_long(f))) {
+ return SCM_STRUCT_SLOT_SET(obj, @as(c_int, 0), scm_from_long(f));
+}
+pub inline fn SCM_STACK_ID(obj: anytype) @TypeOf(SCM_STRUCT_SLOT_REF(obj, @as(c_int, 1))) {
+ return SCM_STRUCT_SLOT_REF(obj, @as(c_int, 1));
+}
+pub inline fn SCM_SET_STACK_ID(obj: anytype, f: anytype) @TypeOf(SCM_STRUCT_SLOT_SET(obj, @as(c_int, 1), f)) {
+ return SCM_STRUCT_SLOT_SET(obj, @as(c_int, 1), f);
+}
+pub inline fn SCM_STACK_FRAME(obj: anytype) @TypeOf(SCM_STRUCT_SLOT_REF(obj, @as(c_int, 2))) {
+ return SCM_STRUCT_SLOT_REF(obj, @as(c_int, 2));
+}
+pub inline fn SCM_SET_STACK_FRAME(obj: anytype, f: anytype) @TypeOf(SCM_STRUCT_SLOT_SET(obj, @as(c_int, 2), f)) {
+ return SCM_STRUCT_SLOT_SET(obj, @as(c_int, 2), f);
+}
+pub const SCM_DEPRECATED_H = "";
+pub inline fn SCM_GNUC_PREREQ(maj: anytype, min: anytype) @TypeOf(((__GNUC__ << @as(c_int, 16)) + __GNUC_MINOR__) >= ((maj << @as(c_int, 16)) + min)) {
+ return ((__GNUC__ << @as(c_int, 16)) + __GNUC_MINOR__) >= ((maj << @as(c_int, 16)) + min);
+}
+pub const scm_gc_running_p = @as(c_int, 0);
+pub inline fn SCM_I_UTYPE_MAX(@"type": anytype) @TypeOf(@"type" - @as(c_int, 1)) {
+ return @"type" - @as(c_int, 1);
+}
+pub inline fn SCM_I_TYPE_MAX(@"type": anytype, umax: anytype) @TypeOf(@"type"(umax / @as(c_int, 2))) {
+ return @"type"(umax / @as(c_int, 2));
+}
+pub inline fn SCM_I_TYPE_MIN(@"type": anytype, umax: anytype) @TypeOf(-@"type"(umax / @as(c_int, 2)) - @as(c_int, 1)) {
+ return -@"type"(umax / @as(c_int, 2)) - @as(c_int, 1);
+}
+pub const SCM_T_UINT8_MAX = UINT8_MAX;
+pub const SCM_T_INT8_MIN = INT8_MIN;
+pub const SCM_T_INT8_MAX = INT8_MAX;
+pub const SCM_T_UINT16_MAX = UINT16_MAX;
+pub const SCM_T_INT16_MIN = INT16_MIN;
+pub const SCM_T_INT16_MAX = INT16_MAX;
+pub const SCM_T_UINT32_MAX = UINT32_MAX;
+pub const SCM_T_INT32_MIN = INT32_MIN;
+pub const SCM_T_INT32_MAX = INT32_MAX;
+pub const SCM_T_UINT64_MAX = UINT64_MAX;
+pub const SCM_T_INT64_MIN = INT64_MIN;
+pub const SCM_T_INT64_MAX = INT64_MAX;
+pub const SCM_T_UINTMAX_MAX = UINTMAX_MAX;
+pub const SCM_T_INTMAX_MIN = INTMAX_MIN;
+pub const SCM_T_INTMAX_MAX = INTMAX_MAX;
+pub const SCM_T_UINTPTR_MAX = UINTPTR_MAX;
+pub const SCM_T_INTPTR_MIN = INTPTR_MIN;
+pub const SCM_T_INTPTR_MAX = INTPTR_MAX;
+pub const SCM_HAVE_T_INT64 = @as(c_int, 1);
+pub const SCM_HAVE_T_UINT64 = @as(c_int, 1);
+pub const SCM_HAVE_ARRAYS = @as(c_int, 1);
+pub const SCM_SOURCE_PROPERTY_FLAG_BREAK = @as(c_int, 1);
+pub inline fn SCM_SYMBOL_FUNC(x: anytype) @TypeOf(scm_symbol_fref(x)) {
+ return scm_symbol_fref(x);
+}
+pub inline fn SCM_SET_SYMBOL_FUNC(x: anytype, f: anytype) @TypeOf(scm_symbol_fset_x(x, f)) {
+ return scm_symbol_fset_x(x, f);
+}
+pub inline fn SCM_SYMBOL_PROPS(x: anytype) @TypeOf(scm_symbol_pref(x)) {
+ return scm_symbol_pref(x);
+}
+pub inline fn SCM_SET_SYMBOL_PROPS(x: anytype, p: anytype) @TypeOf(scm_symbol_pset_x(x, p)) {
+ return scm_symbol_pset_x(x, p);
+}
+pub const timeval = struct_timeval;
+pub const timespec = struct_timespec;
+pub const __itimer_which = enum___itimer_which;
+pub const itimerval = struct_itimerval;
+pub const tm = struct_tm;
+pub const itimerspec = struct_itimerspec;
+pub const sigval = union_sigval;
+pub const sigevent = struct_sigevent;
+pub const __locale_data = struct___locale_data;
+pub const __locale_struct = struct___locale_struct;
+pub const __pthread_internal_list = struct___pthread_internal_list;
+pub const __pthread_internal_slist = struct___pthread_internal_slist;
+pub const __pthread_mutex_s = struct___pthread_mutex_s;
+pub const __pthread_rwlock_arch_t = struct___pthread_rwlock_arch_t;
+pub const __pthread_cond_s = struct___pthread_cond_s;
+pub const random_data = struct_random_data;
+pub const drand48_data = struct_drand48_data;
+pub const scm_unused_struct = struct_scm_unused_struct;
+pub const scm_tc8_tags = enum_scm_tc8_tags;
+pub const scm_dynamic_state = struct_scm_dynamic_state;
+pub const scm_dynstack = struct_scm_dynstack;
+pub const scm_frame = struct_scm_frame;
+pub const scm_vm_stack_element = union_scm_vm_stack_element;
+pub const __jmp_buf_tag = struct___jmp_buf_tag;
+pub const scm_vm = struct_scm_vm;
+pub const scm_thread_wake_data = struct_scm_thread_wake_data;
+pub const scm_jit_state = struct_scm_jit_state;
+pub const scm_body_thunk_data = struct_scm_body_thunk_data;
+pub const _fpx_sw_bytes = struct__fpx_sw_bytes;
+pub const _fpreg = struct__fpreg;
+pub const _fpxreg = struct__fpxreg;
+pub const _xmmreg = struct__xmmreg;
+pub const _fpstate = struct__fpstate;
+pub const sigcontext = struct_sigcontext;
+pub const _xsave_hdr = struct__xsave_hdr;
+pub const _ymmh_state = struct__ymmh_state;
+pub const _xstate = struct__xstate;
+pub const _libc_fpxreg = struct__libc_fpxreg;
+pub const _libc_xmmreg = struct__libc_xmmreg;
+pub const _libc_fpstate = struct__libc_fpstate;
+pub const scm_compare = enum_scm_compare;
+pub const GC_ms_entry = struct_GC_ms_entry;
+pub const scm_vm_cont = struct_scm_vm_cont;
+pub const sched_param = struct_sched_param;
+pub const _pthread_cleanup_buffer = struct__pthread_cleanup_buffer;
+pub const __cancel_jmp_buf_tag = struct___cancel_jmp_buf_tag;
+pub const __pthread_cleanup_frame = struct___pthread_cleanup_frame;
+pub const scm_keyword_arguments_flags = enum_scm_keyword_arguments_flags;
+pub const sockaddr = struct_sockaddr;
diff --git a/guile-zig-local/test.c b/guile-zig-local/test.c
new file mode 100644
index 0000000..c0d1809
--- /dev/null
+++ b/guile-zig-local/test.c
@@ -0,0 +1,36 @@
+// Testing guile bindings, see README.md and
+// https://www.gnu.org/savannah-checkouts/gnu/guile/docs/docs-2.0/guile-ref/Dynamic-Types.html
+
+#include <stdio.h>
+#include <libguile.h>
+#include <libguile/boolean.h>
+#include <libguile/numbers.h>
+
+extern void hello_zig();
+
+extern SCM my_incrementing_zig_function (SCM a, SCM flag);
+
+SCM my_incrementing_function (SCM a, SCM flag)
+{
+ SCM result;
+
+ if (scm_is_true (flag))
+ result = scm_sum (a, scm_from_int (1));
+ else
+ result = a;
+
+ return result;
+}
+
+
+int main() {
+ hello_zig();
+ SCM test = scm_from_int(3);
+ SCM b = scm_from_bool(1);
+ SCM result = my_incrementing_function(test,b);
+ printf(" from %d to %d\n",scm_to_int(test),scm_to_int(result));
+ hello_zig();
+ SCM result2 = my_incrementing_zig_function(result,b);
+ printf(" from %d to %d\n",scm_to_int(result),scm_to_int(result2));
+ return 0;
+}