Пример #1
0
   SLang_push_long (q);
}

#include "assoc.c"
#include "list.c"

static void fake_import (char *);
static SLang_Intrin_Fun_Type Intrinsics [] =
{
   MAKE_INTRINSIC_S("fake_import", fake_import, VOID_TYPE),
   MAKE_INTRINSIC_I("exit", c_exit, VOID_TYPE),
   MAKE_INTRINSIC_2("check_intrin_int_qualifier", check_intrin_int_qualifier, VOID_TYPE, SLANG_STRING_TYPE, SLANG_INT_TYPE),
   MAKE_INTRINSIC_2("check_intrin_long_qualifier", check_intrin_long_qualifier, VOID_TYPE, SLANG_STRING_TYPE, SLANG_LONG_TYPE),
   MAKE_INTRINSIC_2("check_intrin_double_qualifier", check_intrin_double_qualifier, VOID_TYPE, SLANG_STRING_TYPE, SLANG_DOUBLE_TYPE),
   MAKE_INTRINSIC_2("check_intrin_string_qualifier", check_intrin_string_qualifier, VOID_TYPE, SLANG_STRING_TYPE, SLANG_STRING_TYPE),
   MAKE_INTRINSIC_1("test_char_return", test_char_return, SLANG_CHAR_TYPE, SLANG_CHAR_TYPE),
   MAKE_INTRINSIC_1("test_short_return", test_short_return, SLANG_SHORT_TYPE, SLANG_SHORT_TYPE),
   MAKE_INTRINSIC_1("test_int_return", test_int_return, SLANG_INT_TYPE, SLANG_INT_TYPE),
   MAKE_INTRINSIC_1("test_long_return", test_long_return, SLANG_LONG_TYPE, SLANG_LONG_TYPE),
   /* MAKE_INTRINSIC_1("test_float_return", test_float_return, SLANG_FLOAT_TYPE, SLANG_FLOAT_TYPE), */
#if SLANG_HAS_FLOAT
   MAKE_INTRINSIC_1("test_double_return", test_double_return, SLANG_DOUBLE_TYPE, SLANG_DOUBLE_TYPE),
#endif
   MAKE_INTRINSIC_0("test_pop_mmt", test_pop_mmt, SLANG_VOID_TYPE),
   MAKE_INTRINSIC_0("get_c_struct", get_c_struct, VOID_TYPE),
   MAKE_INTRINSIC_0("set_c_struct", set_c_struct, VOID_TYPE),
   MAKE_INTRINSIC_1("get_c_struct_via_ref", get_c_struct_via_ref, VOID_TYPE, SLANG_REF_TYPE),
   MAKE_INTRINSIC_0("new_test_type", new_test_type, SLANG_VOID_TYPE),
   ASSOC_API_TEST_INTRINSICS,
   LIST_API_TEST_INTRINSICS,
Пример #2
0
#endif
#ifdef ITIMER_PROF
   MAKE_ICONSTANT("ITIMER_PROF", ITIMER_PROF),
#endif
   SLANG_END_ICONST_TABLE
};

static SLang_Intrin_Fun_Type Intrin_Table [] =
{
   MAKE_INTRINSIC_0("signal", signal_intrinsic, SLANG_VOID_TYPE),
   MAKE_INTRINSIC_0("alarm", alarm_intrinsic, SLANG_VOID_TYPE),
#ifdef HAVE_SETITIMER
   MAKE_INTRINSIC_0("setitimer", setitimer_intrinsic, SLANG_VOID_TYPE),
#endif
#ifdef HAVE_GETITIMER
   MAKE_INTRINSIC_1("getitimer", getitimer_intrinsic, SLANG_VOID_TYPE, SLANG_INT_TYPE),
#endif
   MAKE_INTRINSIC_0("sigsuspend", sigsuspend_intrinsic, SLANG_VOID_TYPE),
#ifdef SLANG_POSIX_SIGNALS
   MAKE_INTRINSIC_0("sigprocmask", sigprocmask_intrinsic, SLANG_VOID_TYPE),
#endif
   SLANG_END_INTRIN_FUN_TABLE
};

