15dfecf96Smrg/*
25dfecf96Smrg * Copyright (c) 2001 by The XFree86 Project, Inc.
35dfecf96Smrg *
45dfecf96Smrg * Permission is hereby granted, free of charge, to any person obtaining a
55dfecf96Smrg * copy of this software and associated documentation files (the "Software"),
65dfecf96Smrg * to deal in the Software without restriction, including without limitation
75dfecf96Smrg * the rights to use, copy, modify, merge, publish, distribute, sublicense,
85dfecf96Smrg * and/or sell copies of the Software, and to permit persons to whom the
95dfecf96Smrg * Software is furnished to do so, subject to the following conditions:
105dfecf96Smrg *
115dfecf96Smrg * The above copyright notice and this permission notice shall be included in
125dfecf96Smrg * all copies or substantial portions of the Software.
135dfecf96Smrg *
145dfecf96Smrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
155dfecf96Smrg * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
165dfecf96Smrg * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
175dfecf96Smrg * THE XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
185dfecf96Smrg * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
195dfecf96Smrg * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
205dfecf96Smrg * SOFTWARE.
215dfecf96Smrg *
225dfecf96Smrg * Except as contained in this notice, the name of the XFree86 Project shall
235dfecf96Smrg * not be used in advertising or otherwise to promote the sale, use or other
245dfecf96Smrg * dealings in this Software without prior written authorization from the
255dfecf96Smrg * XFree86 Project.
265dfecf96Smrg *
275dfecf96Smrg * Author: Paulo César Pereira de Andrade
285dfecf96Smrg */
295dfecf96Smrg
305dfecf96Smrg/* $XFree86: xc/programs/xedit/lisp/struct.h,v 1.6tsi Exp $ */
315dfecf96Smrg
325dfecf96Smrg#ifndef Lisp_struct_h
335dfecf96Smrg#define Lisp_struct_h
345dfecf96Smrg
355dfecf96Smrg#include "lisp/private.h"
365dfecf96Smrg
375dfecf96Smrg/*
385dfecf96Smrg * Defines
395dfecf96Smrg */
405dfecf96Smrg#define XSTRUCTP(object)	((object)->type == LispStruct_t)
415dfecf96Smrg#define STRUCTP(object)		(POINTERP(object) && XSTRUCTP(object))
425dfecf96Smrg#define STRUCT(fields, def)	LispNewStruct(fields, def)
435dfecf96Smrg
445dfecf96Smrg/*
455dfecf96Smrg * Prototypes
465dfecf96Smrg */
475dfecf96SmrgLispObj *Lisp_Defstruct(LispBuiltin*);
485dfecf96SmrgLispObj *Lisp_XeditMakeStruct(LispBuiltin*);
495dfecf96SmrgLispObj *Lisp_XeditStructAccess(LispBuiltin*);
505dfecf96SmrgLispObj *Lisp_XeditStructStore(LispBuiltin*);
515dfecf96SmrgLispObj *Lisp_XeditStructType(LispBuiltin*);
525dfecf96Smrg
535dfecf96Smrg#endif /* Lisp_struct_h */
54