static int do_binary_function_c (int (*f)(double, double,VOID_STAR), VOID_STAR cd) { Array_Or_Scalar_Type a_ast, b_ast, c_ast; if (-1 == pop_2_arrays_or_scalar (&a_ast, &b_ast)) return -1; c_ast.at = NULL; c_ast.num = 1; c_ast.inc = 0; c_ast.cptr = &c_ast.c; if ((a_ast.at != NULL) || (b_ast.at != NULL)) { if (a_ast.at != NULL) c_ast.at = SLang_create_array1 (SLANG_CHAR_TYPE, 0, NULL, a_ast.at->dims, a_ast.at->num_dims, 1); else c_ast.at = SLang_create_array1 (SLANG_CHAR_TYPE, 0, NULL, b_ast.at->dims, b_ast.at->num_dims, 1); if (c_ast.at == NULL) { free_array_or_scalar (&a_ast); free_array_or_scalar (&b_ast); return -1; } c_ast.cptr = (char *) c_ast.at->data; c_ast.num = c_ast.at->num_elements; c_ast.inc = 1; } if (a_ast.is_float) { if (b_ast.is_float) (void) do_c_ff_fun (f, cd, &a_ast, &b_ast, &c_ast); else (void) do_c_fd_fun (f, cd, &a_ast, &b_ast, &c_ast); } else if (b_ast.is_float) (void) do_c_df_fun (f, cd, &a_ast, &b_ast, &c_ast); else (void) do_c_dd_fun (f, cd, &a_ast, &b_ast, &c_ast); free_array_or_scalar (&a_ast); free_array_or_scalar (&b_ast); if (c_ast.at != NULL) return SLang_push_array (c_ast.at, 1); return SLang_push_char (c_ast.c); }
static void get_path_delimiter (void) { (void) SLang_push_char ((char) SLpath_get_delimiter ()); }