/*****************************************************************
	 * TclSetCurrent:
	 *****************************************************************/
int TclSetCurrent()
   {
    int   sts;
    char  *experiment;
    static int   shot;
    static DESCRIPTOR_LONG(dsc_shot,&shot);
    static DYNAMIC_DESCRIPTOR(dsc_experiment);
    static DYNAMIC_DESCRIPTOR(dsc_asciiShot);

    cli_get_value("EXPERIMENT",&dsc_experiment);
    experiment = dsc_experiment.dscA_pointer;
    if (cli_present("INCREMENT") & 1)
       {
        shot = TreeGetCurrentShotId(experiment);
        shot++;
        sts = TreeSetCurrentShotId(experiment,shot);
       }
    else
       {
        cli_get_value("SHOT",&dsc_asciiShot);
#ifdef vms
        dsc_asciiShot.dscB_class = CLASS_S;	/* vms: malloc vs str$	*/
        sts = TdiExecute(&dsc_asciiShot,&dsc_shot MDS_END_ARG);
        dsc_asciiShot.dscB_class = CLASS_D;
#else
        sts = TdiExecute(&dsc_asciiShot,&dsc_shot MDS_END_ARG);
#endif
        if (sts & 1)
            sts = TreeSetCurrentShotId(experiment,shot);
       }

    if ((sts & 1) != 1)
        MdsMsg(sts,0);
    return sts;
   }
int PARAGON_FTP_COPY(char *report_in, struct descriptor *report_out, int *isftp)
{
  struct descriptor report = {0, DTYPE_T, CLASS_S, 0};
  DESCRIPTOR(ftp_it,"PARAGON_FTP_COPY($)");
  report.length = strlen(report_in);
  report.pointer = report_in;
  *isftp = 1;
  return TdiExecute(&ftp_it,&report,report_out MDS_END_ARG);
}
Exemple #3
0
static int NElements(int nid)
{
  static int num;
  static struct descriptor_s num_dsc = {sizeof(int), DTYPE_L, CLASS_S, (char *)&num};
  static DESCRIPTOR(set_var, "_TextArray = $1");
  static struct descriptor_xd dummy_xd = {0, DTYPE_DSC, CLASS_XD, 0, 0};
  struct descriptor_s nid_dsc = {sizeof(int), DTYPE_NID, CLASS_S, (char *)0};
  int status = 1;
  nid_dsc.pointer = (char *)&nid;
  if (last_nid != nid) {
    last_nid = 0;
    status = TdiExecute(&set_var, &nid_dsc, &dummy_xd MDS_END_ARG);
  }
  if (status&1) {
    static DESCRIPTOR(size_expr, "SIZE(_TextArray)");
    last_nid = nid;
    status = TdiExecute(&size_expr, &num_dsc MDS_END_ARG);
  }
  return (status&1) ? num : 0;
}
Exemple #4
0
static void Reset(Widget w)
{
  int status;
  Widget list_w = XtNameToWidget(XtParent(w),"*interpreters");
  static struct descriptor_d cli = {0, DTYPE_T, CLASS_D, 0};
  static DESCRIPTOR(initial, "_I=0");
  static DESCRIPTOR(clis, "(clis()[_I++]//\"\\0\")");
  XtPointer user_data;
  int nid;
  String selections;
  String selection;
  int ctx = 0;
  int first = 1;
  XtVaGetValues(list_w, XmNuserData, &user_data, NULL);
  nid = (intptr_t)user_data;
  XmListDeselectAllItems(list_w);
  XmListDeleteAllItems(list_w);
  TdiExecute(&initial,&cli MDS_END_ARG);
  while ((status=TdiExecute(&clis, &cli MDS_END_ARG)&1 && cli.length > 0 && strlen(cli.pointer) > 0))
  {
    XmString item;
    item = XmStringCreateSimple(cli.pointer);
    if (!XmListItemExists(list_w,item))
      XmListAddItem(list_w,item,0);
    XmStringFree(item);
  }
  selections = XmdsGetNidText(nid);
  for (selection=strtok(selections,"\n");selection;selection=strtok(0,"\n"))
  {
    XmString item = XmStringCreateSimple(selection);
    XmListSelectItem(list_w, item, 0);
    if (first)
    {
      first = 0;
      XmListSetItem(list_w, item);
    }
    XmStringFree(item);
  }
  XtFree(selections);
  return;
}
Exemple #5
0
static char *ArrayRef(int nid, int num)
{
  struct descriptor_s num_dsc = {sizeof(int), DTYPE_L, CLASS_S, (char *)0};
  static DESCRIPTOR(set_var, "_TextArray = $1");
  static struct descriptor_xd dummy_xd = {0, DTYPE_DSC, CLASS_XD, 0, 0};
  struct descriptor_s nid_dsc = {sizeof(int), DTYPE_NID, CLASS_S, (char *)0};
  static struct descriptor_d empty_string = {0, DTYPE_T, CLASS_D, 0};
  int status = 1;
  num_dsc.pointer = (char *)#
  nid_dsc.pointer = (char *)&nid;
  if (last_nid != nid) {
    last_nid = 0;
    status = TdiExecute(&set_var, &nid_dsc, &dummy_xd MDS_END_ARG);
  }
  if (status&1) {
    static DESCRIPTOR(subscript_expr, "_TextArray[$]//\"\\0\"");
    struct descriptor_s num_dsc = {sizeof(int), DTYPE_L, CLASS_S, (char *)0};
    num_dsc.pointer = (char *)#
    status = TdiExecute(&subscript_expr, &num_dsc, &empty_string MDS_END_ARG);
  }
  return ((status&1)==0) ? 0 : empty_string.pointer;
}
Exemple #6
0
	/****************************************************************
	 * TclDoMethod:
	 ****************************************************************/
