#include <stdio.h>
#include "export.h"
/**************************************************************************/
static void
free_callback(UCHAR *addr)
{
printf("IDL released(%u)\r\n", addr);
}
/**************************************************************************/
void
idl_init_ (int *options, int *i_ret)
{
int argc;
char *argv;
argc = 0;
argv = NULL;
*i_ret = IDL_Init (*options, &argc, &argv);
}
/**************************************************************************/
void
idl_importnamedarray_ (float Y1[], float Y2[], float Y3[], float
Y4[], \
float Y5[], float XP[], long *i_ret)
{
int ii;
static char *cmds2[] = {"a = widget_base()",
"b = widget_button(a, value='Press When Done', \
xsize=300, ysize=200)",
"widget_control,/realize, a",
"dummy = widget_event(a)",
"widget_control,/destroy, a" };
static char *cmds[] = { "SET_PLOT, 'PS'",
"DEVICE, FILENAME='align.ps'",
"DEVICE,/INCHES,YOFFSET=2",
};
IDL_VPTR vY1;
IDL_VPTR vY2;
IDL_VPTR vY3;
IDL_VPTR vY4;
IDL_VPTR vY5;
IDL_VPTR vXP;
IDL_STRING my_env;
IDL_STRING my_idl;
IDL_STRING my_shell;
IDL_LONG dim[IDL_MAX_ARRAY_DIM];
dim[0] = 80;
IDL_Execute(sizeof(cmds)/sizeof(char *), cmds);
for (ii = 0; ii < 10; ii++)
{
printf("XP[%d]= %2f\n", ii, XP[ii]);
}
printf("\n");
for (ii = 0; ii < 10; ii++)
{
printf("Y1[%d]= %2f\n", ii, Y1[ii]);
}
vY1 = IDL_ImportNamedArray("idl_Y1", 1, dim, IDL_TYP_FLOAT,
(UCHAR *) Y1, free_callback, (void *) 0);
vY2 = IDL_ImportNamedArray("idl_Y2", 1, dim, IDL_TYP_FLOAT,
(UCHAR *) Y2, free_callback, (void *) 0);
vY3 = IDL_ImportNamedArray("idl_Y3", 1, dim, IDL_TYP_FLOAT,
(UCHAR *) Y3, free_callback, (void *) 0);
vY4 = IDL_ImportNamedArray("idl_Y4", 1, dim, IDL_TYP_FLOAT,
(UCHAR *) Y4, free_callback, (void *) 0);
vY5 = IDL_ImportNamedArray("idl_Y5", 1, dim, IDL_TYP_FLOAT,
(UCHAR *) Y5, free_callback, (void *) 0);
vXP = IDL_ImportNamedArray("idl_XP", 1, dim, IDL_TYP_FLOAT,
(UCHAR *) XP, free_callback, (void *) 0);
IDL_ExecuteStr("PLOT, idl_XP, idl_Y1, \
XTITLE = 'INCIDENT ENERGY (EV)', \
YTITLE = 'T TO V EFFICIENCY', \
PSYM = 0, \
XSTYLE = 1, XRANGE = [0,8], \
YSTYLE = 1, YRANGE = [0,1], \
XTICKS = 4, XMINOR = 10, \
YTICKS = 1, YMINOR = 10, \
CHARSIZE = 1");
IDL_ExecuteStr("OPLOT, idl_XP, idl_Y2");
IDL_ExecuteStr("OPLOT, idl_XP, idl_Y3");
IDL_ExecuteStr("OPLOT, idl_XP, idl_Y4");
IDL_ExecuteStr("OPLOT, idl_XP, idl_Y5");
IDL_Execute(sizeof(cmds2)/sizeof(char *), cmds2);
(void) IDL_ExecuteStr("my_env = GETENV(LM_LICENSE_FILE)");
(void) IDL_ExecuteStr("my_idl = GETENV(IDL_DIR)");
(void) IDL_ExecuteStr("my_shell = GETENV(SHELL)");
(void) IDL_ExecuteStr("print, my_env");
(void) IDL_ExecuteStr("print, my_idl");
(void) IDL_ExecuteStr("print, my_shell");
*i_ret = (long) vY5;
}
/**************************************************************************/
void
idl_cleanup_ (int *just_cleanup, long *i_ret)
{
printf("IDL is cleaning up here\n");
*i_ret = IDL_Cleanup (*just_cleanup);
}