1/*
2 * Copyright (C) 1995 Advanced RISC Machines Limited. All rights reserved.
3 *
4 * This software may be freely used, copied, modified, and distributed
5 * provided that the above copyright notice is preserved in all copies of the
6 * software.
7 */
8
9/* -*-C-*-
10 *
11 * $Revision: 1.2 $
12 *     $Date: 1998/01/08 11:12:20 $
13 *
14 *
15 * logging.h - methods for logging warnings, errors and trace info
16 */
17
18#ifndef angel_logging_h
19#define angel_logging_h
20
21#include <stdarg.h>
22
23/*
24 * __rt_warning
25 * ------------
26 * Provides a standard method of generating run-time system
27 * warnings. The actual action taken by this code can be board or
28 * target application specific, e.g. internal logging, debug message,
29 * etc.
30 */
31extern void __rt_warning(char *format, ...);
32
33/*---------------------------------------------------------------------------*/
34
35/*
36 * __rt_error
37 * ----------
38 * Raise an internal Angel error. The parameters are passed directly
39 * to "__rt_warning" for display, and the code then raises a debugger
40 * event and stops the target processing.
41 */
42extern void __rt_error(char *format, ...);
43
44/*
45 * Some macros for debugging and warning messages
46 */
47
48typedef enum WarnLevel {
49    WL_TRACE,
50    WL_WARN,
51    WL_ERROR
52} WarnLevel;
53
54void va_warn(WarnLevel level, char *format, va_list args);
55
56#ifdef _WINGDI_
57/* stupidity in MSVC <wingdi.h> (in <windows.h> in <winsock.h>) */
58# undef ERROR
59#endif
60
61#ifndef ERROR
62# define ERROR_FORMAT "Error \"%s\" in %s at line %d\n"
63# define ERROR(e) __rt_error(ERROR_FORMAT, (e), __FILE__, __LINE__)
64#endif
65
66#ifndef ASSERT
67# ifdef ASSERTIONS_ENABLED
68#   define ASSERT(x, y) ((x) ? (void)(0) : ERROR((y)))
69# else
70#   define ASSERT(x, y) ((void)(0))
71# endif
72#endif
73
74#ifndef WARN
75# ifdef ASSERTIONS_ENABLED
76#   define WARN_FORMAT "Warning \"%s\" in %s at line %d\n"
77#   define WARN(w) __rt_warning(WARN_FORMAT, (w), __FILE__, __LINE__)
78# else
79#   define WARN(w) ((void)(0))
80# endif
81#endif
82
83
84#ifdef NO_INFO_MESSAGES
85# define __rt_info (void)
86# ifndef INFO
87#   define INFO(w)
88# endif
89#else
90# define __rt_info __rt_warning
91# ifndef INFO
92#  ifdef DEBUG
93#   define INFO(w) __rt_warning("%s\n", (w))
94#  else
95#   define INFO(w) ((void)(0))
96#  endif
97# endif
98#endif
99
100
101#if defined(DEBUG) && !defined(NO_IDLE_CHITCHAT)
102# ifndef DO_TRACE
103#   define DO_TRACE (1)
104# endif
105#endif
106
107#ifdef DO_TRACE
108extern void __rt_trace(char *format, ...);
109#endif
110
111#ifndef TRACE
112# ifdef DO_TRACE
113#   define TRACE(w) __rt_trace("%s ", (w))
114# else
115#   define TRACE(w) ((void)(0))
116# endif
117#endif
118
119#endif /* ndef angel_logging_h */
120
121/* EOF logging.h */
122