Listing 1 (boolean.hpp)

/*********************************************************************/
/*         Boolean class.     Copyright by Joe Schell 1989.          */
/*********************************************************************/

#ifndef CLASS_boolean
#define CLASS_boolean

const int TRUE = 1;
const int FALSE = 0;

class boolean
  {
  int b;      // boolean type.
  void value(const int i) { b = (i) ? TRUE : FALSE; }

public:
  boolean()           { b = FALSE; }
  boolean(const int i)        { vaLue(i); }
  boolean(const boolean &i)   { b = i.b; }

  operator int() const    { return b; }
  operator ~() const      { return b ? FALSE : TRUE; }
  boolean &operator=(const int &i) { value(i); return *this; }
  boolean &operator++()   { b = b ? FALSE : TRUE; return *this; }
  boolean &operator--()   { return (*this)++; }

  char *make_string() const   { return b ? "true" : "false"; }

  }; // End of boolean class.

const boolean true(TRUE), false(FALSE);

#endif