int SLang_init_signal (void)
{
   Signal_Type *s;

   if ((-1 == SLadd_intrin_fun_table(Intrin_Table, NULL))
       || (-1 == SLadd_iconstant_table (IConsts, NULL)))
     return -1;
Пример #3
0
static int fcntl_getfl (SLFile_FD_Type *f)
{   
   return do_fcntl_2 (f, F_GETFL);
}

static int fcntl_setfl (SLFile_FD_Type *f, int *flags)
{
   return do_fcntl_3_int (f, F_SETFL, *flags);
}

#define F SLANG_FILE_FD_TYPE
#define I SLANG_INT_TYPE
static SLang_Intrin_Fun_Type Fcntl_Intrinsics [] =
{
   MAKE_INTRINSIC_1("fcntl_getfd", fcntl_getfd, I, F),
   MAKE_INTRINSIC_2("fcntl_setfd", fcntl_setfd, I, F, I),
   MAKE_INTRINSIC_1("fcntl_getfl", fcntl_getfl, I, F),
   MAKE_INTRINSIC_2("fcntl_setfl", fcntl_setfl, I, F, I),

   SLANG_END_INTRIN_FUN_TABLE
};
#undef I
#undef F

static SLang_IConstant_Type Fcntl_Consts [] =
{
   MAKE_ICONSTANT("FD_CLOEXEC", FD_CLOEXEC),
   SLANG_END_ICONST_TABLE
};
Пример #4
0
   /* Note: objp and q should _not_ be freed since they were not allocated */
}
#endif

static void clear_error_intrin (void)
{
   (void) _pSLerr_clear_error (1);
}

static void set_argv_intrinsic (void);
static SLang_Intrin_Fun_Type SLang_Basic_Table [] = /*{{{*/
{
   MAKE_INTRINSIC_0("__is_callable", is_callable_intrinsic, SLANG_INT_TYPE),
   MAKE_INTRINSIC_0("__is_numeric", is_numeric_intrinsic, SLANG_INT_TYPE),
   MAKE_INTRINSIC_0("__is_datatype_numeric", is_datatype_numeric_intrinsic, SLANG_INT_TYPE),
   MAKE_INTRINSIC_1("__is_initialized", _pSLang_is_ref_initialized, SLANG_INT_TYPE, SLANG_REF_TYPE),
   MAKE_INTRINSIC_S("__get_reference", intrin_get_reference, SLANG_VOID_TYPE),
   MAKE_INTRINSIC_1("__uninitialize", uninitialize_ref_intrin, SLANG_VOID_TYPE, SLANG_REF_TYPE),
   MAKE_INTRINSIC_0("__is_same", is_same_intrinsic, SLANG_INT_TYPE),
   MAKE_INTRINSIC_0("__class_type", class_type_intrinsic, SLANG_INT_TYPE),
   MAKE_INTRINSIC_0("__class_id", class_id_intrinsic, SLANG_INT_TYPE),
   MAKE_INTRINSIC_1("__datatype", datatype_intrinsic, SLANG_VOID_TYPE, SLANG_SLTYPE_INT_TYPE),
   MAKE_INTRINSIC_0("_eqs", eqs_intrinsic, SLANG_INT_TYPE),
   MAKE_INTRINSIC_S("get_doc_string_from_file",  get_doc_string_intrin, SLANG_VOID_TYPE),
   MAKE_INTRINSIC_S("add_doc_file", add_doc_file_intrin, SLANG_VOID_TYPE),
   MAKE_INTRINSIC_0("get_doc_files", get_doc_files_intrin, SLANG_VOID_TYPE),
   MAKE_INTRINSIC_0("set_doc_files", set_doc_files_intrin, SLANG_VOID_TYPE),
   MAKE_INTRINSIC_SS("autoload",  autoload_intrinsic, SLANG_VOID_TYPE),
   MAKE_INTRINSIC_S("is_defined",  is_defined_intrin, SLANG_INT_TYPE),
   MAKE_INTRINSIC_0("string",  _pSLstring_intrinsic, SLANG_VOID_TYPE),
   MAKE_INTRINSIC_0("uname", uname_cmd, SLANG_VOID_TYPE),
Пример #5
0
   if (NULL == (c = obj->c))
     {
	SLang_verror (SL_InvalidParm_Error, "Checksum object is invalid");
	return;
     }
   if (NULL == (s = SLbstring_get_pointer (b, &len)))
     return;

   (void) c->accumulate (c, s, len);
}

