83 lines
2.5 KiB
C
83 lines
2.5 KiB
C
/* Copyright 1989 GROUPE BULL -- See license conditions in file COPYRIGHT
|
|
* Copyright 1989 Massachusetts Institute of Technology
|
|
*/
|
|
/************************\
|
|
* *
|
|
* WOOL_OBJECT Pointer *
|
|
* DEFINITIONS *
|
|
* *
|
|
\************************/
|
|
|
|
#ifndef INCLUDE_WL_POINTER_H
|
|
#define INCLUDE_WL_POINTER_H
|
|
|
|
/* type */
|
|
|
|
typedef struct _WOOL_Pointer {
|
|
WOOL_HEADER;
|
|
long *ptr; /* pointer to C object */
|
|
char p_name[1]; /* same as for atoms */
|
|
} *WOOL_Pointer;
|
|
|
|
typedef struct _WOOL_Pointer_internal {
|
|
char **base; /* if non-null, ptr is an offset to it */
|
|
WOOL_HEADER;
|
|
long ptr; /* offset to pointer to C object */
|
|
char p_name[1]; /* same as for atoms */
|
|
} *WOOL_Pointer_internal;
|
|
|
|
/* macro to access the internal field */
|
|
|
|
#define WLPointerBase(wl_ptr) \
|
|
(((WOOL_Pointer_internal) (((char *) (wl_ptr)) - \
|
|
(sizeof(struct _WOOL_Pointer_internal) - \
|
|
sizeof(struct _WOOL_Pointer)))) -> base)
|
|
|
|
#define WL_Pointer_internal(wl_ptr) \
|
|
((WOOL_Pointer_internal) (((char *) (wl_ptr)) - \
|
|
(sizeof(struct _WOOL_Pointer_internal) - \
|
|
sizeof(struct _WOOL_Pointer))))
|
|
|
|
/* exported functions */
|
|
|
|
EXT WOOL_Pointer wool_pointer_make();
|
|
EXT WOOL_Pointer wool_func_pointer_make();
|
|
EXT WOOL_Pointer WLPointer_make();
|
|
EXT WOOL_OBJECT WLPointer_eval();
|
|
EXT WOOL_OBJECT WLPointer_execute();
|
|
EXT WOOL_OBJECT WLPointer_set();
|
|
EXT WOOL_OBJECT WLPointer_setq();
|
|
EXT long WLPointer_get_C_value();
|
|
|
|
/* methods */
|
|
|
|
EXT WOOL_METHOD WLPointer[]
|
|
#ifdef DO_INIT
|
|
= {
|
|
(WOOL_METHOD) 0, /* METHODS_ARRAY */
|
|
WLPointer_eval, /* WOOL_eval 1 */
|
|
WLAtom_print, /* WOOL_print 2 */
|
|
WLAtom_free, /* WOOL_free 3 */
|
|
WLPointer_execute, /* WOOL_execute 4 */
|
|
WLPointer_set, /* WOOL_set 5 */
|
|
(WOOL_METHOD) WLPointer_get_C_value,/* WOOL_get_C_value 6 */
|
|
wool_undefined_method_1, /* WOOL_open 7 */
|
|
wool_undefined_method_1, /* WOOL_close 8 */
|
|
wool_undefined_method_2, /* WOOL_process_event 9 */
|
|
wool_undefined_method_1, /* WOOL_copy 10 */
|
|
wool_undefined_method_2, /* WOOL_get_dimensions 11 */
|
|
wool_undefined_method_2, /* WOOL_draw 12 */
|
|
WLAtom_equal, /* WOOL_equal 13 */
|
|
wool_undefined_method_2,
|
|
WLPointer_setq, /* WOOL_setq 15 */
|
|
wool_undefined_method_1,
|
|
WLPointer_eval,
|
|
wool_undefined_method_1,
|
|
wool_undefined_method_1,
|
|
wool_undefined_method_1
|
|
}
|
|
#endif /* DO_INIT */
|
|
;
|
|
|
|
#endif /* INCLUDE_WL_POINTER_H */
|