 
#ifndef nesssym_DEFINED
#define nesssym_DEFINED 1
 
#ifndef class_DEFINED
#include <class.h>
#endif /* class_DEFINED */
/* 
 * This file was generated by the Andrew class system preprocessor.
 * Don't make changes to this file as it is created from nesssym.ch and will be
 * overwritten.  Make changes to nesssym.ch instead.
 */ 
 
#ifndef class_StaticInfoOnly
/* 
 * The following information was copied, as-is, from nesssym.ch.
 */ 
 
/* ********************************************************************** *\
 *         Copyright IBM Corporation 1988,1991 - All Rights Reserved      *
\* ********************************************************************** */

/*
	$Disclaimer: 
*Permission to use, copy, modify, and distribute this software and its 
*documentation for any purpose is hereby granted without fee, 
*provided that the above copyright notice appear in all copies and that 
*both that copyright notice, this permission notice, and the following 
*disclaimer appear in supporting documentation, and that the names of 
*IBM, Carnegie Mellon University, and other copyright holders, not be 
*used in advertising or publicity pertaining to distribution of the software 
*without specific, written prior permission.
*
*IBM, CARNEGIE MELLON UNIVERSITY, AND THE OTHER COPYRIGHT HOLDERS 
*DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING 
*ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.  IN NO EVENT 
*SHALL IBM, CARNEGIE MELLON UNIVERSITY, OR ANY OTHER COPYRIGHT HOLDER 
*BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY 
*DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, 
*WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS 
*ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
*OF THIS SOFTWARE.
* $
*/





/*****************************************************************************\
\*****************************************************************************/


/* nesssym.H
 *
 * A nesssym object is a subclass of toksym.  Its adds these fields:
 *	
 *	next	- for linking syms in a list
 *	
 *
 */

#include "toksym.ih"

typedef long nesssym_scopeType;
#define nesssym_GLOBAL toksym_GLOBAL

typedef unsigned long Texpr;







/*
 *    $Log: nesssym.ch,v $
*Revision 1.10  1993/05/04  01:23:55  susan
*RCS Tree Split
*
*Revision 1.9.1.1  1993/02/02  03:03:47  rr2b
*new R6tape branch
*
*Revision 1.9  1992/12/14  23:20:33  rr2b
*add $Logs back after disclaimerization took them out
*
Revision 1.7  1992/11/26  02:38:01  wjh
converted CorrectGetChar to GetUnsignedChar
moved ExtendShortSign to interp.h
remove xgetchar.h; use simpletext_GetUnsignedChar
nessrun timing messages go to stderr
replaced curNess with curComp
replaced genPush/genPop with struct compilation
created compile.c to handle compilation
moved scope routines to compile.c
converted from lex to tlex
convert to use lexan_ParseNumber
truncated logs to 1992 only
use bison and gentlex instead of yacc and lexdef/lex

.

Revision 1.6  91/09/12  19:44:21  bobg
Update copyright notice

Revision 1.5  1989/09/03  22:46:25  wjh
newness

Revision 1.4  89/06/01  15:58:12  wjh
campus release version

Revision 1.1  88/10/21  11:00:48  wjh
Initial revision
 
 * Revision 1.0  88/07/14  08:37:00  WJHansen
 * Copied from toksym.H
 */


/* 
 * End of information copied from nesssym.ch.
 */ 
 
#endif /* class_StaticInfoOnly *//* 
 * Include the superclass information
 */ 
#define dontDefineRoutinesFor_toksym
#include "toksym.ih"
#undef dontDefineRoutinesFor_toksym

 
 
#ifndef class_StaticInfoOnly
/* 
 * Data structure for nesssym 
 */ 
struct nesssym { 
    union {
	struct basicobject_methods *nesssym_methods;
	struct sym sym;
	struct toksym toksym;
    } header;

	struct nesssym *next;
	union {		struct ness *ness;  
			struct nesssym *nesssym;
			struct node *node; 
		} parent;
	Texpr type;
	long flags;	/* see compdefs.hn */


};

 
/* 
 * End of data structure for nesssym.
 */ 
 

#endif /* class_StaticInfoOnly */

#ifndef class_StaticInfoOnly

#ifndef nesssym_PROGRAMMERVERSION
#define nesssym_PROGRAMMERVERSION 1
#endif /* nesssym_PROGRAMMERVERSION */

#ifdef nesssym_VERSION
#undef nesssym_VERSION
#endif /* nesssym_VERSION */
#define nesssym_VERSION ((((nesssym_PROGRAMMERVERSION << 16) ^ (1 << 8) ^ sizeof(struct nesssym)) & 0x7ffff) + 0x80000 + (1 << 20))


#endif /* class_StaticInfoOnly */
#define nesssym_StaticLoadOnlyThisClass()  \
{ extern struct classinfo *nesssym__GetClassInfo(); \
 extern struct classheader *nesssym_classheader_StaticExport; \
  (void) class_EnterInfo(NULL, nesssym_classheader_StaticExport->name, nesssym__GetClassInfo, NULL, nesssym_classheader_StaticExport->namekey); } 
 
#define nesssym_StaticLoad()  \
    { \
    toksym_StaticLoad(); \
    nesssym_StaticLoadOnlyThisClass();  \
    } 
 
#define nesssym_StaticEntry  {nesssym_StaticLoad()} 
 
