This is opaque.h in view mode; [Download] [Up]
/* Opaque Lisp objects. Copyright (C) 1993 Sun Microsystems, Inc. This file is part of XEmacs. XEmacs is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. XEmacs is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with XEmacs; see the file COPYING. If not, write to the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ /* Synched up with: Not in FSF. */ /* Written by Ben Wing, October 1993. */ #ifndef _XEMACS_OPAQUE_H_ #define _XEMACS_OPAQUE_H_ struct Lisp_Opaque { struct lcrecord_header header; Lisp_Object (*markfun) (Lisp_Object obj, void (*markobj) (Lisp_Object)); long size; char data[1]; }; DECLARE_LRECORD (opaque, struct Lisp_Opaque); #define XOPAQUE(x) XRECORD (x, opaque, struct Lisp_Opaque) #define XSETOPAQUE(x, p) XSETRECORD (x, p, opaque) #define OPAQUEP(x) RECORDP (x, opaque) /* #define CHECK_OPAQUE(x, i) CHECK_RECORD (x, opaque) Opaque pointers should never escape to the Lisp level, so functions should not be doing this. */ extern Lisp_Object make_opaque (int size, void *data); extern Lisp_Object make_opaque_ptr (void *val); extern Lisp_Object make_opaque_long (long val); #define OPAQUE_SIZE(op) ((op)->size) #define OPAQUE_DATA(op) ((op)->data) #define OPAQUE_MARKFUN(op) ((op)->markfun) #define XOPAQUE_SIZE(op) OPAQUE_SIZE (XOPAQUE (op)) #define XOPAQUE_DATA(op) OPAQUE_DATA (XOPAQUE (op)) #define XOPAQUE_MARKFUN(op) OPAQUE_MARKFUN (XOPAQUE (op)) #define get_opaque_ptr(op) (* (void **) XOPAQUE_DATA (op)) #define set_opaque_ptr(op, ptr) (get_opaque_ptr (op) = ptr) #define get_opaque_long(op) (* (long *) XOPAQUE_DATA (op)) #define set_opaque_long(op, ptr) (get_opaque_long (op) = ptr) #define set_opaque_markfun(op, fun) (XOPAQUE_MARKFUN (op) = fun) #endif /* _XEMACS_OPAQUE_H_ */
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.