#pragma info( none )
#ifndef __CHKHDR__
   #pragma info( none )
#endif
#pragma info( restore )

#ifndef __generic_h
   #define __generic_h

   /********************************************************************/
   /*  <generic.h> header file                                         */
   /*                                                                  */
   /*  Licensed Materials - Property of IBM                            */
   /*                                                                  */
   /*  IBM VisualAge C Set ++ for OS/2, Version 3.00                   */
   /*  Copyright (C) IBM Corp. 1991, 1995.                             */
   /*  All rights reserved                                             */
   /*                                                                  */
   /*                                                                  */
   /*                                                                  */
   /*  Licensed Materials - Property of USL                            */
   /*                                                                  */
   /*  Standard Class Library Version 3.0                              */
   /*  Copyright (C) Unix System Laboratories Inc. 1991.               */
   /*  All rights reserved                                             */
   /*                                                                  */
   /********************************************************************/

   /**************************************************************************/
   /*  C++ source for the C++ Language System, Release 3.0.  This product    */
   /*  is a new release of the original cfront developed in the computer     */
   /*  science research center of AT&T Bell Laboratories.                    */
   /*                                                                        */
   /*  Copyright (c) 1991 AT&T and UNIX System Laboratories, Inc.            */
   /*  Copyright (c) 1984, 1989, 1990 AT&T.  All Rights Reserved.            */
   /*                                                                        */
   /*  THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE of AT&T and UNIX System   */
   /*  Laboratories, Inc.  The copyright notice above does not evidence      */
   /*  any actual or intended publication of such source code.               */
   /*                                                                        */
   /*  UNIX is a registered trademark of UNIX System Laboratories, Inc.      */
   /*                                                                        */
   /*  ident "@(#)C++env:incl-master/proto-headers/generic.h 1.1"            */
   /**************************************************************************/

   /* macros to paste tokens together to form new names */

   /* ANSI C preprocessors will not expand the arguments to a macro;
    * so we need to add a level of indirection to allow macro expansion of
    * arguments.  (Reiser preprocessors allowed the first arg to be expanded;
    * this method will allow both to be expanded, which is better than none.)
    */
   #define name2(a,b)      _name2_aux(a,b)
   #define _name2_aux(a,b)      a##b
   #define name3(a,b,c)    _name3_aux(a,b,c)
   #define _name3_aux(a,b,c)    a##b##c
   #define name4(a,b,c,d)  _name4_aux(a,b,c,d)
   #define _name4_aux(a,b,c,d)  a##b##c##d

   #define declare(a,t) name2(a,declare)(t)
   #define implement(a,t) name2(a,implement)(t)
   #define declare2(a,t1,t2) name2(a,declare2)(t1,t2)
   #define implement2(a,t1,t2) name2(a,implement2)(t1,t2)

   extern int genericerror(int,char*);
   typedef int (* GPT)(int,char*);
   #define set_handler(generic,type,x) name4(set_,type,generic,_handler)(x)
   #define errorhandler(generic,type) name3(type,generic,handler)
   #define callerror(generic,type,a,b) (*errorhandler(generic,type))(a,b)

#endif

#pragma info( none )
#ifndef __CHKHDR__
   #pragma info( restore )
#endif
#pragma info( restore )

