On 05/25/12 at 05:51pm, Ludovic Courtès wrote:
> Hi!
>
> Jan Synacek <[email protected]> skribis:
>
> > Guile/Glue/glue.cpp:233:31: error: cannot convert ‘SCM {aka
> > scm_unused_struct*}’ to ‘const char*’ for argument ‘1’ to
> > ‘scm_unused_struct*
> > scm_str2string(const char*)’
>
> [...]
>
> > glue.cpp:233 looks like this:
> > char* _r= scm_scm2str (s, &len_r); // my comment - s is declared as SCM
>
> Indeed, scm_str2string expects a ‘const char *’, not an ‘SCM’.
>
> But what is the definition of ‘scm_scm2str’? It must be in TeXmacs.
It's a macro:
#define scm_scm2str gh_scm2newstr
I added additional
#define gh_scm2newstr(a, b) scm_str2string((a))
to 'bridge' it. It's quite ugly I must say, plus I'm not really sure if it
doesn't break anything else. And I can't make c++ to cast SCM to char *,
even with reinterpret_cast, as SCM is not a pointer.
Can you please suggest a way (if there is a generic one) to fix these kinds of
old->new api problems?
>
> > Guile/Glue/glue.cpp:1267:46: error: invalid conversion from ‘FN {aka
> > scm_unused_struct* (*)()}’ to ‘scm_t_subr {aka void*}’ [-fpermissive]
>
> [...]
>
> > scm_new_procedure ("tree?", (FN) treeP, 1, 0, 0);
>
> Yes, FN should be defined like this:
>
> typedef scm_t_subr FN;
>
> or:
>
> #define FN scm_t_subr
>
> Can you check whether that solves the problem?
This seems to have helped.
>
> Thanks,
> Ludo’.
Thanks,
Jan
--
Jan Synacek
Software Engineer, BaseOS team Brno, Red Hat