Apologies if I'm not using the mailing list correctly. I don't do it much.
I'm Arnaut Daniel on github. Keeping track of this thread since it'd be interesting to find a better way to do the bindings. Gforth and Raylib are a lot of fun. Also I don't remember what the earliest version I used was that works with the bindings, but you can't use 0.7.3. Thanks to Francois for taking interest. Arnaut/Jack ------- Original Message ------- On Monday, June 12th, 2023 at 2:10 PM, Francois Gallois <francois.gallois....@gmail.com> wrote: > > > On Mon, Jun 12, 2023 at 06:52:35PM +0200, etienne delacroix wrote: > > > thanks for presenting this problem. I have been very much wanting to use > > gforth to do graphics, but since my intel Mac got stolen I have problems > > installing the latest. gforth. only. the. 0.7.3 is working on the M1 > > > > when I tried to include the raylib3.fs. file into. gforth 0.7.3. I got > > the following error: > > > > raylib3.fs:567: Undefined word > > > > c-function InitWindow InitWindow n n >>>s<<< -- void ( width height title > > -- ) > > > > Backtrace: > > > > $15883DB80 throw > > > > $15883DC18 parse-libcc-type > > > > $158840E58 parse-function-types > > > > $158841108 c-function-ft > > > > ok > > > > line 567. is the very first. c-function. line... > > > > so I tried > > see. c-function. which returns existing code > > > > see c-function > > > > : c-function > > > > Defer latestxt dup c-function-rt latestxt c-function-ft latestxt swap > > defer! > > > > ; ok > > > > so I am not sure what the undefined word here > > > > my question. is first of all to know if the arnault Daniel. gforth ray lib. > > is working with > > gforth. 0.7.3. ???? > > and if you have been able to make this package work as it is.... > > > > merci d'avance > > > > On Mon, Jun 12, 2023 at 3:06 PM Francois Gallois < > > francois.gallois....@gmail.com> wrote: > > > > > Hello there, > > > I've been taking a look at the gforth bindings for Raylib at > > > https://github.com/ArnautDaniel/gforth-raylib in order to update them to > > > the > > > latest version. One of the biggest problems the original authors has been > > > facing > > > was converting the structures passed by value by raylib into pointers to > > > allow > > > their use, such as : > > > > > > `\\c Vector2 * iGetWindowScaleDPI(Vector2 * p){ \\c Vector2 v = > > > GetWindowScaleDPI(); \\c *p = v; return p; } c-function > > > iGetWindowScaleDPI iGetWindowScaleDPI a -- a ( emptyVector2 -- Vector2 )` > > > > > > It seems that the "default behavior" for SWIG is to convert structures > > > returned > > > by value into pointers ( > > > https://www.swig.org/Doc3.0/SWIGDocumentation.pdf#__WKANCHOR_58) > > > (this is the link to the docs of the relevant version of SWIG for > > > https://github.com/GeraldWodni/swig, which I've been using according to > > > the > > > manual). > > > > > > Has anyone played around enough with forth-SWIG to explain in more detail > > > how > > > the current implementation behaves? I'd like to make that kind of fixes > > > automatic. > > > > > > Separately, would there be a way to "typedef" some structures as stack > > > objects? > > > In the specific case of raylib but also as a common example, I would like > > > to > > > convert a Vector of 2 objects: > > > > > > `struct Vector2 { int x; int y; };` > > > > > > into 2 stack objects, meaning that a function `foo` that takes a Vector2 > > > (`int foo(Vector2 vec);`) can be called with `x y foo` in Forth, > > > and that calling a `Vector2 bar();` puts `x y` on the stack. > > > Could someone light my lantern on the things that could make that kind of > > > template possible? > > > > > > I'll be continuing to search on my side of things, but comments would be > > > much > > > appreciated. > > > > > > Thanks for your hard work, and have fun. > > > > > > --- > > > François Gallois > > > "All told, a category is just a monad in the bicategory of spans, what's > > > the > > > problem?" > > > My apologies for not adding those precisions. The bindings only work with the > latest version built from source (built on Fedora here), and when trying to do > your own bindings, you must use the swig version packed with the latest > source. > I don't know what is the first version with which it will work, but you'll > have > a simpler time if you just build from source. > > I managed to make the binding work by building the Raylib 3.5.0 source on my > machine, and by copying the .h files in the directory of gforth-raylib. With > all > of this, I managed to successfully run the binding, and to run the provided > example, though I didn't try any further experimentations. Stay aware that the > version you need to use is Raylib 3.5.0 (you can find the documentation in the > .h file). You can sure have fun with that, and I advise you to open an issue > on > Github in case you have any further questions about the design of the binding; > the author was very responsive! > > Bonne soirée > > -- > François Gallois > "All told, a category is just a monad in the bicategory of > spans, what's the problem?"