From 2af3aabf0e7eb1514d39b29a6b58fcd0d4de41d1 Mon Sep 17 00:00:00 2001 From: Kaleb Keithley Date: Fri, 14 Nov 2003 15:54:54 +0000 Subject: R6.6 is the Xorg base-line --- utils.h | 453 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 453 insertions(+) create mode 100644 utils.h (limited to 'utils.h') diff --git a/utils.h b/utils.h new file mode 100644 index 0000000..e3a71c9 --- /dev/null +++ b/utils.h @@ -0,0 +1,453 @@ +#ifndef UTILS_H +#define UTILS_H 1 + + /*\ + * $Xorg: utils.h,v 1.3 2000/08/17 19:54:33 cpqbld Exp $ + * + * COPYRIGHT 1990 + * DIGITAL EQUIPMENT CORPORATION + * MAYNARD, MASSACHUSETTS + * ALL RIGHTS RESERVED. + * + * THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE AND + * SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION. + * DIGITAL MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE + * FOR ANY PURPOSE. IT IS SUPPLIED "AS IS" WITHOUT EXPRESS OR IMPLIED + * WARRANTY. + * + * IF THE SOFTWARE IS MODIFIED IN A MANNER CREATING DERIVATIVE COPYRIGHT + * RIGHTS, APPROPRIATE LEGENDS MAY BE PLACED ON THE DERIVATIVE WORK IN + * ADDITION TO THAT SET FORTH ABOVE. + * + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose and without fee is hereby granted, provided + * that the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation, and that the name of Digital Equipment Corporation not be + * used in advertising or publicity pertaining to distribution of the + * software without specific, written prior permission. + \*/ + +/***====================================================================***/ + +#include +#include +#include +#include + +#ifndef NULL +#define NULL 0 +#endif + +#ifndef NUL +#define NUL '\0' +#endif + +/***====================================================================***/ + +#ifndef OPAQUE_DEFINED +typedef void *Opaque; +#endif +#ifndef NullOpaque +#define NullOpaque ((Opaque)NULL) +#endif + +#ifndef BOOLEAN_DEFINED +typedef char Boolean; +#endif + +#ifndef True +#define True ((Boolean)1) +#define False ((Boolean)0) +#endif /* ndef True */ +#define booleanText(b) ((b)?"True":"False") + +#ifndef COMPARISON_DEFINED +typedef int Comparison; + +#define Greater ((Comparison)1) +#define Equal ((Comparison)0) +#define Less ((Comparison)-1) +#define CannotCompare ((Comparison)-37) +#define comparisonText(c) ((c)?((c)<0?"Less":"Greater"):"Equal") +#endif + +_XFUNCPROTOBEGIN + +typedef union { + int i; + unsigned u; + void *p; + void *(*fp)(); +} Union; + +/***====================================================================***/ + +extern Opaque uAlloc( +#if NeedFunctionPrototypes + unsigned /* size */ +#endif +); +extern Opaque uCalloc( +#if NeedFunctionPrototypes + unsigned /* n */, + unsigned /* size */ +#endif +); +extern Opaque uRealloc( +#if NeedFunctionPrototypes + Opaque /* old */, + unsigned /* newSize */ +#endif +); +extern Opaque uRecalloc( +#if NeedFunctionPrototypes + Opaque /* old */, + unsigned /* nOld */, + unsigned /* nNew */, + unsigned /* newSize */ +#endif +); +extern void uFree( +#if NeedFunctionPrototypes + Opaque /* ptr */ +#endif +); + +#define uTypedAlloc(t) ((t *)uAlloc((unsigned)sizeof(t))) +#define uTypedCalloc(n,t) ((t *)uCalloc((unsigned)n,(unsigned)sizeof(t))) +#define uTypedRealloc(pO,n,t) ((t *)uRealloc((Opaque)pO,((unsigned)n)*sizeof(t))) +#define uTypedRecalloc(pO,o,n,t) ((t *)uRecalloc((Opaque)pO,((unsigned)o),((unsigned)n),sizeof(t))) +#if (defined mdHasAlloca) && (mdHasAlloca) +#define uTmpAlloc(n) ((Opaque)alloca((unsigned)n)) +#define uTmpFree(p) +#else +#define uTmpAlloc(n) uAlloc(n) +#define uTmpFree(p) uFree(p) +#endif + +/***====================================================================***/ + +extern Boolean uSetErrorFile( +#if NeedFunctionPrototypes + char * /* name */ +#endif +); + +#define INFO6(s,a,b,c,d,e,f) uInformation((s),(Opaque)(a),(Opaque)(b),\ + (Opaque)(c),(Opaque)(d),\ + (Opaque)(e),(Opaque)(f)) +#define INFO5(s,a,b,c,d,e) INFO6(s,a,b,c,d,e,NULL) +#define INFO4(s,a,b,c,d) INFO5(s,a,b,c,d,NULL) +#define INFO3(s,a,b,c) INFO4(s,a,b,c,NULL) +#define INFO2(s,a,b) INFO3(s,a,b,NULL) +#define INFO1(s,a) INFO2(s,a,NULL) +#define INFO(s) INFO1(s,NULL) + +extern void uInformation( +#if NeedFunctionPrototypes + char * /* s */, + Opaque /* a1 */,Opaque /* a2 */,Opaque /* a3 */, + Opaque /* a4 */,Opaque /* a5 */,Opaque /* a6 */ +#endif +); + +#define ACTION6(s,a,b,c,d,e,f) uAction((s),(Opaque)(a),(Opaque)(b),\ + (Opaque)(c),(Opaque)(d),\ + (Opaque)(e),(Opaque)(f)) +#define ACTION5(s,a,b,c,d,e) ACTION6(s,a,b,c,d,e,NULL) +#define ACTION4(s,a,b,c,d) ACTION5(s,a,b,c,d,NULL) +#define ACTION3(s,a,b,c) ACTION4(s,a,b,c,NULL) +#define ACTION2(s,a,b) ACTION3(s,a,b,NULL) +#define ACTION1(s,a) ACTION2(s,a,NULL) +#define ACTION(s) ACTION1(s,NULL) +extern void uAction( +#if NeedFunctionPrototypes + char * /* s */, + Opaque /* a1 */,Opaque /* a2 */,Opaque /* a3 */, + Opaque /* a4 */,Opaque /* a5 */,Opaque /* a6 */ +#endif +); + +#define WARN6(s,a,b,c,d,e,f) uWarning((s),(Opaque)(a),(Opaque)(b),\ + (Opaque)(c),(Opaque)(d),\ + (Opaque)(e),(Opaque)(f)) +#define WARN5(s,a,b,c,d,e) WARN6(s,a,b,c,d,e,NULL) +#define WARN4(s,a,b,c,d) WARN5(s,a,b,c,d,NULL) +#define WARN3(s,a,b,c) WARN4(s,a,b,c,NULL) +#define WARN2(s,a,b) WARN3(s,a,b,NULL) +#define WARN1(s,a) WARN2(s,a,NULL) +#define WARN(s) WARN1(s,NULL) +extern void uWarning( +#if NeedFunctionPrototypes + char * /* s */, + Opaque /* a1 */,Opaque /* a2 */,Opaque /* a3 */, + Opaque /* a4 */,Opaque /* a5 */,Opaque /* a6 */ +#endif +); + +#define ERROR6(s,a,b,c,d,e,f) uError((s),(Opaque)(a),(Opaque)(b),\ + (Opaque)(c),(Opaque)(d),\ + (Opaque)(e),(Opaque)(f)) +#define ERROR5(s,a,b,c,d,e) ERROR6(s,a,b,c,d,e,NULL) +#define ERROR4(s,a,b,c,d) ERROR5(s,a,b,c,d,NULL) +#define ERROR3(s,a,b,c) ERROR4(s,a,b,c,NULL) +#define ERROR2(s,a,b) ERROR3(s,a,b,NULL) +#define ERROR1(s,a) ERROR2(s,a,NULL) +#define ERROR(s) ERROR1(s,NULL) +extern void uError( +#if NeedFunctionPrototypes + char * /* s */, + Opaque /* a1 */,Opaque /* a2 */,Opaque /* a3 */, + Opaque /* a4 */,Opaque /* a5 */,Opaque /* a6 */ +#endif +); + +#define FATAL6(s,a,b,c,d,e,f) uFatalError((s),(Opaque)(a),(Opaque)(b),\ + (Opaque)(c),(Opaque)(d),\ + (Opaque)(e),(Opaque)(f)) +#define FATAL5(s,a,b,c,d,e) FATAL6(s,a,b,c,d,e,NULL) +#define FATAL4(s,a,b,c,d) FATAL5(s,a,b,c,d,NULL) +#define FATAL3(s,a,b,c) FATAL4(s,a,b,c,NULL) +#define FATAL2(s,a,b) FATAL3(s,a,b,NULL) +#define FATAL1(s,a) FATAL2(s,a,NULL) +#define FATAL(s) FATAL1(s,NULL) +extern void uFatalError( +#if NeedFunctionPrototypes + char * /* s */, + Opaque /* a1 */,Opaque /* a2 */,Opaque /* a3 */, + Opaque /* a4 */,Opaque /* a5 */,Opaque /* a6 */ +#endif +); + + /* WSGO stands for "Weird Stuff Going On" */ +#define WSGO6(s,a,b,c,d,e,f) uInternalError((s),(Opaque)(a),(Opaque)(b),\ + (Opaque)(c),(Opaque)(d),\ + (Opaque)(e),(Opaque)(f)) +#define WSGO5(s,a,b,c,d,e) WSGO6(s,a,b,c,d,e,NULL) +#define WSGO4(s,a,b,c,d) WSGO5(s,a,b,c,d,NULL) +#define WSGO3(s,a,b,c) WSGO4(s,a,b,c,NULL) +#define WSGO2(s,a,b) WSGO3(s,a,b,NULL) +#define WSGO1(s,a) WSGO2(s,a,NULL) +#define WSGO(s) WSGO1(s,NULL) +extern void uInternalError( +#if NeedFunctionPrototypes + char * /* s */, + Opaque /* a1 */,Opaque /* a2 */,Opaque /* a3 */, + Opaque /* a4 */,Opaque /* a5 */,Opaque /* a6 */ +#endif +); + +extern void uSetPreErrorMessage( +#if NeedFunctionPrototypes + char * /* msg */ +#endif +); + +extern void uSetPostErrorMessage( +#if NeedFunctionPrototypes + char * /* msg */ +#endif +); + +extern void uSetErrorPrefix( +#if NeedFunctionPrototypes + char * /* void */ +#endif +); + +extern void uFinishUp( +#if NeedFunctionPrototypes + void +#endif +); + + +/***====================================================================***/ + +#define NullString ((char *)NULL) + +#define uStringText(s) ((s)==NullString?"":(s)) +#define uStringEqual(s1,s2) (uStringCompare(s1,s2)==Equal) +#define uStringPrefix(p,s) (strncmp(p,s,strlen(p))==0) +#define uStringCompare(s1,s2) (strcmp(s1,s2)) +#define uStrCaseEqual(s1,s2) (uStrCaseCmp(s1,s2)==0) +#ifdef HAVE_STRCASECMP +#define uStrCaseCmp(s1,s2) (strcasecmp(s1,s2)) +#define uStrCasePrefix(p,s) (strncasecmp(p,s,strlen(p))==0) +#else +extern int uStrCaseCmp( +#if NeedFunctionPrototypes + char * /* s1 */, + char * /* s2 */ +#endif +); +extern int uStrCasePrefix( +#if NeedFunctionPrototypes + char * /* p */, + char * /* str */ +#endif +); +#endif +#ifdef HAVE_STRDUP +#define uStringDup(s1) (strdup(s1)) +#else +extern char *uStringDup( +#if NeedFunctionPrototypes + char * /* s1 */ +#endif +); +#endif + +/***====================================================================***/ + +#ifdef ASSERTIONS_ON +#define uASSERT(where,why) \ + {if (!(why)) uFatalError("assertion botched in %s ( why )\n",where);} +#else +#define uASSERT(where,why) +#endif + +/***====================================================================***/ + +#ifndef DEBUG_VAR +#define DEBUG_VAR debugFlags +#endif + +#ifdef DEBUG_VAR_NOT_LOCAL +extern +#endif +unsigned int DEBUG_VAR; + +extern void uDebug( +#if NeedFunctionPrototypes + char * /* s */, + Opaque /* a1 */,Opaque /* a2 */,Opaque /* a3 */, + Opaque /* a4 */,Opaque /* a5 */,Opaque /* a6 */ +#endif +); + +extern void uDebugNOI( /* no indent */ +#if NeedFunctionPrototypes + char * /* s */, + Opaque /* a1 */,Opaque /* a2 */,Opaque /* a3 */, + Opaque /* a4 */,Opaque /* a5 */,Opaque /* a6 */ +#endif +); + +extern Boolean uSetDebugFile( +#if NeedFunctionPrototypes + char *name +#endif +); + +extern FILE *uDebugFile; +extern int uDebugIndentLevel; +extern int uDebugIndentSize; +#define uDebugIndent(l) (uDebugIndentLevel+=(l)) +#define uDebugOutdent(l) (uDebugIndentLevel-=(l)) +#ifdef DEBUG_ON +#define uDEBUG(f,s) { if (DEBUG_VAR&(f)) uDebug(s);} +#define uDEBUG1(f,s,a) { if (DEBUG_VAR&(f)) uDebug(s,a);} +#define uDEBUG2(f,s,a,b) { if (DEBUG_VAR&(f)) uDebug(s,a,b);} +#define uDEBUG3(f,s,a,b,c) { if (DEBUG_VAR&(f)) uDebug(s,a,b,c);} +#define uDEBUG4(f,s,a,b,c,d) { if (DEBUG_VAR&(f)) uDebug(s,a,b,c,d);} +#define uDEBUG5(f,s,a,b,c,d,e) { if (DEBUG_VAR&(f)) uDebug(s,a,b,c,d,e);} +#define uDEBUG_NOI(f,s) { if (DEBUG_VAR&(f)) uDebug(s);} +#define uDEBUG_NOI1(f,s,a) { if (DEBUG_VAR&(f)) uDebugNOI(s,a);} +#define uDEBUG_NOI2(f,s,a,b) { if (DEBUG_VAR&(f)) uDebugNOI(s,a,b);} +#define uDEBUG_NOI3(f,s,a,b,c) { if (DEBUG_VAR&(f)) uDebugNOI(s,a,b,c);} +#define uDEBUG_NOI4(f,s,a,b,c,d) { if (DEBUG_VAR&(f)) uDebugNOI(s,a,b,c,d);} +#define uDEBUG_NOI5(f,s,a,b,c,d,e) { if (DEBUG_VAR&(f)) uDebugNOI(s,a,b,c,d,e);} +#else +#define uDEBUG(f,s) +#define uDEBUG1(f,s,a) +#define uDEBUG2(f,s,a,b) +#define uDEBUG3(f,s,a,b,c) +#define uDEBUG4(f,s,a,b,c,d) +#define uDEBUG5(f,s,a,b,c,d,e) +#define uDEBUG_NOI(f,s) +#define uDEBUG_NOI1(f,s,a) +#define uDEBUG_NOI2(f,s,a,b) +#define uDEBUG_NOI3(f,s,a,b,c) +#define uDEBUG_NOI4(f,s,a,b,c,d) +#define uDEBUG_NOI5(f,s,a,b,c,d,e) +#endif + +extern Boolean uSetEntryFile( +#if NeedFunctionPrototypes + char *name +#endif +); +extern void uEntry( +#if NeedFunctionPrototypes + int /* l */, + char * /* s */, + Opaque /* a1 */,Opaque /* a2 */,Opaque /* a3 */, + Opaque /* a4 */,Opaque /* a5 */,Opaque /* a6 */ +#endif +); + +extern void uExit( +#if NeedFunctionPrototypes + int l,char *rtVal +#endif +); +#ifdef ENTRY_TRACKING_ON +#define ENTRY_BIT 0x10 +#define LOW_ENTRY_BIT 0x1000 +#define ENTER (DEBUG_VAR&ENTRY_BIT) +#define FLAG(fLag) (DEBUG_VAR&(fLag)) + +extern int uEntryLevel; + +#define uENTRY(s) { if (ENTER) uEntry(1,s);} +#define uENTRY1(s,a) { if (ENTER) uEntry(1,s,a);} +#define uENTRY2(s,a,b) { if (ENTER) uEntry(1,s,a,b);} +#define uENTRY3(s,a,b,c) { if (ENTER) uEntry(1,s,a,b,c);} +#define uENTRY4(s,a,b,c,d) { if (ENTER) uEntry(1,s,a,b,c,d);} +#define uENTRY5(s,a,b,c,d,e) { if (ENTER) uEntry(1,s,a,b,c,d,e);} +#define uENTRY6(s,a,b,c,d,e,f) { if (ENTER) uEntry(1,s,a,b,c,d,e,f);} +#define uENTRY7(s,a,b,c,d,e,f,g) { if (ENTER) uEntry(1,s,a,b,c,d,e,f,g);} +#define uRETURN(v) { if (ENTER) uEntryLevel--; return(v); } +#define uVOIDRETURN { if (ENTER) uEntryLevel--; return; } + +#define uFLAG_ENTRY(w,s) { if (FLAG(w)) uEntry(0,s);} +#define uFLAG_ENTRY1(w,s,a) { if (FLAG(w)) uEntry(0,s,a);} +#define uFLAG_ENTRY2(w,s,a,b) { if (FLAG(w)) uEntry(0,s,a,b);} +#define uFLAG_ENTRY3(w,s,a,b,c) { if (FLAG(w)) uEntry(0,s,a,b,c);} +#define uFLAG_ENTRY4(w,s,a,b,c,d) { if (FLAG(w)) uEntry(0,s,a,b,c,d);} +#define uFLAG_ENTRY5(w,s,a,b,c,d,e) { if (FLAG(w)) uEntry(0,s,a,b,c,d,e);} +#define uFLAG_ENTRY6(w,s,a,b,c,d,e,f) { if (FLAG(w)) uEntry(0,s,a,b,c,d,e,f);} +#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);} +#define uFLAG_RETURN(v) { return(v);} +#define uFLAG_VOIDRETURN { return; } +#else +#define uENTRY(s) +#define uENTRY1(s,a) +#define uENTRY2(s,a1,a2) +#define uENTRY3(s,a1,a2,a3) +#define uENTRY4(s,a1,a2,a3,a4) +#define uENTRY5(s,a1,a2,a3,a4,a5) +#define uENTRY6(s,a1,a2,a3,a4,a5,a6) +#define uENTRY7(s,a1,a2,a3,a4,a5,a6,a7) +#define uRETURN(v) { return(v); } +#define uVOIDRETURN { return; } + +#define uFLAG_ENTRY(f,s) +#define uFLAG_ENTRY1(f,s,a) +#define uFLAG_ENTRY2(f,s,a,b) +#define uFLAG_ENTRY3(f,s,a,b,c) +#define uFLAG_ENTRY4(f,s,a,b,c,d) +#define uFLAG_ENTRY5(f,s,a,b,c,d,e) +#define uFLAG_ENTRY6(f,s,a,b,c,d,e,g) +#define uFLAG_ENTRY7(f,s,a,b,c,d,e,g,h) +#define uFLAG_RETURN(v) { return(v);} +#define uFLAG_VOIDRETURN { return; } +#endif + +_XFUNCPROTOEND + +#endif /* UTILS_H */ + + -- cgit v1.2.3