diff options
| author | Pjotr Prins | 2025-11-22 11:56:58 +0100 |
|---|---|---|
| committer | Pjotr Prins | 2025-11-22 11:56:58 +0100 |
| commit | 5b6b5e2ad97b4733125c0845cfae007e8094a687 (patch) | |
| tree | a44eee936913cadac545c3e71dfc8257c1d1caf3 /src/guile_api.cpp | |
| parent | 8842a9544bf25041afc52c4481ff7e80bbd55a54 (diff) | |
| download | pangemma-5b6b5e2ad97b4733125c0845cfae007e8094a687.tar.gz | |
Diffstat (limited to 'src/guile_api.cpp')
| -rw-r--r-- | src/guile_api.cpp | 49 |
1 files changed, 40 insertions, 9 deletions
diff --git a/src/guile_api.cpp b/src/guile_api.cpp index 21eb9ff..e3ef482 100644 --- a/src/guile_api.cpp +++ b/src/guile_api.cpp @@ -1,13 +1,44 @@ #include <guile_api.h> -void global_start_guile() { - scm_init_guile(); -} +namespace gemmaguile { + + void global_start_guile() { + scm_init_guile(); + } + + string global_guile_version() { + SCM version_scm = scm_version(); + char* c_str = scm_to_utf8_string(version_scm); + string version_str(c_str); + free(c_str); // Must free the allocated memory + + return version_str; + } + + SCM make_floats() + { + return scm_call_0(scm_c_public_ref("example", "make-floats")); + } + + void use_floats() + { + SCM vec = make_floats(); + + scm_t_array_handle handle; + size_t len; + ssize_t inc; + const SCM *elt; + + const double *ny = scm_f64vector_elements (vec,&handle,&len,&inc); + for (size_t i = 0; i < len; i++) { + printf("elem %zu = %f\n", i, ny[i]); + } + scm_array_handle_release (&handle); + } + + void start_test() { + scm_c_primitive_load("src/guile/examples.scm"); + use_floats(); + } -string global_guile_version() { - SCM version_scm = scm_version(); - char* c_str = scm_to_utf8_string(version_scm); - string version_str(c_str); - free(c_str); // Must free the allocated memory - return version_str; } |
