home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / lisp / elk-2_0.lha / elk-2.0 / lib / xaw / stripchart.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-11-22  |  1.6 KB  |  49 lines

  1. #include "../xt/xt.h"
  2. #include <X11/Xaw/StripChart.h>
  3.  
  4. static void Get_Value (w, client_data, value) Widget w;
  5.     XtPointer client_data; XtPointer value; {
  6.     Object ret;
  7.  
  8.     ret = Funcall (Get_Function ((int)client_data), Null, 0);
  9.     switch (TYPE(ret)) {
  10.     case T_Fixnum: *(double *)value = (double)FIXNUM(ret); break;
  11.     case T_Flonum: *(double *)value = FLONUM(ret)->val; break;
  12.     case T_Bignum: *(double *)value = Bignum_To_Double (ret); break;
  13.     default: Primitive_Error ("stripchart sampler must return number");
  14.     }
  15. }
  16.  
  17. static Object P_Stripchart_Set_Sampler (w, p) Object w, p; {
  18.    int i;
  19.     Arg a[1];
  20.     XtCallbackList c;
  21.  
  22.     Check_Widget_Class (w, stripChartWidgetClass);
  23.     Check_Procedure (p);
  24.     XtSetArg (a[0], XtNgetValue, &c);
  25.     XtGetValues (WIDGET(w)->widget, a, 1);
  26.     if (c[0].callback)
  27.     Primitive_Error ("stripchart already has a sampler");
  28.     i = Register_Function (p);
  29.     XtAddCallback (WIDGET(w)->widget, XtNgetValue, Get_Value, (XtPointer)i);
  30.     return Make_Id ('s', (XtPointer)WIDGET(w)->widget, i);
  31. }
  32.  
  33. static Object P_Stripchart_Remove_Sampler (i) Object i; {
  34.    Widget w;
  35.  
  36.     w = (Widget)Use_Id (i, 's');
  37.     XtRemoveCallback (w, XtNgetValue, Get_Value,
  38.     (XtPointer)IDENTIFIER(i)->num);
  39.     Deregister_Function (IDENTIFIER(i)->num);
  40.     return Void;
  41. }
  42.  
  43. init_stripchart () {
  44.     XtResourceList r = 0;
  45.     Define_Class ("stripchart", stripChartWidgetClass, r, 0);
  46.     Define_Primitive (P_Stripchart_Remove_Sampler, "stripchart-remove-sampler", 1, 1, EVAL);
  47.     Define_Primitive (P_Stripchart_Set_Sampler, "stripchart-set-sampler", 2, 2, EVAL);
  48. }
  49.