Introductory FAQ -- Far from complete -- I will update it daily. Frequently asked questions. Terminology: S-Lang function : a user defined function that is written in S-Lang. C function: A function that is written in C. It may or may not be callable from S-lang Intrinsic Function: A C function that is directly callable from S-Lang, e.g., strcat. 0. Where do I find documentation? The documentation is incomplete. See slang/doc/*.* and slang/help/slang.hlp. In addition, nearly all the C functions prototyped in slang.h are also documented in slang.h. Finally, all the intrinsics defined by the S-Lang library are available online from within the JED editor. (Also look in slang/src/demo). 1. How can I call a specific S-Lang function from my C program? Use the C function `SLang_execute_function'. This returns 0 if the function is not defined and 1 if it is. If you are going to call the S-Lang function many times, it is better to use `SLexecute_function'. This function takes a non-NULL parameter of type `SLang_Name_Type' obtained from a previous call from the function `SLang_get_function'. Example: Suppose that you want to call a S-Lang function `f' which takes two floating point numbers and returns a float. Assume the parameters to `f' are `2.7' and 3.5'. First solution: double x; int ix, unused; SLang_push_float (2.7); SLang_push_float (3.5); if (SLang_execute_function ("f") == 0) { /* f undefined */ return 0.0; } SLang_pop_float (&x, &ix, &unused); return x; Second Solution: double x; int ix, unused; SLang_Name_Type *fp; if (NULL == (fp = SLang_get_function ("f"))) { /* Function f undefined */ return 0.0; } SLang_push_float (2.7); SLang_push_float (3.5); SLexecute_function (fp); SLang_pop_float (&x, &ix, &unused); return x; 3. How can I add structures to S-Lang. Currently, the language does not really support structures. However, it is possible for variables to have values which are structures. See demo/struct.c and demo/struct.sl for an explicit demonstration of how to add application defined structures to S-Lang.