int TclDoMethod()
   {
    int   i;
    int   argc;
    int   sts;
    unsigned char  do_it;
    struct descriptor_xd xdarg[255];
    static int   nid;
    static unsigned short boolVal;
    static struct descriptor_s bool_dsc =
                    {sizeof(boolVal), DTYPE_W, CLASS_S, (char *)&boolVal};
    static struct descriptor nid_dsc = {4,DTYPE_NID,CLASS_S,(char *)&nid};
    static struct descriptor_xd empty_xd = {0,DTYPE_DSC,CLASS_XD,0,0};
    static DYNAMIC_DESCRIPTOR(arg);
    static DYNAMIC_DESCRIPTOR(if_clause);
    static DYNAMIC_DESCRIPTOR(method);
    static DYNAMIC_DESCRIPTOR(object);
    static void  *arglist[256] = {(void *)2,&nid_dsc,&method};

    cli_get_value("OBJECT",&object);
    sts = TreeFindNode(object.dscA_pointer,&nid);
    if (sts & 1)
       {
        do_it = (TreeIsOn(nid) | cli_present("OVERRIDE")) & 1;
        if (cli_present("IF") & 1)
           {
            cli_get_value("IF",&if_clause);
            sts = TdiExecute(&if_clause,&bool_dsc MDS_END_ARG);
            if (sts & 1)
                do_it = do_it && boolVal;
            else
                do_it = 0;
           }
        if (do_it)
           {
            int dometh_stat;
            DESCRIPTOR_LONG(dometh_stat_d,0);
            cli_get_value("METHOD",&method);
            argc = 0;
            if (cli_present("ARGUMENT") & 1)
               {
                while (cli_get_value("ARGUMENT",&arg) & 1)
                   {
                    xdarg[argc] = empty_xd;
                    sts = TdiCompile(&arg,&xdarg[argc] MDS_END_ARG);
                    if (sts & 1)
                       {
                        arglist[argc + 3] = xdarg[argc].dscA_pointer;
                        argc++;
                       }
                    else
                        break;
                   }
               }
            if (sts & 1)
               {
#ifdef vms
                arglist[0] = (void *)(argc + 2);
#else
                dometh_stat_d.dscA_pointer = (char *)&dometh_stat;
                arglist[argc+3] = &dometh_stat_d;
                arglist[argc+4] = MdsEND_ARG;
                arglist[0] = (argc + 4)+(char *)0;
#endif

		sts = (char *)LibCallg(arglist,TreeDoMethod)-(char *)0;
                if (sts & 1) sts = dometh_stat;
               }
            str_free1_dx(&arg);
            str_free1_dx(&method);
            for (i = 0; i < argc; i++)
                MdsFree1Dx(&xdarg[i],NULL);
           }
       }
    str_free1_dx(&object);
#ifdef vms
    if (!(sts & 1)) lib$signal(sts,0);
#else
	if (!(sts & 1))
	{
		char msg[512];
		sprintf(msg,"Error executing method - %s",MdsGetMsg(sts));
		TclTextOut(msg);
	}
#endif
    return sts;
   }
