utils.h revision f46a6179
1f46a6179Smrg#ifndef UTILS_H
2f46a6179Smrg#define	UTILS_H 1
3f46a6179Smrg
4f46a6179Smrg  /*\
5f46a6179Smrg   * $Xorg: utils.h,v 1.3 2000/08/17 19:54:33 cpqbld Exp $
6f46a6179Smrg   *
7f46a6179Smrg   *		              COPYRIGHT 1990
8f46a6179Smrg   *		        DIGITAL EQUIPMENT CORPORATION
9f46a6179Smrg   *		           MAYNARD, MASSACHUSETTS
10f46a6179Smrg   *			    ALL RIGHTS RESERVED.
11f46a6179Smrg   *
12f46a6179Smrg   * THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE AND
13f46a6179Smrg   * SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION.
14f46a6179Smrg   * DIGITAL MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE
15f46a6179Smrg   * FOR ANY PURPOSE.  IT IS SUPPLIED "AS IS" WITHOUT EXPRESS OR IMPLIED
16f46a6179Smrg   * WARRANTY.
17f46a6179Smrg   *
18f46a6179Smrg   * IF THE SOFTWARE IS MODIFIED IN A MANNER CREATING DERIVATIVE COPYRIGHT
19f46a6179Smrg   * RIGHTS, APPROPRIATE LEGENDS MAY BE PLACED ON THE DERIVATIVE WORK IN
20f46a6179Smrg   * ADDITION TO THAT SET FORTH ABOVE.
21f46a6179Smrg   *
22f46a6179Smrg   * Permission to use, copy, modify, and distribute this software and its
23f46a6179Smrg   * documentation for any purpose and without fee is hereby granted, provided
24f46a6179Smrg   * that the above copyright notice appear in all copies and that both that
25f46a6179Smrg   * copyright notice and this permission notice appear in supporting
26f46a6179Smrg   * documentation, and that the name of Digital Equipment Corporation not be
27f46a6179Smrg   * used in advertising or publicity pertaining to distribution of the
28f46a6179Smrg   * software without specific, written prior permission.
29f46a6179Smrg  \*/
30f46a6179Smrg/* $XFree86: xc/programs/xkbcomp/utils.h,v 3.5 2002/06/05 00:00:37 dawes Exp $ */
31f46a6179Smrg
32f46a6179Smrg/***====================================================================***/
33f46a6179Smrg
34f46a6179Smrg#include 	<stdio.h>
35f46a6179Smrg#include	<X11/Xos.h>
36f46a6179Smrg#include	<X11/Xfuncproto.h>
37f46a6179Smrg#include	<X11/Xfuncs.h>
38f46a6179Smrg
39f46a6179Smrg#include <stddef.h>
40f46a6179Smrg
41f46a6179Smrg#ifndef NUL
42f46a6179Smrg#define	NUL	'\0'
43f46a6179Smrg#endif
44f46a6179Smrg
45f46a6179Smrg/***====================================================================***/
46f46a6179Smrg
47f46a6179Smrg#ifndef OPAQUE_DEFINED
48f46a6179Smrgtypedef	void *Opaque;
49f46a6179Smrg#endif
50f46a6179Smrg#ifndef NullOpaque
51f46a6179Smrg#define	NullOpaque	((Opaque)NULL)
52f46a6179Smrg#endif
53f46a6179Smrg
54f46a6179Smrg#ifndef BOOLEAN_DEFINED
55f46a6179Smrgtypedef	char	Boolean;
56f46a6179Smrg#endif
57f46a6179Smrg
58f46a6179Smrg#ifndef True
59f46a6179Smrg#define	True	((Boolean)1)
60f46a6179Smrg#define	False	((Boolean)0)
61f46a6179Smrg#endif /* ndef True */
62f46a6179Smrg#define	booleanText(b)	((b)?"True":"False")
63f46a6179Smrg
64f46a6179Smrg#ifndef COMPARISON_DEFINED
65f46a6179Smrgtypedef	int		Comparison;
66f46a6179Smrg
67f46a6179Smrg#define	Greater		((Comparison)1)
68f46a6179Smrg#define	Equal		((Comparison)0)
69f46a6179Smrg#define	Less		((Comparison)-1)
70f46a6179Smrg#define	CannotCompare	((Comparison)-37)
71f46a6179Smrg#define	comparisonText(c)	((c)?((c)<0?"Less":"Greater"):"Equal")
72f46a6179Smrg#endif
73f46a6179Smrg
74f46a6179Smrg#if 0
75f46a6179Smrgtypedef union {
76f46a6179Smrg	int		 i;
77f46a6179Smrg	unsigned	 u;
78f46a6179Smrg	void		*p;
79f46a6179Smrg	void		*(*fp)();
80f46a6179Smrg} Union;
81f46a6179Smrg#endif
82f46a6179Smrg
83f46a6179Smrg/***====================================================================***/
84f46a6179Smrg
85f46a6179Smrgextern	Opaque	uAlloc(
86f46a6179Smrg    unsigned	/* size */
87f46a6179Smrg);
88f46a6179Smrgextern	Opaque	uCalloc(
89f46a6179Smrg    unsigned	/* n */,
90f46a6179Smrg    unsigned	/* size */
91f46a6179Smrg);
92f46a6179Smrgextern	Opaque	uRealloc(
93f46a6179Smrg    Opaque	/* old */,
94f46a6179Smrg    unsigned	/* newSize */
95f46a6179Smrg);
96f46a6179Smrgextern	Opaque	uRecalloc(
97f46a6179Smrg    Opaque 	/* old */,
98f46a6179Smrg    unsigned	/* nOld */,
99f46a6179Smrg    unsigned	/* nNew */,
100f46a6179Smrg    unsigned 	/* newSize */
101f46a6179Smrg);
102f46a6179Smrgextern	void	uFree(
103f46a6179Smrg    Opaque	/* ptr */
104f46a6179Smrg);
105f46a6179Smrg
106f46a6179Smrg#define	uTypedAlloc(t)		((t *)uAlloc((unsigned)sizeof(t)))
107f46a6179Smrg#define	uTypedCalloc(n,t)	((t *)uCalloc((unsigned)n,(unsigned)sizeof(t)))
108f46a6179Smrg#define	uTypedRealloc(pO,n,t)	((t *)uRealloc((Opaque)pO,((unsigned)n)*sizeof(t)))
109f46a6179Smrg#define	uTypedRecalloc(pO,o,n,t) ((t *)uRecalloc((Opaque)pO,((unsigned)o),((unsigned)n),sizeof(t)))
110f46a6179Smrg#if (defined mdHasAlloca) && (mdHasAlloca)
111f46a6179Smrg#define	uTmpAlloc(n)	((Opaque)alloca((unsigned)n))
112f46a6179Smrg#define	uTmpFree(p)
113f46a6179Smrg#else
114f46a6179Smrg#define	uTmpAlloc(n)	uAlloc(n)
115f46a6179Smrg#define	uTmpFree(p)	uFree(p)
116f46a6179Smrg#endif
117f46a6179Smrg
118f46a6179Smrg/***====================================================================***/
119f46a6179Smrg
120f46a6179Smrgextern	Boolean	uSetErrorFile(
121f46a6179Smrg	char *	/* name */
122f46a6179Smrg);
123f46a6179Smrg
124f46a6179Smrg#define INFO6 			uInformation
125f46a6179Smrg#define INFO5 			uInformation
126f46a6179Smrg#define INFO4 			uInformation
127f46a6179Smrg#define INFO3 			uInformation
128f46a6179Smrg#define INFO2 			uInformation
129f46a6179Smrg#define INFO1 			uInformation
130f46a6179Smrg#define INFO 			uInformation
131f46a6179Smrg
132f46a6179Smrgextern	void	uInformation(
133f46a6179Smrg	const char * /* s */, ...
134f46a6179Smrg)
135f46a6179Smrg#if defined(__GNUC__) && \
136f46a6179Smrg    ((__GNUC__ > 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ >= 6)))
137f46a6179Smrg__attribute__((format(printf, 1, 2)))
138f46a6179Smrg#endif
139f46a6179Smrg;
140f46a6179Smrg
141f46a6179Smrg#define ACTION6			uAction
142f46a6179Smrg#define ACTION5			uAction
143f46a6179Smrg#define ACTION4			uAction
144f46a6179Smrg#define ACTION3			uAction
145f46a6179Smrg#define ACTION2			uAction
146f46a6179Smrg#define ACTION1			uAction
147f46a6179Smrg#define ACTION			uAction
148f46a6179Smrg
149f46a6179Smrgextern	void	uAction(
150f46a6179Smrg	const char * /* s  */, ...
151f46a6179Smrg)
152f46a6179Smrg#if defined(__GNUC__) && \
153f46a6179Smrg    ((__GNUC__ > 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ >= 6)))
154f46a6179Smrg__attribute__((format(printf, 1, 2)))
155f46a6179Smrg#endif
156f46a6179Smrg;
157f46a6179Smrg
158f46a6179Smrg#define WARN6			uWarning
159f46a6179Smrg#define WARN5			uWarning
160f46a6179Smrg#define WARN4			uWarning
161f46a6179Smrg#define WARN3			uWarning
162f46a6179Smrg#define WARN2			uWarning
163f46a6179Smrg#define WARN1			uWarning
164f46a6179Smrg#define WARN			uWarning
165f46a6179Smrg
166f46a6179Smrgextern	void	uWarning(
167f46a6179Smrg	const char * /* s  */, ...
168f46a6179Smrg)
169f46a6179Smrg#if defined(__GNUC__) && \
170f46a6179Smrg    ((__GNUC__ > 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ >= 6)))
171f46a6179Smrg__attribute__((format(printf, 1, 2)))
172f46a6179Smrg#endif
173f46a6179Smrg;
174f46a6179Smrg
175f46a6179Smrg#define ERROR6			uError
176f46a6179Smrg#define ERROR5			uError
177f46a6179Smrg#define ERROR4			uError
178f46a6179Smrg#define ERROR3			uError
179f46a6179Smrg#define ERROR2			uError
180f46a6179Smrg#define ERROR1			uError
181f46a6179Smrg#define ERROR			uError
182f46a6179Smrg
183f46a6179Smrgextern	void	uError(
184f46a6179Smrg	const char * /* s  */, ...
185f46a6179Smrg)
186f46a6179Smrg#if defined(__GNUC__) && \
187f46a6179Smrg    ((__GNUC__ > 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ >= 6)))
188f46a6179Smrg__attribute__((format(printf, 1, 2)))
189f46a6179Smrg#endif
190f46a6179Smrg;
191f46a6179Smrg
192f46a6179Smrg#define FATAL6			uFatalError
193f46a6179Smrg#define FATAL5			uFatalError
194f46a6179Smrg#define FATAL4			uFatalError
195f46a6179Smrg#define FATAL3			uFatalError
196f46a6179Smrg#define FATAL2			uFatalError
197f46a6179Smrg#define FATAL1			uFatalError
198f46a6179Smrg#define FATAL			uFatalError
199f46a6179Smrg
200f46a6179Smrgextern	void	uFatalError(
201f46a6179Smrg	const char * /* s  */, ...
202f46a6179Smrg)
203f46a6179Smrg#if defined(__GNUC__) && \
204f46a6179Smrg    ((__GNUC__ > 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ >= 6)))
205f46a6179Smrg__attribute__((format(printf, 1, 2)))
206f46a6179Smrg#endif
207f46a6179Smrg;
208f46a6179Smrg
209f46a6179Smrg/* WSGO stands for "Weird Stuff Going On" */
210f46a6179Smrg#define WSGO6			uInternalError
211f46a6179Smrg#define WSGO5			uInternalError
212f46a6179Smrg#define WSGO4			uInternalError
213f46a6179Smrg#define WSGO3			uInternalError
214f46a6179Smrg#define WSGO2			uInternalError
215f46a6179Smrg#define WSGO1			uInternalError
216f46a6179Smrg#define WSGO			uInternalError
217f46a6179Smrg
218f46a6179Smrgextern	void	uInternalError(
219f46a6179Smrg	const char * /* s  */, ...
220f46a6179Smrg)
221f46a6179Smrg#if defined(__GNUC__) && \
222f46a6179Smrg    ((__GNUC__ > 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ >= 6)))
223f46a6179Smrg__attribute__((format(printf, 1, 2)))
224f46a6179Smrg#endif
225f46a6179Smrg;
226f46a6179Smrg
227f46a6179Smrgextern	void	uSetPreErrorMessage(
228f46a6179Smrg	char * /* msg */
229f46a6179Smrg);
230f46a6179Smrg
231f46a6179Smrgextern	void	uSetPostErrorMessage(
232f46a6179Smrg	char * /* msg */
233f46a6179Smrg);
234f46a6179Smrg
235f46a6179Smrgextern	void	uSetErrorPrefix(
236f46a6179Smrg	char * /* void */
237f46a6179Smrg);
238f46a6179Smrg
239f46a6179Smrgextern	void	uFinishUp(
240f46a6179Smrg	void
241f46a6179Smrg);
242f46a6179Smrg
243f46a6179Smrg
244f46a6179Smrg/***====================================================================***/
245f46a6179Smrg
246f46a6179Smrg#define	NullString	((char *)NULL)
247f46a6179Smrg
248f46a6179Smrg#define	uStringText(s)		((s)==NullString?"<NullString>":(s))
249f46a6179Smrg#define	uStringEqual(s1,s2)	(uStringCompare(s1,s2)==Equal)
250f46a6179Smrg#define	uStringPrefix(p,s)	(strncmp(p,s,strlen(p))==0)
251f46a6179Smrg#define	uStringCompare(s1,s2)	(((s1)==NullString||(s2)==NullString)?\
252f46a6179Smrg                                 (s1)!=(s2):strcmp(s1,s2))
253f46a6179Smrg#define	uStrCaseEqual(s1,s2)	(uStrCaseCmp(s1,s2)==0)
254f46a6179Smrg#ifdef HAVE_STRCASECMP
255f46a6179Smrg#define	uStrCaseCmp(s1,s2)	(strcasecmp(s1,s2))
256f46a6179Smrg#define	uStrCasePrefix(p,s)	(strncasecmp(p,s,strlen(p))==0)
257f46a6179Smrg#else
258f46a6179Smrgextern	int uStrCaseCmp(
259f46a6179Smrg	const char *	/* s1 */,
260f46a6179Smrg	const char *	/* s2 */
261f46a6179Smrg);
262f46a6179Smrgextern	int uStrCasePrefix(
263f46a6179Smrg	const char *	/* p */,
264f46a6179Smrg	char *	/* str */
265f46a6179Smrg);
266f46a6179Smrg#endif
267f46a6179Smrg#ifdef HAVE_STRDUP
268f46a6179Smrg#define	uStringDup(s1)		(strdup(s1))
269f46a6179Smrg#else
270f46a6179Smrgextern	char *uStringDup(
271f46a6179Smrg	const char *	/* s1 */
272f46a6179Smrg);
273f46a6179Smrg#endif
274f46a6179Smrg
275f46a6179Smrg/***====================================================================***/
276f46a6179Smrg
277f46a6179Smrg#ifdef	ASSERTIONS_ON
278f46a6179Smrg#define	uASSERT(where,why) \
279f46a6179Smrg	{if (!(why)) uFatalError("assertion botched in %s ( why )\n",where);}
280f46a6179Smrg#else
281f46a6179Smrg#define	uASSERT(where,why)
282f46a6179Smrg#endif
283f46a6179Smrg
284f46a6179Smrg/***====================================================================***/
285f46a6179Smrg
286f46a6179Smrg#ifndef DEBUG_VAR
287f46a6179Smrg#define	DEBUG_VAR	debugFlags
288f46a6179Smrg#endif
289f46a6179Smrg
290f46a6179Smrg#ifdef DEBUG_VAR_NOT_LOCAL
291f46a6179Smrgextern
292f46a6179Smrg#endif
293f46a6179Smrgunsigned	int	DEBUG_VAR;
294f46a6179Smrg
295f46a6179Smrgextern	void	uDebug(
296f46a6179Smrg	char * /* s  */, ...
297f46a6179Smrg)
298f46a6179Smrg#if defined(__GNUC__) && \
299f46a6179Smrg    ((__GNUC__ > 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ >= 6)))
300f46a6179Smrg__attribute__((format(printf, 1, 2)))
301f46a6179Smrg#endif
302f46a6179Smrg;
303f46a6179Smrg
304f46a6179Smrgextern	void	uDebugNOI(	/* no indent */
305f46a6179Smrg	char * /* s  */, ...
306f46a6179Smrg)
307f46a6179Smrg#if defined(__GNUC__) && \
308f46a6179Smrg    ((__GNUC__ > 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ >= 6)))
309f46a6179Smrg__attribute__((format(printf, 1, 2)))
310f46a6179Smrg#endif
311f46a6179Smrg;
312f46a6179Smrg
313f46a6179Smrgextern	Boolean	uSetDebugFile(
314f46a6179Smrg    char *name
315f46a6179Smrg);
316f46a6179Smrg
317f46a6179Smrgextern	FILE	*uDebugFile;
318f46a6179Smrgextern	int	uDebugIndentLevel;
319f46a6179Smrgextern	int	uDebugIndentSize;
320f46a6179Smrg#define	uDebugIndent(l)		(uDebugIndentLevel+=(l))
321f46a6179Smrg#define	uDebugOutdent(l)	(uDebugIndentLevel-=(l))
322f46a6179Smrg#ifdef DEBUG_ON
323f46a6179Smrg#define	uDEBUG(f,s)		{ if (DEBUG_VAR&(f)) uDebug(s);}
324f46a6179Smrg#define	uDEBUG1(f,s,a)		{ if (DEBUG_VAR&(f)) uDebug(s,a);}
325f46a6179Smrg#define	uDEBUG2(f,s,a,b)	{ if (DEBUG_VAR&(f)) uDebug(s,a,b);}
326f46a6179Smrg#define	uDEBUG3(f,s,a,b,c)	{ if (DEBUG_VAR&(f)) uDebug(s,a,b,c);}
327f46a6179Smrg#define	uDEBUG4(f,s,a,b,c,d)	{ if (DEBUG_VAR&(f)) uDebug(s,a,b,c,d);}
328f46a6179Smrg#define	uDEBUG5(f,s,a,b,c,d,e)	{ if (DEBUG_VAR&(f)) uDebug(s,a,b,c,d,e);}
329f46a6179Smrg#define	uDEBUG_NOI(f,s)		{ if (DEBUG_VAR&(f)) uDebug(s);}
330f46a6179Smrg#define	uDEBUG_NOI1(f,s,a)	{ if (DEBUG_VAR&(f)) uDebugNOI(s,a);}
331f46a6179Smrg#define	uDEBUG_NOI2(f,s,a,b)	{ if (DEBUG_VAR&(f)) uDebugNOI(s,a,b);}
332f46a6179Smrg#define	uDEBUG_NOI3(f,s,a,b,c)	{ if (DEBUG_VAR&(f)) uDebugNOI(s,a,b,c);}
333f46a6179Smrg#define	uDEBUG_NOI4(f,s,a,b,c,d) { if (DEBUG_VAR&(f)) uDebugNOI(s,a,b,c,d);}
334f46a6179Smrg#define	uDEBUG_NOI5(f,s,a,b,c,d,e) { if (DEBUG_VAR&(f)) uDebugNOI(s,a,b,c,d,e);}
335f46a6179Smrg#else
336f46a6179Smrg#define	uDEBUG(f,s)
337f46a6179Smrg#define	uDEBUG1(f,s,a)
338f46a6179Smrg#define	uDEBUG2(f,s,a,b)
339f46a6179Smrg#define	uDEBUG3(f,s,a,b,c)
340f46a6179Smrg#define	uDEBUG4(f,s,a,b,c,d)
341f46a6179Smrg#define	uDEBUG5(f,s,a,b,c,d,e)
342f46a6179Smrg#define	uDEBUG_NOI(f,s)
343f46a6179Smrg#define	uDEBUG_NOI1(f,s,a)
344f46a6179Smrg#define	uDEBUG_NOI2(f,s,a,b)
345f46a6179Smrg#define	uDEBUG_NOI3(f,s,a,b,c)
346f46a6179Smrg#define	uDEBUG_NOI4(f,s,a,b,c,d)
347f46a6179Smrg#define	uDEBUG_NOI5(f,s,a,b,c,d,e)
348f46a6179Smrg#endif
349f46a6179Smrg
350f46a6179Smrgextern	Boolean	uSetEntryFile(
351f46a6179Smrg    char *name
352f46a6179Smrg);
353f46a6179Smrgextern	void	uEntry(
354f46a6179Smrg	int	/* l */,
355f46a6179Smrg	char *	/* s  */, ...
356f46a6179Smrg)
357f46a6179Smrg#if defined(__GNUC__) && \
358f46a6179Smrg    ((__GNUC__ > 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ >= 6)))
359f46a6179Smrg__attribute__((format(printf, 2, 3)))
360f46a6179Smrg#endif
361f46a6179Smrg;
362f46a6179Smrg
363f46a6179Smrgextern	void	uExit(
364f46a6179Smrg    int l,char *rtVal
365f46a6179Smrg);
366f46a6179Smrg#ifdef ENTRY_TRACKING_ON
367f46a6179Smrg#define	ENTRY_BIT	0x10
368f46a6179Smrg#define	LOW_ENTRY_BIT	0x1000
369f46a6179Smrg#define	ENTER	(DEBUG_VAR&ENTRY_BIT)
370f46a6179Smrg#define	FLAG(fLag)	(DEBUG_VAR&(fLag))
371f46a6179Smrg
372f46a6179Smrgextern	int	uEntryLevel;
373f46a6179Smrg
374f46a6179Smrg#define	uENTRY(s)			{ if (ENTER) uEntry(1,s);}
375f46a6179Smrg#define	uENTRY1(s,a)			{ if (ENTER) uEntry(1,s,a);}
376f46a6179Smrg#define	uENTRY2(s,a,b)			{ if (ENTER) uEntry(1,s,a,b);}
377f46a6179Smrg#define	uENTRY3(s,a,b,c)		{ if (ENTER) uEntry(1,s,a,b,c);}
378f46a6179Smrg#define	uENTRY4(s,a,b,c,d)		{ if (ENTER) uEntry(1,s,a,b,c,d);}
379f46a6179Smrg#define	uENTRY5(s,a,b,c,d,e)		{ if (ENTER) uEntry(1,s,a,b,c,d,e);}
380f46a6179Smrg#define	uENTRY6(s,a,b,c,d,e,f)		{ if (ENTER) uEntry(1,s,a,b,c,d,e,f);}
381f46a6179Smrg#define	uENTRY7(s,a,b,c,d,e,f,g)	{ if (ENTER) uEntry(1,s,a,b,c,d,e,f,g);}
382f46a6179Smrg#define	uRETURN(v)			{ if (ENTER) uEntryLevel--; return(v); }
383f46a6179Smrg#define	uVOIDRETURN			{ if (ENTER) uEntryLevel--; return; }
384f46a6179Smrg
385f46a6179Smrg#define	uFLAG_ENTRY(w,s)		{ if (FLAG(w)) uEntry(0,s);}
386f46a6179Smrg#define	uFLAG_ENTRY1(w,s,a)		{ if (FLAG(w)) uEntry(0,s,a);}
387f46a6179Smrg#define	uFLAG_ENTRY2(w,s,a,b)		{ if (FLAG(w)) uEntry(0,s,a,b);}
388f46a6179Smrg#define	uFLAG_ENTRY3(w,s,a,b,c)		{ if (FLAG(w)) uEntry(0,s,a,b,c);}
389f46a6179Smrg#define	uFLAG_ENTRY4(w,s,a,b,c,d)	{ if (FLAG(w)) uEntry(0,s,a,b,c,d);}
390f46a6179Smrg#define	uFLAG_ENTRY5(w,s,a,b,c,d,e)	{ if (FLAG(w)) uEntry(0,s,a,b,c,d,e);}
391f46a6179Smrg#define	uFLAG_ENTRY6(w,s,a,b,c,d,e,f)	{ if (FLAG(w)) uEntry(0,s,a,b,c,d,e,f);}
392f46a6179Smrg#define	uFLAG_ENTRY7(w,s,a,b,c,d,e,f,g)	{ if(FLAG(w))uEntry(0,s,a,b,c,d,e,f,g);}
393f46a6179Smrg#define	uFLAG_RETURN(v)			{ return(v);}
394f46a6179Smrg#define	uFLAG_VOIDRETURN		{ return; }
395f46a6179Smrg#else
396f46a6179Smrg#define	uENTRY(s)
397f46a6179Smrg#define	uENTRY1(s,a)
398f46a6179Smrg#define	uENTRY2(s,a1,a2)
399f46a6179Smrg#define	uENTRY3(s,a1,a2,a3)
400f46a6179Smrg#define	uENTRY4(s,a1,a2,a3,a4)
401f46a6179Smrg#define	uENTRY5(s,a1,a2,a3,a4,a5)
402f46a6179Smrg#define	uENTRY6(s,a1,a2,a3,a4,a5,a6)
403f46a6179Smrg#define	uENTRY7(s,a1,a2,a3,a4,a5,a6,a7)
404f46a6179Smrg#define	uRETURN(v)	{ return(v); }
405f46a6179Smrg#define	uVOIDRETURN	{ return; }
406f46a6179Smrg
407f46a6179Smrg#define	uFLAG_ENTRY(f,s)
408f46a6179Smrg#define	uFLAG_ENTRY1(f,s,a)
409f46a6179Smrg#define	uFLAG_ENTRY2(f,s,a,b)
410f46a6179Smrg#define	uFLAG_ENTRY3(f,s,a,b,c)
411f46a6179Smrg#define	uFLAG_ENTRY4(f,s,a,b,c,d)
412f46a6179Smrg#define	uFLAG_ENTRY5(f,s,a,b,c,d,e)
413f46a6179Smrg#define	uFLAG_ENTRY6(f,s,a,b,c,d,e,g)
414f46a6179Smrg#define	uFLAG_ENTRY7(f,s,a,b,c,d,e,g,h)
415f46a6179Smrg#define	uFLAG_RETURN(v)			{ return(v);}
416f46a6179Smrg#define	uFLAG_VOIDRETURN		{ return; }
417f46a6179Smrg#endif
418f46a6179Smrg
419f46a6179Smrg
420f46a6179Smrg#endif /* UTILS_H */
421f46a6179Smrg
422f46a6179Smrg
423