e53912750776cc9beded869676de854c90ab6202
[platform/upstream/groff.git] / src / include / errarg.h
1 // -*- C++ -*-
2 /* Copyright (C) 1989-2014  Free Software Foundation, Inc.
3      Written by James Clark (jjc@jclark.com)
4
5 This file is part of groff.
6
7 groff is free software; you can redistribute it and/or modify it under
8 the terms of the GNU General Public License as published by the Free
9 Software Foundation, either version 3 of the License, or
10 (at your option) any later version.
11
12 groff is distributed in the hope that it will be useful, but WITHOUT ANY
13 WARRANTY; without even the implied warranty of MERCHANTABILITY or
14 FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
15 for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
19
20 class errarg {
21   enum { EMPTY, STRING, CHAR, INTEGER, UNSIGNED_INTEGER, DOUBLE } type;
22   union {
23     const char *s;
24     int n;
25     unsigned int u;
26     char c;
27     double d;
28   };
29  public:
30   errarg();
31   errarg(const char *);
32   errarg(char);
33   errarg(unsigned char);
34   errarg(int);
35   errarg(unsigned int);
36   errarg(double);
37   int empty() const;
38   void print() const;
39 };
40
41 extern errarg empty_errarg;
42
43 extern void errprint(const char *,
44                      const errarg &arg1 = empty_errarg,
45                      const errarg &arg2 = empty_errarg,
46                      const errarg &arg3 = empty_errarg);