unofficial mirror of guile-user@gnu.org 
 help / color / mirror / Atom feed
* Guile + SWIG
@ 2021-04-05 10:24 Paul Emsley
  2021-04-05 14:44 ` Linas Vepstas
  2021-04-05 15:27 ` Linas Vepstas
  0 siblings, 2 replies; 8+ messages in thread
From: Paul Emsley @ 2021-04-05 10:24 UTC (permalink / raw)
  To: Guile User Mailing List

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.





^ permalink raw reply	[flat|nested] 8+ messages in thread
* Guile + SWIG
@ 2021-04-05  9:39 Paul Emsley
  0 siblings, 0 replies; 8+ messages in thread
From: Paul Emsley @ 2021-04-05  9:39 UTC (permalink / raw)
  To: Guile User Mailing List

Hi,

I am bringing 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.






^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2021-04-08 21:11 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-05 10:24 Guile + SWIG Paul Emsley
2021-04-05 14:44 ` Linas Vepstas
2021-04-05 15:27 ` Linas Vepstas
2021-04-05 17:44   ` Paul Emsley
2021-04-05 23:51     ` Matt Wette
2021-04-08  7:13       ` Paul Emsley
2021-04-08 21:11         ` David Pirotte
  -- strict thread matches above, loose matches on Subject: below --
2021-04-05  9:39 Paul Emsley

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).