home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 22 gnu / 22-gnu.zip / gwm18a.zip / wl_pointer.h < prev    next >
C/C++ Source or Header  |  1995-07-03  |  3KB  |  83 lines

  1. /* Copyright 1989 GROUPE BULL -- See license conditions in file COPYRIGHT
  2.  * Copyright 1989 Massachusetts Institute of Technology
  3.  */
  4. /************************\
  5. *              *
  6. *  WOOL_OBJECT  Pointer     *
  7. *  DEFINITIONS         *
  8. *              *
  9. \************************/
  10.  
  11. #ifndef INCLUDE_WL_POINTER_H
  12. #define INCLUDE_WL_POINTER_H
  13.  
  14. /* type */
  15.  
  16. typedef struct _WOOL_Pointer {
  17.     WOOL_HEADER;
  18.     long             *ptr;     /* pointer to C object */
  19.     char            p_name[1];    /* same as for atoms */
  20. }              *WOOL_Pointer;
  21.  
  22. typedef struct _WOOL_Pointer_internal {
  23.     char        **base;    /* if non-null, ptr is an offset to it */
  24.     WOOL_HEADER;
  25.     long             ptr;     /* offset to pointer to C object */
  26.     char            p_name[1];    /* same as for atoms */
  27. }              *WOOL_Pointer_internal;
  28.  
  29. /* macro to access the internal field */
  30.  
  31. #define WLPointerBase(wl_ptr) \
  32.     (((WOOL_Pointer_internal) (((char *) (wl_ptr)) - \
  33.             (sizeof(struct _WOOL_Pointer_internal) - \
  34.             sizeof(struct _WOOL_Pointer)))) -> base)
  35.  
  36. #define WL_Pointer_internal(wl_ptr) \
  37.     ((WOOL_Pointer_internal) (((char *) (wl_ptr)) - \
  38.                 (sizeof(struct _WOOL_Pointer_internal) - \
  39.                 sizeof(struct _WOOL_Pointer))))
  40.  
  41. /* exported functions */
  42.  
  43. EXT WOOL_Pointer wool_pointer_make();
  44. EXT WOOL_Pointer wool_func_pointer_make();
  45. EXT WOOL_Pointer WLPointer_make();
  46. EXT WOOL_OBJECT  WLPointer_eval();
  47. EXT WOOL_OBJECT  WLPointer_execute();
  48. EXT WOOL_OBJECT  WLPointer_set();
  49. EXT WOOL_OBJECT  WLPointer_setq();
  50. EXT long         WLPointer_get_C_value();
  51.  
  52. /* methods */
  53.  
  54. EXT WOOL_METHOD WLPointer[]
  55. #ifdef DO_INIT
  56. = {
  57.    (WOOL_METHOD) 0,        /* METHODS_ARRAY */
  58.    WLPointer_eval,        /* WOOL_eval 1 */
  59.    WLAtom_print,        /* WOOL_print 2 */
  60.    WLAtom_free,            /* WOOL_free 3 */
  61.    WLPointer_execute,        /* WOOL_execute 4 */
  62.    WLPointer_set,        /* WOOL_set 5 */
  63.    (WOOL_METHOD) WLPointer_get_C_value,/* WOOL_get_C_value 6 */
  64.    wool_undefined_method_1,    /* WOOL_open 7 */
  65.    wool_undefined_method_1,    /* WOOL_close 8 */
  66.    wool_undefined_method_2,    /* WOOL_process_event 9 */
  67.    wool_undefined_method_1,    /* WOOL_copy 10 */
  68.    wool_undefined_method_2,    /* WOOL_get_dimensions 11 */
  69.    wool_undefined_method_2,    /* WOOL_draw 12 */
  70.    WLAtom_equal,        /* WOOL_equal 13 */
  71.    wool_undefined_method_2,
  72.    WLPointer_setq,              /* WOOL_setq 15 */
  73.    wool_undefined_method_1,
  74.    WLPointer_eval,
  75.    wool_undefined_method_1,
  76.    wool_undefined_method_1,
  77.    wool_undefined_method_1
  78. }
  79. #endif /* DO_INIT */
  80.                ;
  81.  
  82. #endif /* INCLUDE_WL_POINTER_H */
  83.