#define DUMMY_CHKSUM_TYPE ((unsigned int)-1)
static SLang_Intrin_Fun_Type Intrinsics [] =
{
   MAKE_INTRINSIC_1 ("_chksum_new", chksum_new, SLANG_VOID_TYPE, SLANG_STRING_TYPE),
   MAKE_INTRINSIC_2 ("_chksum_accumulate", chksum_accumulate, SLANG_VOID_TYPE, DUMMY_CHKSUM_TYPE, SLANG_BSTRING_TYPE),
   MAKE_INTRINSIC_1 ("_chksum_close", chksum_close, SLANG_VOID_TYPE, DUMMY_CHKSUM_TYPE),
   SLANG_END_INTRIN_FUN_TABLE
};

static void destroy_chksum_type (SLtype type, VOID_STAR ptr)
{
   (void) type;
   chksum_free (*(Chksum_Object_Type **)ptr);
}

static int push_chksum_type (SLtype type, VOID_STAR ptr)
{
   (void) type;
   return chksum_push (*(Chksum_Object_Type **)ptr);
Пример #6
0
   MAKE_VARIABLE("Verbose_Fitsio", &Cfits_Verbose, SLANG_INT_TYPE, 0),
   MAKE_VARIABLE("Remove_Spectrum_Gaps", &Isis_Remove_Spectrum_Gaps, SLANG_INT_TYPE, 0),
   SLANG_END_INTRIN_VAR_TABLE
};

#define V SLANG_VOID_TYPE
#define I SLANG_INT_TYPE
#define U SLANG_UINT_TYPE
#define F SLANG_FLOAT_TYPE
#define D SLANG_DOUBLE_TYPE
#define S SLANG_STRING_TYPE

static SLang_Intrin_Fun_Type Misc_Intrinsics [] =
{
   MAKE_INTRINSIC("print_array", print_array, V, 0),
   MAKE_INTRINSIC_1("_isis_set_pager", isis_set_pager, V, S),
   MAKE_INTRINSIC("_isis_get_pager", isis_get_pager, V, 0),
   MAKE_INTRINSIC_2("_find_file_in_path", find_file_in_path, V, S, S),
   MAKE_INTRINSIC("_readcol", _readcol, V, 0),
   MAKE_INTRINSIC_I("_isis_set_errno", set_errno, V),
   SLANG_END_INTRIN_FUN_TABLE
};

static char *Pivs = ISIS_VERSION_STRING;
static char *Install_Prefix = INSTALL_PREFIX ;
static char *Install_Prefix_Input = INSTALL_PREFIX_INPUT ;

