source: git/libpolys/reporter/reporter.h @ 74d48c

fieker-DuValspielwiese
Last change on this file since 74d48c was 74d48c, checked in by Hans Schoenemann <hannes@…>, 13 years ago
fix scanner.cc (via kernel/febase.h)
  • Property mode set to 100644
File size: 3.5 KB
Line 
1#ifndef OUTPUT_H
2#define OUTPUT_H
3/****************************************
4*  Computer Algebra System SINGULAR     *
5****************************************/
6/* $Id$ */
7/*
8* ABSTRACT: basic output
9*/
10#include <stdio.h>
11#include <string.h>
12#include <misc/auxiliary.h>
13
14extern char*  feErrors;
15extern int    feErrorsLen;
16extern FILE*  feProtFile;
17extern int    printlevel;
18extern int    pagelength, colmax;
19extern int    yy_blocklineno;
20extern int    yy_noeof;
21extern const char feNotImplemented[];
22extern BOOLEAN errorreported;
23extern int     feProt;
24extern BOOLEAN feWarn;
25extern BOOLEAN feOut;
26extern int  traceit ;
27#define TRACE_SHOW_PROC   1
28#define TRACE_SHOW_LINENO 2
29#define TRACE_SHOW_LINE   4
30#define TRACE_SHOW_RINGS  8
31#define TRACE_SHOW_LINE1  16
32#define TRACE_BREAKPOINT  32
33#define TRACE_TMP_BREAKPOINT  64
34
35#define PROT_NONE 0
36#define PROT_I    1
37#define PROT_O    2
38#define PROT_IO   3
39
40/* the C-part: */
41#define mflush() fflush(stdout)
42
43#ifdef __cplusplus
44extern "C" {
45#endif
46
47void    Werror(const char *fmt, ...) __attribute__((format(printf,1,2)));
48void    WerrorS(const char *s);
49void    WarnS(const char *s);
50void    Print(const char* fmt, ...) __attribute__((format(printf,1,2)));
51/* Print should not produce more than strlen(fmt)+510 characters! */
52
53void    PrintNSpaces(const int n);
54void    PrintLn();
55void    PrintS(const char* s);
56
57#ifdef __cplusplus
58}
59/* the C++-part: */
60
61char *  StringAppend(const char *fmt, ...);
62char *  StringAppendS(const char *s);
63char *  StringSetS(const char* s);
64void    Warn(const char *fmt, ...);
65
66const char *  eati(const char *s, int *i);
67
68#endif /* c++ only */
69
70/* everything in between calls to these procedures is printed into a string
71 * which is returned by SprintEnd()
72 * Shall ONLY be used for a temporary redirection of the standard output
73 * (i.e. if Singular runs as a server)
74 */
75void SPrintStart();
76char* SPrintEnd();
77
78/* error reporting */
79#ifdef __cplusplus
80extern "C"
81{
82#endif
83extern int dReportError(const char* fmt, ...);
84#define dReportBug(s) \
85  dReportError("Bug reported: %s\n occured at %s,%d\n", s, __FILE__, __LINE__)
86
87// this is just a dummy procedure which is called after the error
88// has been reported. Within the debugger, set a breakpoint on this
89// proc.
90extern void dErrorBreak();
91#ifdef __cplusplus
92}
93#endif
94
95#ifndef HAVE_ASSUME
96#define assume(x) ((void) 0)
97#define r_assume(x) ((void) 0)
98#else /* ! HAVE_ASSUME */
99
100#define assume_violation(s,f,l) \
101  dReportError("assume violation at %s:%d condition: %s", f,l,s)
102
103#define assume(x)   _assume(x, __FILE__, __LINE__)
104#define r_assume(x) _r_assume(x, __FILE__, __LINE__)
105
106#define _assume(x, f, l)                        \
107do                                              \
108{                                               \
109  if (! (x))                                    \
110  {                                             \
111    assume_violation(#x, f, l);                 \
112  }                                             \
113}                                               \
114while (0)
115
116#define _r_assume(x, f, l)                      \
117do                                              \
118{                                               \
119  if (! (x))                                    \
120  {                                             \
121    assume_violation(#x, f, l);                 \
122    return 0;                                   \
123  }                                             \
124}                                               \
125while (0)
126#endif /* HAVE_ASSUME */
127
128#endif /* ifndef OUTPUT_H */
Note: See TracBrowser for help on using the repository browser.