static void StoreSignal(int nid, 
                        int num,
                        float *v, 
                        TIME *t, 
                        struct descriptor_xd *limits,
                        int sort)
{
  DESCRIPTOR_A(vals, sizeof(float), DTYPE_NATIVE_FLOAT, 0, 0);
  DESCRIPTOR_A(tims, sizeof(TIME), DTYPE_QU, 0, 0);
  int status;
  static struct descriptor_xd tmp_xd = {0, DTYPE_DSC, CLASS_XD, 0, 0};
  static struct descriptor_xd values = {0, DTYPE_DSC, CLASS_XD, 0, 0};
  static struct descriptor_xd times = {0, DTYPE_DSC, CLASS_XD, 0, 0};
  static DESCRIPTOR_SIGNAL_1(signal, &values, 0, &times);
  vals.pointer = (char *)v;
  vals.arsize = num * sizeof(float);
  tims.pointer = (char *)t;
  tims.arsize = num * sizeof(TIME);
  if (limits->l_length) {
    static struct descriptor_xd selections = {0,DTYPE_DSC,CLASS_XD,0,0};
    static DESCRIPTOR(select, "(($1 > $2[0]) && ($1 < $2[1]))");
    static DESCRIPTOR(pack, "PACK($, $)");
    TdiExecute(&select, &vals, limits, &selections MDS_END_ARG);
    TdiExecute(&pack, &vals, &selections, &values MDS_END_ARG);
    TdiExecute(&pack, &tims, &selections, &times MDS_END_ARG);
    MdsFree1Dx(&selections,0);
  }
  else {
    MdsCopyDxXd((struct descriptor *)&tims, &times);
    MdsCopyDxXd((struct descriptor *)&vals, &values);
  }
  status = TreeGetRecord(nid, &tmp_xd);
  if (status&1) {
    static struct descriptor_xd value = {0,DTYPE_DSC,CLASS_XD,0,0};
    static struct descriptor_xd time = {0,DTYPE_DSC,CLASS_XD,0,0};
    static DESCRIPTOR(sorted_times,"SORT($)");
    static DESCRIPTOR(dim_of, "DIM_OF($)");
    static DESCRIPTOR(val_of, "DATA($)");
    static DESCRIPTOR(set_range, "SET_RANGE(SIZE($1), $1)");
    TdiExecute(&dim_of, &tmp_xd, &time MDS_END_ARG);
    TdiExecute(&val_of, &tmp_xd, &value MDS_END_ARG);
    TdiVector(&value,&values,&values MDS_END_ARG);
    TdiVector(&time,&times,&times MDS_END_ARG);
    TdiExecute(&set_range, &values, &values MDS_END_ARG);
    TdiExecute(&set_range, &times, &times MDS_END_ARG);
    if (sort)
    {
      static struct descriptor_xd index = {0,DTYPE_DSC,CLASS_XD,0,0};
      static struct descriptor_xd sorted_values = {0,DTYPE_DSC,CLASS_XD,0,0};
      static struct descriptor_xd sorted_times = {0,DTYPE_DSC,CLASS_XD,0,0};
      static struct descriptor_xd sorted_signal = {0,DTYPE_DSC,CLASS_XD,0,0};
      static DESCRIPTOR_SIGNAL_1(signal, &sorted_values, 0, &sorted_times);
      TdiSort(times.pointer,&index MDS_END_ARG);
      TdiSubscript(times.pointer,index.pointer,&sorted_times MDS_END_ARG);
      TdiSubscript(values.pointer,index.pointer,&sorted_values MDS_END_ARG);
      TdiUnion(sorted_times.pointer,&time MDS_END_ARG);
      TdiSubscript(&signal,time.pointer,&sorted_signal MDS_END_ARG);
      status = TreePutRecord(nid, (struct descriptor *)&sorted_signal,0);
      MdsFree1Dx(&index,0);
      MdsFree1Dx(&sorted_values,0);
      MdsFree1Dx(&sorted_times,0);
    }
    else
      status = TreePutRecord(nid, (struct descriptor *)&signal,0);
    MdsFree1Dx(&value,0);
    MdsFree1Dx(&time,0);
  }
  else {
    signal.data = (struct descriptor *)&vals;
    signal.dimensions[0] = (struct descriptor *)&tims;
    status = TreePutRecord(nid, (struct descriptor *)&signal,0);
  }
  MdsFree1Dx(&tmp_xd,0);
}
  }
  else
    skip_next_value = 0;
  return status;
}

int PARAGON_FTP_COPY(char *report_in, struct descriptor *report_out, int *isftp)
{
  struct descriptor report = {0, DTYPE_T, CLASS_S, 0};
  DESCRIPTOR(ftp_it,"PARAGON_FTP_COPY($)");
  report.length = strlen(report_in);
  report.pointer = report_in;
  *isftp = 1;
  return TdiExecute(&ftp_it,&report,report_out MDS_END_ARG);
}

int PARAGON_FTP_DELETE(char *report_in, int delete)
{
  int status;
  struct descriptor report = {0, DTYPE_T, CLASS_S, 0};
  DESCRIPTOR(ftp_it,"PARAGON_FTP_DELETE($,$)");
  DESCRIPTOR_LONG(delete_d,0);
  EMPTYXD(ans);
  report.length = strlen(report_in);
  report.pointer = report_in;
  delete_d.pointer = (char *)&delete;
  status = TdiExecute(&ftp_it,&report,&delete_d,&ans MDS_END_ARG);
  MdsFree1Dx(&ans,0);
  return status;
}