static SLang_Intrin_Var_Type Global_Intrin_Vars [] =
{
   MAKE_VARIABLE("_isis_version_string", &Pivs, SLANG_STRING_TYPE, 1),
   MAKE_VARIABLE("_isis_version", &Isis_Version, SLANG_UINT_TYPE, 1),
Пример #7
0
{
   return (int) Inner_Prod_Block_Size;
}

static void set_innerprod_block_size (int *sp)
{
   int s = *sp;
   if (s <= 0)
     s = SLANG_INNERPROD_BLOCK_SIZE;

   Inner_Prod_Block_Size = (unsigned int) s;
}

static SLang_Intrin_Fun_Type Array_Fun_Table [] =
{
   MAKE_INTRINSIC_1("transpose", array_transpose, SLANG_VOID_TYPE, SLANG_ARRAY_TYPE),
#if SLANG_HAS_FLOAT
   MAKE_INTRINSIC_0("prod", array_prod, SLANG_VOID_TYPE),
   MAKE_INTRINSIC_0("sum", array_sum, SLANG_VOID_TYPE),
   MAKE_INTRINSIC_0("sumsq", array_sumsq, SLANG_VOID_TYPE),
   MAKE_INTRINSIC_0("cumsum", array_cumsum, SLANG_VOID_TYPE),
#endif
   MAKE_INTRINSIC_0("array_swap", array_swap, SLANG_VOID_TYPE),
   MAKE_INTRINSIC_0("array_reverse", array_reverse, SLANG_VOID_TYPE),
   MAKE_INTRINSIC_0("min", array_min, SLANG_VOID_TYPE),
   MAKE_INTRINSIC_0("max", array_max, SLANG_VOID_TYPE),
   MAKE_INTRINSIC_0("maxabs", array_maxabs, SLANG_VOID_TYPE),
   MAKE_INTRINSIC_0("minabs", array_minabs, SLANG_VOID_TYPE),
   MAKE_INTRINSIC_0("any", array_any, SLANG_VOID_TYPE),
   MAKE_INTRINSIC_0("all", array_all, SLANG_VOID_TYPE),
Пример #8
0
static int fcntl_setfl (int *flags)
{
   int fd;

   if (-1 == pop_fd (&fd))
     return -1;

   return do_fcntl_3_int (fd, F_SETFL, *flags);
}

#define F SLANG_FILE_FD_TYPE
#define I SLANG_INT_TYPE
static SLang_Intrin_Fun_Type Fcntl_Intrinsics [] =
{
   MAKE_INTRINSIC_0("fcntl_getfd", fcntl_getfd, I),
   MAKE_INTRINSIC_1("fcntl_setfd", fcntl_setfd, I, I),
   MAKE_INTRINSIC_0("fcntl_getfl", fcntl_getfl, I),
   MAKE_INTRINSIC_1("fcntl_setfl", fcntl_setfl, I, I),

   SLANG_END_INTRIN_FUN_TABLE
};
#undef I
#undef F

static SLang_IConstant_Type Fcntl_Consts [] =
{
   MAKE_ICONSTANT("FD_CLOEXEC", FD_CLOEXEC),
#ifndef O_ACCMODE
# define O_ACCMODE (O_RDONLY | O_WRONLY | O_RDWR)
#endif
   MAKE_ICONSTANT("O_ACCMODE", O_ACCMODE),
Пример #9
0
{
   MAKE_ICONSTANT("WNOHANG", WNOHANG),
   MAKE_ICONSTANT("WUNTRACED", WUNTRACED),
   MAKE_ICONSTANT("WCONTINUED", WCONTINUED),
   SLANG_END_ICONST_TABLE
};

static SLang_Intrin_Fun_Type Module_Intrinsics [] =
{
   MAKE_INTRINSIC_0("fork", fork_intrinsic, SLANG_INT_TYPE),
   MAKE_INTRINSIC_2("waitpid", waitpid_intrinsic, SLANG_VOID_TYPE, SLANG_INT_TYPE, SLANG_INT_TYPE),
   MAKE_INTRINSIC_0("execv", execv_intrin, SLANG_INT_TYPE),
   MAKE_INTRINSIC_0("execvp", execvp_intrin, SLANG_INT_TYPE),
   MAKE_INTRINSIC_0("execve", execve_intrin, SLANG_INT_TYPE),
   MAKE_INTRINSIC_0("pipe", pipe_intrin, SLANG_VOID_TYPE),
   MAKE_INTRINSIC_1("_exit", _exit_intrin, SLANG_VOID_TYPE, SLANG_INT_TYPE),
   SLANG_END_INTRIN_FUN_TABLE
};

int init_fork_module_ns (char *ns_name)
{
   SLang_NameSpace_Type *ns = SLns_create_namespace (ns_name);
   if (ns == NULL)
     return -1;

   if ((-1 == SLns_add_intrin_fun_table (ns, Module_Intrinsics, NULL))
       || (-1 == SLns_add_iconstant_table (ns, Module_IConstants, NULL)))
     return -1;

   return 0;
}
Пример #10
0
   if (-1 == list_join_internal (list, l2))
     {
	free_list (list);
	return;
     }

  (void) push_list (list, 1);	       /* will delete upon failure */
}

#define L SLANG_LIST_TYPE
#define I SLANG_INT_TYPE
#define A SLANG_ARRAY_INDEX_TYPE
static SLang_Intrin_Fun_Type Intrin_Table [] =
{
   MAKE_INTRINSIC_2("list_delete", list_delete_elem, SLANG_VOID_TYPE, L, A),
   MAKE_INTRINSIC_1("list_reverse", list_reverse, SLANG_VOID_TYPE, L),
   MAKE_INTRINSIC_0("list_insert", list_insert_elem, SLANG_VOID_TYPE),
   MAKE_INTRINSIC_0("list_append", list_append_elem, SLANG_VOID_TYPE),
   MAKE_INTRINSIC_0("list_to_array", list_to_array, SLANG_VOID_TYPE),
   MAKE_INTRINSIC_0("list_new", list_new, SLANG_VOID_TYPE),
   MAKE_INTRINSIC_0("list_pop", list_pop, SLANG_VOID_TYPE),
   MAKE_INTRINSIC_2("list_concat", list_concat, SLANG_VOID_TYPE, L, L),
   MAKE_INTRINSIC_2("list_join", list_join, SLANG_VOID_TYPE, L, L),
   MAKE_INTRINSIC_1("__push_list", push_list_elements, SLANG_VOID_TYPE, L),
   MAKE_INTRINSIC_1("__pop_list", pop_as_list, SLANG_VOID_TYPE, I),
   SLANG_END_INTRIN_FUN_TABLE
};
#undef L
#undef I
#undef A
        return -1;
    }

    return 0;
}


