typedef struct { int num; double ave; double var; double sdev; double sdom; double min; double max; } Moment_Type; static SLang_CStruct_Field_Type Moment_Layout [] = { MAKE_CSTRUCT_FIELD (Moment_Type, num, "num", SLANG_INT_TYPE, 0), MAKE_CSTRUCT_FIELD (Moment_Type, ave, "ave", SLANG_DOUBLE_TYPE, 0), MAKE_CSTRUCT_FIELD (Moment_Type, var, "var", SLANG_DOUBLE_TYPE, 0), MAKE_CSTRUCT_FIELD (Moment_Type, sdev, "sdev", SLANG_DOUBLE_TYPE, 0), MAKE_CSTRUCT_FIELD (Moment_Type, sdom, "sdom", SLANG_DOUBLE_TYPE, 0), MAKE_CSTRUCT_FIELD (Moment_Type, min, "min", SLANG_DOUBLE_TYPE, 0), MAKE_CSTRUCT_FIELD (Moment_Type, max, "max", SLANG_DOUBLE_TYPE, 0), SLANG_END_CSTRUCT_TABLE }; /* subroutine borrowed from John Davis */ static int mean_stddev_doubles (double *x, unsigned int num, double *s) /*{{{*/ { unsigned int i; double mean_i, variance_i;
long l; short h; char b; #if SLANG_HAS_FLOAT double d; double c[2]; #endif char *s; SLang_Array_Type *a; char *ro_str; } CStruct_Type; static SLang_CStruct_Field_Type C_Struct [] = { MAKE_CSTRUCT_FIELD(CStruct_Type, i, "i", SLANG_INT_TYPE, 0), #if SLANG_HAS_FLOAT MAKE_CSTRUCT_FIELD(CStruct_Type, d, "d", SLANG_DOUBLE_TYPE, 0), MAKE_CSTRUCT_FIELD(CStruct_Type, c, "z", SLANG_COMPLEX_TYPE, 0), #endif MAKE_CSTRUCT_FIELD(CStruct_Type, s, "s", SLANG_STRING_TYPE, 0), MAKE_CSTRUCT_FIELD(CStruct_Type, a, "a", SLANG_ARRAY_TYPE, 0), MAKE_CSTRUCT_FIELD(CStruct_Type, ro_str, "ro_str", SLANG_STRING_TYPE, 1), MAKE_CSTRUCT_INT_FIELD(CStruct_Type, l, "l", 0), MAKE_CSTRUCT_INT_FIELD(CStruct_Type, h, "h", 0), MAKE_CSTRUCT_INT_FIELD(CStruct_Type, b, "b", 0), SLANG_END_CSTRUCT_TABLE }; static CStruct_Type C_Struct_Buf; static void check_cstruct (void)
return 0; } /*}}}*/ typedef struct { double temperature; double ndensity; } Plasma_State_Type; static SLang_CStruct_Field_Type Plasma_State_Layout [] = { MAKE_CSTRUCT_FIELD (Plasma_State_Type, temperature, "temperature", SLANG_DOUBLE_TYPE, 0), MAKE_CSTRUCT_FIELD (Plasma_State_Type, ndensity, "ndensity", SLANG_DOUBLE_TYPE, 0), SLANG_END_CSTRUCT_TABLE }; static int apply_line_modifier (Model_t *m, Model_Info_Type *info, DB_line_t *line, double *emis) /*{{{*/ { Plasma_State_Type lm_state; lm_state.temperature = m->temperature; lm_state.ndensity = m->density; SLang_start_arg_list (); SLang_push_array (info->line_emis_modifier_params, 0); SLang_push_int (line->indx); if (-1 == SLang_push_cstruct ((VOID_STAR)&lm_state, Plasma_State_Layout))
# define SECS_PER_TICK (1.0/60.0) # endif #endif typedef struct { double tms_utime; double tms_stime; double tms_cutime; double tms_cstime; } TMS_Type; static SLang_CStruct_Field_Type TMS_Struct [] = { MAKE_CSTRUCT_FIELD(TMS_Type, tms_utime, "tms_utime", SLANG_DOUBLE_TYPE, 0), MAKE_CSTRUCT_FIELD(TMS_Type, tms_stime, "tms_stime", SLANG_DOUBLE_TYPE, 0), MAKE_CSTRUCT_FIELD(TMS_Type, tms_cutime, "tms_cutime", SLANG_DOUBLE_TYPE, 0), MAKE_CSTRUCT_FIELD(TMS_Type, tms_cstime, "tms_cstime", SLANG_DOUBLE_TYPE, 0), SLANG_END_CSTRUCT_TABLE }; static void times_cmd (void) { TMS_Type d; struct tms t; (void) times (&t); d.tms_utime = SECS_PER_TICK * (double)t.tms_utime; d.tms_stime = SECS_PER_TICK * (double)t.tms_stime;
typedef struct { int pid; int exited; int exit_status; int signal; int coredump; int stopped; int continued; } Waitpid_Type; static SLang_CStruct_Field_Type Waitpid_Struct [] = { MAKE_CSTRUCT_FIELD(Waitpid_Type, pid, "pid", SLANG_INT_TYPE, 0), MAKE_CSTRUCT_FIELD(Waitpid_Type, exited, "exited", SLANG_INT_TYPE, 0), MAKE_CSTRUCT_FIELD(Waitpid_Type, exit_status, "exit_status", SLANG_INT_TYPE, 0), MAKE_CSTRUCT_FIELD(Waitpid_Type, signal, "signal", SLANG_INT_TYPE, 0), MAKE_CSTRUCT_FIELD(Waitpid_Type, coredump, "coredump", SLANG_INT_TYPE, 0), MAKE_CSTRUCT_FIELD(Waitpid_Type, stopped, "stopped", SLANG_INT_TYPE, 0), MAKE_CSTRUCT_FIELD(Waitpid_Type, continued, "continued", SLANG_INT_TYPE, 0), SLANG_END_CSTRUCT_TABLE }; static void waitpid_intrinsic (int *pid, int *options) { int status, ret; Waitpid_Type s; while (-1 == (ret = waitpid ((pid_t)*pid, &status, *options)))
PLI_FIELD(set_char_size); PLI_FIELD(draw_box); PLI_FIELD(label_axes); PLI_FIELD(put_text_xy); PLI_FIELD(put_text_offset); PLI_FIELD(default_axis); PLI_FIELD(configure_axis); PLI_FIELD(read_cursor); } Plot_Library_Interface_Type; #undef PLI_FIELD static SLang_CStruct_Field_Type Plot_Library_Interface_Table [] = { MAKE_CSTRUCT_FIELD(Plot_Library_Interface_Type, open_ref, "open", SLANG_REF_TYPE, 0), MAKE_CSTRUCT_FIELD(Plot_Library_Interface_Type, close_ref, "close", SLANG_REF_TYPE, 0), MAKE_CSTRUCT_FIELD(Plot_Library_Interface_Type, subdivide_ref, "subdivide", SLANG_REF_TYPE, 0), MAKE_CSTRUCT_FIELD(Plot_Library_Interface_Type, select_window_ref, "select_window", SLANG_REF_TYPE, 0), MAKE_CSTRUCT_FIELD(Plot_Library_Interface_Type, select_viewport_ref, "select_viewport", SLANG_REF_TYPE, 0), MAKE_CSTRUCT_FIELD(Plot_Library_Interface_Type, set_plot_limits_ref, "set_plot_limits", SLANG_REF_TYPE, 0), MAKE_CSTRUCT_FIELD(Plot_Library_Interface_Type, query_plot_limits_ref, "query_plot_limits", SLANG_REF_TYPE, 0), MAKE_CSTRUCT_FIELD(Plot_Library_Interface_Type, erase_ref, "erase", SLANG_REF_TYPE, 0), MAKE_CSTRUCT_FIELD(Plot_Library_Interface_Type, update_ref, "update", SLANG_REF_TYPE, 0), MAKE_CSTRUCT_FIELD(Plot_Library_Interface_Type, next_page_ref, "next_page", SLANG_REF_TYPE, 0), MAKE_CSTRUCT_FIELD(Plot_Library_Interface_Type, get_color_ref, "get_color", SLANG_REF_TYPE, 0), MAKE_CSTRUCT_FIELD(Plot_Library_Interface_Type, set_color_ref, "set_color", SLANG_REF_TYPE, 0), MAKE_CSTRUCT_FIELD(Plot_Library_Interface_Type, set_line_style_ref, "set_line_style", SLANG_REF_TYPE, 0), MAKE_CSTRUCT_FIELD(Plot_Library_Interface_Type, set_line_width_ref, "set_line_width", SLANG_REF_TYPE, 0), MAKE_CSTRUCT_FIELD(Plot_Library_Interface_Type, set_clipping_ref, "set_clipping", SLANG_REF_TYPE, 0), MAKE_CSTRUCT_FIELD(Plot_Library_Interface_Type, plot_xy_ref, "plot_xy", SLANG_REF_TYPE, 0),
return isis_fit_add_statistic (sname, x); } /*}}}*/ typedef struct { SLang_Array_Type *bkg; SLang_Array_Type *bkg_at; SLang_Array_Type *src_at; } Optional_Data_Type; static SLang_CStruct_Field_Type Optional_Data_Type_Layout [] = { MAKE_CSTRUCT_FIELD (Optional_Data_Type, bkg, "bkg", SLANG_ARRAY_TYPE, 0), MAKE_CSTRUCT_FIELD (Optional_Data_Type, bkg_at, "bkg_at", SLANG_ARRAY_TYPE, 0), MAKE_CSTRUCT_FIELD (Optional_Data_Type, src_at, "src_at", SLANG_ARRAY_TYPE, 0), SLANG_END_CSTRUCT_TABLE }; static int push_opt_data (Isis_Fit_Statistic_Optional_Data_Type *opt_data) /*{{{*/ { Optional_Data_Type odt; int n, status=-1; if (opt_data == NULL) { SLang_push_null (); return 0; }