Mercurial > hg > xemacs-beta
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_ */ |