#define DUMMY_TERMIOS_TYPE ((unsigned int)-1)
#define T DUMMY_TERMIOS_TYPE
#define F SLANG_FILE_FD_TYPE
#define I SLANG_INT_TYPE
#define V SLANG_VOID_TYPE
#define U SLANG_UINT_TYPE
static SLang_Intrin_Fun_Type Termios_Intrinsics [] =
{
    MAKE_INTRINSIC_1("tcdrain", tcdrain_intrin, I, F),
    MAKE_INTRINSIC_2("tcflow", tcflow_intrin, I, F, I),
    MAKE_INTRINSIC_2("tcflush", tcflush_intrin, I, F, I),
    MAKE_INTRINSIC_1("tcgetpgrp", tcgetpgrp_intrin, I, F),
    MAKE_INTRINSIC_2("tcsetpgrp", tcsetpgrp_intrin, I, F, I),
    MAKE_INTRINSIC_2("tcsendbreak", tcsendbreak_intrin, I, F, I),
    MAKE_INTRINSIC_1("tcgetattr", tcgetattr_intrin, V, F),
    MAKE_INTRINSIC_3("tcsetattr", tcsetattr_intrin, I, F, I, T),
    MAKE_INTRINSIC_1("cfgetispeed", cfgetispeed_intrin, V, T),
    MAKE_INTRINSIC_1("cfgetospeed", cfgetospeed_intrin, V, T),
    MAKE_INTRINSIC_2("cfsetispeed", cfsetispeed_intrin, I, T, U),
    MAKE_INTRINSIC_2("cfsetospeed", cfsetospeed_intrin, I, T, U),
    MAKE_INTRINSIC_1("termios_get_oflag", termios_get_oflag, I, T),
    MAKE_INTRINSIC_1("termios_get_iflag", termios_get_iflag, I, T),
    MAKE_INTRINSIC_1("termios_get_cflag", termios_get_cflag, I, T),
    MAKE_INTRINSIC_1("termios_get_lflag", termios_get_lflag, I, T),
Пример #12
0
   e = find_element (a, key, _pSLstring_get_hash (key));
   if (e == NULL)
     return;
   
   _pSLang_free_slstring ((char *) e->key);
   SLang_free_object (&e->value);
   e->key = Deleted_Key;
   a->num_deleted++;
}

#define A SLANG_ASSOC_TYPE
#define S SLANG_STRING_TYPE
static SLang_Intrin_Fun_Type Assoc_Table [] =
{
   MAKE_INTRINSIC_1("assoc_get_keys", assoc_get_keys, SLANG_VOID_TYPE, A),
   MAKE_INTRINSIC_1("assoc_get_values", assoc_get_values, SLANG_VOID_TYPE, A),
   MAKE_INTRINSIC_2("assoc_key_exists", assoc_key_exists, SLANG_INT_TYPE, A, S),
   MAKE_INTRINSIC_2("assoc_delete_key", assoc_delete_key, SLANG_VOID_TYPE, A, S),

   SLANG_END_INTRIN_FUN_TABLE
};
#undef A
#undef S

