comparison src/opaque.h @ 440:8de8e3f6228a r21-2-28

Import from CVS: tag r21-2-28
author cvs
date Mon, 13 Aug 2007 11:33:38 +0200
parents 3ecd8885ac67
children abe6d1db359e
comparison
equal deleted inserted replaced
439:357dd071b03c 440:8de8e3f6228a
21 21
22 /* Synched up with: Not in FSF. */ 22 /* Synched up with: Not in FSF. */
23 23
24 /* Written by Ben Wing, October 1993. */ 24 /* Written by Ben Wing, October 1993. */
25 25
26 #ifndef _XEMACS_OPAQUE_H_ 26 #ifndef INCLUDED_opaque_h_
27 #define _XEMACS_OPAQUE_H_ 27 #define INCLUDED_opaque_h_
28 28
29 typedef union { 29 typedef union {
30 struct { Lisp_Object obj; } obj; 30 struct { Lisp_Object obj; } obj;
31 struct { void *p; } p; 31 struct { void *p; } p;
32 struct { double d; } d; 32 struct { double d; } d;
45 #define OPAQUEP(x) RECORDP (x, opaque) 45 #define OPAQUEP(x) RECORDP (x, opaque)
46 /* #define CHECK_OPAQUE(x) CHECK_RECORD (x, opaque) 46 /* #define CHECK_OPAQUE(x) CHECK_RECORD (x, opaque)
47 Opaque pointers should never escape to the Lisp level, so 47 Opaque pointers should never escape to the Lisp level, so
48 functions should not be doing this. */ 48 functions should not be doing this. */
49 49
50 /* Alternative DATA arguments to make_opaque */ 50 /* Alternative DATA arguments to make_opaque() */
51 #define OPAQUE_CLEAR ((CONST void *) 0) 51 #define OPAQUE_CLEAR ((CONST void *) 0)
52 #define OPAQUE_UNINIT ((CONST void *) -1) 52 #define OPAQUE_UNINIT ((CONST void *) -1)
53 53
54 #define OPAQUE_SIZE(op) ((op)->size) 54 #define OPAQUE_SIZE(op) ((op)->size)
55 #define OPAQUE_DATA(op) ((void *) ((op)->data)) 55 #define OPAQUE_DATA(op) ((void *) ((op)->data))
56 #define OPAQUE_MARKFUN(op) ((op)->markfun) 56 #define OPAQUE_MARKFUN(op) ((op)->markfun)
57 #define XOPAQUE_SIZE(op) OPAQUE_SIZE (XOPAQUE (op)) 57 #define XOPAQUE_SIZE(op) OPAQUE_SIZE (XOPAQUE (op))
58 #define XOPAQUE_DATA(op) OPAQUE_DATA (XOPAQUE (op)) 58 #define XOPAQUE_DATA(op) OPAQUE_DATA (XOPAQUE (op))
59 #define XOPAQUE_MARKFUN(op) OPAQUE_MARKFUN (XOPAQUE (op)) 59 #define XOPAQUE_MARKFUN(op) OPAQUE_MARKFUN (XOPAQUE (op))
60 60
61 Lisp_Object make_opaque (size_t size, CONST void *data); 61 Lisp_Object make_opaque (CONST void *data, size_t size);
62 62
63 typedef struct Lisp_Opaque_Ptr 63 typedef struct Lisp_Opaque_Ptr
64 { 64 {
65 struct lcrecord_header header; 65 struct lcrecord_header header;
66 void *ptr; 66 void *ptr;
75 void free_opaque_ptr (Lisp_Object ptr); 75 void free_opaque_ptr (Lisp_Object ptr);
76 76
77 #define get_opaque_ptr(op) (XOPAQUE_PTR (op)->ptr) 77 #define get_opaque_ptr(op) (XOPAQUE_PTR (op)->ptr)
78 #define set_opaque_ptr(op, ptr_) (XOPAQUE_PTR (op)->ptr = (ptr_)) 78 #define set_opaque_ptr(op, ptr_) (XOPAQUE_PTR (op)->ptr = (ptr_))
79 79
80 #endif /* _XEMACS_OPAQUE_H_ */ 80 #endif /* INCLUDED_opaque_h_ */