[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Guile + SWIG
From: |
Paul Emsley |
Subject: |
Guile + SWIG |
Date: |
Mon, 05 Apr 2021 11:24:20 +0100 |
User-agent: |
Evolution 3.34.1-2 |
Hi,
I am trying to bring my swigged Gtk2 + guile 1.8.8 + guile-gtk application up
to date and I'd like some help please.
My SWIG usage wraps many function, including enhanced_coot_ligand_p(). I am
confused between the difference between
functions that are available from C/C++ and those from a scheme script:
if my inner_main looks like this:
void inner_main(void *closure, int argc, char **argv) {
SWIG_init();
std::string handler_string = "(lambda (key . args) ";
handler_string += "(display (list \"Error in proc:\" key \" args: \" args))
(newline))";
SCM handler = scm_c_eval_string(handler_string.c_str());
std::string thunk_str = "(lambda() (display (list 444444444444444444
(enhanced-ligand-coot-p))) (newline))\n";
SCM thunk = scm_c_eval_string(thunk_str.c_str());
scm_catch(SCM_BOOL_T, thunk, handler);
gtk_main();
}
then I get on the terminal what I expected:
(444444444444444444 #f)
(i.e. enhanced-ligand-coot-p is evaluated)
if my inner_main looks like this:
void inner_main(void *closure, int argc, char **argv) {
SWIG_init();
std::string handler_string = "(lambda (key . args) ";
handler_string += "(display (list \"Error in proc:\" key \" args: \" args))
(newline))";
SCM handler = scm_c_eval_string(handler_string.c_str());
std::string thunk_str = "(use-modules (test-embedding))\n"; ////////////
different ///////////////
SCM thunk = scm_c_eval_string(thunk_str.c_str());
scm_catch(SCM_BOOL_T, thunk, handler);
gtk_main();
}
then I get:
;; compiling
/home/paule/autobuild/Linux-pen-pre-release-gtk3/share/guile/site/test-embedding.scm
;;; test-embedding.scm:21:30: warning: possibly unbound variable
`enhanced-ligand-coot-p'
;;; compiled
/home/paule/.cache/guile/ccache/2.2-LE-8-3.A/home/paule/autobuild/Linux-pen-pre-release-
gtk3/share/guile/site/test-embedding.scm.go
------------------- test embedding! -----------------------
Backtrace:
18 (apply-smob/1 #<catch-closure 7f98d1436b20>)
In ice-9/boot-9.scm:
2312:4 17 (save-module-excursion _)
In ice-9/eval-string.scm:
38:6 16 (read-and-eval #<input: string 7f98d08acbd0> #:lang _)
In ice-9/eval.scm:
721:20 15 (primitive-eval _)
In ice-9/psyntax.scm:
1262:36 14 (expand-top-sequence _ _ _ #f _ _ _)
1209:24 13 (parse _ (("placeholder" placeholder)) ((top) #(# # …)) …)
285:10 12 (parse _ (("placeholder" placeholder)) (()) _ c&e (eval) …)
In ice-9/boot-9.scm:
3377:20 11 (process-use-modules _)
222:17 10 (map1 (((test-embedding))))
3378:31 9 (_ ((test-embedding)))
2800:17 8 (resolve-interface (test-embedding) #:select _ #:hide _ …)
In ice-9/threads.scm:
390:8 7 (_ _)
In ice-9/boot-9.scm:
2726:13 6 (_)
In ice-9/threads.scm:
390:8 5 (_ _)
In ice-9/boot-9.scm:
2994:20 4 (_)
2312:4 3 (save-module-excursion _)
3014:26 2 (_)
In unknown file:
1 (primitive-load-path "test-embedding" #<procedure 7f98d…>)
In test-embedding.scm:
19:0 0 (_)
test-embedding.scm:4:0: In procedure module-lookup: Unbound variable:
enhanced-ligand-coot-p
test-embedding.scm looks like this and is installed in $prfx/share/guile/site
(display "------------- test embedding! ------------\n")
(display (list 55555555555555 (enhanced-ligand-coot-p)))
(newline)
So, inner_main() knows that enhanced-ligand-coot-p is available, but the scheme
script does not. I don't know how to
resolve this.
How do I get a list of the available functions?
Thanks in advance for your help.
Paul.
- Guile + SWIG,
Paul Emsley <=
Re: Guile + SWIG, Linas Vepstas, 2021/04/07