static int assoc_length (SLtype type, VOID_STAR v, unsigned int *len)
{
   SLang_Assoc_Array_Type *a;

   (void) type;
   a = (SLang_Assoc_Array_Type *) SLang_object_from_mmt (*(SLang_MMT_Type **)v);
Пример #13
0
static SLang_Intrin_Fun_Type SLang_Math_Table [] =
{
   MAKE_INTRINSIC_0("nint", nint_intrin, SLANG_VOID_TYPE),
   MAKE_INTRINSIC_0("polynom", math_poly, SLANG_DOUBLE_TYPE),
   MAKE_INTRINSIC_0("hypot", hypot_fun, SLANG_VOID_TYPE),
   MAKE_INTRINSIC_0("atan2", atan2_fun, SLANG_VOID_TYPE),
   MAKE_INTRINSIC_0("_min", min_fun, SLANG_VOID_TYPE),
   MAKE_INTRINSIC_0("_max", max_fun, SLANG_VOID_TYPE),
   MAKE_INTRINSIC_0("_diff", diff_fun, SLANG_VOID_TYPE),
   MAKE_INTRINSIC_0("feqs", feqs_fun, SLANG_VOID_TYPE),
   MAKE_INTRINSIC_0("fneqs", fneqs_fun, SLANG_VOID_TYPE),
   MAKE_INTRINSIC_0("flteqs", fleqs_fun, SLANG_VOID_TYPE),
   MAKE_INTRINSIC_0("fgteqs", fgeqs_fun, SLANG_VOID_TYPE),
   MAKE_INTRINSIC_0("fpu_clear_except_bits", fpu_clear_except_bits, SLANG_VOID_TYPE),
   MAKE_INTRINSIC_1("fpu_test_except_bits", fpu_test_except_bits, _pSLANG_LONG_TYPE, _pSLANG_LONG_TYPE),
   SLANG_END_INTRIN_FUN_TABLE
};

static SLang_IConstant_Type IConsts [] = 
{
   MAKE_ICONSTANT("FE_DIVBYZERO", SL_FE_DIVBYZERO),
   MAKE_ICONSTANT("FE_INVALID", SL_FE_INVALID),
   MAKE_ICONSTANT("FE_OVERFLOW", SL_FE_OVERFLOW),
   MAKE_ICONSTANT("FE_UNDERFLOW", SL_FE_UNDERFLOW),
   MAKE_ICONSTANT("FE_INEXACT", SL_FE_INEXACT),
   MAKE_ICONSTANT("FE_ALL_EXCEPT", SL_FE_ALLEXCEPT),
   SLANG_END_ICONST_TABLE
};

static int add_nan_and_inf (void)
Пример #14
0
   if (ret == -1)
     (void) SLang_push_null ();
   else
     (void) push_select_struct (ret, at_read, at_write, at_except,
				readfs, writefds, exceptfds);

   free_return:
   SLang_free_array (at_read);
   SLang_free_array (at_write);
   SLang_free_array (at_except);
}

static SLang_Intrin_Fun_Type Select_Intrinsics [] =
{
   MAKE_INTRINSIC_1("select", select_intrin, SLANG_VOID_TYPE, SLANG_DOUBLE_TYPE),
   SLANG_END_INTRIN_FUN_TABLE
};

