home *** CD-ROM | disk | FTP | other *** search
- // This may look like C code, but it is really -*- C++ -*-
- //
- // Copyright (C) 1988 University of Illinois, Urbana, Illinois
- // Copyright (C) 1989 University of Colorado, Boulder, Colorado
- // Copyright (C) 1990 University of Colorado, Boulder, Colorado
- //
- // written by Dirk Grunwald (grunwald@foobar.colorado.edu)
- //
- #ifndef _Generic_h
- #define _Generic_h
- #pragma once
-
- #if defined(__GNU__) || defined(__STDC__) || defined(__GNUG__)
- /*
- * See the CPP manual, argument prescan section for explination
- * of this crap.
- */
- #define GENERIC2(a,b) gEnErIc2(a,b)
- #define gEnErIc2(a,b) a ## b
-
- #define GENERIC3(a,b,c) gEnErIc3(a,b,c)
- #define gEnErIc3(a,b,c) a ## b ## c
-
- #define GENERIC4(a,b,c,d) gEnErIc4(a,b,c,d)
- #define gEnErIc4(a,b,c,d) a ## b ## c ## d
-
- #define GENERIC_STRING(a) gEnErIcStRiNg(a)
- #define gEnErIcStRiNg(a) #a
-
- #else
- #if defined(sun)
-
- #define GENERIC2(a,b) a/**/b
- #define GENERIC3(a,b,c) a/**/b/**/c
- #define GENERIC4(a,b,c,d) a/**/b/**/c/**/d
- #define GENERIC_STRING(a) "\
- a \
- "
- #else
- #if defined(BSD)
- #define GENERIC2(a,b) a\
- b
- #define GENERIC3(a,b,c) a\
- b\
- c
- #define GENERIC4(a,b,c,d) a\
- b\
- c\
- d
- #define GENERIC_STRING(a) "\
- a \
- "
- #else
- I do not know how to make GENERICs for your machine
- #endif /* BSD */
- #endif /* SUN */
- #endif /* GNU */
-
- #endif /* Generic_h */
-