summaryrefslogtreecommitdiff
path: root/Build/source/utils/xindy-old/rte/ordrules/debug.h
blob: 6c59927d61a0693dd573e077360e69d3656ed16a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
/* $Id: debug.h,v 1.3 2005/05/02 21:39:53 jschrod Exp $
 *------------------------------------------------------------
 *
 *  AU: Makros zur Unterstuetzung von Debug-Ausgaben
 *      with friendly permission by U. Graef
 *
 *  ST: Um die Macros zu definieren:
 *          #define debug
 *          #include "debug.h"
 *      Im Hauptprogramm bzw. Tester mu"s dann noch debug.o dazugebunden
 *      werden, um die externe Variable Debug_Output_Indent zur Verf"ugung
 *      zu stellen.
 *      Um im Modul die Macros zu deaktivieren:
 *          #undef debug
 *          #include "debug.h"
 *
 *  PO: HPUX, Linux, AIX
 */


#ifndef _debug_h
#define _debug_h

/*
 *  Beim ersten include werden folgende Deklarationen defininert:
 *
 *  Die globale Variable f"ur die Einr"uckung wird definiert.
 */
extern
int     Debug_Output_Indent;

#ifdef debug_special
/*
 *  Die Funktion f"ur den Memory-Print wird definiert
 */
extern
void    debug_printmem_asc( char* desc, char* str, char* lenname, int len );
#endif /* debug_special */

#define	Debug_Output_Indent_Step	4

#endif  /* _debug_h */


/*
 *  Falls die Macros bereits definiert waren, dann werden sie jetzt
 *  zuerst wegdefiniert. Damit kann man "debug.h" benutzen um die Macros
 *  zu (de-)aktivieren.
 */

#ifdef dispstart

#undef dispstart
#undef dispend
#undef displong
#undef dispint
#undef dispuint
#undef dispdouble
#undef dispchar
#undef dispstr
#undef dispmem
#undef dispmsg

#endif

/*
 *  Hier werden die Macros wieder definert bzw. erstmals definiert
 */
#ifdef debug

/* Start und Ende von Prozeduren	*/

#define dispstart(p)							\
	{								\
	fprintf( stderr, "\n%*s%s: Start -----\n",                      \
                         Debug_Output_Indent, "", #p );	                \
	Debug_Output_Indent += Debug_Output_Indent_Step;		\
	}

#define dispend(p)							\
	{								\
	Debug_Output_Indent -= Debug_Output_Indent_Step;		\
	fprintf( stderr, "%*s%s: End   -----\n\n",                      \
                          Debug_Output_Indent, "", #p );	        \
	}


/* Ausgabe von Werten verschiedenen Typs		*/
/*	(mit Ausgabe der Variablen bzw. des Ausdrucks)	*/


#define displong(l)	\
	fprintf( stderr, "%*s%s = %ld = 0x%lX \n",\
                          Debug_Output_Indent, "", #l, (long) l, (long) l );


#define dispint(i)	\
	fprintf( stderr, "%*s%s = %d = 0x%X \n", \
                          Debug_Output_Indent, "", #i, (int) i, (int) i );

#define dispuint(i)	\
	fprintf( stderr, "%*s%s = %d = 0x%X \n", \
                          Debug_Output_Indent, "", #i, (unsigned int) i, (unsigned int) i );

#define dispdouble(d)	\
	fprintf( stderr, "%*s%s = %20.10g \n",\
                           Debug_Output_Indent, "", #d, (double) d );

#define dispchar(c)	\
	fprintf( stderr, "%*s%s = %d = 0x%X = '%c' \n",                 \
                          Debug_Output_Indent, "", #c, (char) c,        \
                          (char) c, (char) c );

#define dispstr(s)	\
	fprintf( stderr, "%*s%s = \"%s\"\n",                           \
                          Debug_Output_Indent, "", #s, (char*) s );

#ifdef debug_special
#define dispmem(str,len)                                                \
        debug_printmem_asc( (char*)#str, (char*)str, (char*)#len, (int) len );
#endif /* debug_special */

#define dispmsg(p)							\
	{								\
	fprintf( stderr, "%*s%s:\n", Debug_Output_Indent, "", #p );	\
	}

#else  /* debug */

/*
 *  Falls kein weiteres Debugging erw"unscht, dann definiere die
 *  Macros auf leer.
 */
#define dispstart(p)
#define dispend(p)
#define displong(l)
#define dispint(i)
#define dispuint(i)
#define dispdouble(d)
#define dispchar(c)
#define dispstr(s)
#define dispmem(str,len)
#define dispmsg(p)

#endif  /* debug */


/*======================================================================
 *
 * $Log: debug.h,v $
 * Revision 1.3  2005/05/02 21:39:53  jschrod
 *     xindy run time engine 3.0; as used for CLISP 2.33.2.
 *
 * Revision 1.2  1996/07/18 15:56:38  kehr
 * Checkin after all changes that resulted from the define-letter-group
 * modification were finished. Additionally I found an ugly bug in the
 * ordrules.c file that was discovered when running the system under
 * Solaris (which seems to have signed chars..Whee!). This is fixed now
 * and the Imakefiles and that stuff was improved, too.
 *
 * Revision 1.1  1996/03/27  20:29:03  kehr
 * It works. Today I had my first success in getting the FFI running with
 * the ordrules-library. The interface is defined in `ordrulei.lsp' and
 * allows direct access to the functions in `ordrules.c'.
 *
 */