int init_select_module_ns (char *ns_name)
{
   SLang_NameSpace_Type *ns;

   ns = SLns_create_namespace (ns_name);
   if (ns == NULL)
     return -1;

   if (-1 == SLns_add_intrin_fun_table (ns, Select_Intrinsics, "__SELECT__"))
     return -1;

   return 0;
Пример #15
0
#define B SLANG_BSTRING_TYPE
#define R SLANG_REF_TYPE
#define U SLANG_UINT_TYPE
#define S SLANG_STRING_TYPE
#define L SLANG_LONG_TYPE
static SLang_Intrin_Fun_Type Fd_Name_Table [] =
{
   MAKE_INTRINSIC_0("fileno", posix_fileno, V),
   MAKE_INTRINSIC_0("_fileno", posix_fileno_int, I),
   MAKE_INTRINSIC_0("isatty", posix_isatty, I),
   MAKE_INTRINSIC_0("open", posix_open, V),
   MAKE_INTRINSIC_3("read", posix_read, V, F, R, U),
   MAKE_INTRINSIC_3("lseek", posix_lseek, SLANG_C_OFF_T_TYPE, F, SLANG_C_OFF_T_TYPE, I),
   MAKE_INTRINSIC_2("fdopen", posix_fdopen, V, F, S),
   MAKE_INTRINSIC_2("write", posix_write, V, F, B),
   MAKE_INTRINSIC_1("dup_fd", posix_dup, V, F),
   MAKE_INTRINSIC_2("dup2_fd", posix_dup2, I, F, I),
   MAKE_INTRINSIC_1("close", posix_close, I, F),
   MAKE_INTRINSIC_1("_close", posix_close_fd, I, I),
#if defined(TTYNAME_R)
   MAKE_INTRINSIC_0("ttyname", posix_ttyname, V),
#endif
   SLANG_END_INTRIN_FUN_TABLE
};
#undef I
#undef V
#undef F
#undef B
#undef R
#undef S
#undef L
Пример #16
0
     (void) SLang_push_bstring(bstr);
   SLbstring_free (bstr);
   /* drop */
error:
   SLfree(buf);
}

#define DUMMY_ICONV_TYPE 255
#define P DUMMY_ICONV_TYPE
#define V SLANG_VOID_TYPE
#define S SLANG_STRING_TYPE
#define B SLANG_BSTRING_TYPE
static SLang_Intrin_Fun_Type ICONV_Intrinsics [] =
{
   MAKE_INTRINSIC_2("iconv_open", _iconv_open, V, S, S),
   MAKE_INTRINSIC_1("iconv_close", _iconv_close, V, P),
   MAKE_INTRINSIC_1("iconv_reset", _iconv_reset, V, P),
   MAKE_INTRINSIC_1("iconv_reset_shift", _iconv_reset_shift, V, P),
   MAKE_INTRINSIC_2("iconv", _iconv, V, P, B),
   SLANG_END_INTRIN_FUN_TABLE
};

#undef B
#undef S
#undef V
#undef P

static int register_iconv_type (void)
{
   SLang_Class_Type *cl;
Пример #17
0
Файл: math.c Проект: hankem/ISIS
   free_linear_system (&t);
}

/*{{{ intrinsics */

#define V SLANG_VOID_TYPE
#define AI SLANG_ARRAY_INDEX_TYPE
#define I SLANG_INT_TYPE
#define U SLANG_UINT_TYPE
#define F SLANG_FLOAT_TYPE
#define D SLANG_DOUBLE_TYPE
#define S SLANG_STRING_TYPE

static SLang_Intrin_Fun_Type Math_Intrinsics [] =
{
   MAKE_INTRINSIC_1("_make_1d_histogram", make_1d_histogram, V, I),
   MAKE_INTRINSIC_1("_make_2d_histogram", make_2d_histogram, V, I),
   MAKE_INTRINSIC_2("_fft1d", _fft1d, V, I, D),
   MAKE_INTRINSIC("_moment", moment, V, 0),
   MAKE_INTRINSIC("_median", median, V, 0),
   MAKE_INTRINSIC("_ks_difference", ks_difference, D, 0),
   MAKE_INTRINSIC_1("_ks_probability", ks_probability, D, D),
   MAKE_INTRINSIC_1("_seed_random", seed_random, V, SLANG_ULONG_TYPE),
   MAKE_INTRINSIC_1("_urand_array", urand_array, V, AI),
   MAKE_INTRINSIC_1("_grand_array", grand_array, V, AI),
   MAKE_INTRINSIC_2("_prand_array", prand_array, V, D, AI),
   MAKE_INTRINSIC("_prand_vec", prand_vec, V, 0),
   MAKE_INTRINSIC("lu_solve_intrin", lu_solve_intrin, V, 0),
   MAKE_INTRINSIC("svd_solve_intrin", svd_solve_intrin, V, 0),
   SLANG_END_INTRIN_FUN_TABLE
};
Пример #18
0
	*b++ = '.';
	*b++ = '.';
     }
   *b = 0;

   return SLmake_string ((char *)buf);
}

