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