#ifndef class_StaticInfoOnly
static struct classheader nesssym_classheader = {
    nesssym_VERSION,
    "nesssym",
    "nesssym",
    (struct basicobject_methods *) &class_RoutineStruct,
};

#define nesssym_CLASSPROCEDURES (nesssym_classheader.classprocedures)
int nesssym_classref_;
#endif /* class_StaticInfoOnly */

#endif /* nesssym_DEFINED */

#if !defined(nesssym_ROUTINESDEFINED) && !defined(dontDefineRoutinesFor_nesssym) && !defined(class_StaticEntriesOnly)
#define nesssym_ROUTINESDEFINED

#define nesssym_GetName(self) \
		(((&(self)->header.sym))->name)
#define nesssym_GetScope(self) \
		(((&(self)->header.sym))->scope)
#define nesssym_SetScope(self,newScope) \
	(((&(self)->header.sym))->scope = (newScope))
#define nesssym_ToC(self,t,buf,maxlen) \
    ((* ((char * (*)())((self)->header.nesssym_methods->routines[0]))) (self,t,buf,maxlen))
#define nesssym_TGetName(self) \
	(((&(self)->header.toksym))->header.sym.name)
#define nesssym_TGetScope(self) \
	((toksym_scopeType)((&(self)->header.toksym))->header.sym.scope)
#define nesssym_GetLoc(self) \
		(((&(self)->header.toksym))->loc)
#define nesssym_GetLen(self) \
		(((&(self)->header.toksym))->len)
#define nesssym_NGetName(self) \
	((unsigned char *)((self))->header.sym.name)
#define nesssym_NGetScope(self) \
	((nesssym_scopeType)((self))->header.sym.scope)
#define nesssym_NGetINode(self,type) \
	((struct type *)(((self))->header.toksym.info.node))
#define nesssym_NGetInfo(self,type) \
	((type)(((self))->header.toksym.info.intval))
#define nesssym_NSetINode(self,type,val) \
	(((self))->header.toksym.info.node  					= (struct node *)(struct type *)(val))
#define nesssym_NSetInfo(self,type,val) \
	(((self))->header.toksym.info.intval = (long)(type)(val))

#define nesssym_NewFromObject(self) \
    ((* ((struct nesssym * (*)())((self)->header.nesssym_methods->info->procs->routines[0]))) (&nesssym_classheader, (self)->header.nesssym_methods->info->versionnumber))
#define nesssym_New() \
    (*((struct nesssym * (*)()) (nesssym_CLASSPROCEDURES->routines[0])))(&nesssym_classheader,nesssym_VERSION)
#define nesssym_Initialize(self) \
    (*((void (*)()) (nesssym_CLASSPROCEDURES->routines[2])))(&nesssym_classheader,self, nesssym_VERSION)

#define nesssym_Destroy(self) \
    ((* ((void (*)()) ((self)->header.nesssym_methods->info->procs->routines[1]))) (&nesssym_classheader, self))
#define nesssym_Finalize(self) \
    (*((void (*)()) (nesssym_CLASSPROCEDURES->routines[3])))(&nesssym_classheader,self)

#define nesssym_InitializeObject(self) \
    (*((boolean (*)()) (nesssym_CLASSPROCEDURES->routines[5])))(&nesssym_classheader,self)
#define nesssym_FinalizeObject(self) \
    (*((void (*)()) (nesssym_CLASSPROCEDURES->routines[6])))(&nesssym_classheader,self)

#define nesssym_TNewScope(enclosingScope) \
     ((toksym_scopeType)sym_NewScope(enclosingScope))
#define nesssym_TDestroyScope(scope) \
     (sym_DestroyScope(scope))
#define nesssym_TParentScope(scope) \
     ((toksym_scopeType)sym_ParentScope(scope))
#define nesssym_TDefine(name,proto,scope) \
     ((struct toksym *)sym_Define(name, proto, scope))
#define nesssym_TUndefine(name,scope) \
     (sym_Undefine(name, scope))
#define nesssym_TFind(name,scope) \
     ((struct toksym *)sym_Find(name, scope))
#define nesssym_TLocate(name,proto,scope,new) \
     ((struct toksym *)sym_Locate(name, proto, scope, new))
#define nesssym_TFindAll(name,scope,proc,rock) \
     (sym_FindAll(name, scope, proc, rock))
#define nesssym_NNewScope(enclosingScope) \
     ((nesssym_scopeType)  			toksym_TNewScope ((toksym_scopeType)(enclosingScope)))
#define nesssym_NDestroyScope(scope) \
     (toksym_TDestroyScope((toksym_scopeType)(scope)))
#define nesssym_NParentScope(scope) \
     ((nesssym_scopeType)  			toksym_TParentScope((toksym_scopeType)(scope)))
#define nesssym_NDefine(name,proto,scope) \
     ((struct nesssym *)toksym_TDefine(name, proto, scope))
#define nesssym_NUndefine(name,scope) \
     (toksym_TUndefine(name, scope))
#define nesssym_NFind(name,scope) \
     ((struct nesssym *)toksym_TFind(name, scope))
#define nesssym_NLocate(name,proto,scope,new) \
     			((struct nesssym *)toksym_TLocate(name, proto, scope, new))
#define nesssym_NFindAll(name,scope,proc,rock) \
     (toksym_TFindAll(name, scope, proc, rock))

#endif /* !defined(nesssym_ROUTINESDEFINED) && !defined(dontDefineRoutinesFor_nesssym ) && !defined(class_StaticEntriesOnly)*/

