175584Sru// -*- C++ -*-
2104862Sru/* Copyright (C) 1989, 1990, 1991, 1992, 2002 Free Software Foundation, Inc.
375584Sru     Written by James Clark (jjc@jclark.com)
475584Sru
575584SruThis file is part of groff.
675584Sru
775584Srugroff is free software; you can redistribute it and/or modify it under
875584Sruthe terms of the GNU General Public License as published by the Free
975584SruSoftware Foundation; either version 2, or (at your option) any later
1075584Sruversion.
1175584Sru
1275584Srugroff is distributed in the hope that it will be useful, but WITHOUT ANY
1375584SruWARRANTY; without even the implied warranty of MERCHANTABILITY or
1475584SruFITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
1575584Srufor more details.
1675584Sru
1775584SruYou should have received a copy of the GNU General Public License along
1875584Sruwith groff; see the file COPYING.  If not, write to the Free Software
19151497SruFoundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA. */
2075584Sru
2175584Sruclass errarg {
22104862Sru  enum { EMPTY, STRING, CHAR, INTEGER, UNSIGNED_INTEGER, DOUBLE } type;
2375584Sru  union {
2475584Sru    const char *s;
2575584Sru    int n;
26104862Sru    unsigned int u;
2775584Sru    char c;
2875584Sru    double d;
2975584Sru  };
3075584Sru public:
3175584Sru  errarg();
3275584Sru  errarg(const char *);
3375584Sru  errarg(char);
3475584Sru  errarg(unsigned char);
3575584Sru  errarg(int);
36104862Sru  errarg(unsigned int);
3775584Sru  errarg(double);
3875584Sru  int empty() const;
3975584Sru  void print() const;
4075584Sru};
4175584Sru
4275584Sruextern errarg empty_errarg;
4375584Sru
4475584Sruextern void errprint(const char *,
4575584Sru		     const errarg &arg1 = empty_errarg,
4675584Sru		     const errarg &arg2 = empty_errarg,
4775584Sru		     const errarg &arg3 = empty_errarg);
48