static unsigned int bstrlen_cmd (SLang_BString_Type *b)
{
   return b->len;
}

static SLang_Intrin_Fun_Type BString_Table [] = /*{{{*/
{
   MAKE_INTRINSIC_1("bstrlen",  bstrlen_cmd, SLANG_UINT_TYPE, SLANG_BSTRING_TYPE),
   MAKE_INTRINSIC_0("pack", _SLpack, SLANG_VOID_TYPE),
   MAKE_INTRINSIC_2("unpack", _SLunpack, SLANG_VOID_TYPE, SLANG_STRING_TYPE, SLANG_BSTRING_TYPE),
   MAKE_INTRINSIC_1("pad_pack_format", _SLpack_pad_format, SLANG_VOID_TYPE, SLANG_STRING_TYPE),
   MAKE_INTRINSIC_1("sizeof_pack", _SLpack_compute_size, SLANG_UINT_TYPE, SLANG_STRING_TYPE),
   SLANG_END_INTRIN_FUN_TABLE
};

int _SLang_init_bstring (void)
{
   SLang_Class_Type *cl;

   if (NULL == (cl = SLclass_allocate_class ("BString_Type")))
     return -1;
   (void) SLclass_set_destroy_function (cl, bstring_destroy);
   (void) SLclass_set_push_function (cl, bstring_push);
Пример #19
0
#define I SLANG_INT_TYPE
#define S SLANG_STRING_TYPE
#define D SLANG_DOUBLE_TYPE
#define R SLANG_REF_TYPE
static SLang_Intrin_Fun_Type Module_Intrinsics [] =
{
   MAKE_INTRINSIC_4("_pgarro", _pgarro, V, D, D, D, D),
   MAKE_INTRINSIC_I("_pgask", _pgask, V),
   MAKE_INTRINSIC_0("_pgaxis", _pgaxis, V),
   MAKE_INTRINSIC_7("_pgband", _pgband, I, I, I, D, D, R, R, R),
   MAKE_INTRINSIC_0("_pgbbuf", _pgbbuf, V),
   MAKE_INTRINSIC_I("_pgbin", _pgbin, V),
   MAKE_INTRINSIC_6("_pgbox", _pgbox, V, S, D, I, S, D, I),
   MAKE_INTRINSIC_3("_pgcirc", _pgcirc, V, D, D, D),
   MAKE_INTRINSIC_0("_pgclos", _pgclos, V),
   MAKE_INTRINSIC_1("_pgconb", _pgconb, V, D),
   MAKE_INTRINSIC_3("_pgconl", _pgconl, V, S, I, I),
   MAKE_INTRINSIC_0("_pgconf", _pgconf, V),
   MAKE_INTRINSIC_0("_pgcons", _pgcons, V),
   MAKE_INTRINSIC_1("_pgcont", _pgcont, V, I),
   /* MAKE_INTRINSIC_0("_pgconx", _pgconx, V), */

   MAKE_INTRINSIC_2("_pgctab", _pgctab, V, D, D),
   MAKE_INTRINSIC_0("_pgcurs", _pgcurs, I),
   MAKE_INTRINSIC_2("_pgdraw", _pgdraw, V, D, D),
   MAKE_INTRINSIC_0("_pgebuf", _pgebuf, V),
   MAKE_INTRINSIC_0("_pgend", _pgend, V),
   MAKE_INTRINSIC_6("_pgenv", _pgenv, V, D,D,D,D,I,I),
   MAKE_INTRINSIC_0("_pgeras", _pgeras, V),
   MAKE_INTRINSIC_5("_pgerr1", _pgerr1, V, I, D, D, D, D),
   MAKE_INTRINSIC_1("_pgerrb", _pgerrb, V, D),